P3-19 review polish : drop redundant distinct + reorder keybind guard
MEDIUM SMELL-01 reviewer : V2EquipmentHelper.getAllEquipped already identity-dedupes (IdentityHashMap upstream in V2BondageEquipment:84). The extra .mapToInt(identityHashCode).distinct() was dead defensive code. Simplified to direct .count(). MEDIUM SMELL-02 reviewer : keybind guard 'mc.player == null || mc.level == null' fired BEFORE RIG_DEBUG_KEY consumeClick loop. Main menu clicks were queued and flushed on world-join (phantom toggle). Move toggle consumption BEFORE the guard — it's a client-side boolean flip, needs no world context. LOW RISK-01 skipped : pin test on Layer.toString() format would require either registry init (TiedUpRigRegistry.EMPTY_ANIMATION in AnimationPlayer ctor) or Mockito ; test env doesn't currently init the RIG registry and layerPriorityName() already has a defensive "?" fallback. Gameday check is a tighter feedback loop than a flaky unit test here.
This commit is contained in:
@@ -225,6 +225,19 @@ public class ModKeybindings {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RIG debug overlay toggle (P3-19) — F6 by default.
|
||||||
|
// Consumed BEFORE the player/level guard: it's a pure client-side
|
||||||
|
// boolean flip, needs no world context. Otherwise clicks queued on
|
||||||
|
// main menu / loading screen would flush on world-join → phantom
|
||||||
|
// toggle (reviewer SMELL-02).
|
||||||
|
while (RIG_DEBUG_KEY.consumeClick()) {
|
||||||
|
boolean nowOn = com.tiedup.remake.rig.debug.RigDebugOverlay.toggle();
|
||||||
|
TiedUpMod.LOGGER.debug(
|
||||||
|
"[CLIENT] RIG debug overlay: {}",
|
||||||
|
nowOn ? "ENABLED" : "DISABLED"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
Minecraft mc = Minecraft.getInstance();
|
Minecraft mc = Minecraft.getInstance();
|
||||||
if (mc.player == null || mc.level == null) {
|
if (mc.player == null || mc.level == null) {
|
||||||
return;
|
return;
|
||||||
@@ -293,15 +306,6 @@ public class ModKeybindings {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// RIG debug overlay toggle (P3-19) — F6 by default
|
|
||||||
while (RIG_DEBUG_KEY.consumeClick()) {
|
|
||||||
boolean nowOn = com.tiedup.remake.rig.debug.RigDebugOverlay.toggle();
|
|
||||||
TiedUpMod.LOGGER.debug(
|
|
||||||
"[CLIENT] RIG debug overlay: {}",
|
|
||||||
nowOn ? "ENABLED" : "DISABLED"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -215,16 +215,16 @@ public final class RigDebugOverlay {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Compte les items data-driven équipés. Un armbinder occupant 3 régions
|
* Compte les items data-driven équipés. Un armbinder occupant 3 régions
|
||||||
* compte pour 1 (dédup identity via {@code distinct()} sur
|
* compte pour 1 — la dédup identity est déjà garantie upstream par
|
||||||
* {@code identityHashCode} des stacks).
|
* {@link com.tiedup.remake.v2.bondage.capability.V2BondageEquipment#getAllEquipped()}
|
||||||
|
* via {@code IdentityHashMap}. Pas de {@code .distinct()} ici : serait
|
||||||
|
* du dead defensive code.
|
||||||
*/
|
*/
|
||||||
private static void appendItemCountLine(List<String> lines, Player player) {
|
private static void appendItemCountLine(List<String> lines, Player player) {
|
||||||
Map<BodyRegionV2, ItemStack> equipped = V2EquipmentHelper.getAllEquipped(player);
|
Map<BodyRegionV2, ItemStack> equipped = V2EquipmentHelper.getAllEquipped(player);
|
||||||
long count = equipped.values().stream()
|
long count = equipped.values().stream()
|
||||||
.filter(s -> s != null && !s.isEmpty())
|
.filter(s -> s != null && !s.isEmpty())
|
||||||
.filter(s -> DataDrivenItemRegistry.get(s) != null)
|
.filter(s -> DataDrivenItemRegistry.get(s) != null)
|
||||||
.mapToInt(System::identityHashCode)
|
|
||||||
.distinct()
|
|
||||||
.count();
|
.count();
|
||||||
lines.add(String.format("items: §e%d§r", count));
|
lines.add(String.format("items: §e%d§r", count));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user