diff --git a/common-files/src/main/resources/resources/default/configuration/items/topaz_tool_weapon.yml b/common-files/src/main/resources/resources/default/configuration/items/topaz_tool_weapon.yml index 24e045878..3eb60e3d0 100644 --- a/common-files/src/main/resources/resources/default/configuration/items/topaz_tool_weapon.yml +++ b/common-files/src/main/resources/resources/default/configuration/items/topaz_tool_weapon.yml @@ -133,6 +133,7 @@ items: - gui - ground - fixed + - on_shelf model: type: minecraft:model path: minecraft:item/custom/topaz_trident diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java b/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java index 3f7609cac..6bbb0fd50 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java @@ -2132,7 +2132,7 @@ public abstract class AbstractPackManager implements PackManager { boolean handAnimationOnSwap = originalItemModel.handAnimationOnSwap(); boolean oversizedInGui = originalItemModel.oversizedInGui(); - Map entries = new HashMap<>(); + Map entries = new TreeMap<>(); for (Map.Entry modelWithDataEntry : entry.getValue().entrySet()) { ModernItemModel modernItemModel = modelWithDataEntry.getValue(); entries.put(modelWithDataEntry.getKey().floatValue(), modernItemModel.itemModel()); @@ -2166,6 +2166,11 @@ public abstract class AbstractPackManager implements PackManager { } List revisions = newItemModel.revisions(); + if (vanillaItemModel.value().equals("trident")) { + System.out.println(revisions); + } + + if (!revisions.isEmpty()) { for (Revision revision : revisions) { if (revision.matches(Config.packMinVersion(), Config.packMaxVersion())) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/RangeDispatchItemModel.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/RangeDispatchItemModel.java index 7344c12be..4799c370e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/RangeDispatchItemModel.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/RangeDispatchItemModel.java @@ -14,10 +14,7 @@ import net.momirealms.craftengine.core.util.ResourceConfigUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; public class RangeDispatchItemModel implements ItemModel { public static final Factory FACTORY = new Factory(); @@ -119,7 +116,7 @@ public class RangeDispatchItemModel implements ItemModel { if (entriesObj instanceof List list) { List> entries = (List>) list; if (!entries.isEmpty()) { - Map entryMap = new HashMap<>(); + Map entryMap = new TreeMap<>(); for (Map entry : entries) { float threshold = ResourceConfigUtils.getAsFloat(entry.getOrDefault("threshold", 1), "threshold"); Object model = entry.getOrDefault("model", fallback); @@ -151,7 +148,7 @@ public class RangeDispatchItemModel implements ItemModel { if (entriesObj == null) { throw new IllegalArgumentException("entries is expected to be a JsonArray"); } - Map entries = new HashMap<>(); + Map entries = new TreeMap<>(); for (JsonElement entry : entriesObj) { if (entry instanceof JsonObject entryObj) { float threshold = entryObj.getAsJsonPrimitive("threshold").getAsFloat(); diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/SelectItemModel.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/SelectItemModel.java index 5b71450e1..7bd78f855 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/SelectItemModel.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/SelectItemModel.java @@ -96,7 +96,7 @@ public class SelectItemModel implements ItemModel { @Override public List revisions() { - List versions = new ArrayList<>(); + List versions = new ArrayList<>(4); for (Map.Entry>, ItemModel> entry : this.whenMap.entrySet()) { Either> when = entry.getKey(); if (when.primary().isPresent()) { @@ -107,13 +107,11 @@ public class SelectItemModel implements ItemModel { versions.addAll(this.property.revisions(e)); } } + versions.addAll(entry.getValue().revisions()); } if (this.fallBack != null) { versions.addAll(this.fallBack.revisions()); } - for (ItemModel itemModel : this.whenMap.values()) { - versions.addAll(itemModel.revisions()); - } return versions; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/select/DisplayContextSelectProperty.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/select/DisplayContextSelectProperty.java index 37e112d07..49299c8f8 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/select/DisplayContextSelectProperty.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/select/DisplayContextSelectProperty.java @@ -4,6 +4,7 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; import net.momirealms.craftengine.core.pack.revision.Revision; +import net.momirealms.craftengine.core.pack.revision.Revisions; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MinecraftVersion; import net.momirealms.craftengine.core.util.MinecraftVersions; @@ -14,8 +15,8 @@ import java.util.Map; public class DisplayContextSelectProperty implements SelectProperty { public static final DisplayContextSelectProperty INSTANCE = new DisplayContextSelectProperty(); - public static final SimpleSelectProperty.Factory FACTORY = new SimpleSelectProperty.Factory(); - public static final SimpleSelectProperty.Reader READER = new SimpleSelectProperty.Reader(); + public static final Factory FACTORY = new Factory(); + public static final Reader READER = new Reader(); @Override public Key type() { @@ -29,7 +30,10 @@ public class DisplayContextSelectProperty implements SelectProperty { @Override public List revisions(JsonElement element) { - return SelectProperty.super.revisions(element); + if (element instanceof JsonPrimitive primitive && primitive.isString() && primitive.getAsString().equals("on_shelf")) { + return List.of(Revisions.SINCE_1_21_9); + } + return List.of(); } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/revision/Revision.java b/core/src/main/java/net/momirealms/craftengine/core/pack/revision/Revision.java index c6547ac9d..731d3f77e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/revision/Revision.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/revision/Revision.java @@ -78,6 +78,11 @@ public interface Revision { public int hashCode() { return this.minVersion.hashCode(); } + + @Override + public String toString() { + return "Since{" + "minVersion=" + minVersion + '}'; + } } class FromTo implements Revision { @@ -135,5 +140,13 @@ public interface Revision { result = 31 * result + Objects.hashCode(maxVersion); return result; } + + @Override + public String toString() { + return "FromTo{" + + "minVersion=" + minVersion + + ", maxVersion=" + maxVersion + + '}'; + } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/revision/Revisions.java b/core/src/main/java/net/momirealms/craftengine/core/pack/revision/Revisions.java index 2b7fd7372..d14f3090f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/revision/Revisions.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/revision/Revisions.java @@ -7,4 +7,5 @@ public final class Revisions { public static final Revision SINCE_1_21_6 = Revision.since(MinecraftVersions.V1_21_6); public static final Revision SINCE_1_21_2 = Revision.since(MinecraftVersions.V1_21_2); + public static final Revision SINCE_1_21_9 = Revision.since(MinecraftVersions.V1_21_9); } diff --git a/gradle.properties b/gradle.properties index f1cd04c75..b8f0acd34 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ org.gradle.jvmargs=-Xmx1G # Project settings # Rule: [major update].[feature update].[bug fix] -project_version=0.0.64.18 +project_version=0.0.64.19 config_version=49 lang_version=35 project_group=net.momirealms