From 1f50f7dcb4975e95d10c7e620f41d21216b4634f Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Tue, 29 Apr 2025 19:26:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0special=20model=E6=8A=A5?= =?UTF-8?q?=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../loader/src/main/resources/translations/en.yml | 9 +++++++++ .../craftengine/core/pack/AbstractPackManager.java | 12 +----------- .../pack/model/special/BannerSpecialModel.java | 8 ++++++-- .../core/pack/model/special/ChestSpecialModel.java | 13 +++++++++---- .../core/pack/model/special/HeadSpecialModel.java | 14 ++++++++++---- .../pack/model/special/ShulkerBoxSpecialModel.java | 10 +++++++--- .../core/pack/model/special/SignSpecialModel.java | 13 ++++++++++--- .../core/world/chunk/PackedIntegerArray.java | 2 -- .../craftengine/mod/CraftEnginePlugin.java | 1 - 9 files changed, 52 insertions(+), 30 deletions(-) diff --git a/bukkit/loader/src/main/resources/translations/en.yml b/bukkit/loader/src/main/resources/translations/en.yml index e2db3a07a..a0a4f2de1 100644 --- a/bukkit/loader/src/main/resources/translations/en.yml +++ b/bukkit/loader/src/main/resources/translations/en.yml @@ -158,6 +158,15 @@ warning.config.item.model.select.block_state.missing_property: "Issue fo warning.config.item.model.select.local_time.missing_pattern: "Issue found in file - The item '' is missing the required 'pattern' argument for property 'minecraft:local_time'." warning.config.item.model.special.missing_type: "Issue found in file - The item '' is missing the required 'type' argument for model 'minecraft:special'." warning.config.item.model.special.invalid_type: "Issue found in file - The item '' is using an invalid type '' for model 'minecraft:special'." +warning.config.item.model.special.banner.missing_color: "Issue found in file - The item '' is missing the required 'color' argument for special model 'minecraft:banner'." +warning.config.item.model.special.sign.missing_wood_type: "Issue found in file - The item '' is missing the required 'wood-type' argument for special model 'minecraft:hanging_sign'/'minecraft:standing_sign'." +warning.config.item.model.special.sign.missing_texture: "Issue found in file - The item '' is missing the required 'texture' argument for special model 'minecraft:hanging_sign'/'minecraft:standing_sign'." +warning.config.item.model.special.chest.missing_texture: "Issue found in file - The item '' is missing the required 'texture' argument for special model 'minecraft:chest'." +warning.config.item.model.special.chest.invalid_openness: "Issue found in file - The item '' is using an invalid 'openness' value '' for special model 'minecraft:chest'. Valid range '0~1.'" +warning.config.item.model.special.shulker_box.missing_texture: "Issue found in file - The item '' is missing the required 'texture' argument for special model 'minecraft:shulker_box'." +warning.config.item.model.special.shulker_box.invalid_openness: "Issue found in file - The item '' is using an invalid 'openness' value '' for special model 'minecraft:shulker_box'. Valid range '0~1.'" +warning.config.item.model.special.head.missing_kind: "Issue found in file - The item '' is missing the required 'kind' argument for special model 'minecraft:head'." +warning.config.item.model.special.head.missing_texture: "Issue found in file - The item '' is missing the required 'texture' argument for special model 'minecraft:head'." warning.config.block.duplicate: "Issue found in file - Duplicated block ''." warning.config.block.missing_state: "Issue found in file - The block '' is missing the required 'state' argument." warning.config.block.state.property.missing_type: "Issue found in file - The block '' is missing the required 'type' argument for property ''." 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 636487ab4..75cf89e13 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 @@ -131,16 +131,6 @@ public abstract class AbstractPackManager implements PackManager { } } - private void loadInternalPng(String path, Consumer callback) { - try (InputStream inputStream = this.plugin.resourceStream(path)) { - if (inputStream != null) { - callback.accept(inputStream.readAllBytes()); - } - } catch (IOException e) { - this.plugin.logger().warn("Failed to load " + path, e); - } - } - @Override public Path resourcePackPath() { return this.plugin.dataFolderPath() @@ -1156,7 +1146,7 @@ public abstract class AbstractPackManager implements PackManager { if (Files.exists(sourceFolder)) { Files.walkFileTree(sourceFolder, new SimpleFileVisitor<>() { @Override - public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { + public @NotNull FileVisitResult visitFile(@NotNull Path file, @NotNull BasicFileAttributes attrs) throws IOException { Path relative = sourceFolder.relativize(file); Path targetPath = targetFolder.resolve(relative); List conflicts = conflictChecker.computeIfAbsent(relative, k -> new ArrayList<>()); diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/BannerSpecialModel.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/BannerSpecialModel.java index 847ad6c0d..05442f8a8 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/BannerSpecialModel.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/BannerSpecialModel.java @@ -1,6 +1,7 @@ package net.momirealms.craftengine.core.pack.model.special; import com.google.gson.JsonObject; +import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.util.Key; import java.util.Map; @@ -31,8 +32,11 @@ public class BannerSpecialModel implements SpecialModel { @Override public SpecialModel create(Map arguments) { - String color = Objects.requireNonNull(arguments.get("color"), "color").toString(); - return new BannerSpecialModel(color); + Object color = arguments.get("color"); + if (color == null) { + throw new LocalizedResourceConfigException(""); + } + return new BannerSpecialModel(color.toString()); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/ChestSpecialModel.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/ChestSpecialModel.java index a0a2fd810..23d8a969c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/ChestSpecialModel.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/ChestSpecialModel.java @@ -1,8 +1,10 @@ package net.momirealms.craftengine.core.pack.model.special; import com.google.gson.JsonObject; +import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; +import software.amazon.awssdk.services.s3.endpoints.internal.Value; import java.util.Map; import java.util.Objects; @@ -36,11 +38,14 @@ public class ChestSpecialModel implements SpecialModel { @Override public SpecialModel create(Map arguments) { float openness = ResourceConfigUtils.getAsFloat(arguments.getOrDefault("openness", 0), "openness"); - String texture = Objects.requireNonNull(arguments.get("texture"), "texture").toString(); - if (openness > 1 || openness < 0) { - throw new IllegalArgumentException("Invalid openness: " + openness + ". Valid range 0~1"); + Object texture = arguments.get("texture"); + if (texture == null) { + throw new LocalizedResourceConfigException("warning.config.item.model.special.chest.missing_texture"); } - return new ChestSpecialModel(texture, openness); + if (openness > 1 || openness < 0) { + throw new LocalizedResourceConfigException("warning.config.item.model.special.chest.invalid_openness", String.valueOf(openness)); + } + return new ChestSpecialModel(texture.toString(), openness); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/HeadSpecialModel.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/HeadSpecialModel.java index 7c67497df..6b44c37fa 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/HeadSpecialModel.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/HeadSpecialModel.java @@ -1,11 +1,11 @@ package net.momirealms.craftengine.core.pack.model.special; import com.google.gson.JsonObject; +import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Map; -import java.util.Objects; public class HeadSpecialModel implements SpecialModel { public static final Factory FACTORY = new Factory(); @@ -38,10 +38,16 @@ public class HeadSpecialModel implements SpecialModel { @Override public SpecialModel create(Map arguments) { - String kind = Objects.requireNonNull(arguments.get("kind"), "kind").toString(); - String texture = Objects.requireNonNull(arguments.get("texture"), "texture").toString(); + Object kind = arguments.get("kind"); + if (kind == null) { + throw new LocalizedResourceConfigException("warning.config.item.model.special.head.missing_kind"); + } + Object texture = arguments.get("texture"); + if (texture == null) { + throw new LocalizedResourceConfigException("warning.config.item.model.special.head.missing_texture"); + } int animation = ResourceConfigUtils.getAsInt(arguments.getOrDefault("animation", 0), "animation"); - return new HeadSpecialModel(kind, texture, animation); + return new HeadSpecialModel(kind.toString(), texture.toString(), animation); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/ShulkerBoxSpecialModel.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/ShulkerBoxSpecialModel.java index 69807c639..355e802fb 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/ShulkerBoxSpecialModel.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/ShulkerBoxSpecialModel.java @@ -1,6 +1,7 @@ package net.momirealms.craftengine.core.pack.model.special; import com.google.gson.JsonObject; +import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.util.Direction; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; @@ -41,12 +42,15 @@ public class ShulkerBoxSpecialModel implements SpecialModel { @Override public SpecialModel create(Map arguments) { float openness = ResourceConfigUtils.getAsFloat(arguments.getOrDefault("openness", 0), "openness"); - String texture = Objects.requireNonNull(arguments.get("texture"), "texture").toString(); + Object texture = arguments.get("texture"); + if (texture == null) { + throw new LocalizedResourceConfigException("warning.config.item.model.special.shulker_box.missing_texture"); + } Direction orientation = Direction.valueOf(arguments.getOrDefault("orientation", "down").toString().toUpperCase(Locale.ENGLISH)); if (openness > 1 || openness < 0) { - throw new IllegalArgumentException("Invalid openness: " + openness + ". Valid range 0~1"); + throw new LocalizedResourceConfigException("warning.config.item.model.special.shulker_box.invalid_openness", String.valueOf(openness)); } - return new ShulkerBoxSpecialModel(texture, openness, orientation); + return new ShulkerBoxSpecialModel(texture.toString(), openness, orientation); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/SignSpecialModel.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/SignSpecialModel.java index 63eb27b27..e6eeebf63 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/SignSpecialModel.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/SignSpecialModel.java @@ -1,6 +1,7 @@ package net.momirealms.craftengine.core.pack.model.special; import com.google.gson.JsonObject; +import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.util.Key; import java.util.Map; @@ -37,9 +38,15 @@ public class SignSpecialModel implements SpecialModel { @Override public SpecialModel create(Map arguments) { Key type = Key.of(arguments.get("type").toString()); - String woodType = Objects.requireNonNull(arguments.get("wood-type"), "lack wood-type").toString(); - String texture = Objects.requireNonNull(arguments.get("texture"), "lack texture").toString(); - return new SignSpecialModel(type, woodType, texture); + Object woodType = arguments.get("wood-type"); + if (woodType == null) { + throw new LocalizedResourceConfigException("warning.config.item.model.special.sign.missing_wood_type"); + } + Object texture = arguments.get("texture"); + if (texture == null) { + throw new LocalizedResourceConfigException("warning.config.item.model.special.sign.missing_texture"); + } + return new SignSpecialModel(type, woodType.toString(), texture.toString()); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/PackedIntegerArray.java b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/PackedIntegerArray.java index 554224f8a..9601bf068 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/PackedIntegerArray.java +++ b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/PackedIntegerArray.java @@ -1,7 +1,5 @@ package net.momirealms.craftengine.core.world.chunk; -import net.momirealms.craftengine.core.block.ImmutableBlockState; - import java.util.function.IntConsumer; public class PackedIntegerArray implements PaletteStorage { diff --git a/server-mod/v1_21_5/src/main/java/net/momirealms/craftengine/mod/CraftEnginePlugin.java b/server-mod/v1_21_5/src/main/java/net/momirealms/craftengine/mod/CraftEnginePlugin.java index bc6a0acc5..6cb356a90 100644 --- a/server-mod/v1_21_5/src/main/java/net/momirealms/craftengine/mod/CraftEnginePlugin.java +++ b/server-mod/v1_21_5/src/main/java/net/momirealms/craftengine/mod/CraftEnginePlugin.java @@ -1,6 +1,5 @@ package net.momirealms.craftengine.mod; -import net.minecraft.world.level.chunk.PalettedContainer; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.objectweb.asm.tree.ClassNode;