9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-30 20:39:10 +00:00

Improved legacy model generator

This commit is contained in:
XiaoMoMi
2025-02-14 03:50:56 +08:00
parent a7320dd2fc
commit 708595399b
9 changed files with 60 additions and 11 deletions

View File

@@ -6,10 +6,7 @@ import net.momirealms.craftengine.bukkit.util.ItemUtils;
import net.momirealms.craftengine.bukkit.util.MaterialUtils;
import net.momirealms.craftengine.bukkit.util.Reflections;
import net.momirealms.craftengine.core.entity.player.Player;
import net.momirealms.craftengine.core.item.AbstractItemManager;
import net.momirealms.craftengine.core.item.BuildableItem;
import net.momirealms.craftengine.core.item.CustomItem;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.*;
import net.momirealms.craftengine.core.item.behavior.ItemBehaviors;
import net.momirealms.craftengine.core.item.modifier.CustomModelDataModifier;
import net.momirealms.craftengine.core.item.modifier.IdModifier;
@@ -359,6 +356,20 @@ public class BukkitItemManager extends AbstractItemManager<ItemStack> {
customModelData
);
}
if (model.fallBack() != null) {
Map<String, Object> merged = mergePredicates(
parentPredicates,
predicateId,
predicate.toLegacyValue(0f)
);
processModelRecursively(
model.fallBack(),
merged,
resultList,
materialId,
customModelData
);
}
}
}
@@ -380,6 +391,14 @@ public class BukkitItemManager extends AbstractItemManager<ItemStack> {
predicateId,
predicate.toLegacyValue(caseValue)
);
// Additional check for crossbow
if (materialId.equals(ItemKeys.CROSSBOW)) {
merged = mergePredicates(
merged,
"charged",
1
);
}
processModelRecursively(
entry.getValue(),
merged,
@@ -389,6 +408,21 @@ 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
);
}
}
}
@@ -398,6 +432,7 @@ public class BukkitItemManager extends AbstractItemManager<ItemStack> {
Number newValue
) {
Map<String, Object> merged = new LinkedHashMap<>(existing);
if (newKey == null) return merged;
merged.put(newKey, newValue);
return merged;
}

View File

@@ -40,6 +40,7 @@ public class RangeDispatchItemModel implements ItemModel {
return scale;
}
@Nullable
public ItemModel fallBack() {
return fallBack;
}

View File

@@ -23,7 +23,7 @@ public class BrokenConditionProperty implements ConditionProperty, LegacyModelPr
@Override
public String legacyPredicateId(Key material) {
if (material.equals(ItemKeys.ELYTRA)) return "broken";
throw new IllegalArgumentException("Unsupported material: " + material);
return null;
}
@Override

View File

@@ -23,7 +23,7 @@ public class RodCastConditionProperty implements ConditionProperty, LegacyModelP
@Override
public String legacyPredicateId(Key material) {
if (material.equals(ItemKeys.FISHING_ROD)) return "cast";
throw new IllegalArgumentException("Unsupported material: " + material);
return null;
}
@Override

View File

@@ -26,7 +26,7 @@ public class UsingItemConditionProperty implements ConditionProperty, LegacyMode
if (material.equals(ItemKeys.TRIDENT)) return "throwing";
if (material.equals(ItemKeys.CROSSBOW) || material.equals(ItemKeys.BOW)) return "pulling";
if (material.equals(ItemKeys.GOAT_HORN)) return "tooting";
throw new IllegalArgumentException("Unsupported material: " + material);
return null;
}
@Override

View File

@@ -23,7 +23,7 @@ public class CrossBowPullingRangeDispatchProperty implements RangeDispatchProper
@Override
public String legacyPredicateId(Key material) {
if (material.equals(ItemKeys.CROSSBOW) || material.equals(ItemKeys.BOW)) return "pull";
throw new IllegalArgumentException("Unsupported material: " + material);
return null;
}
@Override

View File

@@ -1,11 +1,13 @@
package net.momirealms.craftengine.core.pack.model.rangedisptach;
import com.google.gson.JsonObject;
import net.momirealms.craftengine.core.item.ItemKeys;
import net.momirealms.craftengine.core.pack.model.LegacyModelPredicate;
import net.momirealms.craftengine.core.util.Key;
import java.util.Map;
public class UseDurationRangeDispatchProperty implements RangeDispatchProperty {
public class UseDurationRangeDispatchProperty implements RangeDispatchProperty, LegacyModelPredicate<Float> {
public static final Factory FACTORY = new Factory();
private final boolean remaining;
@@ -26,6 +28,17 @@ public class UseDurationRangeDispatchProperty implements RangeDispatchProperty {
}
}
@Override
public String legacyPredicateId(Key material) {
if (material.equals(ItemKeys.BOW)) return "pull";
return null;
}
@Override
public Number toLegacyValue(Float value) {
return value;
}
public static class Factory implements RangeDispatchPropertyFactory {
@Override

View File

@@ -23,7 +23,7 @@ public class ChargeTypeSelectProperty implements SelectProperty, LegacyModelPred
@Override
public String legacyPredicateId(Key material) {
if (material.equals(ItemKeys.CROSSBOW)) return "firework";
throw new IllegalArgumentException("Unsupported material: " + material);
return null;
}
@Override

View File

@@ -41,7 +41,7 @@ public class TrimMaterialSelectProperty implements SelectProperty, LegacyModelPr
if (s.contains("helmet") || s.contains("chestplate") || s.contains("leggings") || s.contains("boots")) {
return "trim";
}
throw new IllegalArgumentException("Unsupported material " + material);
return null;
}
@Override