diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/BukkitCommandManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/BukkitCommandManager.java index 87288628b..591499729 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/BukkitCommandManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/BukkitCommandManager.java @@ -5,7 +5,6 @@ import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine; import net.momirealms.craftengine.bukkit.plugin.command.feature.*; import net.momirealms.craftengine.core.plugin.command.AbstractCommandManager; import net.momirealms.craftengine.core.plugin.command.CommandFeature; -import net.momirealms.craftengine.core.plugin.command.parser.BlockStateParser; import net.momirealms.craftengine.core.plugin.command.sender.Sender; import org.bukkit.command.CommandSender; import org.incendo.cloud.SenderMapper; @@ -18,7 +17,7 @@ import java.util.List; public class BukkitCommandManager extends AbstractCommandManager { private final BukkitCraftEngine plugin; - private final Index> INDEX; + private final Index> index; public BukkitCommandManager(BukkitCraftEngine plugin) { super(plugin, new LegacyPaperCommandManager<>( @@ -27,7 +26,7 @@ public class BukkitCommandManager extends AbstractCommandManager SenderMapper.identity() )); this.plugin = plugin; - this.INDEX = Index.create(CommandFeature::getFeatureID, List.of( + this.index = Index.create(CommandFeature::getFeatureID, List.of( new ReloadCommand(this, plugin), new GetItemCommand(this, plugin), new GiveItemCommand(this, plugin), @@ -59,7 +58,6 @@ public class BukkitCommandManager extends AbstractCommandManager )); final LegacyPaperCommandManager manager = (LegacyPaperCommandManager) getCommandManager(); manager.settings().set(ManagerSetting.ALLOW_UNSAFE_REGISTRATION, true); - manager.parserRegistry().registerParser(BlockStateParser.blockStateParser()); if (manager.hasCapability(CloudBukkitCapabilities.NATIVE_BRIGADIER)) { manager.registerBrigadier(); manager.brigadierManager().setNativeNumberSuggestions(true); @@ -70,11 +68,11 @@ public class BukkitCommandManager extends AbstractCommandManager @Override protected Sender wrapSender(CommandSender sender) { - return plugin.senderFactory().wrap(sender); + return this.plugin.senderFactory().wrap(sender); } @Override public Index> features() { - return INDEX; + return this.index; } } 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 eda2e9c33..a191bc56d 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 @@ -293,7 +293,7 @@ items: type: "minecraft:model" path: "minecraft:item/custom/palm_trapdoor" generation: - parent: "minecraft:block/custom/palm_trapdoor" + parent: "minecraft:block/custom/palm_trapdoor_bottom" behavior: type: block_item block: @@ -319,9 +319,21 @@ items: template: "default:block_state/trapdoor" arguments: base_block: acacia_trapdoor - model_bottom_path: "minecraft:block/birch_trapdoor_bottom" - model_open_path: "minecraft:block/birch_trapdoor_open" - model_top_path: "minecraft:block/birch_trapdoor_top" + model_bottom_path: "minecraft:block/custom/palm_trapdoor_bottom" + model_bottom_generation: + parent: "minecraft:block/template_orientable_trapdoor_bottom" + textures: + texture: "minecraft:block/custom/palm_trapdoor" + model_open_path: "minecraft:block/custom/palm_trapdoor_open" + model_open_generation: + parent: "minecraft:block/template_orientable_trapdoor_open" + textures: + texture: "minecraft:block/custom/palm_trapdoor" + model_top_path: "minecraft:block/custom/palm_trapdoor_top" + model_top_generation: + parent: "minecraft:block/template_orientable_trapdoor_top" + textures: + texture: "minecraft:block/custom/palm_trapdoor" recipes: default:palm_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 b1b09a658..0df24c5bf 100644 --- a/common-files/src/main/resources/resources/default/configuration/templates.yml +++ b/common-files/src/main/resources/resources/default/configuration/templates.yml @@ -984,16 +984,19 @@ templates#block_states: model: path: ${model_bottom_path} y: 90 + generation: ${model_bottom_generation} facing=east,half=bottom,open=true,waterlogged=false: state: "${base_block}[facing=east,half=bottom,open=true,powered=true,waterlogged=false]" model: path: ${model_open_path} y: 90 + generation: ${model_open_generation} facing=east,half=top,open=false,waterlogged=false: state: "${base_block}[facing=east,half=top,open=false,powered=true,waterlogged=false]" model: path: ${model_top_path} y: 90 + generation: ${model_top_generation} facing=east,half=top,open=true,waterlogged=false: state: "${base_block}[facing=east,half=top,open=true,powered=true,waterlogged=false]" model: diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_door_bottom.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_door_bottom.png new file mode 100644 index 000000000..b21666d61 Binary files /dev/null and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_door_bottom.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_door_top.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_door_top.png new file mode 100644 index 000000000..fc33294bb Binary files /dev/null and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_door_top.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_trapdoor.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_trapdoor.png new file mode 100644 index 000000000..f19dbb4cb Binary files /dev/null and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_trapdoor.png differ 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 c80ba4608..818c57e21 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 @@ -424,6 +424,9 @@ public abstract class AbstractPackManager implements PackManager { plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/block/custom/stripped_palm_log.png"); plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/block/custom/stripped_palm_log_top.png"); plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_leaves.png"); + plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_trapdoor.png"); + plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_door_top.png"); + plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_door_bottom.png"); // plants plugin.saveResource("resources/default/configuration/plants.yml"); plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/block/custom/fairy_flower_1.png"); @@ -529,6 +532,9 @@ public abstract class AbstractPackManager implements PackManager { } else { if (configEntry.getValue() instanceof Map configSection0) { Map config = castToMap(configSection0, false); + if (Config.debug() && (boolean) config.getOrDefault("debug", false)) { + this.plugin.logger().info(GsonHelper.get().toJson(this.plugin.templateManager().applyTemplates(id, config))); + } if ((boolean) config.getOrDefault("enable", true)) { parser.parseSection(cached.pack(), cached.filePath(), id, MiscUtils.castToMap(this.plugin.templateManager().applyTemplates(id, config), false)); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/command/parser/BlockStateParser.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/command/parser/BlockStateParser.java deleted file mode 100644 index 6830d19bd..000000000 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/command/parser/BlockStateParser.java +++ /dev/null @@ -1,64 +0,0 @@ -package net.momirealms.craftengine.core.plugin.command.parser; - -import net.momirealms.craftengine.core.block.ImmutableBlockState; -import net.momirealms.craftengine.core.plugin.CraftEngine; -import net.momirealms.craftengine.core.plugin.command.CraftEngineCaptionKeys; -import org.checkerframework.checker.nullness.qual.NonNull; -import org.incendo.cloud.caption.CaptionVariable; -import org.incendo.cloud.component.CommandComponent; -import org.incendo.cloud.context.CommandContext; -import org.incendo.cloud.context.CommandInput; -import org.incendo.cloud.exception.parsing.ParserException; -import org.incendo.cloud.parser.ArgumentParseResult; -import org.incendo.cloud.parser.ArgumentParser; -import org.incendo.cloud.parser.ParserDescriptor; -import org.incendo.cloud.suggestion.BlockingSuggestionProvider; -import org.incendo.cloud.suggestion.Suggestion; - -public class BlockStateParser implements ArgumentParser, BlockingSuggestionProvider.Strings { - - public static @NonNull ParserDescriptor blockStateParser() { - return ParserDescriptor.of(new BlockStateParser<>(), ImmutableBlockState.class); - } - - public static CommandComponent.@NonNull Builder blockStateComponent() { - return CommandComponent.builder().parser(blockStateParser()); - } - - @Override - public @NonNull ArgumentParseResult<@NonNull ImmutableBlockState> parse(@NonNull CommandContext<@NonNull C> commandContext, @NonNull CommandInput commandInput) { - String input = commandInput.readString(); - ImmutableBlockState state = net.momirealms.craftengine.core.block.BlockStateParser.deserialize(input); - if (state == null) { - return ArgumentParseResult.failure(new BlockStateParseException(input, commandContext)); - } - return ArgumentParseResult.success(state); - } - - @Override - public @NonNull Iterable<@NonNull String> stringSuggestions(@NonNull CommandContext commandContext, @NonNull CommandInput input) { - return CraftEngine.instance().blockManager().cachedSuggestions().stream().map(Suggestion::suggestion).toList(); - } - - public static final class BlockStateParseException extends ParserException { - - private final String input; - - public BlockStateParseException( - final @NonNull String input, - final @NonNull CommandContext context - ) { - super( - BlockStateParser.class, - context, - CraftEngineCaptionKeys.ARGUMENT_PARSE_FAILURE_BLOCK_STATE, - CaptionVariable.of("input", input) - ); - this.input = input; - } - - public @NonNull String input() { - return this.input; - } - } -} diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/template/TemplateArguments.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/template/TemplateArguments.java index 0586843f5..b920c0d68 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/template/TemplateArguments.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/template/TemplateArguments.java @@ -36,7 +36,7 @@ public class TemplateArguments { public static TemplateArgument fromMap(Map map) { String type = (String) map.get("type"); if (type == null) { - return MapTemplateArgument.FACTORY.create(map); + return new MapTemplateArgument(map); } else { Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE); TemplateArgumentFactory factory = BuiltInRegistries.TEMPLATE_ARGUMENT_FACTORY.getValue(key); diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/template/TemplateManager.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/template/TemplateManager.java index 0f7e64dd4..4d6419008 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/template/TemplateManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/template/TemplateManager.java @@ -71,7 +71,7 @@ public interface TemplateManager extends Manageable { int separatorIndex = placeholderContent.indexOf(":-"); if (separatorIndex == -1) { this.placeholder = placeholderContent; - this.defaultValue = this.rawText; + this.defaultValue = null; } else { this.placeholder = placeholderContent.substring(0, separatorIndex); String defaultValueString = placeholderContent.substring(separatorIndex + 2);