diff --git a/src/main/java/com/tiedup/remake/v2/bondage/component/ResistanceComponent.java b/src/main/java/com/tiedup/remake/v2/bondage/component/ResistanceComponent.java index ab8f741..e7abad7 100644 --- a/src/main/java/com/tiedup/remake/v2/bondage/component/ResistanceComponent.java +++ b/src/main/java/com/tiedup/remake/v2/bondage/component/ResistanceComponent.java @@ -2,11 +2,31 @@ package com.tiedup.remake.v2.bondage.component; import com.google.gson.JsonObject; +/** + * Component: struggle resistance for data-driven items. + * + * JSON config: {@code "resistance": {"base": 150}} + */ public class ResistanceComponent implements IItemComponent { - private ResistanceComponent() {} + private final int baseResistance; + + private ResistanceComponent(int baseResistance) { + this.baseResistance = baseResistance; + } public static IItemComponent fromJson(JsonObject config) { - return new ResistanceComponent(); + int base = 100; + if (config != null && config.has("base")) { + base = config.get("base").getAsInt(); + } + return new ResistanceComponent(base); + } + + /** + * Get the base resistance for this item. + */ + public int getBaseResistance() { + return baseResistance; } } diff --git a/src/main/java/com/tiedup/remake/v2/bondage/datadriven/DataDrivenBondageItem.java b/src/main/java/com/tiedup/remake/v2/bondage/datadriven/DataDrivenBondageItem.java index 743bd8e..4d65f10 100644 --- a/src/main/java/com/tiedup/remake/v2/bondage/datadriven/DataDrivenBondageItem.java +++ b/src/main/java/com/tiedup/remake/v2/bondage/datadriven/DataDrivenBondageItem.java @@ -7,6 +7,7 @@ import com.tiedup.remake.v2.bondage.capability.V2EquipmentHelper; import com.tiedup.remake.v2.bondage.component.ComponentHolder; import com.tiedup.remake.v2.bondage.component.ComponentType; import com.tiedup.remake.v2.bondage.component.IItemComponent; +import com.tiedup.remake.v2.bondage.component.ResistanceComponent; import com.tiedup.remake.v2.bondage.items.AbstractV2BondageItem; import java.util.List; import java.util.Map; @@ -150,6 +151,21 @@ public class DataDrivenBondageItem extends AbstractV2BondageItem { .entrySet()) { ItemStack stack = entry.getValue(); if (stack.getItem() == this) { + // Try component first (stack-aware, fixes I-03) + ResistanceComponent comp = DataDrivenBondageItem + .getComponent( + stack, + ComponentType.RESISTANCE, + ResistanceComponent.class + ); + if (comp != null) { + maxDifficulty = Math.max( + maxDifficulty, + comp.getBaseResistance() + ); + continue; + } + // Fallback: read from definition directly DataDrivenItemDefinition def = DataDrivenItemRegistry.get(stack); if (def != null) {