fix(D-01/A): 3 review bugs + null guards (BUG-001, BUG-002, BUG-003, RISK-003)
BUG-001: TyingInteractionHelper swap now checks V2EquipResult — on failure, rolls back by re-equipping the old bind instead of leaving target untied BUG-002: OwnershipComponent.onUnequipped no longer double-calls unregisterWearer — onCollarRemoved already handles it. Suppressed-alert path calls unregister directly since onCollarRemoved is skipped. BUG-003: PacketSelfBondage handleV2SelfBind now clears completed tying task from PlayerBindState to prevent blocking future tying interactions RISK-003: StruggleCollar get/setResistanceState null-guard on player
This commit is contained in:
@@ -67,23 +67,26 @@ public class OwnershipComponent implements IItemComponent {
|
||||
if (entity.level().isClientSide()) return;
|
||||
if (!(entity.level() instanceof ServerLevel serverLevel)) return;
|
||||
|
||||
// Alert kidnappers if removal wasn't suppressed
|
||||
// Alert kidnappers + unregister from CollarRegistry
|
||||
// onCollarRemoved handles both the alert AND the unregister call internally,
|
||||
// so we do NOT call registry.unregisterWearer() separately to avoid double unregister.
|
||||
if (!CollarHelper.isRemovalAlertSuppressed()) {
|
||||
ItemCollar.onCollarRemoved(entity, true);
|
||||
}
|
||||
|
||||
try {
|
||||
CollarRegistry registry = CollarRegistry.get(serverLevel);
|
||||
registry.unregisterWearer(entity.getUUID());
|
||||
TiedUpMod.LOGGER.debug(
|
||||
"[OwnershipComponent] Unregistered collar for {}",
|
||||
entity.getName().getString()
|
||||
);
|
||||
} catch (Exception e) {
|
||||
TiedUpMod.LOGGER.warn(
|
||||
"[OwnershipComponent] Failed to unregister collar for {}: {}",
|
||||
entity.getName().getString(), e.getMessage()
|
||||
);
|
||||
} else {
|
||||
// Suppressed alert path: still need to unregister, just skip the alert
|
||||
try {
|
||||
CollarRegistry registry = CollarRegistry.get(serverLevel);
|
||||
registry.unregisterWearer(entity.getUUID());
|
||||
TiedUpMod.LOGGER.debug(
|
||||
"[OwnershipComponent] Unregistered collar for {} (alert suppressed)",
|
||||
entity.getName().getString()
|
||||
);
|
||||
} catch (Exception e) {
|
||||
TiedUpMod.LOGGER.warn(
|
||||
"[OwnershipComponent] Failed to unregister collar for {}: {}",
|
||||
entity.getName().getString(), e.getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user