From 4262015da5aa0b176f23599bd3f8c309708e1e71 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Thu, 18 Dec 2025 03:31:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=80=E7=BB=88=E5=86=B3=E6=88=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bukkit/sound/BukkitSoundManager.java | 3 -- common-files/src/main/resources/config.yml | 1 - .../core/pack/AbstractPackManager.java | 29 +++++++++---------- .../craftengine/core/pack/PackManager.java | 1 - .../core/pack/mcmeta/PackVersion.java | 16 ++++++++++ .../mcmeta/overlay/OverlayCombination.java | 20 +++++++++++-- .../core/pack/revision/Revision.java | 27 +++++++++-------- .../core/plugin/config/Config.java | 6 ---- .../craftengine/core/util/ListUtils.java | 1 - .../core/util/MinecraftVersion.java | 6 +++- 10 files changed, 65 insertions(+), 45 deletions(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/sound/BukkitSoundManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/sound/BukkitSoundManager.java index 3d2491f0b..ad53f6d70 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/sound/BukkitSoundManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/sound/BukkitSoundManager.java @@ -2,14 +2,12 @@ package net.momirealms.craftengine.bukkit.sound; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import net.momirealms.craftengine.bukkit.api.CraftEngineFurniture; import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MBuiltInRegistries; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MRegistries; import net.momirealms.craftengine.bukkit.util.ComponentUtils; import net.momirealms.craftengine.bukkit.util.KeyUtils; -import net.momirealms.craftengine.core.entity.furniture.AnchorType; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.sound.AbstractSoundManager; import net.momirealms.craftengine.core.sound.JukeboxSong; @@ -17,7 +15,6 @@ import net.momirealms.craftengine.core.util.AdventureHelper; import net.momirealms.craftengine.core.util.GsonHelper; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.VersionHelper; -import org.bukkit.Location; import java.io.IOException; import java.nio.file.Files; diff --git a/common-files/src/main/resources/config.yml b/common-files/src/main/resources/config.yml index bed42747b..498128677 100644 --- a/common-files/src/main/resources/config.yml +++ b/common-files/src/main/resources/config.yml @@ -98,7 +98,6 @@ resource-pack: validation: enable: true # Fix textures that are not within the atlas. It is unreasonable to always rely on plugins to fix your mistakes. - # CraftEngine will only fix the atlas of resource pack under the first version specified in the test-versions. # You should strive to make your resource pack more standardized after gaining some experience with resource packs. # The fix-atlas feature is not all-powerful since 1.21.11. In some cases, CraftEngine cannot fix it for you, and you will need to fix your model yourself. fix-atlas: true 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 95b195f93..0112ecf87 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 @@ -836,10 +836,10 @@ public abstract class AbstractPackManager implements PackManager { if (!rawMeta.has("pack")) { JsonObject pack = new JsonObject(); rawMeta.add("pack", pack); - pack.addProperty("pack_format", Config.packMinVersion().packFormat().major()); + pack.addProperty("pack_format", Config.packMinVersion().majorPackFormat()); JsonObject supportedFormats = new JsonObject(); - supportedFormats.addProperty("min_inclusive", Config.packMinVersion().packFormat().major()); - supportedFormats.addProperty("max_inclusive", Config.packMaxVersion().packFormat().major()); + supportedFormats.addProperty("min_inclusive", Config.packMinVersion().majorPackFormat()); + supportedFormats.addProperty("max_inclusive", Config.packMaxVersion().majorPackFormat()); pack.add("supported_formats", supportedFormats); changed = true; } @@ -867,10 +867,11 @@ public abstract class AbstractPackManager implements PackManager { JsonObject entry = new JsonObject(); JsonObject formats = new JsonObject(); entry.add("formats", formats); - formats.addProperty("min_inclusive", revision.minPackVersion()); - formats.addProperty("max_inclusive", revision.maxPackVersion()); - entry.addProperty("min_format", revision.minPackVersion()); - entry.addProperty("max_format", revision.maxPackVersion()); + JsonArray formatsArray = new JsonArray(); + formatsArray.add(revision.minPackVersion().major()); + formatsArray.add(revision.maxPackVersion().major()); + entry.add("min_format", revision.minPackVersion().getAsJsonArray()); + entry.add("max_format", revision.maxPackVersion().getAsJsonArray()); entry.addProperty("directory", Config.createOverlayFolderName(revision.versionString())); entries.add(entry); } @@ -1197,7 +1198,7 @@ public abstract class AbstractPackManager implements PackManager { List segments = new ArrayList<>(); // 完全小于1.21.11或完全大于1.21.11 if (Config.packMaxVersion().isBelow(MinecraftVersion.V1_21_11) || Config.packMinVersion().isAtOrAbove(MinecraftVersion.V1_21_11)) { - OverlayCombination combination = new OverlayCombination(packMeta.overlays(), Config.packMinVersion().packFormat().major(), Config.packMaxVersion().packFormat().major()); + OverlayCombination combination = new OverlayCombination(packMeta.overlays(), Config.packMinVersion().majorPackFormat(), Config.packMaxVersion().majorPackFormat()); while (combination.hasNext()) { OverlayCombination.Segment segment = combination.nextSegment(); if (segment != null) { @@ -1209,7 +1210,7 @@ public abstract class AbstractPackManager implements PackManager { } // 混合版本 else { - OverlayCombination combinationLegacy = new OverlayCombination(packMeta.overlays(), Config.packMinVersion().packFormat().major(), MinecraftVersion.V1_21_11.packFormat().major() - 1); + OverlayCombination combinationLegacy = new OverlayCombination(packMeta.overlays(), Config.packMinVersion().majorPackFormat(), 72 /* 25w44a */); while (combinationLegacy.hasNext()) { OverlayCombination.Segment segment = combinationLegacy.nextSegment(); if (segment != null) { @@ -1218,7 +1219,7 @@ public abstract class AbstractPackManager implements PackManager { break; } } - OverlayCombination combinationModern = new OverlayCombination(packMeta.overlays(), MinecraftVersion.V1_21_11.packFormat().major(), Config.packMaxVersion().packFormat().major()); + OverlayCombination combinationModern = new OverlayCombination(packMeta.overlays(), 73 /* 25w45a */, Config.packMaxVersion().majorPackFormat()); while (combinationModern.hasNext()) { OverlayCombination.Segment segment = combinationModern.nextSegment(); if (segment != null) { @@ -1277,9 +1278,7 @@ public abstract class AbstractPackManager implements PackManager { for (AtlasFixer.Entry entry : itemFixer.entries()) { int min = entry.min(); int max = entry.max(); - MinecraftVersion minV = MinecraftVersion.byMajorPackFormat(min).getFirst(); - MinecraftVersion maxV = MinecraftVersion.byMajorPackFormat(max).getLast(); - String directoryName = Config.createOverlayFolderName(minV.version().replace("\\.", "_") + "-" + maxV.version().replace("\\.", "_")); + String directoryName = Config.createOverlayFolderName(min + "-" + max); Path atlasPath = path.resolve(directoryName) .resolve("assets") .resolve("minecraft") @@ -1300,9 +1299,7 @@ public abstract class AbstractPackManager implements PackManager { for (AtlasFixer.Entry entry : itemFixer.entries()) { int min = entry.min(); int max = entry.max(); - MinecraftVersion minV = MinecraftVersion.byMajorPackFormat(min).getFirst(); - MinecraftVersion maxV = MinecraftVersion.byMajorPackFormat(max).getLast(); - String directoryName = Config.createOverlayFolderName(minV.version().replace("\\.", "_") + "-" + maxV.version().replace("\\.", "_")); + String directoryName = Config.createOverlayFolderName(min + "-" + max); // 这个版本不认可overlay,得把atlas直接写进主包内 if (min <= MinecraftVersion.V1_20_1.packFormat().major()) { Path atlasPath = path.resolve("assets") diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/PackManager.java b/core/src/main/java/net/momirealms/craftengine/core/pack/PackManager.java index a66052fa6..dd864f93c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/PackManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/PackManager.java @@ -6,7 +6,6 @@ import net.momirealms.craftengine.core.plugin.Manageable; import net.momirealms.craftengine.core.plugin.config.ConfigParser; import org.jetbrains.annotations.NotNull; -import java.io.IOException; import java.nio.file.Path; import java.util.Collection; import java.util.function.Predicate; diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/mcmeta/PackVersion.java b/core/src/main/java/net/momirealms/craftengine/core/pack/mcmeta/PackVersion.java index 076b6e5cf..6e3bf1780 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/mcmeta/PackVersion.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/mcmeta/PackVersion.java @@ -1,5 +1,6 @@ package net.momirealms.craftengine.core.pack.mcmeta; +import com.google.gson.JsonArray; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -39,6 +40,21 @@ public record PackVersion(int major, int minor) implements Comparable resource_pack$validation$test_versions; protected boolean resource_pack$exclude_core_shaders; protected boolean resource_pack$protection$obfuscation$enable; @@ -392,7 +391,6 @@ public class Config { }).collect(Collectors.toSet()); resource_pack$validation$enable = config.getBoolean("resource-pack.validation.enable", true); resource_pack$validation$fix_atlas = config.getBoolean("resource-pack.validation.fix-atlas", true); - resource_pack$validation$test_versions = config.getStringList("resource-pack.validation.test-versions", List.of("server")).stream().map(Config::getVersion).distinct().toList(); resource_pack$exclude_core_shaders = config.getBoolean("resource-pack.exclude-core-shaders", false); resource_pack$overlay_format = config.getString("resource-pack.overlay-format", "overlay_{version}"); if (!resource_pack$overlay_format.contains("{version}")) { @@ -1112,10 +1110,6 @@ public class Config { return instance.resource_pack$validation$fix_atlas; } - public static List validationTestVersions() { - return instance.resource_pack$validation$test_versions; - } - public static boolean excludeShaders() { return instance.resource_pack$exclude_core_shaders; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/ListUtils.java b/core/src/main/java/net/momirealms/craftengine/core/util/ListUtils.java index 16982d59a..02155b7d5 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/ListUtils.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/ListUtils.java @@ -1,7 +1,6 @@ package net.momirealms.craftengine.core.util; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.List; diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/MinecraftVersion.java b/core/src/main/java/net/momirealms/craftengine/core/util/MinecraftVersion.java index aa35ddc78..4107010e2 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/MinecraftVersion.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/MinecraftVersion.java @@ -102,7 +102,11 @@ public class MinecraftVersion implements Comparable { } public PackVersion packFormat() { - return packFormat; + return this.packFormat; + } + + public int majorPackFormat() { + return packFormat().major(); } private MinecraftVersion(String version) {