Remove internal phase comments and format code
Strip all Phase references, TODO/FUTURE roadmap notes, and internal planning comments from the codebase. Run Prettier for consistent formatting across all Java files.
This commit is contained in:
@@ -2,15 +2,14 @@ package com.tiedup.remake.state.components;
|
||||
|
||||
import com.tiedup.remake.core.TiedUpMod;
|
||||
import com.tiedup.remake.entities.LeashProxyEntity;
|
||||
import com.tiedup.remake.state.IPlayerLeashAccess;
|
||||
import com.tiedup.remake.state.ICaptor;
|
||||
import com.tiedup.remake.state.IPlayerLeashAccess;
|
||||
import com.tiedup.remake.state.hosts.IPlayerBindStateHost;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* Component responsible for captivity mechanics and leash proxy management.
|
||||
* Phase 17: Advanced capture system (proxy-based leashing)
|
||||
*
|
||||
* Single Responsibility: Captivity lifecycle and transport management
|
||||
* Complexity: VERY HIGH (mixin coupling, network sync, leash proxy coordination)
|
||||
@@ -35,7 +34,6 @@ public class PlayerCaptivity {
|
||||
// ========== Captivity Initiation ==========
|
||||
|
||||
/**
|
||||
* Phase 17: Renamed from getEnslavedBy to getCapturedBy
|
||||
* Initiates the capture process by a captor.
|
||||
* Uses the proxy-based leash system (player is NOT mounted).
|
||||
*
|
||||
@@ -101,7 +99,6 @@ public class PlayerCaptivity {
|
||||
}
|
||||
|
||||
/**
|
||||
* Phase 17: Ends captivity and detaches the leash proxy.
|
||||
*
|
||||
* @param dropLead Whether to drop the leash item
|
||||
*/
|
||||
@@ -159,7 +156,6 @@ public class PlayerCaptivity {
|
||||
// ========== Captivity Transfer ==========
|
||||
|
||||
/**
|
||||
* Phase 17: Renamed from transferSlaveryTo to transferCaptivityTo
|
||||
* Transfers captivity from current captor to a new captor.
|
||||
*
|
||||
* Thread Safety: Synchronized to prevent concurrent transfer attempts.
|
||||
@@ -206,7 +202,6 @@ public class PlayerCaptivity {
|
||||
}
|
||||
|
||||
/**
|
||||
* Phase 17: Renamed from isSlave to isCaptive
|
||||
* Check if player is currently captured by an entity.
|
||||
*
|
||||
* @return true if player has a captor and is leashed
|
||||
@@ -222,7 +217,6 @@ public class PlayerCaptivity {
|
||||
|
||||
/**
|
||||
* Get the leash proxy entity (transport system).
|
||||
* Phase 17: Proxy-based leashing (no mounting).
|
||||
*
|
||||
* @return The leash proxy, or null if not leashed
|
||||
*/
|
||||
@@ -238,7 +232,6 @@ public class PlayerCaptivity {
|
||||
// ========== Captivity Monitoring ==========
|
||||
|
||||
/**
|
||||
* Phase 17: Renamed from checkStillSlave to checkStillCaptive
|
||||
* Periodically monitors captivity validity.
|
||||
* Simplified: If any condition is invalid, free the captive immediately.
|
||||
*
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package com.tiedup.remake.state.components;
|
||||
|
||||
import com.tiedup.remake.v2.bondage.IV2BondageItem;
|
||||
import com.tiedup.remake.state.hosts.IPlayerBindStateHost;
|
||||
import com.tiedup.remake.v2.BodyRegionV2;
|
||||
import com.tiedup.remake.v2.bondage.IV2BondageEquipment;
|
||||
import com.tiedup.remake.v2.bondage.IV2BondageItem;
|
||||
import com.tiedup.remake.v2.bondage.capability.V2EquipmentHelper;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
@@ -63,7 +63,10 @@ public class PlayerClothesPermission {
|
||||
* @return true if clothes can be changed
|
||||
*/
|
||||
public boolean canChangeClothes() {
|
||||
ItemStack clothes = V2EquipmentHelper.getInRegion(host.getPlayer(), BodyRegionV2.TORSO);
|
||||
ItemStack clothes = V2EquipmentHelper.getInRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.TORSO
|
||||
);
|
||||
if (clothes.isEmpty()) return true;
|
||||
|
||||
// Check if clothes are locked
|
||||
@@ -95,20 +98,28 @@ public class PlayerClothesPermission {
|
||||
*/
|
||||
public ItemStack replaceClothes(ItemStack newClothes, boolean force) {
|
||||
Player player = host.getPlayer();
|
||||
if (player == null || player.level().isClientSide) return ItemStack.EMPTY;
|
||||
if (
|
||||
player == null || player.level().isClientSide
|
||||
) return ItemStack.EMPTY;
|
||||
|
||||
IV2BondageEquipment equip = V2EquipmentHelper.getEquipment(player);
|
||||
if (equip == null) return ItemStack.EMPTY;
|
||||
|
||||
// Take off old clothes
|
||||
ItemStack old = V2EquipmentHelper.unequipFromRegion(player, BodyRegionV2.TORSO);
|
||||
ItemStack old = V2EquipmentHelper.unequipFromRegion(
|
||||
player,
|
||||
BodyRegionV2.TORSO
|
||||
);
|
||||
|
||||
// Equip new clothes if we successfully removed old ones
|
||||
if (!old.isEmpty()) {
|
||||
equip.setInRegion(BodyRegionV2.TORSO, newClothes.copy());
|
||||
|
||||
// Fire lifecycle hook for new item
|
||||
if (!newClothes.isEmpty() && newClothes.getItem() instanceof IV2BondageItem newItem) {
|
||||
if (
|
||||
!newClothes.isEmpty() &&
|
||||
newClothes.getItem() instanceof IV2BondageItem newItem
|
||||
) {
|
||||
newItem.onEquipped(newClothes, player);
|
||||
}
|
||||
|
||||
|
||||
@@ -29,31 +29,52 @@ public class PlayerDataRetrieval {
|
||||
// ========== Equipment Getters ==========
|
||||
|
||||
public ItemStack getCurrentBind() {
|
||||
return V2EquipmentHelper.getInRegion(host.getPlayer(), BodyRegionV2.ARMS);
|
||||
return V2EquipmentHelper.getInRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.ARMS
|
||||
);
|
||||
}
|
||||
|
||||
public ItemStack getCurrentGag() {
|
||||
return V2EquipmentHelper.getInRegion(host.getPlayer(), BodyRegionV2.MOUTH);
|
||||
return V2EquipmentHelper.getInRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.MOUTH
|
||||
);
|
||||
}
|
||||
|
||||
public ItemStack getCurrentBlindfold() {
|
||||
return V2EquipmentHelper.getInRegion(host.getPlayer(), BodyRegionV2.EYES);
|
||||
return V2EquipmentHelper.getInRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.EYES
|
||||
);
|
||||
}
|
||||
|
||||
public ItemStack getCurrentEarplugs() {
|
||||
return V2EquipmentHelper.getInRegion(host.getPlayer(), BodyRegionV2.EARS);
|
||||
return V2EquipmentHelper.getInRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.EARS
|
||||
);
|
||||
}
|
||||
|
||||
public ItemStack getCurrentClothes() {
|
||||
return V2EquipmentHelper.getInRegion(host.getPlayer(), BodyRegionV2.TORSO);
|
||||
return V2EquipmentHelper.getInRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.TORSO
|
||||
);
|
||||
}
|
||||
|
||||
public ItemStack getCurrentMittens() {
|
||||
return V2EquipmentHelper.getInRegion(host.getPlayer(), BodyRegionV2.HANDS);
|
||||
return V2EquipmentHelper.getInRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.HANDS
|
||||
);
|
||||
}
|
||||
|
||||
public ItemStack getCurrentCollar() {
|
||||
return V2EquipmentHelper.getInRegion(host.getPlayer(), BodyRegionV2.NECK);
|
||||
return V2EquipmentHelper.getInRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.NECK
|
||||
);
|
||||
}
|
||||
|
||||
// ========== Player Information ==========
|
||||
@@ -97,7 +118,6 @@ public class PlayerDataRetrieval {
|
||||
|
||||
/**
|
||||
* Check if player has clothes with small arms flag.
|
||||
* TODO Phase 14+: Check clothes NBT for small arms flag
|
||||
*/
|
||||
public boolean hasClothesWithSmallArms() {
|
||||
return false;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
package com.tiedup.remake.state.components;
|
||||
|
||||
import com.tiedup.remake.v2.bondage.IV2BondageItem;
|
||||
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;
|
||||
import com.tiedup.remake.v2.bondage.IV2BondageItem;
|
||||
import com.tiedup.remake.v2.bondage.capability.V2EquipmentHelper;
|
||||
import java.util.function.Supplier;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
@@ -61,7 +61,7 @@ public class PlayerEquipment {
|
||||
host.syncClothesConfig();
|
||||
}
|
||||
|
||||
/** Equips mittens (blocks hand interactions). Phase 14.4: Mittens system. Issue #14 fix: now calls onEquipped. */
|
||||
/** Equips mittens (blocks hand interactions). Mittens system. Issue #14 fix: now calls onEquipped. */
|
||||
public void putMittensOn(ItemStack mittens) {
|
||||
equipInRegion(BodyRegionV2.HANDS, mittens);
|
||||
checkMittensAfterApply();
|
||||
@@ -77,40 +77,67 @@ public class PlayerEquipment {
|
||||
|
||||
/** Removes binds and restores speed. */
|
||||
public ItemStack takeBindOff() {
|
||||
return V2EquipmentHelper.unequipFromRegion(host.getPlayer(), BodyRegionV2.ARMS);
|
||||
return V2EquipmentHelper.unequipFromRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.ARMS
|
||||
);
|
||||
}
|
||||
|
||||
public ItemStack takeGagOff() {
|
||||
return V2EquipmentHelper.unequipFromRegion(host.getPlayer(), BodyRegionV2.MOUTH);
|
||||
return V2EquipmentHelper.unequipFromRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.MOUTH
|
||||
);
|
||||
}
|
||||
|
||||
public ItemStack takeBlindfoldOff() {
|
||||
return V2EquipmentHelper.unequipFromRegion(host.getPlayer(), BodyRegionV2.EYES);
|
||||
return V2EquipmentHelper.unequipFromRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.EYES
|
||||
);
|
||||
}
|
||||
|
||||
public ItemStack takeCollarOff() {
|
||||
return V2EquipmentHelper.unequipFromRegion(host.getPlayer(), BodyRegionV2.NECK);
|
||||
return V2EquipmentHelper.unequipFromRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.NECK
|
||||
);
|
||||
}
|
||||
|
||||
/** Removes mittens. Phase 14.4: Mittens system */
|
||||
/** Removes mittens. Mittens system */
|
||||
public ItemStack takeMittensOff() {
|
||||
ItemStack mittens = V2EquipmentHelper.getInRegion(host.getPlayer(), BodyRegionV2.HANDS);
|
||||
ItemStack mittens = V2EquipmentHelper.getInRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.HANDS
|
||||
);
|
||||
if (isLocked(mittens, false)) {
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
return V2EquipmentHelper.unequipFromRegion(host.getPlayer(), BodyRegionV2.HANDS);
|
||||
return V2EquipmentHelper.unequipFromRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.HANDS
|
||||
);
|
||||
}
|
||||
|
||||
public ItemStack takeEarplugsOff() {
|
||||
ItemStack earplugs = V2EquipmentHelper.getInRegion(host.getPlayer(), BodyRegionV2.EARS);
|
||||
ItemStack earplugs = V2EquipmentHelper.getInRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.EARS
|
||||
);
|
||||
if (isLocked(earplugs, false)) {
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
return V2EquipmentHelper.unequipFromRegion(host.getPlayer(), BodyRegionV2.EARS);
|
||||
return V2EquipmentHelper.unequipFromRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.EARS
|
||||
);
|
||||
}
|
||||
|
||||
public ItemStack takeClothesOff() {
|
||||
ItemStack clothes = V2EquipmentHelper.unequipFromRegion(host.getPlayer(), BodyRegionV2.TORSO);
|
||||
ItemStack clothes = V2EquipmentHelper.unequipFromRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.TORSO
|
||||
);
|
||||
// Sync clothes removal to all tracking clients
|
||||
host.syncClothesConfig();
|
||||
return clothes;
|
||||
@@ -121,7 +148,10 @@ public class PlayerEquipment {
|
||||
*/
|
||||
public ItemStack takeCollarOff(boolean force) {
|
||||
Player player = host.getPlayer();
|
||||
ItemStack collar = V2EquipmentHelper.getInRegion(player, BodyRegionV2.NECK);
|
||||
ItemStack collar = V2EquipmentHelper.getInRegion(
|
||||
player,
|
||||
BodyRegionV2.NECK
|
||||
);
|
||||
if (collar.isEmpty()) return ItemStack.EMPTY;
|
||||
|
||||
if (collar.getItem() instanceof ItemCollar collarItem) {
|
||||
@@ -135,21 +165,30 @@ public class PlayerEquipment {
|
||||
|
||||
/** Replaces the blindfold and returns the old one. Issue #14 fix: now calls lifecycle hooks. */
|
||||
public ItemStack replaceBlindfold(ItemStack newBlindfold) {
|
||||
ItemStack current = V2EquipmentHelper.getInRegion(host.getPlayer(), BodyRegionV2.EYES);
|
||||
ItemStack current = V2EquipmentHelper.getInRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.EYES
|
||||
);
|
||||
if (current.isEmpty()) return ItemStack.EMPTY;
|
||||
return replaceInRegion(BodyRegionV2.EYES, newBlindfold);
|
||||
}
|
||||
|
||||
/** Replaces the gag and returns the old one. Issue #14 fix: now calls lifecycle hooks. */
|
||||
public ItemStack replaceGag(ItemStack newGag) {
|
||||
ItemStack current = V2EquipmentHelper.getInRegion(host.getPlayer(), BodyRegionV2.MOUTH);
|
||||
ItemStack current = V2EquipmentHelper.getInRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.MOUTH
|
||||
);
|
||||
if (current.isEmpty()) return ItemStack.EMPTY;
|
||||
return replaceInRegion(BodyRegionV2.MOUTH, newGag);
|
||||
}
|
||||
|
||||
/** Replaces the collar and returns the old one. Issue #14 fix: now calls lifecycle hooks. */
|
||||
public ItemStack replaceCollar(ItemStack newCollar) {
|
||||
ItemStack current = V2EquipmentHelper.getInRegion(host.getPlayer(), BodyRegionV2.NECK);
|
||||
ItemStack current = V2EquipmentHelper.getInRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.NECK
|
||||
);
|
||||
if (current.isEmpty()) return ItemStack.EMPTY;
|
||||
return replaceInRegion(BodyRegionV2.NECK, newCollar);
|
||||
}
|
||||
@@ -176,7 +215,10 @@ public class PlayerEquipment {
|
||||
if (newBind.isEmpty()) {
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
ItemStack current = V2EquipmentHelper.getInRegion(host.getPlayer(), BodyRegionV2.ARMS);
|
||||
ItemStack current = V2EquipmentHelper.getInRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.ARMS
|
||||
);
|
||||
if (isLocked(current, force)) {
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
@@ -188,27 +230,42 @@ public class PlayerEquipment {
|
||||
}
|
||||
|
||||
public ItemStack replaceGag(ItemStack newGag, boolean force) {
|
||||
ItemStack current = V2EquipmentHelper.getInRegion(host.getPlayer(), BodyRegionV2.MOUTH);
|
||||
ItemStack current = V2EquipmentHelper.getInRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.MOUTH
|
||||
);
|
||||
if (isLocked(current, force)) {
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
ItemStack old = V2EquipmentHelper.unequipFromRegion(host.getPlayer(), BodyRegionV2.MOUTH);
|
||||
ItemStack old = V2EquipmentHelper.unequipFromRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.MOUTH
|
||||
);
|
||||
putGagOn(newGag);
|
||||
return old;
|
||||
}
|
||||
|
||||
public ItemStack replaceBlindfold(ItemStack newBlindfold, boolean force) {
|
||||
ItemStack current = V2EquipmentHelper.getInRegion(host.getPlayer(), BodyRegionV2.EYES);
|
||||
ItemStack current = V2EquipmentHelper.getInRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.EYES
|
||||
);
|
||||
if (isLocked(current, force)) {
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
ItemStack old = V2EquipmentHelper.unequipFromRegion(host.getPlayer(), BodyRegionV2.EYES);
|
||||
ItemStack old = V2EquipmentHelper.unequipFromRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.EYES
|
||||
);
|
||||
putBlindfoldOn(newBlindfold);
|
||||
return old;
|
||||
}
|
||||
|
||||
public ItemStack replaceCollar(ItemStack newCollar, boolean force) {
|
||||
ItemStack current = V2EquipmentHelper.getInRegion(host.getPlayer(), BodyRegionV2.NECK);
|
||||
ItemStack current = V2EquipmentHelper.getInRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.NECK
|
||||
);
|
||||
if (isLocked(current, force)) {
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
@@ -222,7 +279,10 @@ public class PlayerEquipment {
|
||||
}
|
||||
|
||||
public ItemStack replaceEarplugs(ItemStack newEarplugs, boolean force) {
|
||||
ItemStack current = V2EquipmentHelper.getInRegion(host.getPlayer(), BodyRegionV2.EARS);
|
||||
ItemStack current = V2EquipmentHelper.getInRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.EARS
|
||||
);
|
||||
if (isLocked(current, force)) {
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
@@ -236,7 +296,10 @@ public class PlayerEquipment {
|
||||
}
|
||||
|
||||
public ItemStack replaceMittens(ItemStack newMittens, boolean force) {
|
||||
ItemStack current = V2EquipmentHelper.getInRegion(host.getPlayer(), BodyRegionV2.HANDS);
|
||||
ItemStack current = V2EquipmentHelper.getInRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.HANDS
|
||||
);
|
||||
if (isLocked(current, force)) {
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
@@ -250,11 +313,13 @@ public class PlayerEquipment {
|
||||
// ========== Resistance Methods ==========
|
||||
|
||||
/**
|
||||
* Phase 14.1.7: Now part of IRestrainable interface
|
||||
*/
|
||||
public synchronized int getCurrentBindResistance() {
|
||||
Player player = host.getPlayer();
|
||||
ItemStack stack = V2EquipmentHelper.getInRegion(player, BodyRegionV2.ARMS);
|
||||
ItemStack stack = V2EquipmentHelper.getInRegion(
|
||||
player,
|
||||
BodyRegionV2.ARMS
|
||||
);
|
||||
if (
|
||||
stack.isEmpty() || !(stack.getItem() instanceof ItemBind bind)
|
||||
) return 0;
|
||||
@@ -262,11 +327,13 @@ public class PlayerEquipment {
|
||||
}
|
||||
|
||||
/**
|
||||
* Phase 14.1.7: Now part of IRestrainable interface
|
||||
*/
|
||||
public synchronized void setCurrentBindResistance(int resistance) {
|
||||
Player player = host.getPlayer();
|
||||
ItemStack stack = V2EquipmentHelper.getInRegion(player, BodyRegionV2.ARMS);
|
||||
ItemStack stack = V2EquipmentHelper.getInRegion(
|
||||
player,
|
||||
BodyRegionV2.ARMS
|
||||
);
|
||||
if (
|
||||
stack.isEmpty() || !(stack.getItem() instanceof ItemBind bind)
|
||||
) return;
|
||||
@@ -274,11 +341,13 @@ public class PlayerEquipment {
|
||||
}
|
||||
|
||||
/**
|
||||
* Phase 14.1.7: Added for IRestrainable interface
|
||||
*/
|
||||
public synchronized int getCurrentCollarResistance() {
|
||||
Player player = host.getPlayer();
|
||||
ItemStack stack = V2EquipmentHelper.getInRegion(player, BodyRegionV2.NECK);
|
||||
ItemStack stack = V2EquipmentHelper.getInRegion(
|
||||
player,
|
||||
BodyRegionV2.NECK
|
||||
);
|
||||
if (
|
||||
stack.isEmpty() || !(stack.getItem() instanceof ItemCollar collar)
|
||||
) return 0;
|
||||
@@ -286,11 +355,13 @@ public class PlayerEquipment {
|
||||
}
|
||||
|
||||
/**
|
||||
* Phase 14.1.7: Added for IRestrainable interface
|
||||
*/
|
||||
public synchronized void setCurrentCollarResistance(int resistance) {
|
||||
Player player = host.getPlayer();
|
||||
ItemStack stack = V2EquipmentHelper.getInRegion(player, BodyRegionV2.NECK);
|
||||
ItemStack stack = V2EquipmentHelper.getInRegion(
|
||||
player,
|
||||
BodyRegionV2.NECK
|
||||
);
|
||||
if (
|
||||
stack.isEmpty() || !(stack.getItem() instanceof ItemCollar collar)
|
||||
) return;
|
||||
@@ -339,7 +410,10 @@ public class PlayerEquipment {
|
||||
}
|
||||
|
||||
private boolean hasMittens() {
|
||||
return V2EquipmentHelper.isRegionOccupied(host.getPlayer(), BodyRegionV2.HANDS);
|
||||
return V2EquipmentHelper.isRegionOccupied(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.HANDS
|
||||
);
|
||||
}
|
||||
|
||||
// ========== Low-level V2 equipment operations ==========
|
||||
@@ -380,7 +454,9 @@ public class PlayerEquipment {
|
||||
*/
|
||||
private ItemStack replaceInRegion(BodyRegionV2 region, ItemStack newStack) {
|
||||
Player player = host.getPlayer();
|
||||
if (player == null || player.level().isClientSide) return ItemStack.EMPTY;
|
||||
if (
|
||||
player == null || player.level().isClientSide
|
||||
) return ItemStack.EMPTY;
|
||||
|
||||
IV2BondageEquipment equip = V2EquipmentHelper.getEquipment(player);
|
||||
if (equip == null) return ItemStack.EMPTY;
|
||||
@@ -388,7 +464,10 @@ public class PlayerEquipment {
|
||||
ItemStack oldStack = equip.getInRegion(region);
|
||||
|
||||
// Call onUnequipped for the old item
|
||||
if (!oldStack.isEmpty() && oldStack.getItem() instanceof IV2BondageItem oldItem) {
|
||||
if (
|
||||
!oldStack.isEmpty() &&
|
||||
oldStack.getItem() instanceof IV2BondageItem oldItem
|
||||
) {
|
||||
oldItem.onUnequipped(oldStack, player);
|
||||
}
|
||||
|
||||
@@ -396,7 +475,10 @@ public class PlayerEquipment {
|
||||
equip.setInRegion(region, newStack.copy());
|
||||
|
||||
// Call onEquipped for the new item
|
||||
if (!newStack.isEmpty() && newStack.getItem() instanceof IV2BondageItem newItem) {
|
||||
if (
|
||||
!newStack.isEmpty() &&
|
||||
newStack.getItem() instanceof IV2BondageItem newItem
|
||||
) {
|
||||
newItem.onEquipped(newStack, player);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.tiedup.remake.state.components;
|
||||
|
||||
import com.tiedup.remake.cells.CampOwnership;
|
||||
import com.tiedup.remake.v2.BodyRegionV2;
|
||||
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.BodyRegionV2;
|
||||
import java.util.UUID;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
@@ -47,7 +47,6 @@ public class PlayerLifecycle {
|
||||
// Update player reference
|
||||
host.setOnline(true);
|
||||
|
||||
// Phase 17: Clear captor reference (enslavement ends on disconnect)
|
||||
host.setCaptor(null);
|
||||
|
||||
// Reset struggle animation state (prevent stuck animations)
|
||||
|
||||
@@ -4,7 +4,6 @@ import com.tiedup.remake.util.tasks.ItemTask;
|
||||
|
||||
/**
|
||||
* Component responsible for player sale system.
|
||||
* Phase 14.3.5: Sale system fields
|
||||
*
|
||||
* Single Responsibility: Sale state management
|
||||
* Complexity: LOW (simple state tracking)
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.tiedup.remake.state.components;
|
||||
|
||||
import com.tiedup.remake.core.ModSounds;
|
||||
import com.tiedup.remake.v2.BodyRegionV2;
|
||||
import com.tiedup.remake.core.SystemMessageManager;
|
||||
import com.tiedup.remake.core.SystemMessageManager.MessageCategory;
|
||||
import com.tiedup.remake.core.TiedUpMod;
|
||||
@@ -10,6 +9,7 @@ import com.tiedup.remake.items.ItemShockCollarAuto;
|
||||
import com.tiedup.remake.state.hosts.IPlayerBindStateHost;
|
||||
import com.tiedup.remake.util.GameConstants;
|
||||
import com.tiedup.remake.util.time.Timer;
|
||||
import com.tiedup.remake.v2.BodyRegionV2;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import net.minecraft.ChatFormatting;
|
||||
@@ -20,7 +20,6 @@ import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* Component responsible for shock collar mechanics and GPS tracking.
|
||||
* Phase 13: Advanced collar features (shocks, GPS tracking)
|
||||
*
|
||||
* Single Responsibility: Collar automation and GPS monitoring
|
||||
* Complexity: HIGH (synchronized timer, GPS zone checks, network messages)
|
||||
@@ -32,7 +31,6 @@ public class PlayerShockCollar {
|
||||
|
||||
private final IPlayerBindStateHost host;
|
||||
|
||||
// Phase 13: Collar automation fields
|
||||
// volatile: accessed from synchronized blocks across multiple threads
|
||||
private volatile Timer timerAutoShockCollar;
|
||||
private final Object lockTimerAutoShock = new Object();
|
||||
|
||||
@@ -9,7 +9,6 @@ import com.tiedup.remake.v2.BodyRegionV2;
|
||||
/**
|
||||
* Component responsible for special player interactions.
|
||||
* v2.5: Knife cut target for accessory cutting
|
||||
* Phase 14.1.7: Item transfers between players
|
||||
*
|
||||
* Single Responsibility: Special action management
|
||||
* Complexity: MEDIUM (external dependencies)
|
||||
@@ -67,14 +66,12 @@ public class PlayerSpecialActions {
|
||||
}
|
||||
|
||||
/**
|
||||
* Phase 14.1.7: Transfer bondage item from this player to another.
|
||||
* Updated to use IRestrainable parameter (was PlayerBindState)
|
||||
*
|
||||
* @param taker The entity taking the item
|
||||
* @param slotIndex The slot index to take from
|
||||
*/
|
||||
public void takeBondageItemBy(IRestrainableEntity taker, int slotIndex) {
|
||||
// TODO Phase 14+: Transfer item from this player to taker
|
||||
TiedUpMod.LOGGER.debug(
|
||||
"[PlayerSpecialActions] {} taking bondage item from {} (slot {})",
|
||||
taker.getKidnappedName(),
|
||||
|
||||
@@ -28,22 +28,34 @@ public class PlayerStateQuery {
|
||||
|
||||
/** Check if player has ropes/ties equipped. */
|
||||
public boolean isTiedUp() {
|
||||
return V2EquipmentHelper.isRegionOccupied(host.getPlayer(), BodyRegionV2.ARMS);
|
||||
return V2EquipmentHelper.isRegionOccupied(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.ARMS
|
||||
);
|
||||
}
|
||||
|
||||
/** Check if player is currently gagged. */
|
||||
public boolean isGagged() {
|
||||
return V2EquipmentHelper.isRegionOccupied(host.getPlayer(), BodyRegionV2.MOUTH);
|
||||
return V2EquipmentHelper.isRegionOccupied(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.MOUTH
|
||||
);
|
||||
}
|
||||
|
||||
/** Check if player is blindfolded. */
|
||||
public boolean isBlindfolded() {
|
||||
return V2EquipmentHelper.isRegionOccupied(host.getPlayer(), BodyRegionV2.EYES);
|
||||
return V2EquipmentHelper.isRegionOccupied(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.EYES
|
||||
);
|
||||
}
|
||||
|
||||
/** Check if player has earplugs. */
|
||||
public boolean hasEarplugs() {
|
||||
return V2EquipmentHelper.isRegionOccupied(host.getPlayer(), BodyRegionV2.EARS);
|
||||
return V2EquipmentHelper.isRegionOccupied(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.EARS
|
||||
);
|
||||
}
|
||||
|
||||
public boolean isEarplugged() {
|
||||
@@ -52,22 +64,34 @@ public class PlayerStateQuery {
|
||||
|
||||
/** Check if player is wearing a collar. */
|
||||
public boolean hasCollar() {
|
||||
return V2EquipmentHelper.isRegionOccupied(host.getPlayer(), BodyRegionV2.NECK);
|
||||
return V2EquipmentHelper.isRegionOccupied(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.NECK
|
||||
);
|
||||
}
|
||||
|
||||
/** Returns the current collar ItemStack, or empty if none. */
|
||||
public ItemStack getCurrentCollar() {
|
||||
if (!hasCollar()) return ItemStack.EMPTY;
|
||||
return V2EquipmentHelper.getInRegion(host.getPlayer(), BodyRegionV2.NECK);
|
||||
return V2EquipmentHelper.getInRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.NECK
|
||||
);
|
||||
}
|
||||
|
||||
public boolean hasClothes() {
|
||||
return V2EquipmentHelper.isRegionOccupied(host.getPlayer(), BodyRegionV2.TORSO);
|
||||
return V2EquipmentHelper.isRegionOccupied(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.TORSO
|
||||
);
|
||||
}
|
||||
|
||||
/** Check if player has mittens equipped. Phase 14.4: Mittens system */
|
||||
/** Check if player has mittens equipped. Mittens system */
|
||||
public boolean hasMittens() {
|
||||
return V2EquipmentHelper.isRegionOccupied(host.getPlayer(), BodyRegionV2.HANDS);
|
||||
return V2EquipmentHelper.isRegionOccupied(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.HANDS
|
||||
);
|
||||
}
|
||||
|
||||
/** Check if player can be tied up (not already tied). */
|
||||
@@ -104,7 +128,10 @@ public class PlayerStateQuery {
|
||||
*/
|
||||
public boolean hasGaggingEffect() {
|
||||
if (!isGagged()) return false;
|
||||
ItemStack gag = V2EquipmentHelper.getInRegion(host.getPlayer(), BodyRegionV2.MOUTH);
|
||||
ItemStack gag = V2EquipmentHelper.getInRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.MOUTH
|
||||
);
|
||||
if (gag.isEmpty()) return false;
|
||||
return (
|
||||
gag.getItem() instanceof
|
||||
@@ -118,7 +145,10 @@ public class PlayerStateQuery {
|
||||
*/
|
||||
public boolean hasBlindingEffect() {
|
||||
if (!isBlindfolded()) return false;
|
||||
ItemStack blindfold = V2EquipmentHelper.getInRegion(host.getPlayer(), BodyRegionV2.EYES);
|
||||
ItemStack blindfold = V2EquipmentHelper.getInRegion(
|
||||
host.getPlayer(),
|
||||
BodyRegionV2.EYES
|
||||
);
|
||||
if (blindfold.isEmpty()) return false;
|
||||
return (
|
||||
blindfold.getItem() instanceof
|
||||
|
||||
@@ -8,7 +8,6 @@ import net.minecraft.world.entity.player.Player;
|
||||
|
||||
/**
|
||||
* Component responsible for struggle mechanics and resistance management.
|
||||
* Phase 7: Struggle & Resistance Methods
|
||||
*
|
||||
* Single Responsibility: Struggle state and resistance tracking
|
||||
* Complexity: MEDIUM (volatile fields, animation coordination)
|
||||
@@ -24,7 +23,6 @@ public class PlayerStruggle {
|
||||
private final IPlayerBindStateHost host;
|
||||
private final PlayerBindState state; // Cast reference for struggle system
|
||||
|
||||
// Phase 7 & 8: Struggle state tracking
|
||||
private final StruggleBinds struggleBindState;
|
||||
private final StruggleCollar struggleCollarState;
|
||||
|
||||
|
||||
@@ -7,7 +7,6 @@ import com.tiedup.remake.tasks.UntyingTask;
|
||||
|
||||
/**
|
||||
* Component responsible for tracking tying/untying tasks.
|
||||
* Phase 6: Tying/Untying task tracking (Phase 14.2.6: unified for Players + NPCs)
|
||||
*
|
||||
* Single Responsibility: Task state management
|
||||
* Complexity: LOW (simple getters/setters)
|
||||
|
||||
Reference in New Issue
Block a user