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:
NotEvil
2026-04-12 01:24:49 +02:00
parent 73d70e212d
commit a71093ba9c
482 changed files with 8500 additions and 5155 deletions

View File

@@ -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.
*

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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);
}

View File

@@ -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)

View File

@@ -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)

View File

@@ -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();

View File

@@ -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(),

View File

@@ -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

View File

@@ -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;

View File

@@ -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)