feat(D-01/C): consumer migration — 85 files migrated to V2 helpers

Phase 1 (state): PlayerBindState, PlayerCaptorManager, PlayerEquipment,
  PlayerDataRetrieval, PlayerLifecycle, PlayerShockCollar, StruggleAccessory
Phase 2 (client): AnimationTickHandler, NpcAnimationTickHandler, 5 render
  handlers, DamselModel, 3 client mixins, SelfBondageInputHandler,
  SlaveManagementScreen, ActionPanel, SlaveEntryWidget, ModKeybindings
Phase 3 (entities): 28 entity/AI files migrated to CollarHelper,
  BindModeHelper, PoseTypeHelper, createStack()
Phase 4 (network): PacketSlaveAction, PacketMasterEquip,
  PacketAssignCellToCollar, PacketNpcCommand, PacketFurnitureForcemount
Phase 5 (events): RestraintTaskTickHandler, PetPlayRestrictionHandler,
  PlayerEnslavementHandler, ChatEventHandler, LaborAttackPunishmentHandler
Phase 6 (commands): BondageSubCommand, CollarCommand, NPCCommand,
  KidnapSetCommand
Phase 7 (compat): MCAKidnappedAdapter, MCA mixins
Phase 8 (misc): GagTalkManager, PetRequestManager, HangingCagePiece,
  BondageItemBlockEntity, TrappedChestBlockEntity, DispenserBehaviors,
  BondageItemLoaderUtility, RestraintApplicator, StruggleSessionManager,
  MovementStyleResolver, CampLifecycleManager

Some files retain dual V1/V2 checks (instanceof V1 || V2Helper) for
coexistence — V1-only branches removed in Branch D.
This commit is contained in:
NotEvil
2026-04-15 00:16:50 +02:00
parent 52d1044e9a
commit 3d61c9e9e6
85 changed files with 2885 additions and 777 deletions

View File

@@ -1,8 +1,8 @@
package com.tiedup.remake.state;
import com.tiedup.remake.items.base.ILockable;
import com.tiedup.remake.items.base.ItemBind;
import com.tiedup.remake.v2.BodyRegionV2;
import com.tiedup.remake.v2.bondage.BindModeHelper;
import java.util.function.Supplier;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
@@ -97,7 +97,7 @@ public interface IBondageState extends ICapturable {
if (!isTiedUp()) return false;
ItemStack bind = getEquipment(BodyRegionV2.ARMS);
if (bind.isEmpty()) return false;
return ItemBind.hasArmsBound(bind);
return BindModeHelper.hasArmsBound(bind);
}
/**
@@ -111,7 +111,7 @@ public interface IBondageState extends ICapturable {
if (!isTiedUp()) return false;
ItemStack bind = getEquipment(BodyRegionV2.ARMS);
if (bind.isEmpty()) return false;
return ItemBind.hasLegsBound(bind);
return BindModeHelper.hasLegsBound(bind);
}
/**
@@ -121,10 +121,10 @@ public interface IBondageState extends ICapturable {
* @return "full", "arms", or "legs"
*/
default String getBindModeId() {
if (!isTiedUp()) return ItemBind.BIND_MODE_FULL;
if (!isTiedUp()) return BindModeHelper.MODE_FULL;
ItemStack bind = getEquipment(BodyRegionV2.ARMS);
if (bind.isEmpty()) return ItemBind.BIND_MODE_FULL;
return ItemBind.getBindModeId(bind);
if (bind.isEmpty()) return BindModeHelper.MODE_FULL;
return BindModeHelper.getBindModeId(bind);
}
/**

View File

@@ -3,8 +3,8 @@ package com.tiedup.remake.state;
import com.tiedup.remake.core.ModSounds;
import com.tiedup.remake.core.TiedUpMod;
import com.tiedup.remake.entities.LeashProxyEntity;
import com.tiedup.remake.items.base.ItemBind;
import com.tiedup.remake.items.base.ItemCollar;
import com.tiedup.remake.items.base.ILockable;
import com.tiedup.remake.v2.bondage.CollarHelper;
import com.tiedup.remake.network.sync.SyncManager;
import com.tiedup.remake.state.components.PlayerCaptivity;
import com.tiedup.remake.state.components.PlayerClothesPermission;
@@ -737,8 +737,8 @@ public class PlayerBindState implements IRestrainable, IPlayerBindStateHost {
ItemStack collar = getCurrentCollar();
return (
!collar.isEmpty() &&
collar.getItem() instanceof ItemCollar collarItem &&
collarItem.isLocked(collar)
collar.getItem() instanceof ILockable lockable &&
lockable.isLocked(collar)
);
}
@@ -1211,9 +1211,9 @@ public class PlayerBindState implements IRestrainable, IPlayerBindStateHost {
ItemStack collar = getEquipment(BodyRegionV2.NECK);
if (
!collar.isEmpty() &&
collar.getItem() instanceof ItemCollar collarItem
collar.getItem() instanceof ILockable lockable
) {
collarItem.setLocked(collar, false);
lockable.setLocked(collar, false);
}
// Drop all items

View File

@@ -1,8 +1,8 @@
package com.tiedup.remake.state;
import com.tiedup.remake.core.TiedUpMod;
import com.tiedup.remake.items.base.ItemCollar;
import com.tiedup.remake.v2.BodyRegionV2;
import com.tiedup.remake.v2.bondage.CollarHelper;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
@@ -144,9 +144,9 @@ public class PlayerCaptorManager implements ICaptor {
// Check if target has collar with this captor as owner
if (target.hasCollar()) {
ItemStack collar = target.getEquipment(BodyRegionV2.NECK);
if (collar.getItem() instanceof ItemCollar collarItem) {
if (CollarHelper.isCollar(collar)) {
if (
collarItem.getOwners(collar).contains(this.captor.getUUID())
CollarHelper.getOwners(collar).contains(this.captor.getUUID())
) {
return true;
}

View File

@@ -1,7 +1,7 @@
package com.tiedup.remake.state.components;
import com.tiedup.remake.items.base.ItemCollar;
import com.tiedup.remake.state.hosts.IPlayerBindStateHost;
import com.tiedup.remake.v2.bondage.CollarHelper;
import com.tiedup.remake.v2.BodyRegionV2;
import com.tiedup.remake.v2.bondage.capability.V2EquipmentHelper;
import net.minecraft.world.entity.LivingEntity;
@@ -87,12 +87,9 @@ public class PlayerDataRetrieval {
Player player = host.getPlayer();
ItemStack collar = getCurrentCollar();
if (
!collar.isEmpty() &&
collar.getItem() instanceof ItemCollar collarItem
) {
if (!collar.isEmpty() && CollarHelper.isCollar(collar)) {
// Try to get nickname from collar NBT
String nickname = collarItem.getNickname(collar);
String nickname = CollarHelper.getNickname(collar);
if (nickname != null && !nickname.isEmpty()) {
return nickname;
}
@@ -109,8 +106,8 @@ public class PlayerDataRetrieval {
ItemStack collar = getCurrentCollar();
if (collar.isEmpty()) return false;
if (collar.getItem() instanceof ItemCollar collarItem) {
String nickname = collarItem.getNickname(collar);
if (CollarHelper.isCollar(collar)) {
String nickname = CollarHelper.getNickname(collar);
return nickname != null && !nickname.isEmpty();
}
return false;

View File

@@ -1,8 +1,6 @@
package com.tiedup.remake.state.components;
import com.tiedup.remake.items.base.ILockable;
import com.tiedup.remake.items.base.ItemBind;
import com.tiedup.remake.items.base.ItemCollar;
import com.tiedup.remake.state.hosts.IPlayerBindStateHost;
import com.tiedup.remake.v2.BodyRegionV2;
import com.tiedup.remake.v2.bondage.IV2BondageEquipment;
@@ -154,9 +152,9 @@ public class PlayerEquipment {
);
if (collar.isEmpty()) return ItemStack.EMPTY;
if (collar.getItem() instanceof ItemCollar collarItem) {
if (!force && collarItem.isLocked(collar)) return ItemStack.EMPTY;
collarItem.setLocked(collar, false);
if (collar.getItem() instanceof ILockable lockable) {
if (!force && lockable.isLocked(collar)) return ItemStack.EMPTY;
lockable.setLocked(collar, false);
}
return V2EquipmentHelper.unequipFromRegion(player, BodyRegionV2.NECK);
}

View File

@@ -3,8 +3,8 @@ package com.tiedup.remake.state.components;
import com.tiedup.remake.cells.CampOwnership;
import com.tiedup.remake.cells.CellRegistryV2;
import com.tiedup.remake.core.TiedUpMod;
import com.tiedup.remake.items.base.ItemBind;
import com.tiedup.remake.state.hosts.IPlayerBindStateHost;
import com.tiedup.remake.v2.bondage.BindModeHelper;
import com.tiedup.remake.v2.BodyRegionV2;
import java.util.UUID;
import net.minecraft.server.level.ServerLevel;
@@ -148,7 +148,7 @@ public class PlayerLifecycle {
*/
private boolean hasLegsBound(ItemStack bind) {
if (bind.isEmpty()) return false;
if (!(bind.getItem() instanceof ItemBind)) return false;
return ItemBind.hasLegsBound(bind);
if (!BindModeHelper.isBindItem(bind)) return false;
return BindModeHelper.hasLegsBound(bind);
}
}