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:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ public class RangeDispatchItemModel implements ItemModel {
|
||||
return scale;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public ItemModel fallBack() {
|
||||
return fallBack;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user