From 5ce430e596dab42c432ec11a24adf820f3d8af35 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Sun, 22 Jun 2025 02:07:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=87=86=E5=A4=87=E5=8E=8B=E5=8A=9B=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../block/behavior/BukkitBlockBehaviors.java | 2 + .../behavior/PressurePlateBlockBehavior.java | 29 +++++++++++ .../DebugIsChunkPersistentLoadedCommand.java | 2 - .../reflection/minecraft/CoreReflections.java | 1 - common-files/src/main/resources/config.yml | 4 +- .../default/configuration/palm_tree.yml | 49 ++++++++++++++++++- .../default/configuration/templates.yml | 25 +++++++++- .../src/main/resources/translations/en.yml | 7 +-- .../src/main/resources/translations/zh_cn.yml | 1 + .../core/pack/AbstractPackManager.java | 2 +- .../core/plugin/config/Config.java | 8 +-- 11 files changed, 115 insertions(+), 15 deletions(-) create mode 100644 bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/PressurePlateBlockBehavior.java diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BukkitBlockBehaviors.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BukkitBlockBehaviors.java index 01c6e2200..02a5d1541 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BukkitBlockBehaviors.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BukkitBlockBehaviors.java @@ -25,6 +25,7 @@ public class BukkitBlockBehaviors extends BlockBehaviors { public static final Key FENCE_GATE_BLOCK = Key.from("craftengine:fence_gate_block"); public static final Key SLAB_BLOCK = Key.from("craftengine:slab_block"); public static final Key STAIRS_BLOCK = Key.from("craftengine:stairs_block"); + public static final Key PRESSURE_PLATE_BLOCK = Key.from("craftengine:pressure_plate_block"); public static void init() { register(EMPTY, (block, args) -> EmptyBlockBehavior.INSTANCE); @@ -48,5 +49,6 @@ public class BukkitBlockBehaviors extends BlockBehaviors { register(FENCE_GATE_BLOCK, FenceGateBlockBehavior.FACTORY); register(SLAB_BLOCK, SlabBlockBehavior.FACTORY); register(STAIRS_BLOCK, StairsBlockBehavior.FACTORY); + register(PRESSURE_PLATE_BLOCK, PressurePlateBlockBehavior.FACTORY); } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/PressurePlateBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/PressurePlateBlockBehavior.java new file mode 100644 index 000000000..90871cb22 --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/PressurePlateBlockBehavior.java @@ -0,0 +1,29 @@ +package net.momirealms.craftengine.bukkit.block.behavior; + +import net.momirealms.craftengine.core.block.BlockBehavior; +import net.momirealms.craftengine.core.block.CustomBlock; +import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; +import net.momirealms.craftengine.core.block.properties.Property; +import net.momirealms.craftengine.core.util.ResourceConfigUtils; + +import java.util.Map; + +public class PressurePlateBlockBehavior extends BukkitBlockBehavior { + public static final Factory FACTORY = new Factory(); + private final Property poweredProperty; + + public PressurePlateBlockBehavior(CustomBlock block, Property poweredProperty) { + super(block); + this.poweredProperty = poweredProperty; + } + + public static class Factory implements BlockBehaviorFactory { + + @SuppressWarnings("unchecked") + @Override + public BlockBehavior create(CustomBlock block, Map arguments) { + Property powered = (Property) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("powered"), "warning.config.block.behavior.pressure_plate.missing_powered"); + return new PressurePlateBlockBehavior(block, powered); + } + } +} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugIsChunkPersistentLoadedCommand.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugIsChunkPersistentLoadedCommand.java index 7382c9865..5fc62a5c2 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugIsChunkPersistentLoadedCommand.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugIsChunkPersistentLoadedCommand.java @@ -1,9 +1,7 @@ package net.momirealms.craftengine.bukkit.plugin.command.feature; import net.kyori.adventure.text.Component; -import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.command.BukkitCommandFeature; -import net.momirealms.craftengine.bukkit.plugin.injector.WorldStorageInjector; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.command.CraftEngineCommandManager; import net.momirealms.craftengine.core.plugin.command.sender.Sender; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java index 626e483cd..1b9026400 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java @@ -7,7 +7,6 @@ import com.mojang.serialization.DynamicOps; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelFuture; import it.unimi.dsi.fastutil.objects.Object2IntMap; -import net.momirealms.craftengine.bukkit.block.behavior.BukkitBlockBehavior; import net.momirealms.craftengine.bukkit.plugin.reflection.ReflectionInitException; import net.momirealms.craftengine.bukkit.util.BukkitReflectionUtils; import net.momirealms.craftengine.core.util.ReflectionUtils; diff --git a/common-files/src/main/resources/config.yml b/common-files/src/main/resources/config.yml index 04d0295c4..add038568 100644 --- a/common-files/src/main/resources/config.yml +++ b/common-files/src/main/resources/config.yml @@ -62,14 +62,14 @@ resource-pack: max: LATEST # Remove 1.21.5+ tinted_leaves particles remove-tinted-leaves-particle: true - # Remove all shaders - remove-all-shaders: false merge-external-folders: - ModelEngine/resource pack - BetterModel/build merge-external-zip-files: - CustomNameplates/resourcepack.zip exclude-file-extensions: ["md", "psd", "bbmodel", "db", "ini"] + # Exclude the shaders when generating the resource pack + exclude-shaders: false delivery: # Send the resource pack on joining the server send-on-join: true diff --git a/common-files/src/main/resources/resources/default/configuration/palm_tree.yml b/common-files/src/main/resources/resources/default/configuration/palm_tree.yml index 7c88322ca..dbc78deaf 100644 --- a/common-files/src/main/resources/resources/default/configuration/palm_tree.yml +++ b/common-files/src/main/resources/resources/default/configuration/palm_tree.yml @@ -567,7 +567,54 @@ items: parent: minecraft:block/stairs textures: *textures default:palm_pressure_plate: - + material: nether_brick + custom-model-data: 1014 + model: + type: minecraft:model + path: minecraft:item/custom/palm_pressure_plate + generation: + parent: minecraft:block/custom/palm_pressure_plate + data: + item-name: + settings: + fuel-time: 300 + behavior: + type: block_item + block: + loot: + template: default:loot_table/self + settings: + template: + - default:sound/wood + - default:hardness/planks + overrides: + burnable: true + map-color: 2 + instrument: bass + tags: + - minecraft:mineable/axe + - minecraft:wall_post_override + - minecraft:wooden_pressure_plates + - minecraft:pressure_plates + behaviors: + type: pressure_plate_block + states: + template: default:block_state/pressure_plate + arguments: + normal_state: light_weighted_pressure_plate:0 + powered_state: light_weighted_pressure_plate:1 + normal_id: 0 + powered_id: 1 + model_normal_path: minecraft:block/custom/palm_pressure_plate + model_normal_generation: + parent: minecraft:block/pressure_plate_up + textures: + texture: minecraft:block/custom/palm_planks + model_powered_path: minecraft:block/custom/palm_pressure_plate_down + model_powered_generation: + parent: minecraft:block/pressure_plate_down + textures: + texture: minecraft:block/custom/palm_planks recipes: default:palm_planks: template: default:recipe/planks diff --git a/common-files/src/main/resources/resources/default/configuration/templates.yml b/common-files/src/main/resources/resources/default/configuration/templates.yml index d0a7ef4c1..226102ee1 100644 --- a/common-files/src/main/resources/resources/default/configuration/templates.yml +++ b/common-files/src/main/resources/resources/default/configuration/templates.yml @@ -3014,7 +3014,30 @@ templates#block_states: resistance: 1200.0 burnable: false fluid-state: water - + # pressure plate block + default:block_state/pressure_plate: + properties: + powered: + type: boolean + default: false + appearances: + normal: + state: ${normal_state} + model: + path: ${model_normal_path} + generation: ${model_normal_generation} + powered: + state: ${powered_state} + model: + path: ${model_powered_path} + generation: ${model_powered_generation} + variants: + powered=false: + appearance: normal + id: ${normal_id} + powered=true: + appearance: powered + id: ${powered_id} # recipes templates#recipes: default:recipe/planks: diff --git a/common-files/src/main/resources/translations/en.yml b/common-files/src/main/resources/translations/en.yml index f80d5d95c..9be5a8c1d 100644 --- a/common-files/src/main/resources/translations/en.yml +++ b/common-files/src/main/resources/translations/en.yml @@ -263,9 +263,10 @@ warning.config.block.behavior.fence_gate.missing_in_wall: "Issue found i warning.config.block.behavior.fence_gate.missing_open: "Issue found in file - The block '' is missing the required 'powered' argument for 'fence_gate_block' behavior." warning.config.block.behavior.fence_gate.missing_powered: "Issue found in file - The block '' is missing the required 'open' argument for 'fence_gate_block' behavior." warning.config.block.behavior.trapdoor.missing_type: "Issue found in file - The block '' is missing the required 'type' property for 'slab_block' behavior." -warning.config.block.behavior.stairs.missing_facing: "Issue found in file - The block '' is missing the required 'facing' property for 'stairs' behavior." -warning.config.block.behavior.stairs.missing_half: "Issue found in file - The block '' is missing the required 'half' property for 'stairs' behavior." -warning.config.block.behavior.stairs.missing_shape: "Issue found in file - The block '' is missing the required 'shape' property for 'stairs' behavior." +warning.config.block.behavior.stairs.missing_facing: "Issue found in file - The block '' is missing the required 'facing' property for 'stairs_block' behavior." +warning.config.block.behavior.stairs.missing_half: "Issue found in file - The block '' is missing the required 'half' property for 'stairs_block' behavior." +warning.config.block.behavior.stairs.missing_shape: "Issue found in file - The block '' is missing the required 'shape' property for 'stairs_block' behavior." +warning.config.block.behavior.pressure_plate.missing_powered: "Issue found in file - The block '' is missing the required 'powered' property for 'pressure_plate_block' behavior." warning.config.model.generation.missing_parent: "Issue found in file - The config '' is missing the required 'parent' argument in 'generation' section." warning.config.model.generation.invalid_display_position: "Issue found in file - The config '' is using an invalid display position '' in 'generation.display' section. Allowed display positions: []" warning.config.model.generation.invalid_gui_light: "Issue found in file - The config '' is using an invalid gui-light option '' in 'generation' section. Allowed gui light options: []" diff --git a/common-files/src/main/resources/translations/zh_cn.yml b/common-files/src/main/resources/translations/zh_cn.yml index 6c90f70fd..43384290d 100644 --- a/common-files/src/main/resources/translations/zh_cn.yml +++ b/common-files/src/main/resources/translations/zh_cn.yml @@ -266,6 +266,7 @@ warning.config.block.behavior.slab.missing_type: "在文件 发 warning.config.block.behavior.stairs.missing_facing: "在文件 发现问题 - 方块 '' 的 'stairs_block' 行为缺少必需的 'facing' 属性" warning.config.block.behavior.stairs.missing_half: "在文件 发现问题 - 方块 '' 的 'stairs_block' 行为缺少必需的 'half' 属性" warning.config.block.behavior.stairs.missing_shape: "在文件 发现问题 - 方块 '' 的 'stairs_block' 行为缺少必需的 'shape' 属性" +warning.config.block.behavior.pressure_plate.missing_powered: "在文件 发现问题 - 方块 '' 的 'pressure_plate_block' 行为缺少必需的 'powered' 属性" warning.config.model.generation.missing_parent: "在文件 发现问题 - 配置项 '' 的 'generation' 段落缺少必需的 'parent' 参数" warning.config.model.generation.conflict: "在文件 发现问题 - 无法为 '' 生成模型 存在多个配置尝试使用相同路径 '' 生成不同的 JSON 模型" warning.config.model.generation.invalid_display_position: "在文件 发现问题 - 配置项 '' 在 'generation.display' 区域使用了无效的 display 位置类型 ''. 可用展示类型: []" 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 00631a72f..dc7b84e14 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 @@ -615,7 +615,7 @@ public abstract class AbstractPackManager implements PackManager { this.generateClientLang(generatedPackPath); this.generateEquipments(generatedPackPath); this.generateParticle(generatedPackPath); - if (Config.removeAllShaders()) { + if (Config.excludeShaders()) { this.removeAllShaders(generatedPackPath); } if (Config.validateResourcePack()) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java index 0cadaa1a8..eb0e3bb77 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java @@ -60,7 +60,7 @@ public class Config { protected boolean resource_pack$protection$crash_tools$method_3; protected boolean resource_pack$validate$enable; - protected boolean resource_pack$remove_all_shaders; + protected boolean resource_pack$exclude_shaders; protected boolean resource_pack$protection$obfuscation$enable; protected long resource_pack$protection$obfuscation$seed; @@ -263,7 +263,7 @@ public class Config { resource_pack$protection$obfuscation$resource_location$bypass_sounds = config.getStringList("resource-pack.protection.obfuscation.resource-location.bypass-sounds"); resource_pack$protection$obfuscation$resource_location$bypass_equipments = config.getStringList("resource-pack.protection.obfuscation.resource-location.bypass-equipments"); resource_pack$validate$enable = config.getBoolean("resource-pack.validate.enable", true); - resource_pack$remove_all_shaders = config.getBoolean("resource-pack.remove-all-shaders", false); + resource_pack$exclude_shaders = config.getBoolean("resource-pack.exclude-shaders", false); try { resource_pack$duplicated_files_handler = config.getMapList("resource-pack.duplicated-files-handler").stream().map(it -> { @@ -738,8 +738,8 @@ public class Config { return instance.resource_pack$validate$enable; } - public static boolean removeAllShaders() { - return instance.resource_pack$remove_all_shaders; + public static boolean excludeShaders() { + return instance.resource_pack$exclude_shaders; } public YamlDocument loadOrCreateYamlData(String fileName) {