9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-19 15:09:15 +00:00

添加on_shelf支持

This commit is contained in:
XiaoMoMi
2025-10-23 04:21:54 +08:00
parent 9b8375e5db
commit 0298bdb8b2
8 changed files with 34 additions and 15 deletions

View File

@@ -133,6 +133,7 @@ items:
- gui
- ground
- fixed
- on_shelf
model:
type: minecraft:model
path: minecraft:item/custom/topaz_trident

View File

@@ -2132,7 +2132,7 @@ public abstract class AbstractPackManager implements PackManager {
boolean handAnimationOnSwap = originalItemModel.handAnimationOnSwap();
boolean oversizedInGui = originalItemModel.oversizedInGui();
Map<Float, ItemModel> entries = new HashMap<>();
Map<Float, ItemModel> entries = new TreeMap<>();
for (Map.Entry<Integer, ModernItemModel> 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<Revision> 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())) {

View File

@@ -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<Map<String, Object>> entries = (List<Map<String, Object>>) list;
if (!entries.isEmpty()) {
Map<Float, ItemModel> entryMap = new HashMap<>();
Map<Float, ItemModel> entryMap = new TreeMap<>();
for (Map<String, Object> 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<Float, ItemModel> entries = new HashMap<>();
Map<Float, ItemModel> entries = new TreeMap<>();
for (JsonElement entry : entriesObj) {
if (entry instanceof JsonObject entryObj) {
float threshold = entryObj.getAsJsonPrimitive("threshold").getAsFloat();

View File

@@ -96,7 +96,7 @@ public class SelectItemModel implements ItemModel {
@Override
public List<Revision> revisions() {
List<Revision> versions = new ArrayList<>();
List<Revision> versions = new ArrayList<>(4);
for (Map.Entry<Either<JsonElement, List<JsonElement>>, ItemModel> entry : this.whenMap.entrySet()) {
Either<JsonElement, List<JsonElement>> 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;
}

View File

@@ -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<Revision> 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

View File

@@ -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 +
'}';
}
}
}

View File

@@ -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);
}

View File

@@ -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