9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-29 03:49:15 +00:00
This commit is contained in:
XiaoMoMi
2025-03-15 22:50:57 +08:00
parent 8c73cb8ba1
commit 45859fd661
7 changed files with 211 additions and 89 deletions

View File

@@ -21,6 +21,8 @@ import net.momirealms.craftengine.core.pack.Pack;
import net.momirealms.craftengine.core.pack.misc.EquipmentGeneration;
import net.momirealms.craftengine.core.pack.model.*;
import net.momirealms.craftengine.core.pack.model.generation.ModelGeneration;
import net.momirealms.craftengine.core.pack.model.select.ChargeTypeSelectProperty;
import net.momirealms.craftengine.core.pack.model.select.TrimMaterialSelectProperty;
import net.momirealms.craftengine.core.plugin.config.ConfigManager;
import net.momirealms.craftengine.core.registry.BuiltInRegistries;
import net.momirealms.craftengine.core.registry.Holder;
@@ -454,13 +456,19 @@ public class BukkitItemManager extends AbstractItemManager<ItemStack> {
for (Map.Entry<Either<String, List<String>>, ItemModel> entry : model.whenMap().entrySet()) {
List<String> cases = entry.getKey().fallbackOrMapPrimary(List::of);
for (String caseValue : cases) {
Number legacyValue = predicate.toLegacyValue(caseValue);
if (predicate instanceof TrimMaterialSelectProperty property && property.isArmor(materialId)) {
if (legacyValue.floatValue() > 1f) {
continue;
}
}
Map<String, Object> merged = mergePredicates(
parentPredicates,
predicateId,
predicate.toLegacyValue(caseValue)
legacyValue
);
// Additional check for crossbow
if (materialId.equals(ItemKeys.CROSSBOW)) {
if (predicate instanceof ChargeTypeSelectProperty && materialId.equals(ItemKeys.CROSSBOW)) {
merged = mergePredicates(
merged,
"charged",
@@ -477,19 +485,32 @@ public class BukkitItemManager extends AbstractItemManager<ItemStack> {
}
}
// Additional check for crossbow
if (model.fallBack() != null && materialId.equals(ItemKeys.CROSSBOW)) {
Map<String, Object> merged = mergePredicates(
parentPredicates,
"charged",
0
);
processModelRecursively(
model.fallBack(),
merged,
resultList,
materialId,
customModelData
);
if (model.fallBack() != null) {
if (predicate instanceof ChargeTypeSelectProperty && materialId.equals(ItemKeys.CROSSBOW)) {
processModelRecursively(
model.fallBack(),
mergePredicates(
parentPredicates,
"charged",
0
),
resultList,
materialId,
customModelData
);
} else if (predicate instanceof TrimMaterialSelectProperty property && property.isArmor(materialId)) {
processModelRecursively(
model.fallBack(),
mergePredicates(
parentPredicates,
"trim_type",
0f
),
resultList,
materialId,
customModelData
);
}
}
}
}