diff --git a/build.gradle.kts b/build.gradle.kts index 25838c89e..870101f3e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -29,18 +29,18 @@ subprojects { filesMatching(arrayListOf("commands.yml", "config.yml")) { expand( - Pair("project_version", rootProject.properties["project_version"]), - Pair("config_version", rootProject.properties["config_version"]), - Pair("lang_version", rootProject.properties["lang_version"]) + Pair("project_version", rootProject.properties["project_version"]!!), + Pair("config_version", rootProject.properties["config_version"]!!), + Pair("lang_version", rootProject.properties["lang_version"]!!) ) } } } -fun versionBanner() = project.providers.exec { +fun versionBanner(): String = project.providers.exec { commandLine("git", "rev-parse", "--short=8", "HEAD") }.standardOutput.asText.map { it.trim() }.getOrElse("Unknown") -fun builder() = project.providers.exec { +fun builder(): String = project.providers.exec { commandLine("git", "config", "user.name") }.standardOutput.asText.map { it.trim() }.getOrElse("Unknown") \ No newline at end of file diff --git a/bukkit/build.gradle.kts b/bukkit/build.gradle.kts index 2067a6a4a..0d7569af6 100644 --- a/bukkit/build.gradle.kts +++ b/bukkit/build.gradle.kts @@ -80,7 +80,7 @@ tasks.withType { } artifacts { - archives(tasks.shadowJar) + implementation(tasks.shadowJar) } tasks { diff --git a/bukkit/compatibility/build.gradle.kts b/bukkit/compatibility/build.gradle.kts index df485034a..933d60862 100644 --- a/bukkit/compatibility/build.gradle.kts +++ b/bukkit/compatibility/build.gradle.kts @@ -17,6 +17,7 @@ repositories { maven("https://repo.hiusers.com/releases") // zaphkiel maven("https://jitpack.io") // sxitem slimefun maven("https://repo.codemc.io/repository/maven-public/") // quickshop + maven("https://repo.nexomc.com/releases/") // nexo } dependencies { @@ -41,6 +42,8 @@ dependencies { // MMOItems compileOnly("net.Indyuce:MMOItems-API:6.10-SNAPSHOT") compileOnly("io.lumine:MythicLib-dist:1.6.2-SNAPSHOT") + // Nexo + compileOnly("com.nexomc:nexo:1.13.0") // LuckPerms compileOnly("net.luckperms:api:5.4") // viaversion @@ -63,6 +66,8 @@ dependencies { compileOnly("com.github.Zrips:Jobs:v5.2.2.3") // CustomFishing compileOnly("net.momirealms:custom-fishing:2.3.3") + // CustomNameplates + compileOnly("net.momirealms:custom-nameplates:3.0.33") // eco compileOnly("com.willfp:eco:6.70.1") compileOnly("com.willfp:EcoJobs:3.56.1") diff --git a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/BukkitCompatibilityManager.java b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/BukkitCompatibilityManager.java index 2e17e977f..e21594b35 100644 --- a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/BukkitCompatibilityManager.java +++ b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/BukkitCompatibilityManager.java @@ -1,5 +1,6 @@ package net.momirealms.craftengine.bukkit.compatibility; +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import net.momirealms.craftengine.bukkit.block.BukkitBlockManager; import net.momirealms.craftengine.bukkit.compatibility.item.*; import net.momirealms.craftengine.bukkit.compatibility.legacy.slimeworld.LegacySlimeFormatStorageAdaptor; @@ -16,6 +17,7 @@ import net.momirealms.craftengine.bukkit.compatibility.quickshop.QuickShopItemEx import net.momirealms.craftengine.bukkit.compatibility.region.WorldGuardRegionCondition; import net.momirealms.craftengine.bukkit.compatibility.skript.SkriptHook; import net.momirealms.craftengine.bukkit.compatibility.slimeworld.SlimeFormatStorageAdaptor; +import net.momirealms.craftengine.bukkit.compatibility.tag.CustomNameplateProviders; import net.momirealms.craftengine.bukkit.compatibility.viaversion.ViaVersionUtils; import net.momirealms.craftengine.bukkit.compatibility.worldedit.WorldEditBlockRegister; import net.momirealms.craftengine.bukkit.font.BukkitFontManager; @@ -28,9 +30,12 @@ import net.momirealms.craftengine.core.loot.LootConditions; import net.momirealms.craftengine.core.plugin.compatibility.CompatibilityManager; import net.momirealms.craftengine.core.plugin.compatibility.LevelerProvider; import net.momirealms.craftengine.core.plugin.compatibility.ModelProvider; +import net.momirealms.craftengine.core.plugin.compatibility.TagResolverProvider; import net.momirealms.craftengine.core.plugin.config.Config; +import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.condition.AlwaysFalseCondition; import net.momirealms.craftengine.core.plugin.context.event.EventConditions; +import net.momirealms.craftengine.core.plugin.text.minimessage.FormattedLine; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.VersionHelper; import net.momirealms.craftengine.core.world.WorldManager; @@ -43,6 +48,8 @@ public class BukkitCompatibilityManager implements CompatibilityManager { private final BukkitCraftEngine plugin; private final Map modelProviders; private final Map levelerProviders; + private final Map tagResolverProviders; + private TagResolverProvider[] tagResolverProviderArray = null; private boolean hasPlaceholderAPI; public BukkitCompatibilityManager(BukkitCraftEngine plugin) { @@ -52,6 +59,7 @@ public class BukkitCompatibilityManager implements CompatibilityManager { "BetterModel", BetterModelModel::new )); this.levelerProviders = new HashMap<>(); + this.tagResolverProviders = new HashMap<>(); } @Override @@ -146,6 +154,12 @@ public class BukkitCompatibilityManager implements CompatibilityManager { new QuickShopItemExpressionHandler(this.plugin).register(); logHook("QuickShop-Hikari"); } + if (this.isPluginEnabled("CustomNameplates")) { + registerTagResolverProvider(new CustomNameplateProviders.Background()); + registerTagResolverProvider(new CustomNameplateProviders.Nameplate()); + registerTagResolverProvider(new CustomNameplateProviders.Bubble()); + logHook("CustomNameplates"); + } } @Override @@ -158,6 +172,13 @@ public class BukkitCompatibilityManager implements CompatibilityManager { this.levelerProviders.put(plugin, provider); } + @Override + public void registerTagResolverProvider(TagResolverProvider provider) { + this.tagResolverProviders.put(provider.name(), provider); + this.tagResolverProviderArray = this.tagResolverProviders.values().toArray(new TagResolverProvider[0]); + FormattedLine.Companion.resetWithCustomResolvers(new ArrayList<>(this.tagResolverProviders.keySet())); + } + private void logHook(String plugin) { this.plugin.logger().info("[Compatibility] " + plugin + " hooked"); } @@ -291,6 +312,10 @@ public class BukkitCompatibilityManager implements CompatibilityManager { itemManager.registerExternalItemSource(new SlimefunSource()); logHook("Slimefun"); } + if (this.isPluginEnabled("Nexo")) { + itemManager.registerExternalItemSource(new NexoItemSource()); + logHook("Nexo"); + } } private Plugin getPlugin(String name) { @@ -314,7 +339,9 @@ public class BukkitCompatibilityManager implements CompatibilityManager { @Override public String parse(Player player, String text) { - return PlaceholderAPIUtils.parse((org.bukkit.entity.Player) player.platformPlayer(), text); + return player == null + ? PlaceholderAPIUtils.parse(null, text) + : PlaceholderAPIUtils.parse((org.bukkit.entity.Player) player.platformPlayer(), text); } @Override @@ -326,4 +353,15 @@ public class BukkitCompatibilityManager implements CompatibilityManager { public int getPlayerProtocolVersion(UUID uuid) { return ViaVersionUtils.getPlayerProtocolVersion(uuid); } + + @Override + public TagResolver[] createExternalTagResolvers(Context context) { + if (this.tagResolverProviderArray == null) return null; + int length = this.tagResolverProviderArray.length; + TagResolver[] resolvers = new TagResolver[length]; + for (int i = 0; i < length; i++) { + resolvers[i] = this.tagResolverProviderArray[i].getTagResolver(context); + } + return resolvers; + } } diff --git a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/item/NexoItemSource.java b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/item/NexoItemSource.java new file mode 100644 index 000000000..fbe3452e9 --- /dev/null +++ b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/item/NexoItemSource.java @@ -0,0 +1,29 @@ +package net.momirealms.craftengine.bukkit.compatibility.item; + +import com.nexomc.nexo.api.NexoItems; +import com.nexomc.nexo.items.ItemBuilder; +import net.momirealms.craftengine.core.item.ExternalItemSource; +import net.momirealms.craftengine.core.item.ItemBuildContext; +import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.Nullable; + +public class NexoItemSource implements ExternalItemSource { + + @Override + public String plugin() { + return "nexo"; + } + + @Nullable + @Override + public ItemStack build(String id, ItemBuildContext context) { + ItemBuilder itemBuilder = NexoItems.itemFromId(id); + if (itemBuilder == null) return null; + return itemBuilder.build(); + } + + @Override + public String id(ItemStack item) { + return NexoItems.idFromItem(item); + } +} diff --git a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/quickshop/QuickShopItemExpressionHandler.java b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/quickshop/QuickShopItemExpressionHandler.java index 0eb528a33..f41ff7ee8 100644 --- a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/quickshop/QuickShopItemExpressionHandler.java +++ b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/quickshop/QuickShopItemExpressionHandler.java @@ -1,7 +1,6 @@ package net.momirealms.craftengine.bukkit.compatibility.quickshop; import com.ghostchu.quickshop.api.QuickShopAPI; -import com.ghostchu.quickshop.api.event.QSConfigurationReloadEvent; import com.ghostchu.quickshop.api.registry.BuiltInRegistry; import com.ghostchu.quickshop.api.registry.Registry; import com.ghostchu.quickshop.api.registry.builtin.itemexpression.ItemExpressionHandler; @@ -9,9 +8,6 @@ import com.ghostchu.quickshop.api.registry.builtin.itemexpression.ItemExpression import net.momirealms.craftengine.bukkit.api.CraftEngineItems; import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine; import net.momirealms.craftengine.core.util.Key; -import org.bukkit.Bukkit; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.Plugin; diff --git a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/tag/BackgroundTag.java b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/tag/BackgroundTag.java new file mode 100644 index 000000000..7fcdee579 --- /dev/null +++ b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/tag/BackgroundTag.java @@ -0,0 +1,47 @@ +package net.momirealms.craftengine.bukkit.compatibility.tag; + +import net.kyori.adventure.text.minimessage.Context; +import net.kyori.adventure.text.minimessage.ParsingException; +import net.kyori.adventure.text.minimessage.tag.Tag; +import net.kyori.adventure.text.minimessage.tag.resolver.ArgumentQueue; +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; +import net.momirealms.craftengine.core.plugin.CraftEngine; +import net.momirealms.craftengine.core.plugin.context.PlayerContext; +import net.momirealms.craftengine.core.util.AdventureHelper; +import net.momirealms.customnameplates.api.CustomNameplatesAPI; +import net.momirealms.customnameplates.api.feature.background.Background; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Optional; + +public class BackgroundTag implements TagResolver { + private final net.momirealms.craftengine.core.plugin.context.Context context; + + public BackgroundTag(net.momirealms.craftengine.core.plugin.context.Context context) { + this.context = context; + } + + @Override + public @Nullable Tag resolve(@NotNull String name, @NotNull ArgumentQueue arguments, @NotNull Context ctx) throws ParsingException { + if (!this.has(name)) { + return null; + } + String id = arguments.popOr("No background id provided").toString(); + Optional background = CustomNameplatesAPI.getInstance().getBackground(id); + if (background.isEmpty()) { + return null; + } + double left = arguments.popOr("No argument left provided").asDouble().orElseThrow(() -> ctx.newException("Invalid argument number", arguments)); + double right = arguments.popOr("No argument right provided").asDouble().orElseThrow(() -> ctx.newException("Invalid argument number", arguments)); + String content = arguments.popOr("No argument content provided").toString(); + String parsed = this.context instanceof PlayerContext playerContext ? CraftEngine.instance().compatibilityManager().parse(playerContext.player(), content) : CraftEngine.instance().compatibilityManager().parse(null, content); + String textWithImage = CustomNameplatesAPI.getInstance().createTextWithImage(parsed, background.get(), (float) left, (float) right); + return Tag.selfClosingInserting(AdventureHelper.miniMessage().deserialize(textWithImage, this.context.tagResolvers())); + } + + @Override + public boolean has(@NotNull String name) { + return "background".equals(name); + } +} diff --git a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/tag/BubbleTag.java b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/tag/BubbleTag.java new file mode 100644 index 000000000..8891d0d55 --- /dev/null +++ b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/tag/BubbleTag.java @@ -0,0 +1,47 @@ +package net.momirealms.craftengine.bukkit.compatibility.tag; + +import net.kyori.adventure.text.minimessage.Context; +import net.kyori.adventure.text.minimessage.ParsingException; +import net.kyori.adventure.text.minimessage.tag.Tag; +import net.kyori.adventure.text.minimessage.tag.resolver.ArgumentQueue; +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; +import net.momirealms.craftengine.core.plugin.CraftEngine; +import net.momirealms.craftengine.core.plugin.context.PlayerContext; +import net.momirealms.craftengine.core.util.AdventureHelper; +import net.momirealms.customnameplates.api.CustomNameplatesAPI; +import net.momirealms.customnameplates.api.feature.bubble.Bubble; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Optional; + +public class BubbleTag implements TagResolver { + private final net.momirealms.craftengine.core.plugin.context.Context context; + + public BubbleTag(net.momirealms.craftengine.core.plugin.context.Context context) { + this.context = context; + } + + @Override + public @Nullable Tag resolve(@NotNull String name, @NotNull ArgumentQueue arguments, @NotNull Context ctx) throws ParsingException { + if (!this.has(name)) { + return null; + } + String id = arguments.popOr("No bubble id provided").toString(); + Optional bubble = CustomNameplatesAPI.getInstance().getBubble(id); + if (bubble.isEmpty()) { + return null; + } + double left = arguments.popOr("No argument left provided").asDouble().orElseThrow(() -> ctx.newException("Invalid argument number", arguments)); + double right = arguments.popOr("No argument right provided").asDouble().orElseThrow(() -> ctx.newException("Invalid argument number", arguments)); + String content = arguments.popOr("No argument content provided").toString(); + String parsed = this.context instanceof PlayerContext playerContext ? CraftEngine.instance().compatibilityManager().parse(playerContext.player(), content) : CraftEngine.instance().compatibilityManager().parse(null, content); + String textWithImage = CustomNameplatesAPI.getInstance().createTextWithImage(parsed, bubble.get(), (float) left, (float) right); + return Tag.selfClosingInserting(AdventureHelper.miniMessage().deserialize(textWithImage, this.context.tagResolvers())); + } + + @Override + public boolean has(@NotNull String name) { + return "bubble".equals(name); + } +} diff --git a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/tag/CustomNameplateProviders.java b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/tag/CustomNameplateProviders.java new file mode 100644 index 000000000..5f6aae796 --- /dev/null +++ b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/tag/CustomNameplateProviders.java @@ -0,0 +1,44 @@ +package net.momirealms.craftengine.bukkit.compatibility.tag; + +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; +import net.momirealms.craftengine.core.plugin.compatibility.TagResolverProvider; +import net.momirealms.craftengine.core.plugin.context.Context; + +public class CustomNameplateProviders { + + public static class Background implements TagResolverProvider { + @Override + public String name() { + return "background"; + } + + @Override + public TagResolver getTagResolver(Context context) { + return new BackgroundTag(context); + } + } + + public static class Nameplate implements TagResolverProvider { + @Override + public String name() { + return "nameplate"; + } + + @Override + public TagResolver getTagResolver(Context context) { + return new NameplateTag(context); + } + } + + public static class Bubble implements TagResolverProvider { + @Override + public String name() { + return "bubble"; + } + + @Override + public TagResolver getTagResolver(Context context) { + return new BubbleTag(context); + } + } +} diff --git a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/tag/NameplateTag.java b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/tag/NameplateTag.java new file mode 100644 index 000000000..aefdf0e5b --- /dev/null +++ b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/tag/NameplateTag.java @@ -0,0 +1,47 @@ +package net.momirealms.craftengine.bukkit.compatibility.tag; + +import net.kyori.adventure.text.minimessage.Context; +import net.kyori.adventure.text.minimessage.ParsingException; +import net.kyori.adventure.text.minimessage.tag.Tag; +import net.kyori.adventure.text.minimessage.tag.resolver.ArgumentQueue; +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; +import net.momirealms.craftengine.core.plugin.CraftEngine; +import net.momirealms.craftengine.core.plugin.context.PlayerContext; +import net.momirealms.craftengine.core.util.AdventureHelper; +import net.momirealms.customnameplates.api.CustomNameplatesAPI; +import net.momirealms.customnameplates.api.feature.nameplate.Nameplate; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Optional; + +public class NameplateTag implements TagResolver { + private final net.momirealms.craftengine.core.plugin.context.Context context; + + public NameplateTag(net.momirealms.craftengine.core.plugin.context.Context context) { + this.context = context; + } + + @Override + public @Nullable Tag resolve(@NotNull String name, @NotNull ArgumentQueue arguments, @NotNull Context ctx) throws ParsingException { + if (!this.has(name)) { + return null; + } + String id = arguments.popOr("No nameplate id provided").toString(); + Optional nameplate = CustomNameplatesAPI.getInstance().getNameplate(id); + if (nameplate.isEmpty()) { + return null; + } + double left = arguments.popOr("No argument left provided").asDouble().orElseThrow(() -> ctx.newException("Invalid argument number", arguments)); + double right = arguments.popOr("No argument right provided").asDouble().orElseThrow(() -> ctx.newException("Invalid argument number", arguments)); + String content = arguments.popOr("No argument content provided").toString(); + String parsed = this.context instanceof PlayerContext playerContext ? CraftEngine.instance().compatibilityManager().parse(playerContext.player(), content) : CraftEngine.instance().compatibilityManager().parse(null, content); + String textWithImage = CustomNameplatesAPI.getInstance().createTextWithImage(parsed, nameplate.get(), (float) left, (float) right); + return Tag.selfClosingInserting(AdventureHelper.miniMessage().deserialize(textWithImage, this.context.tagResolvers())); + } + + @Override + public boolean has(@NotNull String name) { + return "nameplate".equals(name); + } +} diff --git a/bukkit/legacy/build.gradle.kts b/bukkit/legacy/build.gradle.kts index 0434654d8..75ecb2c84 100644 --- a/bukkit/legacy/build.gradle.kts +++ b/bukkit/legacy/build.gradle.kts @@ -29,5 +29,5 @@ tasks.withType { } artifacts { - archives(tasks.shadowJar) + implementation(tasks.shadowJar) } \ No newline at end of file diff --git a/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/DismountListener1_20.java b/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/DismountListener1_20.java index 98fd4deea..50db9bcec 100644 --- a/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/DismountListener1_20.java +++ b/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/DismountListener1_20.java @@ -7,7 +7,7 @@ import org.bukkit.event.Listener; import java.util.function.BiConsumer; -public class DismountListener1_20 implements Listener { +public final class DismountListener1_20 implements Listener { private final BiConsumer consumer; public DismountListener1_20(BiConsumer consumer) { diff --git a/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/util/LegacyAttributeUtils.java b/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/util/LegacyAttributeUtils.java index 639c83553..720b75e89 100644 --- a/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/util/LegacyAttributeUtils.java +++ b/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/util/LegacyAttributeUtils.java @@ -8,7 +8,8 @@ import org.bukkit.entity.Player; import java.util.Objects; import java.util.Optional; -public class LegacyAttributeUtils { +public final class LegacyAttributeUtils { + private LegacyAttributeUtils() {} public static void setMaxHealth(ArmorStand entity) { Objects.requireNonNull(entity.getAttribute(Attribute.GENERIC_MAX_HEALTH)).setBaseValue(0.01); diff --git a/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/util/LegacyAuthLibUtils.java b/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/util/LegacyAuthLibUtils.java index 63a00b16e..7a7701d71 100644 --- a/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/util/LegacyAuthLibUtils.java +++ b/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/util/LegacyAuthLibUtils.java @@ -4,7 +4,8 @@ import com.mojang.authlib.GameProfile; import java.util.UUID; -public class LegacyAuthLibUtils { +public final class LegacyAuthLibUtils { + private LegacyAuthLibUtils() {} public static String getName(GameProfile profile) { return profile.getName(); diff --git a/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/util/LegacyEntityUtils.java b/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/util/LegacyEntityUtils.java index 35a23f0ad..15425cc8e 100644 --- a/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/util/LegacyEntityUtils.java +++ b/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/util/LegacyEntityUtils.java @@ -8,7 +8,8 @@ import org.bukkit.event.entity.CreatureSpawnEvent; import java.util.function.Consumer; -public class LegacyEntityUtils { +public final class LegacyEntityUtils { + private LegacyEntityUtils() {} public static Entity spawnEntity(World world, Location loc, EntityType type, Consumer function) { return world.spawnEntity(loc, type, CreatureSpawnEvent.SpawnReason.CUSTOM, function::accept); diff --git a/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/util/LegacyInventoryUtils.java b/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/util/LegacyInventoryUtils.java index 9692a7953..5fa59cef1 100644 --- a/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/util/LegacyInventoryUtils.java +++ b/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/util/LegacyInventoryUtils.java @@ -1,14 +1,18 @@ package net.momirealms.craftengine.bukkit.util; +import org.bukkit.Bukkit; import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryAction; import org.bukkit.event.inventory.InventoryEvent; import org.bukkit.event.inventory.PrepareAnvilEvent; import org.bukkit.inventory.AnvilInventory; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryView; +import org.bukkit.inventory.Merchant; import org.jetbrains.annotations.Nullable; -public class LegacyInventoryUtils { +public final class LegacyInventoryUtils { + private LegacyInventoryUtils() {} public static Inventory getTopInventory(Player player) { return player.getOpenInventory().getTopInventory(); @@ -67,7 +71,20 @@ public class LegacyInventoryUtils { player.openWorkbench(null, true); } + public static void openMerchant(Player player, Merchant merchant) { + player.openMerchant(merchant, true); + } + + @SuppressWarnings("deprecation") + public static Merchant createMerchant() { + return Bukkit.createMerchant("Villager"); + } + public static Player getPlayerFromInventoryEvent(InventoryEvent event) { return (Player) event.getView().getPlayer(); } + + public static boolean isHotBarSwapAndReadd(InventoryAction action) { + return action == InventoryAction.HOTBAR_MOVE_AND_READD; + } } diff --git a/bukkit/loader/build.gradle.kts b/bukkit/loader/build.gradle.kts index 547fbb2b0..fa0ddd0d9 100644 --- a/bukkit/loader/build.gradle.kts +++ b/bukkit/loader/build.gradle.kts @@ -56,7 +56,7 @@ bukkit { } artifacts { - archives(tasks.shadowJar) + implementation(tasks.shadowJar) } tasks { diff --git a/bukkit/paper-loader/build.gradle.kts b/bukkit/paper-loader/build.gradle.kts index 9b04d929d..6f4b05f8e 100644 --- a/bukkit/paper-loader/build.gradle.kts +++ b/bukkit/paper-loader/build.gradle.kts @@ -77,6 +77,9 @@ paper { register("ViaVersion") { required = false } register("QuickShop-Hikari") { required = false } + // external tag + register("CustomNameplates") { required = false } + // external models register("ModelEngine") { required = false } register("BetterModel") { required = false } @@ -90,6 +93,7 @@ paper { register("HeadDatabase") { required = false } register("SX-Item") { required = false } register("Slimefun") { required = false } + register("Nexo") { required = false } // leveler register("AuraSkills") { required = false } @@ -126,11 +130,12 @@ paper { register("PreciousStones") { required = false } register("hClaims") { required = false } register("Factions") { required = false } + register("NoBuildPlus") { required = false } } } artifacts { - archives(tasks.shadowJar) + implementation(tasks.shadowJar) } tasks { diff --git a/bukkit/paper-loader/src/main/java/net/momirealms/craftengine/bukkit/plugin/PaperCraftEngineBootstrap.java b/bukkit/paper-loader/src/main/java/net/momirealms/craftengine/bukkit/plugin/PaperCraftEngineBootstrap.java index 45eb0a35d..3487acf09 100644 --- a/bukkit/paper-loader/src/main/java/net/momirealms/craftengine/bukkit/plugin/PaperCraftEngineBootstrap.java +++ b/bukkit/paper-loader/src/main/java/net/momirealms/craftengine/bukkit/plugin/PaperCraftEngineBootstrap.java @@ -17,7 +17,7 @@ import java.lang.reflect.Method; import java.util.Objects; @SuppressWarnings("UnstableApiUsage") -public class PaperCraftEngineBootstrap implements PluginBootstrap { +public final class PaperCraftEngineBootstrap implements PluginBootstrap { private static final Class clazz$PluginProviderContext = PluginProviderContext.class; private static final Class clazz$ComponentLogger = Objects.requireNonNull( ReflectionUtils.getClazz( @@ -29,7 +29,8 @@ public class PaperCraftEngineBootstrap implements PluginBootstrap { clazz$PluginProviderContext, clazz$ComponentLogger, new String[] { "getLogger" } ) ); - protected BukkitCraftEngine plugin; + + BukkitCraftEngine plugin; @Override public void bootstrap(@NotNull BootstrapContext context) { diff --git a/bukkit/paper-loader/src/main/java/net/momirealms/craftengine/bukkit/plugin/PaperCraftEnginePlugin.java b/bukkit/paper-loader/src/main/java/net/momirealms/craftengine/bukkit/plugin/PaperCraftEnginePlugin.java index ee3ac717b..0840c777b 100644 --- a/bukkit/paper-loader/src/main/java/net/momirealms/craftengine/bukkit/plugin/PaperCraftEnginePlugin.java +++ b/bukkit/paper-loader/src/main/java/net/momirealms/craftengine/bukkit/plugin/PaperCraftEnginePlugin.java @@ -2,7 +2,7 @@ package net.momirealms.craftengine.bukkit.plugin; import org.bukkit.plugin.java.JavaPlugin; -public class PaperCraftEnginePlugin extends JavaPlugin { +public final class PaperCraftEnginePlugin extends JavaPlugin { private final PaperCraftEngineBootstrap bootstrap; public PaperCraftEnginePlugin(PaperCraftEngineBootstrap bootstrap) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/advancement/BukkitAdvancementManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/advancement/BukkitAdvancementManager.java index e42a03083..9a5f8acc3 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/advancement/BukkitAdvancementManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/advancement/BukkitAdvancementManager.java @@ -22,7 +22,7 @@ import net.momirealms.craftengine.core.util.VersionHelper; import java.nio.file.Path; import java.util.*; -public class BukkitAdvancementManager extends AbstractAdvancementManager { +public final class BukkitAdvancementManager extends AbstractAdvancementManager { private final BukkitCraftEngine plugin; private final AdvancementParser advancementParser; private final Map advancements = new HashMap<>(); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/CraftEngineFurniture.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/CraftEngineFurniture.java index d7367e5cd..4a47cd615 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/CraftEngineFurniture.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/CraftEngineFurniture.java @@ -2,6 +2,7 @@ package net.momirealms.craftengine.bukkit.api; import net.momirealms.craftengine.bukkit.entity.furniture.BukkitFurniture; import net.momirealms.craftengine.bukkit.entity.furniture.BukkitFurnitureManager; +import net.momirealms.craftengine.bukkit.entity.seat.BukkitSeatManager; import net.momirealms.craftengine.bukkit.nms.CollisionEntity; import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine; @@ -18,6 +19,7 @@ import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextPar import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.world.World; import net.momirealms.craftengine.core.world.WorldPosition; +import net.momirealms.sparrow.nbt.CompoundTag; import org.bukkit.Location; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; @@ -159,8 +161,7 @@ public final class CraftEngineFurniture { * @return is seat or not */ public static boolean isSeat(@NotNull Entity entity) { - Integer baseEntityId = entity.getPersistentDataContainer().get(BukkitFurnitureManager.FURNITURE_SEAT_BASE_ENTITY_KEY, PersistentDataType.INTEGER); - return baseEntityId != null; + return entity.getPersistentDataContainer().has(BukkitSeatManager.SEAT_KEY); } /** @@ -182,9 +183,12 @@ public final class CraftEngineFurniture { */ @Nullable public static BukkitFurniture getLoadedFurnitureBySeat(@NotNull Entity seat) { - Integer baseEntityId = seat.getPersistentDataContainer().get(BukkitFurnitureManager.FURNITURE_SEAT_BASE_ENTITY_KEY, PersistentDataType.INTEGER); - if (baseEntityId == null) return null; - return BukkitFurnitureManager.instance().loadedFurnitureByRealEntityId(baseEntityId); + if (isSeat(seat)) { + CompoundTag seatExtraData = BukkitSeatManager.instance().getSeatExtraData(seat); + int entityId = seatExtraData.getInt("entity_id"); + BukkitFurnitureManager.instance().loadedFurnitureByRealEntityId(entityId); + } + return null; } /** diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/AsyncResourcePackCacheEvent.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/AsyncResourcePackCacheEvent.java index 35f1cdd4f..dfa064fa3 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/AsyncResourcePackCacheEvent.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/AsyncResourcePackCacheEvent.java @@ -21,7 +21,7 @@ import java.nio.file.Path; * if you need the cache to recognize updates. *

*/ -public class AsyncResourcePackCacheEvent extends Event { +public final class AsyncResourcePackCacheEvent extends Event { private static final HandlerList HANDLER_LIST = new HandlerList(); private final PackCacheData cacheData; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/AsyncResourcePackGenerateEvent.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/AsyncResourcePackGenerateEvent.java index efca827ba..4a058e76b 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/AsyncResourcePackGenerateEvent.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/AsyncResourcePackGenerateEvent.java @@ -6,7 +6,7 @@ import org.jetbrains.annotations.NotNull; import java.nio.file.Path; -public class AsyncResourcePackGenerateEvent extends Event { +public final class AsyncResourcePackGenerateEvent extends Event { private static final HandlerList HANDLER_LIST = new HandlerList(); private final Path generatedPackPath; private final Path zipFilePath; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/CraftEngineReloadEvent.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/CraftEngineReloadEvent.java index 949299b48..d3d078099 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/CraftEngineReloadEvent.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/CraftEngineReloadEvent.java @@ -5,7 +5,7 @@ import org.bukkit.event.Event; import org.bukkit.event.HandlerList; import org.jetbrains.annotations.NotNull; -public class CraftEngineReloadEvent extends Event { +public final class CraftEngineReloadEvent extends Event { private static final HandlerList HANDLER_LIST = new HandlerList(); private final BukkitCraftEngine plugin; private static boolean firstFlag = true; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/CustomBlockAttemptPlaceEvent.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/CustomBlockAttemptPlaceEvent.java index af3683f71..320bd5552 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/CustomBlockAttemptPlaceEvent.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/CustomBlockAttemptPlaceEvent.java @@ -12,7 +12,7 @@ import org.bukkit.event.HandlerList; import org.bukkit.event.player.PlayerEvent; import org.jetbrains.annotations.NotNull; -public class CustomBlockAttemptPlaceEvent extends PlayerEvent implements Cancellable { +public final class CustomBlockAttemptPlaceEvent extends PlayerEvent implements Cancellable { private static final HandlerList HANDLER_LIST = new HandlerList(); private boolean cancelled; private final CustomBlock customBlock; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/CustomBlockBreakEvent.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/CustomBlockBreakEvent.java index 4034c8dea..e6f6a3451 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/CustomBlockBreakEvent.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/CustomBlockBreakEvent.java @@ -10,7 +10,7 @@ import org.bukkit.event.HandlerList; import org.bukkit.event.player.PlayerEvent; import org.jetbrains.annotations.NotNull; -public class CustomBlockBreakEvent extends PlayerEvent implements Cancellable { +public final class CustomBlockBreakEvent extends PlayerEvent implements Cancellable { private static final HandlerList HANDLER_LIST = new HandlerList(); private boolean cancelled; private final CustomBlock customBlock; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/CustomBlockInteractEvent.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/CustomBlockInteractEvent.java index f9c9eccf2..cc37edb93 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/CustomBlockInteractEvent.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/CustomBlockInteractEvent.java @@ -15,7 +15,7 @@ import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class CustomBlockInteractEvent extends PlayerEvent implements Cancellable { +public final class CustomBlockInteractEvent extends PlayerEvent implements Cancellable { private static final HandlerList HANDLER_LIST = new HandlerList(); private boolean cancelled; private final CustomBlock customBlock; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/CustomBlockPlaceEvent.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/CustomBlockPlaceEvent.java index 53ce67e2a..cffe6a3bf 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/CustomBlockPlaceEvent.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/CustomBlockPlaceEvent.java @@ -11,7 +11,7 @@ import org.bukkit.event.HandlerList; import org.bukkit.event.player.PlayerEvent; import org.jetbrains.annotations.NotNull; -public class CustomBlockPlaceEvent extends PlayerEvent implements Cancellable { +public final class CustomBlockPlaceEvent extends PlayerEvent implements Cancellable { private static final HandlerList HANDLER_LIST = new HandlerList(); private final CustomBlock customBlock; private final ImmutableBlockState state; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/FurnitureAttemptBreakEvent.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/FurnitureAttemptBreakEvent.java index 6a26aab44..901c6f032 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/FurnitureAttemptBreakEvent.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/FurnitureAttemptBreakEvent.java @@ -8,7 +8,7 @@ import org.bukkit.event.HandlerList; import org.bukkit.event.player.PlayerEvent; import org.jetbrains.annotations.NotNull; -public class FurnitureAttemptBreakEvent extends PlayerEvent implements Cancellable { +public final class FurnitureAttemptBreakEvent extends PlayerEvent implements Cancellable { private static final HandlerList HANDLER_LIST = new HandlerList(); private boolean cancelled; private final BukkitFurniture furniture; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/FurnitureAttemptPlaceEvent.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/FurnitureAttemptPlaceEvent.java index f77c77e12..6d0a54209 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/FurnitureAttemptPlaceEvent.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/FurnitureAttemptPlaceEvent.java @@ -12,7 +12,7 @@ import org.bukkit.event.HandlerList; import org.bukkit.event.player.PlayerEvent; import org.jetbrains.annotations.NotNull; -public class FurnitureAttemptPlaceEvent extends PlayerEvent implements Cancellable { +public final class FurnitureAttemptPlaceEvent extends PlayerEvent implements Cancellable { private static final HandlerList HANDLER_LIST = new HandlerList(); private boolean cancelled; private final CustomFurniture furniture; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/FurnitureBreakEvent.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/FurnitureBreakEvent.java index 087004c50..20dd2a80a 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/FurnitureBreakEvent.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/FurnitureBreakEvent.java @@ -8,7 +8,7 @@ import org.bukkit.event.HandlerList; import org.bukkit.event.player.PlayerEvent; import org.jetbrains.annotations.NotNull; -public class FurnitureBreakEvent extends PlayerEvent implements Cancellable { +public final class FurnitureBreakEvent extends PlayerEvent implements Cancellable { private static final HandlerList HANDLER_LIST = new HandlerList(); private boolean cancelled; private final BukkitFurniture furniture; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/FurnitureInteractEvent.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/FurnitureInteractEvent.java index a9a523484..1e1adcf47 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/FurnitureInteractEvent.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/FurnitureInteractEvent.java @@ -1,6 +1,7 @@ package net.momirealms.craftengine.bukkit.api.event; import net.momirealms.craftengine.bukkit.entity.furniture.BukkitFurniture; +import net.momirealms.craftengine.core.entity.furniture.HitBox; import net.momirealms.craftengine.core.entity.player.InteractionHand; import org.bukkit.Location; import org.bukkit.entity.Player; @@ -9,21 +10,29 @@ import org.bukkit.event.HandlerList; import org.bukkit.event.player.PlayerEvent; import org.jetbrains.annotations.NotNull; -public class FurnitureInteractEvent extends PlayerEvent implements Cancellable { +public final class FurnitureInteractEvent extends PlayerEvent implements Cancellable { private static final HandlerList HANDLER_LIST = new HandlerList(); private boolean cancelled; private final BukkitFurniture furniture; private final InteractionHand hand; private final Location interactionPoint; + private final HitBox hitBox; public FurnitureInteractEvent(@NotNull Player player, @NotNull BukkitFurniture furniture, @NotNull InteractionHand hand, - @NotNull Location interactionPoint) { + @NotNull Location interactionPoint, + @NotNull HitBox hitBox) { super(player); this.furniture = furniture; this.hand = hand; this.interactionPoint = interactionPoint; + this.hitBox = hitBox; + } + + @NotNull + public HitBox hitBox() { + return hitBox; } @NotNull diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/FurniturePlaceEvent.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/FurniturePlaceEvent.java index 8ea0c9645..9f495d317 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/FurniturePlaceEvent.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/FurniturePlaceEvent.java @@ -9,7 +9,7 @@ import org.bukkit.event.HandlerList; import org.bukkit.event.player.PlayerEvent; import org.jetbrains.annotations.NotNull; -public class FurniturePlaceEvent extends PlayerEvent implements Cancellable { +public final class FurniturePlaceEvent extends PlayerEvent implements Cancellable { private static final HandlerList HANDLER_LIST = new HandlerList(); private final Location location; private final BukkitFurniture furniture; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitBlockManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitBlockManager.java index abcf5d08f..b650e0a57 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitBlockManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitBlockManager.java @@ -6,6 +6,9 @@ import net.momirealms.craftengine.bukkit.block.behavior.UnsafeCompositeBlockBeha import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine; import net.momirealms.craftengine.bukkit.plugin.injector.BlockGenerator; +import net.momirealms.craftengine.bukkit.plugin.network.BukkitNetworkManager; +import net.momirealms.craftengine.bukkit.plugin.network.payload.PayloadHelper; +import net.momirealms.craftengine.bukkit.plugin.network.payload.protocol.VisualBlockStatePacket; import net.momirealms.craftengine.bukkit.plugin.reflection.bukkit.CraftBukkitReflections; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.*; import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer; @@ -18,15 +21,17 @@ import net.momirealms.craftengine.core.block.parser.BlockStateParser; import net.momirealms.craftengine.core.loot.LootTable; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.config.Config; -import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.event.EventTrigger; import net.momirealms.craftengine.core.plugin.context.function.Function; import net.momirealms.craftengine.core.plugin.logger.Debugger; import net.momirealms.craftengine.core.registry.Holder; import net.momirealms.craftengine.core.sound.SoundData; import net.momirealms.craftengine.core.sound.SoundSet; -import net.momirealms.craftengine.core.util.*; -import net.momirealms.craftengine.core.world.chunk.PalettedContainer; +import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.ObjectHolder; +import net.momirealms.craftengine.core.util.Tristate; +import net.momirealms.craftengine.core.util.VersionHelper; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.event.HandlerList; @@ -61,6 +66,8 @@ public final class BukkitBlockManager extends AbstractBlockManager { private Set missingHitSounds = Set.of(); private Set missingStepSounds = Set.of(); private Set missingInteractSoundBlocks = Set.of(); + // 缓存的VisualBlockStatePacket + private VisualBlockStatePacket cachedVisualBlockStatePacket; public BukkitBlockManager(BukkitCraftEngine plugin) { super(plugin, RegistryUtils.currentBlockRegistrySize(), Config.serverSideBlocks()); @@ -120,6 +127,11 @@ public final class BukkitBlockManager extends AbstractBlockManager { public void delayedLoad() { this.plugin.networkManager().registerBlockStatePacketListeners(this.blockStateMappings); // 重置方块映射表 super.delayedLoad(); + this.cachedVisualBlockStatePacket = VisualBlockStatePacket.create(); + for (BukkitServerPlayer player : BukkitNetworkManager.instance().onlineUsers()) { + if (!player.clientModEnabled()) continue; + PayloadHelper.sendData(player, this.cachedVisualBlockStatePacket); + } } @Override @@ -322,9 +334,6 @@ public final class BukkitBlockManager extends AbstractBlockManager { // 注册服务端侧的真实方块 private void registerServerSideCustomBlocks(int count) { // 这个会影响全局调色盘 - if (MiscUtils.ceilLog2(this.vanillaBlockStateCount + count) == MiscUtils.ceilLog2(this.vanillaBlockStateCount)) { - PalettedContainer.NEED_DOWNGRADE = false; - } try { unfreezeRegistry(); for (int i = 0; i < count; i++) { @@ -359,6 +368,10 @@ public final class BukkitBlockManager extends AbstractBlockManager { return this.cachedUpdateTagsPacket; } + public VisualBlockStatePacket cachedVisualBlockStatePacket() { + return this.cachedVisualBlockStatePacket; + } + private void markVanillaNoteBlocks() { try { Object block = FastNMS.INSTANCE.method$Registry$getValue(MBuiltInRegistries.BLOCK, KeyUtils.toResourceLocation(BlockKeys.NOTE_BLOCK)); @@ -418,8 +431,26 @@ public final class BukkitBlockManager extends AbstractBlockManager { private void deceiveBukkitRegistry() { try { Map magicMap = (Map) CraftBukkitReflections.field$CraftMagicNumbers$BLOCK_MATERIAL.get(null); - for (DelegatingBlock customBlock : this.customBlocks) { - magicMap.put(customBlock, Material.STONE); + Set invalid = new HashSet<>(); + for (int i = 0; i < this.customBlocks.length; i++) { + DelegatingBlock customBlock = this.customBlocks[i]; + String value = Config.deceiveBukkitMaterial(i).value(); + Material material; + try { + material = Material.valueOf(value.toUpperCase(Locale.ROOT)); + } catch (IllegalArgumentException e) { + if (invalid.add(value)) { + this.plugin.logger().warn("Cannot load 'deceive-bukkit-material'. '" + value + "' is an invalid bukkit material", e); + } + material = Material.BRICKS; + } + if (!material.isBlock()) { + if (invalid.add(value)) { + this.plugin.logger().warn("Cannot load 'deceive-bukkit-material'. '" + value + "' is an invalid bukkit block material"); + } + material = Material.BRICKS; + } + magicMap.put(customBlock, material); } } catch (ReflectiveOperationException e) { this.plugin.logger().warn("Failed to deceive bukkit magic blocks", e); @@ -510,7 +541,7 @@ public final class BukkitBlockManager extends AbstractBlockManager { @Override protected CustomBlock createCustomBlock(@NotNull Holder.Reference holder, @NotNull BlockStateVariantProvider variantProvider, - @NotNull Map>> events, + @NotNull Map>> events, @Nullable LootTable lootTable) { return new BukkitCustomBlock(holder, variantProvider, events, lootTable); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitCustomBlock.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitCustomBlock.java index 360e121ad..c5b38b1de 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitCustomBlock.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitCustomBlock.java @@ -4,7 +4,7 @@ import net.momirealms.craftengine.core.block.AbstractCustomBlock; import net.momirealms.craftengine.core.block.BlockStateVariantProvider; import net.momirealms.craftengine.core.block.CustomBlock; import net.momirealms.craftengine.core.loot.LootTable; -import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.event.EventTrigger; import net.momirealms.craftengine.core.plugin.context.function.Function; import net.momirealms.craftengine.core.registry.Holder; @@ -19,7 +19,7 @@ public final class BukkitCustomBlock extends AbstractCustomBlock { public BukkitCustomBlock( @NotNull Holder.Reference holder, @NotNull BlockStateVariantProvider variantProvider, - @NotNull Map>> events, + @NotNull Map>> events, @Nullable LootTable lootTable ) { super(holder, variantProvider, events, lootTable); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitCustomBlockStateWrapper.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitCustomBlockStateWrapper.java index cf4cda67b..b3370a11e 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitCustomBlockStateWrapper.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitCustomBlockStateWrapper.java @@ -3,18 +3,31 @@ package net.momirealms.craftengine.bukkit.block; import net.momirealms.craftengine.bukkit.util.BlockStateUtils; import net.momirealms.craftengine.core.block.AbstractBlockStateWrapper; import net.momirealms.craftengine.core.block.BlockStateWrapper; +import net.momirealms.craftengine.core.block.CustomBlockStateWrapper; import net.momirealms.craftengine.core.block.ImmutableBlockState; import net.momirealms.craftengine.core.block.properties.Property; import net.momirealms.craftengine.core.util.Key; +import java.util.Collection; +import java.util.List; import java.util.Optional; -public class BukkitCustomBlockStateWrapper extends AbstractBlockStateWrapper { +public class BukkitCustomBlockStateWrapper extends AbstractBlockStateWrapper implements CustomBlockStateWrapper { public BukkitCustomBlockStateWrapper(Object blockState, int registryId) { super(blockState, registryId); } + @Override + public BlockStateWrapper visualBlockState() { + return getImmutableBlockState().map(ImmutableBlockState::vanillaBlockState).orElse(null); + } + + @Override + public boolean isCustom() { + return true; + } + @Override public Key ownerId() { return getImmutableBlockState().map(state -> state.owner().value().id()).orElseGet(() -> BlockStateUtils.getBlockOwnerIdFromState(super.blockState)); @@ -51,6 +64,12 @@ public class BukkitCustomBlockStateWrapper extends AbstractBlockStateWrapper { return getImmutableBlockState().map(state -> state.owner().value().getProperty(propertyName) != null).orElse(false); } + @Override + public Collection getPropertyNames() { + Optional immutableBlockState = getImmutableBlockState(); + return immutableBlockState.>map(state -> state.getProperties().stream().map(Property::name).toList()).orElseGet(List::of); + } + @Override public String getAsString() { return getImmutableBlockState().map(ImmutableBlockState::toString).orElseGet(() -> BlockStateUtils.fromBlockData(super.blockState).getAsString()); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitVanillaBlockStateWrapper.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitVanillaBlockStateWrapper.java index 61c5d7172..b298f6d66 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitVanillaBlockStateWrapper.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitVanillaBlockStateWrapper.java @@ -8,6 +8,8 @@ import net.momirealms.craftengine.core.block.BlockStateWrapper; import net.momirealms.craftengine.core.block.StatePropertyAccessor; import net.momirealms.craftengine.core.util.Key; +import java.util.Collection; + public class BukkitVanillaBlockStateWrapper extends AbstractBlockStateWrapper { private final StatePropertyAccessor accessor; @@ -16,6 +18,11 @@ public class BukkitVanillaBlockStateWrapper extends AbstractBlockStateWrapper { this.accessor = FastNMS.INSTANCE.createStatePropertyAccessor(blockState); } + @Override + public boolean isCustom() { + return false; + } + @Override public Key ownerId() { return BlockStateUtils.getBlockOwnerIdFromState(super.blockState); @@ -31,6 +38,11 @@ public class BukkitVanillaBlockStateWrapper extends AbstractBlockStateWrapper { return this.accessor.hasProperty(propertyName); } + @Override + public Collection getPropertyNames() { + return this.accessor.getPropertyNames(); + } + @Override public String getAsString() { return BlockStateUtils.fromBlockData(super.blockState).getAsString(); 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 000ecaccd..4bb3daf89 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 @@ -43,6 +43,7 @@ public class BukkitBlockBehaviors extends BlockBehaviors { public static final Key ATTACHED_STEM_BLOCK = Key.from("craftengine:attached_stem_block"); public static final Key CHIME_BLOCK = Key.from("craftengine:chime_block"); public static final Key BUDDING_BLOCK = Key.from("craftengine:budding_block"); + public static final Key SEAT_BLOCK = Key.from("craftengine:seat_block"); public static void init() { register(EMPTY, (block, args) -> EmptyBlockBehavior.INSTANCE); @@ -84,5 +85,6 @@ public class BukkitBlockBehaviors extends BlockBehaviors { register(ATTACHED_STEM_BLOCK, AttachedStemBlockBehavior.FACTORY); register(CHIME_BLOCK, ChimeBlockBehavior.FACTORY); register(BUDDING_BLOCK, BuddingBlockBehavior.FACTORY); + register(SEAT_BLOCK, SeatBlockBehavior.FACTORY); } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DirectionalAttachedBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DirectionalAttachedBlockBehavior.java index 958a1e37a..7ec5c5c21 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DirectionalAttachedBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DirectionalAttachedBlockBehavior.java @@ -75,11 +75,11 @@ public class DirectionalAttachedBlockBehavior extends BukkitBlockBehavior { if (behavior == null) return false; Direction direction; if (isSixDirection) { - direction = ((Direction) state.get(behavior.facingProperty)).opposite(); + direction = (Direction) state.get(behavior.facingProperty); } else { - direction = ((HorizontalDirection) state.get(behavior.facingProperty)).opposite().toDirection(); + direction = ((HorizontalDirection) state.get(behavior.facingProperty)).toDirection(); } - BlockPos blockPos = LocationUtils.fromBlockPos(args[2]).relative(direction); + BlockPos blockPos = LocationUtils.fromBlockPos(args[2]).relative(direction.opposite()); Object nmsPos = LocationUtils.toBlockPos(blockPos); Object nmsState = FastNMS.INSTANCE.method$BlockGetter$getBlockState(args[1], nmsPos); return FastNMS.INSTANCE.method$BlockStateBase$isFaceSturdy(nmsState, args[1], nmsPos, DirectionUtils.toNMSDirection(direction), CoreReflections.instance$SupportType$FULL) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/FallingBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/FallingBlockBehavior.java index a9fb489ba..a184c7369 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/FallingBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/FallingBlockBehavior.java @@ -124,7 +124,7 @@ public class FallingBlockBehavior extends BukkitBlockBehavior { SoundData fallSound = null; SoundData destroySound = null; if (sounds != null) { - fallSound = Optional.ofNullable(sounds.get("fall")).map(obj -> SoundData.create(obj, SoundData.SoundValue.FIXED_1, SoundData.SoundValue.ranged(0.9f, 1f))).orElse(null); + fallSound = Optional.ofNullable(sounds.get("land")).map(obj -> SoundData.create(obj, SoundData.SoundValue.FIXED_1, SoundData.SoundValue.ranged(0.9f, 1f))).orElse(null); destroySound = Optional.ofNullable(sounds.get("destroy")).map(obj -> SoundData.create(obj, SoundData.SoundValue.FIXED_1, SoundData.SoundValue.ranged(0.9f, 1f))).orElse(null); } return new FallingBlockBehavior(block, hurtAmount, hurtMax, fallSound, destroySound); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SeatBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SeatBlockBehavior.java new file mode 100644 index 000000000..c54f6eb66 --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SeatBlockBehavior.java @@ -0,0 +1,80 @@ +package net.momirealms.craftengine.bukkit.block.behavior; + +import net.momirealms.craftengine.bukkit.block.entity.BukkitBlockEntityTypes; +import net.momirealms.craftengine.bukkit.block.entity.SeatBlockEntity; +import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer; +import net.momirealms.craftengine.core.block.BlockBehavior; +import net.momirealms.craftengine.core.block.CustomBlock; +import net.momirealms.craftengine.core.block.ImmutableBlockState; +import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; +import net.momirealms.craftengine.core.block.behavior.EntityBlockBehavior; +import net.momirealms.craftengine.core.block.entity.BlockEntity; +import net.momirealms.craftengine.core.block.entity.BlockEntityType; +import net.momirealms.craftengine.core.block.properties.Property; +import net.momirealms.craftengine.core.entity.player.InteractionResult; +import net.momirealms.craftengine.core.entity.seat.SeatConfig; +import net.momirealms.craftengine.core.item.context.UseOnContext; +import net.momirealms.craftengine.core.util.HorizontalDirection; +import net.momirealms.craftengine.core.world.BlockPos; +import net.momirealms.craftengine.core.world.CEWorld; + +import java.util.Map; + +public class SeatBlockBehavior extends BukkitBlockBehavior implements EntityBlockBehavior { + public static final Factory FACTORY = new Factory(); + private final Property directionProperty; + private final SeatConfig[] seats; + + public SeatBlockBehavior(CustomBlock customBlock, Property directionProperty, SeatConfig[] seats) { + super(customBlock); + this.seats = seats; + this.directionProperty = directionProperty; + } + + @Override + public BlockEntity createBlockEntity(BlockPos pos, ImmutableBlockState state) { + return new SeatBlockEntity(pos, state, this.seats); + } + + @Override + public BlockEntityType blockEntityType(ImmutableBlockState state) { + return EntityBlockBehavior.blockEntityTypeHelper(BukkitBlockEntityTypes.SEAT); + } + + public Property directionProperty() { + return this.directionProperty; + } + + @Override + public InteractionResult useWithoutItem(UseOnContext context, ImmutableBlockState state) { + BukkitServerPlayer player = (BukkitServerPlayer) context.getPlayer(); + if (player == null || player.isSecondaryUseActive()) { + return InteractionResult.PASS; + } + player.swingHand(context.getHand()); + CEWorld world = context.getLevel().storageWorld(); + BlockEntity blockEntity = world.getBlockEntityAtIfLoaded(context.getClickedPos()); + if (!(blockEntity instanceof SeatBlockEntity seatBlockEntity)) { + return InteractionResult.PASS; + } + if (seatBlockEntity.spawnSeat(player)) { + return InteractionResult.SUCCESS_AND_CANCEL; + } else { + return InteractionResult.PASS; + } + } + + public static class Factory implements BlockBehaviorFactory { + + @SuppressWarnings("unchecked") + @Override + public BlockBehavior create(CustomBlock block, Map arguments) { + Property directionProperty = null; + Property facing = block.getProperty("facing"); + if (facing != null && facing.valueClass() == HorizontalDirection.class) { + directionProperty = (Property) facing; + } + return new SeatBlockBehavior(block, directionProperty, SeatConfig.fromObj(arguments.get("seats"))); + } + } +} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SimpleParticleBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SimpleParticleBlockBehavior.java index fa0944580..d75184789 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SimpleParticleBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SimpleParticleBlockBehavior.java @@ -38,7 +38,7 @@ public class SimpleParticleBlockBehavior extends BukkitBlockBehavior implements } @Override - public BlockEntityType blockEntityType() { + public BlockEntityType blockEntityType(ImmutableBlockState state) { return EntityBlockBehavior.blockEntityTypeHelper(BukkitBlockEntityTypes.SIMPLE_PARTICLE); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SimpleStorageBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SimpleStorageBlockBehavior.java index 07b33233f..28271e87e 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SimpleStorageBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SimpleStorageBlockBehavior.java @@ -3,6 +3,7 @@ package net.momirealms.craftengine.bukkit.block.behavior; import net.momirealms.craftengine.bukkit.block.entity.BukkitBlockEntityTypes; import net.momirealms.craftengine.bukkit.block.entity.SimpleStorageBlockEntity; import net.momirealms.craftengine.bukkit.nms.FastNMS; +import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine; import net.momirealms.craftengine.bukkit.plugin.gui.BukkitInventory; import net.momirealms.craftengine.bukkit.util.BlockStateUtils; import net.momirealms.craftengine.bukkit.util.LocationUtils; @@ -24,6 +25,7 @@ import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.world.BlockPos; import net.momirealms.craftengine.core.world.CEWorld; +import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; @@ -71,15 +73,23 @@ public class SimpleStorageBlockBehavior extends BukkitBlockBehavior implements E public InteractionResult useWithoutItem(UseOnContext context, ImmutableBlockState state) { CEWorld world = context.getLevel().storageWorld(); net.momirealms.craftengine.core.entity.player.Player player = context.getPlayer(); - BlockEntity blockEntity = world.getBlockEntityAtIfLoaded(context.getClickedPos()); - if (player != null && blockEntity instanceof SimpleStorageBlockEntity entity) { - Player bukkitPlayer = (Player) player.platformPlayer(); - Optional.ofNullable(entity.inventory()).ifPresent(inventory -> { - entity.onPlayerOpen(player); - bukkitPlayer.openInventory(inventory); - new BukkitInventory(inventory).open(player, AdventureHelper.miniMessage().deserialize(this.containerTitle, PlayerOptionalContext.of(player).tagResolvers())); - }); + if (player == null) { + return InteractionResult.SUCCESS_AND_CANCEL; } + BlockPos blockPos = context.getClickedPos(); + World bukkitWorld = (World) context.getLevel().platformWorld(); + Location location = new Location(bukkitWorld, blockPos.x(), blockPos.y(), blockPos.z()); + Player bukkitPlayer = (Player) player.platformPlayer(); + if (!BukkitCraftEngine.instance().antiGriefProvider().canOpenContainer(bukkitPlayer, location)) { + return InteractionResult.SUCCESS_AND_CANCEL; + } + BlockEntity blockEntity = world.getBlockEntityAtIfLoaded(blockPos); + if (!(blockEntity instanceof SimpleStorageBlockEntity entity) || entity.inventory() == null) { + return InteractionResult.SUCCESS_AND_CANCEL; + } + entity.onPlayerOpen(player); + bukkitPlayer.openInventory(entity.inventory()); + new BukkitInventory(entity.inventory()).open(player, AdventureHelper.miniMessage().deserialize(this.containerTitle, PlayerOptionalContext.of(player).tagResolvers())); return InteractionResult.SUCCESS_AND_CANCEL; } @@ -106,7 +116,7 @@ public class SimpleStorageBlockBehavior extends BukkitBlockBehavior implements E } @Override - public BlockEntityType blockEntityType() { + public BlockEntityType blockEntityType(ImmutableBlockState state) { return EntityBlockBehavior.blockEntityTypeHelper(BukkitBlockEntityTypes.SIMPLE_STORAGE); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/UnsafeCompositeBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/UnsafeCompositeBlockBehavior.java index e2671bc94..be647e450 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/UnsafeCompositeBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/UnsafeCompositeBlockBehavior.java @@ -1,6 +1,5 @@ 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.ImmutableBlockState; import net.momirealms.craftengine.core.block.behavior.AbstractBlockBehavior; @@ -47,7 +46,7 @@ public class UnsafeCompositeBlockBehavior extends BukkitBlockBehavior @SuppressWarnings("unchecked") @Override - public Optional getAs(Class tClass) { + public Optional getAs(Class tClass) { for (AbstractBlockBehavior behavior : this.behaviors) { if (tClass.isInstance(behavior)) { return Optional.of((T) behavior); @@ -74,13 +73,18 @@ public class UnsafeCompositeBlockBehavior extends BukkitBlockBehavior @Override public InteractionResult useOnBlock(UseOnContext context, ImmutableBlockState state) { + boolean hasPass = false; for (AbstractBlockBehavior behavior : this.behaviors) { InteractionResult result = behavior.useOnBlock(context, state); - if (result != InteractionResult.PASS && result != InteractionResult.TRY_EMPTY_HAND) { + if (result == InteractionResult.PASS) { + hasPass = true; + continue; + } + if (result != InteractionResult.TRY_EMPTY_HAND) { return result; } } - return super.useOnBlock(context, state); + return hasPass ? InteractionResult.PASS : super.useOnBlock(context, state); } @Override diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/VerticalCropBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/VerticalCropBlockBehavior.java index c42f10337..8b6352748 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/VerticalCropBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/VerticalCropBlockBehavior.java @@ -51,7 +51,7 @@ public class VerticalCropBlockBehavior extends BukkitBlockBehavior { if (FastNMS.INSTANCE.method$BlockGetter$getBlockState(level, (this.direction ? LocationUtils.above(blockPos) : LocationUtils.below(blockPos))) == MBlocks.AIR$defaultState) { int currentHeight = 1; BlockPos currentPos = LocationUtils.fromBlockPos(blockPos); - while (true) { + for (;;) { Object nextPos = LocationUtils.toBlockPos(currentPos.x(), this.direction ? currentPos.y() - currentHeight : currentPos.y() + currentHeight, currentPos.z()); Object nextState = FastNMS.INSTANCE.method$BlockGetter$getBlockState(level, nextPos); Optional optionalBelowCustomState = BlockStateUtils.getOptionalCustomBlockState(nextState); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/WallTorchParticleBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/WallTorchParticleBlockBehavior.java index 85888fc1e..b88216a98 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/WallTorchParticleBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/WallTorchParticleBlockBehavior.java @@ -47,7 +47,7 @@ public class WallTorchParticleBlockBehavior extends BukkitBlockBehavior implemen } @Override - public BlockEntityType blockEntityType() { + public BlockEntityType blockEntityType(ImmutableBlockState state) { return EntityBlockBehavior.blockEntityTypeHelper(BukkitBlockEntityTypes.WALL_TORCH_PARTICLE); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/BukkitBlockEntityTypes.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/BukkitBlockEntityTypes.java index 7c0456145..204d0679f 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/BukkitBlockEntityTypes.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/BukkitBlockEntityTypes.java @@ -5,7 +5,10 @@ import net.momirealms.craftengine.core.block.entity.BlockEntityTypeKeys; import net.momirealms.craftengine.core.block.entity.BlockEntityTypes; public class BukkitBlockEntityTypes extends BlockEntityTypes { - public static final BlockEntityType SIMPLE_STORAGE = register(BlockEntityTypeKeys.SIMPLE_STORAGE, SimpleStorageBlockEntity::new); - public static final BlockEntityType SIMPLE_PARTICLE = register(BlockEntityTypeKeys.SIMPLE_PARTICLE, SimpleParticleBlockEntity::new); - public static final BlockEntityType WALL_TORCH_PARTICLE = register(BlockEntityTypeKeys.WALL_TORCH_PARTICLE, WallTorchParticleBlockEntity::new); + public static final BlockEntityType SIMPLE_STORAGE = register(BlockEntityTypeKeys.SIMPLE_STORAGE); + public static final BlockEntityType SIMPLE_PARTICLE = register(BlockEntityTypeKeys.SIMPLE_PARTICLE); + public static final BlockEntityType WALL_TORCH_PARTICLE = register(BlockEntityTypeKeys.WALL_TORCH_PARTICLE); + public static final BlockEntityType SEAT = register(BlockEntityTypeKeys.SEAT); + + private BukkitBlockEntityTypes() {} } \ No newline at end of file diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/SeatBlockEntity.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/SeatBlockEntity.java new file mode 100644 index 000000000..360e58f38 --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/SeatBlockEntity.java @@ -0,0 +1,69 @@ +package net.momirealms.craftengine.bukkit.block.entity; + +import net.momirealms.craftengine.bukkit.block.behavior.SeatBlockBehavior; +import net.momirealms.craftengine.bukkit.entity.seat.BukkitSeat; +import net.momirealms.craftengine.core.block.ImmutableBlockState; +import net.momirealms.craftengine.core.block.entity.BlockEntity; +import net.momirealms.craftengine.core.block.properties.Property; +import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.entity.seat.Seat; +import net.momirealms.craftengine.core.entity.seat.SeatConfig; +import net.momirealms.craftengine.core.entity.seat.SeatOwner; +import net.momirealms.craftengine.core.util.HorizontalDirection; +import net.momirealms.craftengine.core.world.BlockPos; +import net.momirealms.craftengine.core.world.WorldPosition; +import net.momirealms.sparrow.nbt.CompoundTag; + +import java.util.Optional; + +public class SeatBlockEntity extends BlockEntity implements SeatOwner { + private final Seat[] seats; + + @SuppressWarnings("unchecked") + public SeatBlockEntity(BlockPos pos, ImmutableBlockState blockState, SeatConfig[] seats) { + super(BukkitBlockEntityTypes.SEAT, pos, blockState); + this.seats = new Seat[seats.length]; + for (int i = 0; i < seats.length; i++) { + this.seats[i] = new BukkitSeat<>(this, seats[i]); + } + } + + @Override + public void saveCustomData(CompoundTag data) { + data.putString("type", "seat_block_entity"); + } + + @Override + public void preRemove() { + for (Seat seat : this.seats) { + seat.destroy(); + } + } + + public boolean spawnSeat(Player player) { + Optional seatBehavior = super.blockState.behavior().getAs(SeatBlockBehavior.class); + if (seatBehavior.isEmpty()) { + return false; + } + float yRot = 0; + Property directionProperty = seatBehavior.get().directionProperty(); + if (directionProperty != null) { + HorizontalDirection direction = super.blockState.get(directionProperty); + if (direction == HorizontalDirection.NORTH) { + yRot = 180; + } else if (direction == HorizontalDirection.EAST) { + yRot = -90; + } else if (direction == HorizontalDirection.WEST) { + yRot = 90; + } + } + for (Seat seat : this.seats) { + if (!seat.isOccupied()) { + if (seat.spawnSeat(player, new WorldPosition(super.world.world(), super.pos.x() + 0.5, super.pos.y(), super.pos.z() + 0.5, 0, 180 - yRot))) { + return true; + } + } + } + return false; + } +} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/SimpleStorageBlockEntity.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/SimpleStorageBlockEntity.java index fcb654c71..c153b554e 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/SimpleStorageBlockEntity.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/SimpleStorageBlockEntity.java @@ -85,7 +85,7 @@ public class SimpleStorageBlockEntity extends BlockEntity { } if (VersionHelper.isOrAbove1_20_5()) { CoreReflections.instance$ItemStack$CODEC.parse(MRegistryOps.SPARROW_NBT, itemTag) - .resultOrPartial((s) -> CraftEngine.instance().logger().severe("Tried to load invalid item: '" + itemTag + "'. " + s)) + .resultOrPartial((error) -> CraftEngine.instance().logger().severe("Tried to load invalid item: '" + itemTag + "'. " + error)) .ifPresent(nmsStack -> storageContents[slot] = FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(nmsStack)); } else { Object nmsTag = MRegistryOps.SPARROW_NBT.convertTo(MRegistryOps.NBT, itemTag); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/renderer/element/BukkitBlockEntityElementConfigs.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/renderer/element/BukkitBlockEntityElementConfigs.java index b8c12c41b..8553a7c56 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/renderer/element/BukkitBlockEntityElementConfigs.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/renderer/element/BukkitBlockEntityElementConfigs.java @@ -9,6 +9,8 @@ public class BukkitBlockEntityElementConfigs extends BlockEntityElementConfigs { register(TEXT_DISPLAY, TextDisplayBlockEntityElementConfig.FACTORY); } + private BukkitBlockEntityElementConfigs() {} + public static void init() { } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/renderer/element/ItemDisplayBlockEntityElementConfig.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/renderer/element/ItemDisplayBlockEntityElementConfig.java index a42838b72..53320d84d 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/renderer/element/ItemDisplayBlockEntityElementConfig.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/renderer/element/ItemDisplayBlockEntityElementConfig.java @@ -34,6 +34,8 @@ public class ItemDisplayBlockEntityElementConfig implements BlockEntityElementCo private final Quaternionf rotation; private final ItemDisplayContext displayContext; private final Billboard billboard; + private final float shadowRadius; + private final float shadowStrength; public ItemDisplayBlockEntityElementConfig(Function> item, Vector3f scale, @@ -43,7 +45,9 @@ public class ItemDisplayBlockEntityElementConfig implements BlockEntityElementCo float yRot, Quaternionf rotation, ItemDisplayContext displayContext, - Billboard billboard) { + Billboard billboard, + float shadowRadius, + float shadowStrength) { this.item = item; this.scale = scale; this.position = position; @@ -53,6 +57,8 @@ public class ItemDisplayBlockEntityElementConfig implements BlockEntityElementCo this.rotation = rotation; this.displayContext = displayContext; this.billboard = billboard; + this.shadowRadius = shadowRadius; + this.shadowStrength = shadowStrength; this.lazyMetadataPacket = player -> { List dataValues = new ArrayList<>(); ItemDisplayEntityData.DisplayedItem.addEntityDataIfNotDefaultValue(item.apply(player).getLiteralObject(), dataValues); @@ -61,6 +67,8 @@ public class ItemDisplayBlockEntityElementConfig implements BlockEntityElementCo ItemDisplayEntityData.BillboardConstraints.addEntityDataIfNotDefaultValue(this.billboard.id(), dataValues); ItemDisplayEntityData.Translation.addEntityDataIfNotDefaultValue(this.translation, dataValues); ItemDisplayEntityData.DisplayType.addEntityDataIfNotDefaultValue(this.displayContext.id(), dataValues); + ItemDisplayEntityData.ShadowRadius.addEntityDataIfNotDefaultValue(this.shadowRadius, dataValues); + ItemDisplayEntityData.ShadowStrength.addEntityDataIfNotDefaultValue(this.shadowStrength, dataValues); return dataValues; }; } @@ -106,6 +114,14 @@ public class ItemDisplayBlockEntityElementConfig implements BlockEntityElementCo return rotation; } + public float shadowRadius() { + return shadowRadius; + } + + public float shadowStrength() { + return shadowStrength; + } + public List metadataValues(Player player) { return this.lazyMetadataPacket.apply(player); } @@ -125,7 +141,9 @@ public class ItemDisplayBlockEntityElementConfig implements BlockEntityElementCo ResourceConfigUtils.getAsFloat(arguments.getOrDefault("yaw", 0f), "yaw"), ResourceConfigUtils.getAsQuaternionf(arguments.getOrDefault("rotation", 0f), "rotation"), ItemDisplayContext.valueOf(arguments.getOrDefault("display-context", "none").toString().toUpperCase(Locale.ROOT)), - Billboard.valueOf(arguments.getOrDefault("billboard", "fixed").toString().toUpperCase(Locale.ROOT)) + Billboard.valueOf(arguments.getOrDefault("billboard", "fixed").toString().toUpperCase(Locale.ROOT)), + ResourceConfigUtils.getAsFloat(arguments.getOrDefault("shadow-radius", 0f), "shadow-radius"), + ResourceConfigUtils.getAsFloat(arguments.getOrDefault("shadow-strength", 1f), "shadow-strength") ); } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/BukkitEntity.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/BukkitEntity.java index 667fbf44c..76dfed5d0 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/BukkitEntity.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/BukkitEntity.java @@ -13,7 +13,7 @@ import java.lang.ref.WeakReference; import java.util.UUID; public class BukkitEntity extends AbstractEntity { - private final WeakReference entity; + protected final WeakReference entity; public BukkitEntity(org.bukkit.entity.Entity entity) { this.entity = new WeakReference<>(entity); @@ -103,4 +103,9 @@ public class BukkitEntity extends AbstractEntity { public void setEntityData(EntityData data, T value, boolean force) { FastNMS.INSTANCE.method$SynchedEntityData$set(entityData(), data.entityDataAccessor(), value, force); } + + @Override + public void remove() { + this.platformEntity().remove(); + } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/BukkitItemEntity.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/BukkitItemEntity.java new file mode 100644 index 000000000..449fc5ebb --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/BukkitItemEntity.java @@ -0,0 +1,17 @@ +package net.momirealms.craftengine.bukkit.entity; + +import net.momirealms.craftengine.bukkit.item.BukkitItemManager; +import net.momirealms.craftengine.core.entity.ItemEntity; +import org.bukkit.entity.Item; + +public class BukkitItemEntity extends BukkitEntity implements ItemEntity { + + public BukkitItemEntity(Item entity) { + super(entity); + } + + @Override + public net.momirealms.craftengine.core.item.Item getItem() { + return BukkitItemManager.instance().wrap(((Item) platformEntity()).getItemStack()); + } +} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/data/AbstractMinecartData.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/data/AbstractMinecartData.java index c0b8a6202..d5b78f05e 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/data/AbstractMinecartData.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/data/AbstractMinecartData.java @@ -7,13 +7,13 @@ import net.momirealms.craftengine.core.util.VersionHelper; import java.util.Optional; public class AbstractMinecartData extends VehicleEntityData { - // 1.20~1.21.2 - public static final AbstractMinecartData DisplayBlock = of(AbstractMinecartData.class, EntityDataValue.Serializers$INT, BlockStateUtils.blockStateToId(MBlocks.AIR$defaultState), !VersionHelper.isOrAbove1_21_3()); - // 1.21.3+ - public static final AbstractMinecartData> CustomDisplayBlock = of(AbstractMinecartData.class, EntityDataValue.Serializers$OPTIONAL_BLOCK_STATE, Optional.empty(), VersionHelper.isOrAbove1_21_3()); + // 1.20~1.21.4 + public static final AbstractMinecartData DisplayBlock = of(AbstractMinecartData.class, EntityDataValue.Serializers$INT, BlockStateUtils.blockStateToId(MBlocks.AIR$defaultState), !VersionHelper.isOrAbove1_21_5()); + // 1.21.5+ + public static final AbstractMinecartData> CustomDisplayBlock = of(AbstractMinecartData.class, EntityDataValue.Serializers$OPTIONAL_BLOCK_STATE, Optional.empty(), VersionHelper.isOrAbove1_21_5()); public static final AbstractMinecartData DisplayOffset = of(AbstractMinecartData.class, EntityDataValue.Serializers$INT, 6, true); - // 1.20~1.21.2 - public static final AbstractMinecartData CustomDisplay = of(AbstractMinecartData.class, EntityDataValue.Serializers$BOOLEAN, false, !VersionHelper.isOrAbove1_21_3()); + // 1.20~1.21.4 + public static final AbstractMinecartData CustomDisplay = of(AbstractMinecartData.class, EntityDataValue.Serializers$BOOLEAN, false, !VersionHelper.isOrAbove1_21_5()); public static AbstractMinecartData of(final Class clazz, final Object serializer, T defaultValue, boolean condition) { if (!condition) return null; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitCustomFurniture.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitCustomFurniture.java index 5f2d30270..dcad38455 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitCustomFurniture.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitCustomFurniture.java @@ -5,7 +5,7 @@ import net.momirealms.craftengine.core.entity.furniture.AnchorType; import net.momirealms.craftengine.core.entity.furniture.CustomFurniture; import net.momirealms.craftengine.core.entity.furniture.FurnitureSettings; import net.momirealms.craftengine.core.loot.LootTable; -import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.event.EventTrigger; import net.momirealms.craftengine.core.plugin.context.function.Function; import net.momirealms.craftengine.core.util.Key; @@ -20,7 +20,7 @@ public class BukkitCustomFurniture extends AbstractCustomFurniture { protected BukkitCustomFurniture(@NotNull Key id, @NotNull FurnitureSettings settings, @NotNull Map placements, - @NotNull Map>> events, + @NotNull Map>> events, @Nullable LootTable lootTable) { super(id, settings, placements, events, lootTable); } @@ -33,7 +33,7 @@ public class BukkitCustomFurniture extends AbstractCustomFurniture { private Key id; private Map placements; private FurnitureSettings settings; - private Map>> events; + private Map>> events; private LootTable lootTable; @Override @@ -66,7 +66,7 @@ public class BukkitCustomFurniture extends AbstractCustomFurniture { } @Override - public Builder events(Map>> events) { + public Builder events(Map>> events) { this.events = events; return this; } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurniture.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurniture.java index c31816e18..e53c8da12 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurniture.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurniture.java @@ -5,20 +5,16 @@ import it.unimi.dsi.fastutil.ints.IntArrayList; import net.momirealms.craftengine.bukkit.entity.BukkitEntity; import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; -import net.momirealms.craftengine.bukkit.util.EntityUtils; -import net.momirealms.craftengine.bukkit.util.LegacyAttributeUtils; import net.momirealms.craftengine.bukkit.util.LocationUtils; import net.momirealms.craftengine.core.entity.furniture.*; +import net.momirealms.craftengine.core.entity.seat.Seat; import net.momirealms.craftengine.core.plugin.CraftEngine; -import net.momirealms.craftengine.core.util.ArrayUtils; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.QuaternionUtils; -import net.momirealms.craftengine.core.util.VersionHelper; import net.momirealms.craftengine.core.world.WorldPosition; -import net.momirealms.craftengine.core.world.collision.AABB; import org.bukkit.Location; -import org.bukkit.attribute.Attribute; -import org.bukkit.entity.*; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; import org.bukkit.persistence.PersistentDataType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -30,7 +26,6 @@ import java.lang.ref.WeakReference; import java.util.*; public class BukkitFurniture implements Furniture { - private final Key id; private final CustomFurniture furniture; private final CustomFurniture.Placement placement; private FurnitureExtraData extraData; @@ -44,13 +39,10 @@ public class BukkitFurniture implements Furniture { // cache private final List fakeEntityIds; private final List entityIds; - private final Map hitBoxes = new Int2ObjectArrayMap<>(); - private final Map aabb = new Int2ObjectArrayMap<>(); + private final Map hitBoxes = new Int2ObjectArrayMap<>(); + private final Map hitBoxParts = new Int2ObjectArrayMap<>(); private final boolean minimized; private final boolean hasExternalModel; - // seats - private final Set occupiedSeats = Collections.synchronizedSet(new HashSet<>()); - private final Vector> seats = new Vector<>(); // cached spawn packet private Object cachedSpawnPacket; private Object cachedMinimizedSpawnPacket; @@ -58,37 +50,40 @@ public class BukkitFurniture implements Furniture { public BukkitFurniture(Entity baseEntity, CustomFurniture furniture, FurnitureExtraData extraData) { - this.id = furniture.id(); this.extraData = extraData; this.baseEntityId = baseEntity.getEntityId(); - this.location = baseEntity.getLocation(); this.baseEntity = new WeakReference<>(baseEntity); this.furniture = furniture; this.minimized = furniture.settings().minimized(); + this.placement = furniture.getValidPlacement(extraData.anchorType().orElseGet(furniture::getAnyAnchorType)); + List fakeEntityIds = new IntArrayList(); List mainEntityIds = new IntArrayList(); mainEntityIds.add(this.baseEntityId); - this.placement = furniture.getValidPlacement(extraData.anchorType().orElseGet(furniture::getAnyAnchorType)); - // bind external furniture + // 绑定外部模型 Optional optionalExternal = placement.externalModel(); if (optionalExternal.isPresent()) { try { optionalExternal.get().bindModel(new BukkitEntity(baseEntity)); } catch (Exception e) { - CraftEngine.instance().logger().warn("Failed to load external model for furniture " + id, e); + CraftEngine.instance().logger().warn("Failed to load external model for furniture " + id(), e); } this.hasExternalModel = true; } else { this.hasExternalModel = false; } + Quaternionf conjugated = QuaternionUtils.toQuaternionf(0, Math.toRadians(180 - this.location.getYaw()), 0).conjugate(); List packets = new ArrayList<>(); List minimizedPackets = new ArrayList<>(); - List colliders = new ArrayList<>(); + List colliders = new ArrayList<>(4); WorldPosition position = position(); + + + // 初始化家具的元素 for (FurnitureElement element : placement.elements()) { int entityId = CoreReflections.instance$Entity$ENTITY_COUNTER.incrementAndGet(); fakeEntityIds.add(entityId); @@ -97,28 +92,41 @@ public class BukkitFurniture implements Furniture { if (this.minimized) minimizedPackets.add(packet); }); } - for (HitBox hitBox : placement.hitBoxes()) { - int[] ids = hitBox.acquireEntityIds(CoreReflections.instance$Entity$ENTITY_COUNTER::incrementAndGet); + + // 初始化碰撞箱 + for (HitBoxConfig hitBoxConfig : this.placement.hitBoxConfigs()) { + int[] ids = hitBoxConfig.acquireEntityIds(CoreReflections.instance$Entity$ENTITY_COUNTER::incrementAndGet); + List aabbs = new ArrayList<>(); + + hitBoxConfig.initPacketsAndColliders(ids, position, conjugated, (packet, canBeMinimized) -> { + packets.add(packet); + if (this.minimized && !canBeMinimized) { + minimizedPackets.add(packet); + } + }, colliders::add, part -> { + this.hitBoxParts.put(part.entityId(), part); + aabbs.add(part); + }); + + BukkitHitBox hitBox = new BukkitHitBox(this, hitBoxConfig, aabbs.toArray(new HitBoxPart[0])); for (int entityId : ids) { fakeEntityIds.add(entityId); mainEntityIds.add(entityId); this.hitBoxes.put(entityId, hitBox); } - hitBox.initPacketsAndColliders(ids, position, conjugated, (packet, canBeMinimized) -> { - packets.add(packet); - if (this.minimized && !canBeMinimized) { - minimizedPackets.add(packet); - } - }, colliders::add, this.aabb::put); } + + // 初始化缓存的家具包 try { this.cachedSpawnPacket = FastNMS.INSTANCE.constructor$ClientboundBundlePacket(packets); if (this.minimized) { this.cachedMinimizedSpawnPacket = FastNMS.INSTANCE.constructor$ClientboundBundlePacket(minimizedPackets); } } catch (Exception e) { - CraftEngine.instance().logger().warn("Failed to init spawn packets for furniture " + id, e); + CraftEngine.instance().logger().warn("Failed to init spawn packets for furniture " + id(), e); } + + this.fakeEntityIds = fakeEntityIds; this.entityIds = mainEntityIds; this.colliderEntities = colliders.toArray(new Collider[0]); @@ -186,57 +194,25 @@ public class BukkitFurniture implements Furniture { return; } this.baseEntity().remove(); + this.destroyColliders(); + this.destroySeats(); + } + + @Override + public void destroyColliders() { for (Collider entity : this.colliderEntities) { if (entity != null) entity.destroy(); } - for (WeakReference r : this.seats) { - Entity entity = r.get(); - if (entity == null) continue; - for (Entity passenger : entity.getPassengers()) { - entity.removePassenger(passenger); - } - entity.remove(); - } - this.seats.clear(); } @Override public void destroySeats() { - for (WeakReference entity : this.seats) { - Entity e = entity.get(); - if (e != null) { - e.remove(); + for (HitBox hitBox : this.hitBoxes.values()) { + for (Seat seat : hitBox.seats()) { + seat.destroy(); } } - this.seats.clear(); - } - - @Override - public Optional findFirstAvailableSeat(int targetEntityId) { - HitBox hitbox = hitBoxes.get(targetEntityId); - if (hitbox == null) return Optional.empty(); - - Seat[] seats = hitbox.seats(); - if (ArrayUtils.isEmpty(seats)) return Optional.empty(); - - return Arrays.stream(seats) - .filter(s -> !occupiedSeats.contains(s.offset())) - .findFirst(); - } - - @Override - public boolean removeOccupiedSeat(Vector3f seat) { - return this.occupiedSeats.remove(seat); - } - - @Override - public boolean tryOccupySeat(Seat seat) { - if (this.occupiedSeats.contains(seat.offset())) { - return false; - } - this.occupiedSeats.add(seat.offset()); - return true; } @Override @@ -263,14 +239,14 @@ public class BukkitFurniture implements Furniture { return this.colliderEntities; } - @Nullable - public HitBox hitBoxByEntityId(int id) { + @Override + public @Nullable HitBox hitBoxByEntityId(int id) { return this.hitBoxes.get(id); } - @Nullable - public AABB aabbByEntityId(int id) { - return this.aabb.get(id); + @Override + public @Nullable HitBoxPart hitBoxPartByEntityId(int id) { + return this.hitBoxParts.get(id); } @Override @@ -280,7 +256,7 @@ public class BukkitFurniture implements Furniture { @Override public @NotNull Key id() { - return this.id; + return this.furniture.id(); } @Override @@ -293,11 +269,6 @@ public class BukkitFurniture implements Furniture { return hasExternalModel; } - @Override - public void spawnSeatEntityForPlayer(net.momirealms.craftengine.core.entity.player.Player player, Seat seat) { - spawnSeatEntityForPlayer((Player) player.platformPlayer(), seat); - } - @Override public FurnitureExtraData extraData() { return this.extraData; @@ -317,49 +288,4 @@ public class BukkitFurniture implements Furniture { CraftEngine.instance().logger().warn("Failed to save furniture data.", e); } } - - private void spawnSeatEntityForPlayer(org.bukkit.entity.Player player, Seat seat) { - Location location = this.calculateSeatLocation(seat); - Entity seatEntity = seat.limitPlayerRotation() ? - EntityUtils.spawnEntity(player.getWorld(), VersionHelper.isOrAbove1_20_2() ? location.subtract(0,0.9875,0) : location.subtract(0,0.990625,0), EntityType.ARMOR_STAND, entity -> { - ArmorStand armorStand = (ArmorStand) entity; - if (VersionHelper.isOrAbove1_21_3()) { - Objects.requireNonNull(armorStand.getAttribute(Attribute.MAX_HEALTH)).setBaseValue(0.01); - } else { - LegacyAttributeUtils.setMaxHealth(armorStand); - } - armorStand.setSmall(true); - armorStand.setInvisible(true); - armorStand.setSilent(true); - armorStand.setInvulnerable(true); - armorStand.setArms(false); - armorStand.setCanTick(false); - armorStand.setAI(false); - armorStand.setGravity(false); - armorStand.setPersistent(false); - armorStand.getPersistentDataContainer().set(BukkitFurnitureManager.FURNITURE_SEAT_BASE_ENTITY_KEY, PersistentDataType.INTEGER, this.baseEntityId()); - armorStand.getPersistentDataContainer().set(BukkitFurnitureManager.FURNITURE_SEAT_VECTOR_3F_KEY, PersistentDataType.STRING, seat.offset().x + ", " + seat.offset().y + ", " + seat.offset().z); - }) : - EntityUtils.spawnEntity(player.getWorld(), VersionHelper.isOrAbove1_20_2() ? location : location.subtract(0,0.25,0), EntityType.ITEM_DISPLAY, entity -> { - ItemDisplay itemDisplay = (ItemDisplay) entity; - itemDisplay.setPersistent(false); - itemDisplay.getPersistentDataContainer().set(BukkitFurnitureManager.FURNITURE_SEAT_BASE_ENTITY_KEY, PersistentDataType.INTEGER, this.baseEntityId()); - itemDisplay.getPersistentDataContainer().set(BukkitFurnitureManager.FURNITURE_SEAT_VECTOR_3F_KEY, PersistentDataType.STRING, seat.offset().x + ", " + seat.offset().y + ", " + seat.offset().z); - }); - this.seats.add(new WeakReference<>(seatEntity)); - if (!seatEntity.addPassenger(player)) { - seatEntity.remove(); - this.removeOccupiedSeat(seat.offset()); - } - } - - private Location calculateSeatLocation(Seat seat) { - Vector3f offset = QuaternionUtils.toQuaternionf(0, Math.toRadians(180 - this.location.getYaw()), 0).conjugate().transform(new Vector3f(seat.offset())); - double yaw = seat.yaw() + this.location.getYaw(); - if (yaw < -180) yaw += 360; - Location newLocation = this.location.clone(); - newLocation.setYaw((float) yaw); - newLocation.add(offset.x, offset.y + 0.6, -offset.z); - return newLocation; - } } \ No newline at end of file diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurnitureElement.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurnitureElement.java index b82f164f0..83ca3fa4d 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurnitureElement.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurnitureElement.java @@ -38,14 +38,18 @@ public class BukkitFurnitureElement extends AbstractFurnitureElement { Vector3f translation, Vector3f position, Quaternionf rotation, + float shadowRadius, + float shadowStrength, boolean applyDyedColor) { - super(item, billboard, transform, scale, translation, position, rotation, applyDyedColor); + super(item, billboard, transform, scale, translation, position, rotation, shadowRadius, shadowStrength, applyDyedColor); this.commonValues = new ArrayList<>(); ItemDisplayEntityData.Scale.addEntityDataIfNotDefaultValue(scale(), this.commonValues); ItemDisplayEntityData.RotationLeft.addEntityDataIfNotDefaultValue(rotation(), this.commonValues); ItemDisplayEntityData.BillboardConstraints.addEntityDataIfNotDefaultValue(billboard().id(), this.commonValues); ItemDisplayEntityData.Translation.addEntityDataIfNotDefaultValue(translation(), this.commonValues); ItemDisplayEntityData.DisplayType.addEntityDataIfNotDefaultValue(transform().id(), this.commonValues); + ItemDisplayEntityData.ShadowRadius.addEntityDataIfNotDefaultValue(shadowRadius, this.commonValues); + ItemDisplayEntityData.ShadowStrength.addEntityDataIfNotDefaultValue(shadowStrength, this.commonValues); } @Override @@ -53,7 +57,7 @@ public class BukkitFurnitureElement extends AbstractFurnitureElement { WorldPosition position = furniture.position(); Vector3f offset = conjugated.transform(new Vector3f(position())); packets.accept(FastNMS.INSTANCE.constructor$ClientboundAddEntityPacket( - entityId, UUID.randomUUID(), position.x() + offset.x, position.y() + offset.y, position.z() - offset.z, 0, position.xRot(), + entityId, UUID.randomUUID(), position.x() + offset.x, position.y() + offset.y, position.z() - offset.z, 0, position.yRot(), MEntityTypes.ITEM_DISPLAY, 0, CoreReflections.instance$Vec3$Zero, 0 )); if (applyDyedColor()) { @@ -102,6 +106,8 @@ public class BukkitFurnitureElement extends AbstractFurnitureElement { private Vector3f translation; private Vector3f position; private Quaternionf rotation; + private float shadowRadius; + private float shadowStrength; @Override public Builder applyDyedColor(boolean applyDyedColor) { @@ -151,9 +157,21 @@ public class BukkitFurnitureElement extends AbstractFurnitureElement { return this; } + @Override + public Builder shadowStrength(float shadowStrength) { + this.shadowStrength = shadowStrength; + return this; + } + + @Override + public Builder shadowRadius(float shadowRadius) { + this.shadowRadius = shadowRadius; + return this; + } + @Override public FurnitureElement build() { - return new BukkitFurnitureElement(item, billboard, transform, scale, translation, position, rotation, applyDyedColor); + return new BukkitFurnitureElement(item, billboard, transform, scale, translation, position, rotation, shadowRadius, shadowStrength, applyDyedColor); } } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurnitureManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurnitureManager.java index b7e58f8be..f946e4888 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurnitureManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurnitureManager.java @@ -1,7 +1,7 @@ package net.momirealms.craftengine.bukkit.entity.furniture; import net.momirealms.craftengine.bukkit.api.BukkitAdaptors; -import net.momirealms.craftengine.bukkit.entity.furniture.hitbox.InteractionHitBox; +import net.momirealms.craftengine.bukkit.entity.furniture.hitbox.InteractionHitBoxConfig; import net.momirealms.craftengine.bukkit.nms.CollisionEntity; import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine; @@ -15,17 +15,13 @@ import net.momirealms.craftengine.core.entity.furniture.*; import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.sound.SoundData; import net.momirealms.craftengine.core.util.Key; -import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.util.VersionHelper; import net.momirealms.craftengine.core.world.WorldPosition; import org.bukkit.*; import org.bukkit.entity.*; import org.bukkit.event.HandlerList; -import org.bukkit.event.Listener; import org.bukkit.persistence.PersistentDataType; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.joml.Vector3f; import java.io.IOException; import java.util.List; @@ -37,8 +33,6 @@ import java.util.function.BiConsumer; public class BukkitFurnitureManager extends AbstractFurnitureManager { public static final NamespacedKey FURNITURE_KEY = KeyUtils.toNamespacedKey(FurnitureManager.FURNITURE_KEY); public static final NamespacedKey FURNITURE_EXTRA_DATA_KEY = KeyUtils.toNamespacedKey(FurnitureManager.FURNITURE_EXTRA_DATA_KEY); - public static final NamespacedKey FURNITURE_SEAT_BASE_ENTITY_KEY = KeyUtils.toNamespacedKey(FurnitureManager.FURNITURE_SEAT_BASE_ENTITY_KEY); - public static final NamespacedKey FURNITURE_SEAT_VECTOR_3F_KEY = KeyUtils.toNamespacedKey(FurnitureManager.FURNITURE_SEAT_VECTOR_3F_KEY); public static final NamespacedKey FURNITURE_COLLISION = KeyUtils.toNamespacedKey(FurnitureManager.FURNITURE_COLLISION); public static Class COLLISION_ENTITY_CLASS = Interaction.class; public static Object NMS_COLLISION_ENTITY_TYPE = MEntityTypes.INTERACTION; @@ -48,7 +42,6 @@ public class BukkitFurnitureManager extends AbstractFurnitureManager { private final Map furnitureByRealEntityId = new ConcurrentHashMap<>(256, 0.5f); private final Map furnitureByEntityId = new ConcurrentHashMap<>(512, 0.5f); // Event listeners - private final Listener dismountListener; private final FurnitureEventListener furnitureEventListener; public static BukkitFurnitureManager instance() { @@ -60,7 +53,6 @@ public class BukkitFurnitureManager extends AbstractFurnitureManager { instance = this; this.plugin = plugin; this.furnitureEventListener = new FurnitureEventListener(this); - this.dismountListener = VersionHelper.isOrAbove1_20_3() ? new DismountListener1_20_3(this) : new DismountListener1_20(this::handleDismount); } @Override @@ -95,7 +87,6 @@ public class BukkitFurnitureManager extends AbstractFurnitureManager { COLLISION_ENTITY_CLASS = Config.colliderType() == ColliderType.INTERACTION ? Interaction.class : Boat.class; NMS_COLLISION_ENTITY_TYPE = Config.colliderType() == ColliderType.INTERACTION ? MEntityTypes.INTERACTION : MEntityTypes.OAK_BOAT; COLLISION_ENTITY_TYPE = Config.colliderType(); - Bukkit.getPluginManager().registerEvents(this.dismountListener, this.plugin.javaPlugin()); Bukkit.getPluginManager().registerEvents(this.furnitureEventListener, this.plugin.javaPlugin()); if (VersionHelper.isFolia()) { BiConsumer taskExecutor = (entity, runnable) -> entity.getScheduler().run(this.plugin.javaPlugin(), (t) -> runnable.run(), () -> {}); @@ -129,15 +120,8 @@ public class BukkitFurnitureManager extends AbstractFurnitureManager { @Override public void disable() { - HandlerList.unregisterAll(this.dismountListener); HandlerList.unregisterAll(this.furnitureEventListener); unload(); - for (Player player : Bukkit.getOnlinePlayers()) { - Entity vehicle = player.getVehicle(); - if (vehicle != null) { - tryLeavingSeat(player, vehicle); - } - } } @Override @@ -327,84 +311,7 @@ public class BukkitFurnitureManager extends AbstractFurnitureManager { } @Override - protected HitBox defaultHitBox() { - return InteractionHitBox.DEFAULT; - } - - protected void handleDismount(Player player, Entity entity) { - if (!isSeatCarrierType(entity)) return; - Location location = entity.getLocation(); - plugin.scheduler().sync().runDelayed(() -> tryLeavingSeat(player, entity), player.getWorld(), location.getBlockX() >> 4, location.getBlockZ() >> 4); - } - - @SuppressWarnings("DuplicatedCode") - protected void tryLeavingSeat(@NotNull Player player, @NotNull Entity vehicle) { - Integer baseFurniture = vehicle.getPersistentDataContainer().get(FURNITURE_SEAT_BASE_ENTITY_KEY, PersistentDataType.INTEGER); - if (baseFurniture == null) return; - vehicle.remove(); - BukkitFurniture furniture = loadedFurnitureByRealEntityId(baseFurniture); - if (furniture == null) { - return; - } - String vector3f = vehicle.getPersistentDataContainer().get(BukkitFurnitureManager.FURNITURE_SEAT_VECTOR_3F_KEY, PersistentDataType.STRING); - if (vector3f == null) { - plugin.logger().warn("Failed to get vector3f for player " + player.getName() + "'s seat"); - return; - } - Vector3f seatPos = ResourceConfigUtils.getAsVector3f(vector3f, "seat"); - furniture.removeOccupiedSeat(seatPos); - - if (player.getVehicle() != null) return; - Location vehicleLocation = vehicle.getLocation(); - Location originalLocation = vehicleLocation.clone(); - originalLocation.setY(furniture.location().getY()); - Location targetLocation = originalLocation.clone().add(vehicleLocation.getDirection().multiply(1.1)); - if (!isSafeLocation(targetLocation)) { - targetLocation = findSafeLocationNearby(originalLocation); - if (targetLocation == null) return; - } - targetLocation.setYaw(player.getLocation().getYaw()); - targetLocation.setPitch(player.getLocation().getPitch()); - if (VersionHelper.isFolia()) { - player.teleportAsync(targetLocation); - } else { - player.teleport(targetLocation); - } - } - - protected boolean isSeatCarrierType(Entity entity) { - return (entity instanceof ArmorStand || entity instanceof ItemDisplay); - } - - @SuppressWarnings("DuplicatedCode") - private boolean isSafeLocation(Location location) { - World world = location.getWorld(); - if (world == null) return false; - int x = location.getBlockX(); - int y = location.getBlockY(); - int z = location.getBlockZ(); - if (!world.getBlockAt(x, y - 1, z).getType().isSolid()) return false; - if (!world.getBlockAt(x, y, z).isPassable()) return false; - return world.getBlockAt(x, y + 1, z).isPassable(); - } - - @SuppressWarnings("DuplicatedCode") - @Nullable - private Location findSafeLocationNearby(Location center) { - World world = center.getWorld(); - if (world == null) return null; - int centerX = center.getBlockX(); - int centerY = center.getBlockY(); - int centerZ = center.getBlockZ(); - for (int dx = -1; dx <= 1; dx++) { - for (int dz = -1; dz <= 1; dz++) { - if (dx == 0 && dz == 0) continue; - int x = centerX + dx; - int z = centerZ + dz; - Location nearbyLocation = new Location(world, x + 0.5, centerY, z + 0.5); - if (isSafeLocation(nearbyLocation)) return nearbyLocation; - } - } - return null; + protected HitBoxConfig defaultHitBox() { + return InteractionHitBoxConfig.DEFAULT; } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitHitBox.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitHitBox.java new file mode 100644 index 000000000..8f725a94b --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitHitBox.java @@ -0,0 +1,70 @@ +package net.momirealms.craftengine.bukkit.entity.furniture; + +import net.momirealms.craftengine.bukkit.entity.seat.BukkitSeat; +import net.momirealms.craftengine.core.entity.furniture.Furniture; +import net.momirealms.craftengine.core.entity.furniture.HitBox; +import net.momirealms.craftengine.core.entity.furniture.HitBoxConfig; +import net.momirealms.craftengine.core.entity.furniture.HitBoxPart; +import net.momirealms.craftengine.core.entity.seat.Seat; +import net.momirealms.craftengine.core.entity.seat.SeatConfig; +import net.momirealms.craftengine.core.world.EntityHitResult; +import net.momirealms.craftengine.core.world.Vec3d; +import net.momirealms.sparrow.nbt.CompoundTag; + +import java.util.Optional; + +public class BukkitHitBox implements HitBox { + private final Furniture furniture; + private final HitBoxConfig config; + private final HitBoxPart[] parts; + private final Seat[] seats; + + public BukkitHitBox(Furniture furniture, HitBoxConfig config, HitBoxPart[] parts) { + this.parts = parts; + this.config = config; + this.furniture = furniture; + this.seats = createSeats(config); + } + + @SuppressWarnings("unchecked") + private Seat[] createSeats(HitBoxConfig config) { + SeatConfig[] seatConfigs = config.seats(); + Seat[] seats = new Seat[seatConfigs.length]; + for (int i = 0; i < seatConfigs.length; i++) { + seats[i] = new BukkitSeat<>(this, seatConfigs[i]); + } + return seats; + } + + @Override + public HitBoxPart[] parts() { + return this.parts; + } + + @Override + public HitBoxConfig config() { + return this.config; + } + + @Override + public Seat[] seats() { + return this.seats; + } + + @Override + public Optional clip(Vec3d min, Vec3d max) { + for (HitBoxPart hbe : this.parts) { + Optional result = hbe.aabb().clip(min, max); + if (result.isPresent()) { + return result; + } + } + return Optional.empty(); + } + + @Override + public void saveCustomData(CompoundTag data) { + data.putString("type", "furniture"); + data.putInt("entity_id", this.furniture.baseEntityId()); + } +} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/DismountListener1_20_3.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/DismountListener1_20_3.java index a35b48ff7..ce5db66cd 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/DismountListener1_20_3.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/DismountListener1_20_3.java @@ -1,21 +1,24 @@ package net.momirealms.craftengine.bukkit.entity.furniture; +import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDismountEvent; -public class DismountListener1_20_3 implements Listener { - private final BukkitFurnitureManager manager; +import java.util.function.BiConsumer; - public DismountListener1_20_3(final BukkitFurnitureManager manager) { - this.manager = manager; +public class DismountListener1_20_3 implements Listener { + private final BiConsumer consumer; + + public DismountListener1_20_3(final BiConsumer consumer) { + this.consumer = consumer; } @EventHandler(ignoreCancelled = true) public void onDismount(EntityDismountEvent event) { if (event.getEntity() instanceof Player player) { - this.manager.handleDismount(player, event.getDismounted()); + this.consumer.accept(player, event.getDismounted()); } } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/FurnitureEventListener.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/FurnitureEventListener.java index f9c526233..ce4864b90 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/FurnitureEventListener.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/FurnitureEventListener.java @@ -2,21 +2,15 @@ package net.momirealms.craftengine.bukkit.entity.furniture; import com.destroystokyo.paper.event.entity.EntityAddToWorldEvent; import com.destroystokyo.paper.event.entity.EntityRemoveFromWorldEvent; -import org.bukkit.entity.ArmorStand; import org.bukkit.entity.Entity; import org.bukkit.entity.ItemDisplay; -import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import org.bukkit.event.entity.PlayerDeathEvent; -import org.bukkit.event.player.PlayerInteractAtEntityEvent; -import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.world.ChunkUnloadEvent; import org.bukkit.event.world.EntitiesLoadEvent; import org.bukkit.event.world.WorldLoadEvent; import org.bukkit.event.world.WorldUnloadEvent; -import org.bukkit.persistence.PersistentDataType; import java.util.List; @@ -100,35 +94,4 @@ public class FurnitureEventListener implements Listener { this.manager.handleCollisionEntityUnload(entity); } } - - @EventHandler(ignoreCancelled = true) - public void onPlayerQuit(PlayerQuitEvent event) { - Player player = event.getPlayer(); - Entity entity = player.getVehicle(); - if (entity == null) return; - if (this.manager.isSeatCarrierType(entity)) { - this.manager.tryLeavingSeat(player, entity); - } - } - - @EventHandler(ignoreCancelled = true) - public void onPlayerDeath(PlayerDeathEvent event) { - Player player = event.getPlayer(); - Entity entity = player.getVehicle(); - if (entity == null) return; - if (this.manager.isSeatCarrierType(entity)) { - this.manager.tryLeavingSeat(player, entity); - } - } - - // do not allow players to put item on seats - @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) - public void onInteractArmorStand(PlayerInteractAtEntityEvent event) { - Entity clicked = event.getRightClicked(); - if (clicked instanceof ArmorStand armorStand) { - Integer baseFurniture = armorStand.getPersistentDataContainer().get(BukkitFurnitureManager.FURNITURE_SEAT_BASE_ENTITY_KEY, PersistentDataType.INTEGER); - if (baseFurniture == null) return; - event.setCancelled(true); - } - } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/BukkitHitBoxTypes.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/BukkitHitBoxTypes.java index dda752638..4d92bd7c8 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/BukkitHitBoxTypes.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/BukkitHitBoxTypes.java @@ -7,9 +7,9 @@ public class BukkitHitBoxTypes extends HitBoxTypes { public static void init() {} static { - register(INTERACTION, InteractionHitBox.FACTORY); - register(SHULKER, ShulkerHitBox.FACTORY); - register(HAPPY_GHAST, HappyGhastHitBox.FACTORY); - register(CUSTOM, CustomHitBox.FACTORY); + register(INTERACTION, InteractionHitBoxConfig.FACTORY); + register(SHULKER, ShulkerHitBoxConfig.FACTORY); + register(HAPPY_GHAST, HappyGhastHitBoxConfig.FACTORY); + register(CUSTOM, CustomHitBoxConfig.FACTORY); } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/CustomHitBox.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/CustomHitBoxConfig.java similarity index 86% rename from bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/CustomHitBox.java rename to bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/CustomHitBoxConfig.java index f5b3d87c1..fa8e974a8 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/CustomHitBox.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/CustomHitBoxConfig.java @@ -6,6 +6,7 @@ import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflect import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MAttributeHolders; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.NetworkReflections; import net.momirealms.craftengine.core.entity.furniture.*; +import net.momirealms.craftengine.core.entity.seat.SeatConfig; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; @@ -23,13 +24,13 @@ import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.function.Supplier; -public class CustomHitBox extends AbstractHitBox { +public class CustomHitBoxConfig extends AbstractHitBoxConfig { public static final Factory FACTORY = new Factory(); private final float scale; private final EntityType entityType; private final List cachedValues = new ArrayList<>(); - public CustomHitBox(Seat[] seats, Vector3f position, EntityType type, float scale, boolean blocksBuilding, boolean canBeHitByProjectile) { + public CustomHitBoxConfig(SeatConfig[] seats, Vector3f position, EntityType type, float scale, boolean blocksBuilding, boolean canBeHitByProjectile) { super(seats, position, false, blocksBuilding, canBeHitByProjectile); this.scale = scale; this.entityType = type; @@ -39,11 +40,11 @@ public class CustomHitBox extends AbstractHitBox { } public EntityType entityType() { - return entityType; + return this.entityType; } public float scale() { - return scale; + return this.scale; } @Override @@ -52,11 +53,11 @@ public class CustomHitBox extends AbstractHitBox { } @Override - public void initPacketsAndColliders(int[] entityId, WorldPosition position, Quaternionf conjugated, BiConsumer packets, Consumer collider, BiConsumer aabb) { + public void initPacketsAndColliders(int[] entityId, WorldPosition position, Quaternionf conjugated, BiConsumer packets, Consumer collider, Consumer aabb) { Vector3f offset = conjugated.transform(new Vector3f(position())); try { packets.accept(FastNMS.INSTANCE.constructor$ClientboundAddEntityPacket( - entityId[0], UUID.randomUUID(), position.x() + offset.x, position.y() + offset.y, position.z() - offset.z, 0, position.xRot(), + entityId[0], UUID.randomUUID(), position.x() + offset.x, position.y() + offset.y, position.z() - offset.z, 0, position.yRot(), FastNMS.INSTANCE.method$CraftEntityType$toNMSEntityType(this.entityType), 0, CoreReflections.instance$Vec3$Zero, 0 ), true); packets.accept(FastNMS.INSTANCE.constructor$ClientboundSetEntityDataPacket(entityId[0], List.copyOf(this.cachedValues)), true); @@ -79,10 +80,10 @@ public class CustomHitBox extends AbstractHitBox { return new int[] {entityIdSupplier.get()}; } - public static class Factory implements HitBoxFactory { + public static class Factory implements HitBoxConfigFactory { @Override - public HitBox create(Map arguments) { + public HitBoxConfig create(Map arguments) { Vector3f position = ResourceConfigUtils.getAsVector3f(arguments.getOrDefault("position", "0"), "position"); float scale = ResourceConfigUtils.getAsFloat(arguments.getOrDefault("scale", 1), "scale"); String type = (String) arguments.getOrDefault("entity-type", "slime"); @@ -92,7 +93,7 @@ public class CustomHitBox extends AbstractHitBox { } boolean canBeHitByProjectile = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("can-be-hit-by-projectile", false), "can-be-hit-by-projectile"); boolean blocksBuilding = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("blocks-building", true), "blocks-building"); - return new CustomHitBox(HitBoxFactory.getSeats(arguments), position, entityType, scale, blocksBuilding, canBeHitByProjectile); + return new CustomHitBoxConfig(SeatConfig.fromObj(arguments.get("seats")), position, entityType, scale, blocksBuilding, canBeHitByProjectile); } } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/HappyGhastHitBox.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/HappyGhastHitBoxConfig.java similarity index 82% rename from bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/HappyGhastHitBox.java rename to bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/HappyGhastHitBoxConfig.java index 91754fd9b..5663b9f87 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/HappyGhastHitBox.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/HappyGhastHitBoxConfig.java @@ -8,9 +8,11 @@ import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MAttributeH import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MEntityTypes; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.NetworkReflections; import net.momirealms.craftengine.core.entity.furniture.*; +import net.momirealms.craftengine.core.entity.seat.SeatConfig; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.util.VersionHelper; +import net.momirealms.craftengine.core.world.Vec3d; import net.momirealms.craftengine.core.world.World; import net.momirealms.craftengine.core.world.WorldPosition; import net.momirealms.craftengine.core.world.collision.AABB; @@ -22,13 +24,13 @@ import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.function.Supplier; -public class HappyGhastHitBox extends AbstractHitBox { +public class HappyGhastHitBoxConfig extends AbstractHitBoxConfig { public static final Factory FACTORY = new Factory(); private final double scale; private final boolean hardCollision; private final List cachedValues = new ArrayList<>(); - public HappyGhastHitBox(Seat[] seats, Vector3f position, double scale, boolean canUseOn, boolean blocksBuilding, boolean canBeHitByProjectile, boolean hardCollision) { + public HappyGhastHitBoxConfig(SeatConfig[] seats, Vector3f position, double scale, boolean canUseOn, boolean blocksBuilding, boolean canBeHitByProjectile, boolean hardCollision) { super(seats, position, canUseOn, blocksBuilding, canBeHitByProjectile); this.scale = scale; this.hardCollision = hardCollision; @@ -43,21 +45,26 @@ public class HappyGhastHitBox extends AbstractHitBox { } public double scale() { - return scale; + return this.scale; } public boolean hardCollision() { - return hardCollision; + return this.hardCollision; } @Override - public void initPacketsAndColliders(int[] entityIds, WorldPosition position, Quaternionf conjugated, BiConsumer packets, Consumer collider, BiConsumer aabb) { + public void initPacketsAndColliders(int[] entityIds, + WorldPosition position, + Quaternionf conjugated, + BiConsumer packets, + Consumer collider, + Consumer aabb) { Vector3f offset = conjugated.transform(new Vector3f(position())); try { double x = position.x(); double y = position.y(); double z = position.z(); - float yaw = position.xRot(); + float yaw = position.yRot(); packets.accept(FastNMS.INSTANCE.constructor$ClientboundAddEntityPacket( entityIds[0], UUID.randomUUID(), x + offset.x, y + offset.y, z - offset.z, 0, yaw, MEntityTypes.HAPPY_GHAST, 0, CoreReflections.instance$Vec3$Zero, 0 @@ -76,11 +83,11 @@ public class HappyGhastHitBox extends AbstractHitBox { } } - public Collider createCollider(World world, Vector3f offset, double x, double y, double z, int entityId, BiConsumer aabb) { + public Collider createCollider(World world, Vector3f offset, double x, double y, double z, int entityId, Consumer aabb) { AABB ceAABB = createAABB(offset, x, y, z); Object level = world.serverWorld(); Object nmsAABB = FastNMS.INSTANCE.constructor$AABB(ceAABB.minX, ceAABB.minY, ceAABB.minZ, ceAABB.maxX, ceAABB.maxY, ceAABB.maxZ); - aabb.accept(entityId, ceAABB); + aabb.accept(new HitBoxPart(entityId, ceAABB, new Vec3d(x, y, z))); return new BukkitCollider(level, nmsAABB, x, y, z, this.canBeHitByProjectile(), true, this.blocksBuilding()); } @@ -109,10 +116,10 @@ public class HappyGhastHitBox extends AbstractHitBox { return new int[] {entityIdSupplier.get()}; } - public static class Factory implements HitBoxFactory { + public static class Factory implements HitBoxConfigFactory { @Override - public HitBox create(Map arguments) { + public HitBoxConfig create(Map arguments) { if (!VersionHelper.isOrAbove1_21_6()) { throw new UnsupportedOperationException("HappyGhastHitBox is only supported on 1.21.6+"); } @@ -121,8 +128,8 @@ public class HappyGhastHitBox extends AbstractHitBox { boolean canUseOn = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("can-use-item-on", true), "can-use-item-on"); boolean canBeHitByProjectile = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("can-be-hit-by-projectile", true), "can-be-hit-by-projectile"); boolean blocksBuilding = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("blocks-building", true), "blocks-building"); - return new HappyGhastHitBox( - HitBoxFactory.getSeats(arguments), + return new HappyGhastHitBoxConfig( + SeatConfig.fromObj(arguments.get("seats")), ResourceConfigUtils.getAsVector3f(arguments.getOrDefault("position", "0"), "position"), scale, canUseOn, blocksBuilding, canBeHitByProjectile, hardCollision ); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/InteractionHitBox.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/InteractionHitBoxConfig.java similarity index 73% rename from bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/InteractionHitBox.java rename to bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/InteractionHitBoxConfig.java index f8ae1852e..60bec26d4 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/InteractionHitBox.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/InteractionHitBoxConfig.java @@ -6,6 +6,7 @@ import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MEntityTypes; import net.momirealms.craftengine.core.entity.furniture.*; +import net.momirealms.craftengine.core.entity.seat.SeatConfig; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.world.Vec3d; @@ -22,15 +23,15 @@ import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.function.Supplier; -public class InteractionHitBox extends AbstractHitBox { +public class InteractionHitBoxConfig extends AbstractHitBoxConfig { public static final Factory FACTORY = new Factory(); - public static final InteractionHitBox DEFAULT = new InteractionHitBox(new Seat[0], new Vector3f(), new Vector3f(1,1,1), true, false, false, false); + public static final InteractionHitBoxConfig DEFAULT = new InteractionHitBoxConfig(new SeatConfig[0], new Vector3f(), new Vector3f(1,1,1), true, false, false, false); private final Vector3f size; private final boolean responsive; private final List cachedValues = new ArrayList<>(); - public InteractionHitBox(Seat[] seats, Vector3f position, Vector3f size, boolean responsive, boolean canUseOn, boolean blocksBuilding, boolean canBeHitByProjectile) { + public InteractionHitBoxConfig(SeatConfig[] seats, Vector3f position, Vector3f size, boolean responsive, boolean canUseOn, boolean blocksBuilding, boolean canBeHitByProjectile) { super(seats, position, canUseOn, blocksBuilding, canBeHitByProjectile); this.size = size; this.responsive = responsive; @@ -40,11 +41,11 @@ public class InteractionHitBox extends AbstractHitBox { } public boolean responsive() { - return responsive; + return this.responsive; } public Vector3f size() { - return size; + return this.size; } @Override @@ -53,22 +54,26 @@ public class InteractionHitBox extends AbstractHitBox { } @Override - public void initPacketsAndColliders(int[] entityId, WorldPosition position, Quaternionf conjugated, BiConsumer packets, Consumer collider, BiConsumer aabb) { + public void initPacketsAndColliders(int[] entityId, + WorldPosition position, + Quaternionf conjugated, + BiConsumer packets, + Consumer collider, + Consumer aabb) { Vector3f offset = conjugated.transform(new Vector3f(position())); double x = position.x(); double y = position.y(); double z = position.z(); - float yaw = position.xRot(); + float yaw = position.yRot(); + Vec3d vec3d = new Vec3d(x + offset.x, y + offset.y, z - offset.z); packets.accept(FastNMS.INSTANCE.constructor$ClientboundAddEntityPacket( - entityId[0], UUID.randomUUID(), x + offset.x, y + offset.y, z - offset.z, 0, yaw, + entityId[0], UUID.randomUUID(), vec3d.x, vec3d.y, vec3d.z, 0, yaw, MEntityTypes.INTERACTION, 0, CoreReflections.instance$Vec3$Zero, 0 ), true); packets.accept(FastNMS.INSTANCE.constructor$ClientboundSetEntityDataPacket(entityId[0], List.copyOf(this.cachedValues)), true); - if (canUseItemOn()) { - aabb.accept(entityId[0], AABB.fromInteraction(new Vec3d(x + offset.x, y + offset.y, z - offset.z), this.size.x, this.size.y)); - } + aabb.accept(new HitBoxPart(entityId[0], AABB.fromInteraction(vec3d, this.size.x, this.size.y), vec3d)); if (blocksBuilding() || this.canBeHitByProjectile()) { - AABB ceAABB = AABB.fromInteraction(new Vec3d(x + offset.x, y + offset.y, z - offset.z), this.size.x, this.size.y); + AABB ceAABB = AABB.fromInteraction(vec3d, this.size.x, this.size.y); Object nmsAABB = FastNMS.INSTANCE.constructor$AABB(ceAABB.minX, ceAABB.minY, ceAABB.minZ, ceAABB.maxX, ceAABB.maxY, ceAABB.maxZ); collider.accept(new BukkitCollider(position.world().serverWorld(), nmsAABB, x, y, z, this.canBeHitByProjectile(), false, this.blocksBuilding())); } @@ -88,10 +93,10 @@ public class InteractionHitBox extends AbstractHitBox { return new int[] {entityIdSupplier.get()}; } - public static class Factory implements HitBoxFactory { + public static class Factory implements HitBoxConfigFactory { @Override - public HitBox create(Map arguments) { + public HitBoxConfig create(Map arguments) { Vector3f position = ResourceConfigUtils.getAsVector3f(arguments.getOrDefault("position", "0"), "position"); float width; float height; @@ -100,15 +105,15 @@ public class InteractionHitBox extends AbstractHitBox { width = Float.parseFloat(split[0]); height = Float.parseFloat(split[1]); } else { - width = ResourceConfigUtils.getAsFloat(arguments.getOrDefault("width", "1"), "width"); - height = ResourceConfigUtils.getAsFloat(arguments.getOrDefault("height", "1"), "height"); + width = ResourceConfigUtils.getAsFloat(arguments.getOrDefault("width", 1), "width"); + height = ResourceConfigUtils.getAsFloat(arguments.getOrDefault("height", 1), "height"); } boolean canUseOn = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("can-use-item-on", false), "can-use-item-on"); boolean interactive = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("interactive", true), "interactive"); boolean canBeHitByProjectile = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("can-be-hit-by-projectile", false), "can-be-hit-by-projectile"); boolean blocksBuilding = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("blocks-building", true), "blocks-building"); - return new InteractionHitBox( - HitBoxFactory.getSeats(arguments), + return new InteractionHitBoxConfig( + SeatConfig.fromObj(arguments.get("seats")), position, new Vector3f(width, height, width), interactive, canUseOn, blocksBuilding, canBeHitByProjectile diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/ShulkerHitBox.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/ShulkerHitBoxConfig.java similarity index 87% rename from bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/ShulkerHitBox.java rename to bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/ShulkerHitBoxConfig.java index 9883004cc..57034cc9a 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/ShulkerHitBox.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/ShulkerHitBoxConfig.java @@ -10,6 +10,7 @@ import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MEntityType import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.NetworkReflections; import net.momirealms.craftengine.bukkit.util.DirectionUtils; import net.momirealms.craftengine.core.entity.furniture.*; +import net.momirealms.craftengine.core.entity.seat.SeatConfig; import net.momirealms.craftengine.core.util.*; import net.momirealms.craftengine.core.world.Vec3d; import net.momirealms.craftengine.core.world.World; @@ -23,7 +24,7 @@ import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.function.Supplier; -public class ShulkerHitBox extends AbstractHitBox { +public class ShulkerHitBoxConfig extends AbstractHitBoxConfig { public static final Factory FACTORY = new Factory(); // 1.20.6+ private final float scale; @@ -35,7 +36,7 @@ public class ShulkerHitBox extends AbstractHitBox { private final DirectionalShulkerSpawner spawner; private final AABBCreator aabbCreator; - public ShulkerHitBox(Seat[] seats, Vector3f position, Direction direction, float scale, byte peek, boolean interactionEntity, boolean interactive, boolean canUseOn, boolean blocksBuilding, boolean canBeHitByProjectile) { + public ShulkerHitBoxConfig(SeatConfig[] seats, Vector3f position, Direction direction, float scale, byte peek, boolean interactionEntity, boolean interactive, boolean canUseOn, boolean blocksBuilding, boolean canBeHitByProjectile) { super(seats, position, canUseOn, blocksBuilding, canBeHitByProjectile); this.direction = direction; this.scale = scale; @@ -65,7 +66,8 @@ public class ShulkerHitBox extends AbstractHitBox { ), true); packets.accept(FastNMS.INSTANCE.constructor$ClientboundSetEntityDataPacket(entityIds[2], List.copyOf(cachedInteractionValues)), true); if (canUseOn) { - aabb.accept(entityIds[2], AABB.fromInteraction(new Vec3d(x + offset.x, y + offset.y, z - offset.z), scale, shulkerHeight)); + Vec3d vec3d = new Vec3d(x + offset.x, y + offset.y, z - offset.z); + aabb.accept(new HitBoxPart(entityIds[2], AABB.fromInteraction(vec3d, scale, shulkerHeight), vec3d)); } } }; @@ -84,7 +86,8 @@ public class ShulkerHitBox extends AbstractHitBox { ), true); packets.accept(FastNMS.INSTANCE.constructor$ClientboundSetEntityDataPacket(entityIds[2], List.copyOf(cachedInteractionValues)), true); if (canUseOn) { - aabb.accept(entityIds[2], AABB.fromInteraction(new Vec3d(x + offset.x, y + offset.y - shulkerHeight + scale, z - offset.z), scale, shulkerHeight)); + Vec3d vec3d = new Vec3d(x + offset.x, y + offset.y - shulkerHeight + scale, z - offset.z); + aabb.accept(new HitBoxPart(entityIds[2], AABB.fromInteraction(vec3d, scale, shulkerHeight), vec3d)); } } }; @@ -113,8 +116,10 @@ public class ShulkerHitBox extends AbstractHitBox { ), true); packets.accept(FastNMS.INSTANCE.constructor$ClientboundSetEntityDataPacket(entityIds[3], List.copyOf(cachedInteractionValues)), true); if (canUseOn) { - aabb.accept(entityIds[2], AABB.fromInteraction(new Vec3d(x + offset.x, y + offset.y, z - offset.z), scale, scale)); - aabb.accept(entityIds[3], AABB.fromInteraction(new Vec3d(x + offset.x + shulkerDirection.stepX() * distance, y + offset.y, z - offset.z + shulkerDirection.stepZ() * distance), scale, scale)); + Vec3d vec3d1 = new Vec3d(x + offset.x, y + offset.y, z - offset.z); + Vec3d vec3d2 = new Vec3d(x + offset.x + shulkerDirection.stepX() * distance, y + offset.y, z - offset.z + shulkerDirection.stepZ() * distance); + aabb.accept(new HitBoxPart(entityIds[2], AABB.fromInteraction(vec3d1, scale, scale), vec3d1)); + aabb.accept(new HitBoxPart(entityIds[3], AABB.fromInteraction(vec3d2, scale, scale), vec3d2)); } } }; @@ -126,11 +131,11 @@ public class ShulkerHitBox extends AbstractHitBox { } } - public Collider createCollider(Direction direction, World world, Vector3f offset, double x, double y, double z, int entityId, BiConsumer aabb) { + public Collider createCollider(Direction direction, World world, Vector3f offset, double x, double y, double z, int entityId, Consumer aabb) { AABB ceAABB = createAABB(direction, offset, x, y, z); Object level = world.serverWorld(); Object nmsAABB = FastNMS.INSTANCE.constructor$AABB(ceAABB.minX, ceAABB.minY, ceAABB.minZ, ceAABB.maxX, ceAABB.maxY, ceAABB.maxZ); - aabb.accept(entityId, ceAABB); + aabb.accept(new HitBoxPart(entityId, ceAABB, new Vec3d(x, y, z))); return new BukkitCollider(level, nmsAABB, x, y, z, this.canBeHitByProjectile(), true, this.blocksBuilding()); } @@ -200,13 +205,18 @@ public class ShulkerHitBox extends AbstractHitBox { } @Override - public void initPacketsAndColliders(int[] entityIds, WorldPosition position, Quaternionf conjugated, BiConsumer packets, Consumer collider, BiConsumer aabb) { + public void initPacketsAndColliders(int[] entityIds, + WorldPosition position, + Quaternionf conjugated, + BiConsumer packets, + Consumer collider, + Consumer aabb) { Vector3f offset = conjugated.transform(new Vector3f(position())); try { double x = position.x(); double y = position.y(); double z = position.z(); - float yaw = position.xRot(); + float yaw = position.yRot(); double originalY = y + offset.y; double integerPart = Math.floor(originalY); double fractionalPart = originalY - integerPart; @@ -251,7 +261,16 @@ public class ShulkerHitBox extends AbstractHitBox { @FunctionalInterface interface DirectionalShulkerSpawner { - void accept(int[] entityIds, World world, double x, double y, double z, float yaw, Vector3f offset, BiConsumer packets, Consumer collider, BiConsumer aabb); + void accept(int[] entityIds, + World world, + double x, + double y, + double z, + float yaw, + Vector3f offset, + BiConsumer packets, + Consumer collider, + Consumer aabb); } @FunctionalInterface @@ -276,10 +295,10 @@ public class ShulkerHitBox extends AbstractHitBox { } } - public static class Factory implements HitBoxFactory { + public static class Factory implements HitBoxConfigFactory { @Override - public HitBox create(Map arguments) { + public HitBoxConfig create(Map arguments) { Vector3f position = ResourceConfigUtils.getAsVector3f(arguments.getOrDefault("position", "0"), "position"); float scale = ResourceConfigUtils.getAsFloat(arguments.getOrDefault("scale", "1"), "scale"); byte peek = (byte) ResourceConfigUtils.getAsInt(arguments.getOrDefault("peek", 0), "peek"); @@ -289,8 +308,8 @@ public class ShulkerHitBox extends AbstractHitBox { boolean canUseItemOn = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("can-use-item-on", true), "can-use-item-on"); boolean canBeHitByProjectile = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("can-be-hit-by-projectile", true), "can-be-hit-by-projectile"); boolean blocksBuilding = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("blocks-building", true), "blocks-building"); - return new ShulkerHitBox( - HitBoxFactory.getSeats(arguments), + return new ShulkerHitBoxConfig( + SeatConfig.fromObj(arguments.get("seats")), position, directionEnum, scale, peek, interactionEntity, interactive, canUseItemOn, blocksBuilding, canBeHitByProjectile ); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/seat/BukkitSeat.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/seat/BukkitSeat.java new file mode 100644 index 000000000..79444db99 --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/seat/BukkitSeat.java @@ -0,0 +1,146 @@ +package net.momirealms.craftengine.bukkit.entity.seat; + +import net.momirealms.craftengine.bukkit.util.EntityUtils; +import net.momirealms.craftengine.bukkit.util.LegacyAttributeUtils; +import net.momirealms.craftengine.bukkit.util.LocationUtils; +import net.momirealms.craftengine.core.entity.seat.Seat; +import net.momirealms.craftengine.core.entity.seat.SeatConfig; +import net.momirealms.craftengine.core.entity.seat.SeatOwner; +import net.momirealms.craftengine.core.util.QuaternionUtils; +import net.momirealms.craftengine.core.util.VersionHelper; +import net.momirealms.craftengine.core.world.WorldPosition; +import net.momirealms.sparrow.nbt.CompoundTag; +import net.momirealms.sparrow.nbt.NBT; +import org.bukkit.Location; +import org.bukkit.attribute.Attribute; +import org.bukkit.entity.*; +import org.bukkit.persistence.PersistentDataType; +import org.jetbrains.annotations.Nullable; +import org.joml.Vector3f; + +import java.io.IOException; +import java.lang.ref.WeakReference; +import java.util.Objects; + +public class BukkitSeat implements Seat { + private final O owner; + private final SeatConfig seatConfig; + private WeakReference entity; + + public BukkitSeat(O owner, SeatConfig config) { + this.owner = owner; + this.seatConfig = config; + } + + @Override + public O owner() { + return this.owner; + } + + @Override + public SeatConfig config() { + return this.seatConfig; + } + + @Nullable + public Entity getSeatEntity() { + return this.entity == null ? null : this.entity.get(); + } + + @Override + public boolean isOccupied() { + Entity seatEntity = getSeatEntity(); + return seatEntity != null && seatEntity.isValid() && !seatEntity.getPassengers().isEmpty(); + } + + @Override + public void destroy() { + if (this.entity != null) { + Entity entity = this.entity.get(); + if (entity != null) { + if (entity.isValid()) { + entity.remove(); + } + this.entity = null; + } + } + } + + private float yRot() { + return this.seatConfig.yRot(); + } + + private Vector3f position() { + return this.seatConfig.position(); + } + + private boolean limitPlayerRotation() { + return this.seatConfig.limitPlayerRotation(); + } + + private Location calculateSeatLocation(Location sourceLocation) { + Vector3f offset = QuaternionUtils.toQuaternionf(0, Math.toRadians(180 - sourceLocation.getYaw()), 0).conjugate().transform(new Vector3f(this.position())); + double yaw = this.yRot() + sourceLocation.getYaw(); + if (yaw < -180) yaw += 360; + Location newLocation = sourceLocation.clone(); + newLocation.setYaw((float) yaw); + newLocation.add(offset.x, offset.y + 0.6, -offset.z); + return newLocation; + } + + @Override + public boolean spawnSeat(net.momirealms.craftengine.core.entity.player.Player player, WorldPosition source) { + return spawnSeatEntityForPlayer((Player) player.platformPlayer(), LocationUtils.toLocation(source)); + } + + private boolean spawnSeatEntityForPlayer(Player player, Location sourceLocation) { + // 移除就有的座椅 + this.destroy(); + // 计算座椅的位置 + Location location = this.calculateSeatLocation(sourceLocation); + + CompoundTag extraData = new CompoundTag(); + this.owner.saveCustomData(extraData); + byte[] data; + try { + data = NBT.toBytes(extraData); + } catch (IOException e) { + return false; + } + + // 生成座椅实体 + Entity seatEntity = this.limitPlayerRotation() ? + EntityUtils.spawnEntity(player.getWorld(), VersionHelper.isOrAbove1_20_2() ? location.subtract(0,0.9875,0) : location.subtract(0,0.990625,0), EntityType.ARMOR_STAND, entity -> { + ArmorStand armorStand = (ArmorStand) entity; + if (VersionHelper.isOrAbove1_21_3()) { + Objects.requireNonNull(armorStand.getAttribute(Attribute.MAX_HEALTH)).setBaseValue(0.01); + } else { + LegacyAttributeUtils.setMaxHealth(armorStand); + } + armorStand.setSmall(true); + armorStand.setInvisible(true); + armorStand.setSilent(true); + armorStand.setInvulnerable(true); + armorStand.setArms(false); + armorStand.setCanTick(false); + armorStand.setAI(false); + armorStand.setGravity(false); + armorStand.setPersistent(false); + armorStand.getPersistentDataContainer().set(BukkitSeatManager.SEAT_KEY, PersistentDataType.BOOLEAN, true); + armorStand.getPersistentDataContainer().set(BukkitSeatManager.SEAT_EXTRA_DATA_KEY, PersistentDataType.BYTE_ARRAY, data); + }) : + EntityUtils.spawnEntity(player.getWorld(), VersionHelper.isOrAbove1_20_2() ? location : location.subtract(0,0.25,0), EntityType.ITEM_DISPLAY, entity -> { + ItemDisplay itemDisplay = (ItemDisplay) entity; + itemDisplay.setPersistent(false); + itemDisplay.getPersistentDataContainer().set(BukkitSeatManager.SEAT_KEY, PersistentDataType.BOOLEAN, true); + itemDisplay.getPersistentDataContainer().set(BukkitSeatManager.SEAT_EXTRA_DATA_KEY, PersistentDataType.BYTE_ARRAY, data); + }); + if (!seatEntity.addPassenger(player)) { + seatEntity.remove(); + return false; + } else { + this.entity = new WeakReference<>(seatEntity); + return true; + } + } +} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/seat/BukkitSeatManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/seat/BukkitSeatManager.java new file mode 100644 index 000000000..9ebc9577f --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/seat/BukkitSeatManager.java @@ -0,0 +1,127 @@ +package net.momirealms.craftengine.bukkit.entity.seat; + +import net.momirealms.craftengine.bukkit.entity.furniture.DismountListener1_20; +import net.momirealms.craftengine.bukkit.entity.furniture.DismountListener1_20_3; +import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine; +import net.momirealms.craftengine.bukkit.util.EntityUtils; +import net.momirealms.craftengine.bukkit.util.KeyUtils; +import net.momirealms.craftengine.core.entity.seat.SeatManager; +import net.momirealms.craftengine.core.util.VersionHelper; +import net.momirealms.sparrow.nbt.CompoundTag; +import net.momirealms.sparrow.nbt.NBT; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.NamespacedKey; +import org.bukkit.entity.ArmorStand; +import org.bukkit.entity.Entity; +import org.bukkit.entity.ItemDisplay; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.HandlerList; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.PlayerInteractAtEntityEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.persistence.PersistentDataType; +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; + +public class BukkitSeatManager implements SeatManager { + private static BukkitSeatManager instance; + public static final NamespacedKey SEAT_KEY = KeyUtils.toNamespacedKey(SeatManager.SEAT_KEY); + public static final NamespacedKey SEAT_EXTRA_DATA_KEY = KeyUtils.toNamespacedKey(SeatManager.SEAT_EXTRA_DATA_KEY); + private final BukkitCraftEngine plugin; + private final Listener dismountListener; + + public BukkitSeatManager(BukkitCraftEngine plugin) { + this.plugin = plugin; + this.dismountListener = VersionHelper.isOrAbove1_20_3() ? new DismountListener1_20_3(this::handleDismount) : new DismountListener1_20(this::handleDismount); + instance = this; + } + + public CompoundTag getSeatExtraData(Entity entity) { + if (!isSeatEntityType(entity)) { + throw new IllegalArgumentException("Entity is not a seat"); + } + byte[] bytes = entity.getPersistentDataContainer().get(SEAT_EXTRA_DATA_KEY, PersistentDataType.BYTE_ARRAY); + try { + return NBT.fromBytes(bytes); + } catch (IOException e) { + throw new RuntimeException("Failed to read extra data from seat", e); + } + } + + private void handleDismount(Player player, @NotNull Entity dismounted) { + if (!isSeatEntityType(dismounted)) return; + tryLeavingSeat(player, dismounted); + } + + @Override + public void delayedInit() { + Bukkit.getPluginManager().registerEvents(this.dismountListener, this.plugin.javaPlugin()); + } + + @Override + public void disable() { + HandlerList.unregisterAll(this.dismountListener); + for (Player player : Bukkit.getOnlinePlayers()) { + Entity vehicle = player.getVehicle(); + if (vehicle != null) { + tryLeavingSeat(player, vehicle); + } + } + } + + @EventHandler(ignoreCancelled = true) + public void onPlayerQuit(PlayerQuitEvent event) { + Player player = event.getPlayer(); + Entity entity = player.getVehicle(); + if (entity == null) return; + if (this.isSeatEntityType(entity)) { + this.tryLeavingSeat(player, entity); + } + } + + @EventHandler(ignoreCancelled = true) + public void onPlayerDeath(PlayerDeathEvent event) { + Player player = event.getPlayer(); + Entity entity = player.getVehicle(); + if (entity == null) return; + if (this.isSeatEntityType(entity)) { + this.tryLeavingSeat(player, entity); + } + } + + // do not allow players to put item on seats + @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) + public void onInteractArmorStand(PlayerInteractAtEntityEvent event) { + Entity clicked = event.getRightClicked(); + if (clicked instanceof ArmorStand armorStand) { + if (!armorStand.getPersistentDataContainer().has(SEAT_KEY)) return; + event.setCancelled(true); + } + } + + protected boolean isSeatEntityType(Entity entity) { + return (entity instanceof ArmorStand || entity instanceof ItemDisplay); + } + + protected void tryLeavingSeat(@NotNull Player player, @NotNull Entity seat) { + boolean isSeat = seat.getPersistentDataContainer().has(SEAT_KEY); + if (!isSeat) return; + Location location = seat.getLocation(); + if (seat instanceof ArmorStand) { + location.add(0, 0.9875,0); + } else { + location.add(0,0.25,0); + } + seat.remove(); + EntityUtils.safeDismount(player, location); + } + + public static BukkitSeatManager instance() { + return instance; + } +} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitCustomItem.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitCustomItem.java index d58b647a9..b397eb9b6 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitCustomItem.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitCustomItem.java @@ -6,7 +6,7 @@ import net.momirealms.craftengine.core.item.*; import net.momirealms.craftengine.core.item.behavior.ItemBehavior; import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; import net.momirealms.craftengine.core.item.updater.ItemUpdateConfig; -import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.event.EventTrigger; import net.momirealms.craftengine.core.plugin.context.function.Function; import net.momirealms.craftengine.core.util.Key; @@ -26,7 +26,7 @@ public class BukkitCustomItem extends AbstractCustomItem { List behaviors, List> modifiers, List> clientBoundModifiers, ItemSettings settings, - Map>> events, + Map>> events, ItemUpdateConfig updater) { super(isVanillaItem, id, materialKey, clientBoundMaterialKey, behaviors, modifiers, clientBoundModifiers, settings, events, updater); this.item = item; @@ -54,11 +54,15 @@ public class BukkitCustomItem extends AbstractCustomItem { } public Object clientItem() { - return clientItem; + return this.clientItem; } public Object item() { - return item; + return this.item; + } + + public boolean hasClientboundMaterial() { + return this.clientItem != this.item; } public static Builder builder(Object item, Object clientBoundItem) { @@ -72,7 +76,7 @@ public class BukkitCustomItem extends AbstractCustomItem { private final Object item; private Key clientBoundItemKey; private final Object clientBoundItem; - private final Map>> events = new EnumMap<>(EventTrigger.class); + private final Map>> events = new EnumMap<>(EventTrigger.class); private final List behaviors = new ArrayList<>(4); private final List> modifiers = new ArrayList<>(4); private final List> clientBoundModifiers = new ArrayList<>(4); @@ -151,7 +155,7 @@ public class BukkitCustomItem extends AbstractCustomItem { } @Override - public Builder events(Map>> events) { + public Builder events(Map>> events) { this.events.putAll(events); return this; } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitItemManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitItemManager.java index 9fceb0e68..9fee10396 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitItemManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitItemManager.java @@ -22,8 +22,10 @@ import net.momirealms.craftengine.core.item.recipe.UniqueIdItem; import net.momirealms.craftengine.core.pack.AbstractPackManager; import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; -import net.momirealms.craftengine.core.plugin.logger.Debugger; -import net.momirealms.craftengine.core.util.*; +import net.momirealms.craftengine.core.util.GsonHelper; +import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.UniqueKey; +import net.momirealms.craftengine.core.util.VersionHelper; import org.bukkit.Bukkit; import org.bukkit.event.HandlerList; import org.bukkit.inventory.ItemStack; @@ -103,17 +105,6 @@ public class BukkitItemManager extends AbstractItemManager { Bukkit.getPluginManager().registerEvents(this.armorEventListener, this.plugin.javaPlugin()); } - @Override - public Item decode(FriendlyByteBuf byteBuf) { - Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(byteBuf); - return this.wrap(FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf)); - } - - @Override - public void encode(FriendlyByteBuf byteBuf, Item item) { - FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(FastNMS.INSTANCE.constructor$FriendlyByteBuf(byteBuf), item.getItem()); - } - @Override public NetworkItemHandler networkItemHandler() { return this.networkItemHandler; @@ -124,37 +115,25 @@ public class BukkitItemManager extends AbstractItemManager { } @Override - public Item s2c(Item item, Player player) { - if (item.isEmpty()) return item; - return this.networkItemHandler.s2c(item, player).orElse(item); + public Optional> s2c(Item item, Player player) { + if (item.isEmpty()) return Optional.empty(); + return this.networkItemHandler.s2c(item, player); } @Override - public Item c2s(Item item) { - if (item.isEmpty()) return item; - return this.networkItemHandler.c2s(item).orElse(item); + public Optional> c2s(Item item) { + if (item.isEmpty()) return Optional.empty(); + return this.networkItemHandler.c2s(item); } - public Optional s2c(ItemStack itemStack, Player player) { - try { - Item wrapped = wrap(itemStack); - if (wrapped.isEmpty()) return Optional.empty(); - return this.networkItemHandler.s2c(wrapped, player).map(Item::getItem); - } catch (Throwable e) { - Debugger.ITEM.warn(() -> "Failed to handle s2c items.", e); - return Optional.empty(); - } + public Optional s2c(ItemStack item, Player player) { + if (item.isEmpty()) return Optional.empty(); + return this.networkItemHandler.s2c(wrap(item), player).map(Item::getItem); } - public Optional c2s(ItemStack itemStack) { - try { - Item wrapped = wrap(itemStack); - if (wrapped.isEmpty()) return Optional.empty(); - return this.networkItemHandler.c2s(wrapped).map(Item::getItem); - } catch (Throwable e) { - Debugger.COMMON.warn(() -> "Failed to handle c2s items.", e); - return Optional.empty(); - } + public Optional c2s(ItemStack item) { + if (item.isEmpty()) return Optional.empty(); + return this.networkItemHandler.c2s(wrap(item)).map(Item::getItem); } @Override @@ -169,7 +148,7 @@ public class BukkitItemManager extends AbstractItemManager { jsonObject.addProperty("count", result.count()); jsonObject.add("components", result.components()); Object nmsStack = CoreReflections.instance$ItemStack$CODEC.parse(MRegistryOps.JSON, jsonObject) - .resultOrPartial((itemId) -> plugin.logger().severe("Tried to load invalid item: '" + itemId + "'")).orElse(null); + .resultOrPartial((error) -> plugin.logger().severe("Tried to load invalid item: '" + error + "'")).orElse(null); if (nmsStack == null) { return this.emptyItem; } @@ -429,7 +408,7 @@ public class BukkitItemManager extends AbstractItemManager { Object armorTrim = FastNMS.INSTANCE.constructor$ArmorTrim(optionalMaterial.get(), optionalPattern.get()); Object previousTrim; if (VersionHelper.isOrAbove1_20_5()) { - previousTrim = base.getExactComponent(ComponentKeys.TRIM); + previousTrim = base.getExactComponent(DataComponentKeys.TRIM); } else { try { previousTrim = VersionHelper.isOrAbove1_20_2() ? @@ -445,7 +424,7 @@ public class BukkitItemManager extends AbstractItemManager { } Item newItem = base.copyWithCount(1); if (VersionHelper.isOrAbove1_20_5()) { - newItem.setExactComponent(ComponentKeys.TRIM, armorTrim); + newItem.setExactComponent(DataComponentKeys.TRIM, armorTrim); } else { try { CoreReflections.method$ArmorTrim$setTrim.invoke(null, FastNMS.INSTANCE.registryAccess(), newItem.getLiteralObject(), armorTrim); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ComponentItemWrapper.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ComponentItemWrapper.java index 6a5d6bab2..019941f0d 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ComponentItemWrapper.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ComponentItemWrapper.java @@ -8,13 +8,19 @@ 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.MRegistryOps; +import net.momirealms.craftengine.bukkit.util.EquipmentSlotUtils; import net.momirealms.craftengine.bukkit.util.ItemStackUtils; import net.momirealms.craftengine.bukkit.util.KeyUtils; +import net.momirealms.craftengine.core.entity.EquipmentSlot; +import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.item.ItemWrapper; import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.RandomUtils; import net.momirealms.craftengine.core.util.VersionHelper; import net.momirealms.sparrow.nbt.Tag; +import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.Nullable; import java.util.Objects; import java.util.Optional; @@ -23,6 +29,11 @@ public class ComponentItemWrapper implements ItemWrapper { private final ItemStack item; private final Object handle; + public ComponentItemWrapper(final Object handle) { + this.handle = handle; + this.item = FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(handle); + } + public ComponentItemWrapper(final ItemStack item) { this.item = ItemStackUtils.ensureCraftItemStack(item); this.handle = FastNMS.INSTANCE.field$CraftItemStack$handle(this.item); @@ -131,7 +142,7 @@ public class ComponentItemWrapper implements ItemWrapper { } public void setNBTComponent(Object type, Object value) { - setComponentInternal(type, MRegistryOps.NBT, value); + setComponentInternal(type, MRegistryOps.NBT, value); } public void setSparrowNBTComponent(Object type, Tag value) { @@ -196,4 +207,39 @@ public class ComponentItemWrapper implements ItemWrapper { public void shrink(int amount) { count(count() - amount); } + + @Override + public void hurtAndBreak(int amount, @Nullable Player player, @Nullable EquipmentSlot slot) { + if (player == null) { + if (this.hurt(amount)) { + this.shrink(1); + this.setJavaComponent(DataComponentTypes.DAMAGE, 0); + } + return; + } + FastNMS.INSTANCE.method$ItemStack$hurtAndBreak( + this.handle, + amount, + player.serverPlayer(), + slot != null ? EquipmentSlotUtils.toNMSEquipmentSlot(slot) : null + ); + } + + private boolean hurt(int amount) { + if (!this.hasComponent(DataComponentTypes.MAX_DAMAGE) || this.hasComponent(DataComponentTypes.UNBREAKABLE) || !this.hasComponent(DataComponentTypes.DAMAGE)) return false; + if (amount > 0) { + int level = this.item.getEnchantmentLevel(Enchantment.UNBREAKING); + int ignoredDamage = 0; + for (int i = 0; level > 0 && i < amount; ++i) { + if (RandomUtils.generateRandomInt(0, level + 1) > 0) ++ignoredDamage; + } + amount -= ignoredDamage; + if (amount <= 0) return false; + } + Optional optionalDamage = this.getJavaComponent(DataComponentTypes.DAMAGE); + int damage = optionalDamage.orElse(0) + amount; + this.setJavaComponent(DataComponentTypes.DAMAGE, damage); + Optional optionalMaxDamage = this.getJavaComponent(DataComponentTypes.MAX_DAMAGE); + return damage >= optionalMaxDamage.orElseGet(() -> (int) this.item.getType().getMaxDurability()); + } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ComponentTypes.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ComponentTypes.java deleted file mode 100644 index a2384b429..000000000 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ComponentTypes.java +++ /dev/null @@ -1,40 +0,0 @@ -package net.momirealms.craftengine.bukkit.item; - -import net.momirealms.craftengine.bukkit.nms.FastNMS; -import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MBuiltInRegistries; -import net.momirealms.craftengine.bukkit.util.KeyUtils; -import net.momirealms.craftengine.core.item.ComponentKeys; -import net.momirealms.craftengine.core.util.Key; -import net.momirealms.craftengine.core.util.VersionHelper; - -public class ComponentTypes { - public static final Object CUSTOM_MODEL_DATA = getComponentType(ComponentKeys.CUSTOM_MODEL_DATA); - public static final Object CUSTOM_NAME = getComponentType(ComponentKeys.CUSTOM_NAME); - public static final Object ITEM_NAME = getComponentType(ComponentKeys.ITEM_NAME); - public static final Object LORE = getComponentType(ComponentKeys.LORE); - public static final Object DAMAGE = getComponentType(ComponentKeys.DAMAGE); - public static final Object MAX_DAMAGE = getComponentType(ComponentKeys.MAX_DAMAGE); - public static final Object ENCHANTMENT_GLINT_OVERRIDE = getComponentType(ComponentKeys.ENCHANTMENT_GLINT_OVERRIDE); - public static final Object ENCHANTMENTS = getComponentType(ComponentKeys.ENCHANTMENTS); - public static final Object STORED_ENCHANTMENTS = getComponentType(ComponentKeys.STORED_ENCHANTMENTS); - public static final Object UNBREAKABLE = getComponentType(ComponentKeys.UNBREAKABLE); - public static final Object MAX_STACK_SIZE = getComponentType(ComponentKeys.MAX_STACK_SIZE); - public static final Object EQUIPPABLE = getComponentType(ComponentKeys.EQUIPPABLE); - public static final Object ITEM_MODEL = getComponentType(ComponentKeys.ITEM_MODEL); - public static final Object TOOLTIP_STYLE = getComponentType(ComponentKeys.TOOLTIP_STYLE); - public static final Object JUKEBOX_PLAYABLE = getComponentType(ComponentKeys.JUKEBOX_PLAYABLE); - public static final Object TRIM = getComponentType(ComponentKeys.TRIM); - public static final Object REPAIR_COST = getComponentType(ComponentKeys.REPAIR_COST); - public static final Object CUSTOM_DATA = getComponentType(ComponentKeys.CUSTOM_DATA); - public static final Object PROFILE = getComponentType(ComponentKeys.PROFILE); - public static final Object DYED_COLOR = getComponentType(ComponentKeys.DYED_COLOR); - public static final Object DEATH_PROTECTION = getComponentType(ComponentKeys.DEATH_PROTECTION); - public static final Object FIREWORK_EXPLOSION = getComponentType(ComponentKeys.FIREWORK_EXPLOSION); - - private ComponentTypes() {} - - private static Object getComponentType(Key key) { - if (!VersionHelper.isOrAbove1_20_5()) return null; - return FastNMS.INSTANCE.method$Registry$getValue(MBuiltInRegistries.DATA_COMPONENT_TYPE, KeyUtils.toResourceLocation(key)); - } -} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/DataComponentPredicateTypes.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/DataComponentPredicateTypes.java new file mode 100644 index 000000000..a989983e1 --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/DataComponentPredicateTypes.java @@ -0,0 +1,16 @@ +package net.momirealms.craftengine.bukkit.item; + +import net.momirealms.craftengine.bukkit.nms.FastNMS; +import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MBuiltInRegistries; +import net.momirealms.craftengine.bukkit.util.KeyUtils; +import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.VersionHelper; + +public final class DataComponentPredicateTypes { + private DataComponentPredicateTypes() {} + + public static Object byId(Key key) { + if (!VersionHelper.isOrAbove1_21_5()) return null; + return FastNMS.INSTANCE.method$Registry$getValue(MBuiltInRegistries.DATA_COMPONENT_PREDICATE_TYPE, KeyUtils.toResourceLocation(key)); + } +} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/DataComponentTypes.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/DataComponentTypes.java new file mode 100644 index 000000000..09f99cf98 --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/DataComponentTypes.java @@ -0,0 +1,43 @@ +package net.momirealms.craftengine.bukkit.item; + +import net.momirealms.craftengine.bukkit.nms.FastNMS; +import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MBuiltInRegistries; +import net.momirealms.craftengine.bukkit.util.KeyUtils; +import net.momirealms.craftengine.core.item.DataComponentKeys; +import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.VersionHelper; + +public final class DataComponentTypes { + public static final Object CUSTOM_MODEL_DATA = byId(DataComponentKeys.CUSTOM_MODEL_DATA); + public static final Object CUSTOM_NAME = byId(DataComponentKeys.CUSTOM_NAME); + public static final Object ITEM_NAME = byId(DataComponentKeys.ITEM_NAME); + public static final Object LORE = byId(DataComponentKeys.LORE); + public static final Object DAMAGE = byId(DataComponentKeys.DAMAGE); + public static final Object MAX_DAMAGE = byId(DataComponentKeys.MAX_DAMAGE); + public static final Object ENCHANTMENT_GLINT_OVERRIDE = byId(DataComponentKeys.ENCHANTMENT_GLINT_OVERRIDE); + public static final Object ENCHANTMENTS = byId(DataComponentKeys.ENCHANTMENTS); + public static final Object STORED_ENCHANTMENTS = byId(DataComponentKeys.STORED_ENCHANTMENTS); + public static final Object UNBREAKABLE = byId(DataComponentKeys.UNBREAKABLE); + public static final Object MAX_STACK_SIZE = byId(DataComponentKeys.MAX_STACK_SIZE); + public static final Object EQUIPPABLE = byId(DataComponentKeys.EQUIPPABLE); + public static final Object ITEM_MODEL = byId(DataComponentKeys.ITEM_MODEL); + public static final Object TOOLTIP_STYLE = byId(DataComponentKeys.TOOLTIP_STYLE); + public static final Object JUKEBOX_PLAYABLE = byId(DataComponentKeys.JUKEBOX_PLAYABLE); + public static final Object TRIM = byId(DataComponentKeys.TRIM); + public static final Object REPAIR_COST = byId(DataComponentKeys.REPAIR_COST); + public static final Object CUSTOM_DATA = byId(DataComponentKeys.CUSTOM_DATA); + public static final Object PROFILE = byId(DataComponentKeys.PROFILE); + public static final Object DYED_COLOR = byId(DataComponentKeys.DYED_COLOR); + public static final Object DEATH_PROTECTION = byId(DataComponentKeys.DEATH_PROTECTION); + public static final Object FIREWORK_EXPLOSION = byId(DataComponentKeys.FIREWORK_EXPLOSION); + public static final Object BUNDLE_CONTENTS = byId(DataComponentKeys.BUNDLE_CONTENTS); + public static final Object CONTAINER = byId(DataComponentKeys.CONTAINER); + public static final Object BLOCK_STATE = byId(DataComponentKeys.BLOCK_STATE); + + private DataComponentTypes() {} + + public static Object byId(Key key) { + if (!VersionHelper.isOrAbove1_20_5()) return null; + return FastNMS.INSTANCE.method$Registry$getValue(MBuiltInRegistries.DATA_COMPONENT_TYPE, KeyUtils.toResourceLocation(key)); + } +} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/LegacyItemWrapper.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/LegacyItemWrapper.java index fbb73a8cc..dd26bd3b2 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/LegacyItemWrapper.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/LegacyItemWrapper.java @@ -3,10 +3,16 @@ package net.momirealms.craftengine.bukkit.item; import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MRegistryOps; +import net.momirealms.craftengine.bukkit.util.EquipmentSlotUtils; import net.momirealms.craftengine.bukkit.util.ItemStackUtils; +import net.momirealms.craftengine.core.entity.EquipmentSlot; +import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.item.ItemWrapper; +import net.momirealms.craftengine.core.util.RandomUtils; import net.momirealms.sparrow.nbt.Tag; +import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.Nullable; public class LegacyItemWrapper implements ItemWrapper { private final Object nmsStack; @@ -21,11 +27,12 @@ public class LegacyItemWrapper implements ItemWrapper { Object finalNMSTag; if (value instanceof Tag tag) { finalNMSTag = MRegistryOps.SPARROW_NBT.convertTo(MRegistryOps.NBT, tag); + } else if (CoreReflections.clazz$Tag.isInstance(value)) { + finalNMSTag = value; } else { finalNMSTag = MRegistryOps.JAVA.convertTo(MRegistryOps.NBT, value); } - Object currentTag = FastNMS.INSTANCE.field$ItemStack$getOrCreateTag(this.nmsStack); if (path == null || path.length == 0) { if (CoreReflections.clazz$CompoundTag.isInstance(finalNMSTag)) { FastNMS.INSTANCE.method$ItemStack$setTag(this.nmsStack, finalNMSTag); @@ -34,6 +41,8 @@ public class LegacyItemWrapper implements ItemWrapper { return false; } + Object currentTag = FastNMS.INSTANCE.field$ItemStack$getOrCreateTag(this.nmsStack); + for (int i = 0; i < path.length - 1; i++) { Object pathSegment = path[i]; if (pathSegment == null) return false; @@ -147,4 +156,38 @@ public class LegacyItemWrapper implements ItemWrapper { public void shrink(int amount) { this.count(count() - amount); } + + @Override + public void hurtAndBreak(int amount, @Nullable Player player, @Nullable EquipmentSlot slot) { + if (player == null) { + if (this.hurt(amount)) { + this.shrink(1); + this.setTag(0, "Damage"); + } + return; + } + FastNMS.INSTANCE.method$ItemStack$hurtAndBreak( + this.nmsStack, + amount, + player.serverPlayer(), + slot != null ? EquipmentSlotUtils.toNMSEquipmentSlot(slot) : null + ); + } + + private boolean hurt(int amount) { + if (ItemStackUtils.isEmpty(itemStack) || itemStack.getType().getMaxDurability() <= 0 || !hasTag("Unbreakable") || (boolean) getJavaTag("Unbreakable")) return false; + if (amount > 0) { + int level = this.itemStack.getEnchantmentLevel(Enchantment.UNBREAKING); + int ignoredDamage = 0; + for (int i = 0; level > 0 && i < amount; ++i) { + if (RandomUtils.generateRandomInt(0, level + 1) > 0) ++ignoredDamage; + } + amount -= ignoredDamage; + if (amount <= 0) return false; + } + int damage = this.hasTag("Damage") ? this.getJavaTag("Damage") : 0; + damage += amount; + this.setTag(damage, "Damage"); + return damage >= this.itemStack.getType().getMaxDurability(); + } } \ No newline at end of file diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/LegacyNetworkItemHandler.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/LegacyNetworkItemHandler.java index 7c6df9cdd..eb3c19461 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/LegacyNetworkItemHandler.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/LegacyNetworkItemHandler.java @@ -4,7 +4,7 @@ import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.item.CustomItem; import net.momirealms.craftengine.core.item.Item; -import net.momirealms.craftengine.core.item.ItemBuildContext; +import net.momirealms.craftengine.core.item.NetworkItemBuildContext; import net.momirealms.craftengine.core.item.NetworkItemHandler; import net.momirealms.craftengine.core.item.modifier.ArgumentsModifier; import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; @@ -16,6 +16,7 @@ import net.momirealms.craftengine.core.plugin.context.ContextKey; import net.momirealms.craftengine.core.plugin.context.NetworkTextReplaceContext; import net.momirealms.craftengine.core.plugin.text.component.ComponentProvider; import net.momirealms.craftengine.core.util.AdventureHelper; +import net.momirealms.craftengine.core.util.Pair; import net.momirealms.sparrow.nbt.CompoundTag; import net.momirealms.sparrow.nbt.ListTag; import net.momirealms.sparrow.nbt.StringTag; @@ -33,84 +34,214 @@ public final class LegacyNetworkItemHandler implements NetworkItemHandler> c2s(Item wrapped) { + boolean forceReturn = false; + + // 处理收纳袋 + Object bundleContents = wrapped.getExactTag("Items"); + if (bundleContents != null) { + List newItems = new ArrayList<>(); + boolean changed = false; + for (Object tag : (Iterable) bundleContents) { + Object previousItem = FastNMS.INSTANCE.method$ItemStack$of(tag); + Optional itemStack = BukkitItemManager.instance().c2s(FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(previousItem)); + if (itemStack.isPresent()) { + newItems.add(FastNMS.INSTANCE.field$CraftItemStack$handle(itemStack.get())); + changed = true; + } else { + newItems.add(previousItem); + } + } + if (changed) { + Object listTag = FastNMS.INSTANCE.constructor$ListTag(); + for (Object newItem : newItems) { + FastNMS.INSTANCE.method$ListTag$add(listTag, 0, FastNMS.INSTANCE.method$itemStack$save(newItem, FastNMS.INSTANCE.constructor$CompoundTag())); + } + wrapped.setTag(listTag, "Items"); + forceReturn = true; + } + } + + // 处理container + Object containerContents = wrapped.getExactTag("BlockEntityTag"); + if (containerContents != null) { + Object itemTags = FastNMS.INSTANCE.method$CompoundTag$get(containerContents, "Items"); + if (itemTags != null) { + boolean changed = false; + List> newItems = new ArrayList<>(); + for (Object tag : (Iterable) itemTags) { + Object previousItem = FastNMS.INSTANCE.method$ItemStack$of(tag); + Optional itemStack = BukkitItemManager.instance().c2s(FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(previousItem)); + byte slot = FastNMS.INSTANCE.method$ByteTag$value(FastNMS.INSTANCE.method$CompoundTag$get(tag, "Slot")); + if (itemStack.isPresent()) { + newItems.add(Pair.of(slot, FastNMS.INSTANCE.field$CraftItemStack$handle(itemStack.get()))); + changed = true; + } else { + newItems.add(Pair.of(slot, previousItem)); + } + } + if (changed) { + Object listTag = FastNMS.INSTANCE.constructor$ListTag(); + for (Pair newItem : newItems) { + Object newTag = FastNMS.INSTANCE.method$itemStack$save(newItem.right(), FastNMS.INSTANCE.constructor$CompoundTag()); + Object slotTag = FastNMS.INSTANCE.constructor$ByteTag(newItem.left()); + FastNMS.INSTANCE.method$CompoundTag$put(newTag, "Slot", slotTag); + FastNMS.INSTANCE.method$ListTag$add(listTag, 0, newTag); + } + wrapped.setTag(listTag, "BlockEntityTag", "Items"); + forceReturn = true; + } + } + } + Optional> optionalCustomItem = wrapped.getCustomItem(); - boolean hasDifferentMaterial = false; if (optionalCustomItem.isPresent()) { BukkitCustomItem customItem = (BukkitCustomItem) optionalCustomItem.get(); if (customItem.item() != FastNMS.INSTANCE.method$ItemStack$getItem(wrapped.getLiteralObject())) { wrapped = wrapped.unsafeTransmuteCopy(customItem.item(), wrapped.count()); - hasDifferentMaterial = true; - } - } - if (!wrapped.hasTag(NETWORK_ITEM_TAG)) { - if (hasDifferentMaterial) { - return Optional.of(wrapped); + forceReturn = true; } } + CompoundTag networkData = (CompoundTag) wrapped.getTag(NETWORK_ITEM_TAG); - if (networkData == null) return Optional.empty(); - wrapped.removeTag(NETWORK_ITEM_TAG); - for (Map.Entry entry : networkData.entrySet()) { - if (entry.getValue() instanceof CompoundTag tag) { - NetworkItemHandler.apply(entry.getKey(), tag, wrapped); + if (networkData != null) { + forceReturn = true; + // 移除tag + wrapped.removeTag(NETWORK_ITEM_TAG); + // 恢复物品 + for (Map.Entry entry : networkData.entrySet()) { + if (entry.getValue() instanceof CompoundTag tag) { + NetworkItemHandler.apply(entry.getKey(), tag, wrapped); + } } } - return Optional.of(wrapped); + + return forceReturn ? Optional.of(wrapped) : Optional.empty(); } @Override public Optional> s2c(Item wrapped, Player player) { - Optional> optionalCustomItem = wrapped.getCustomItem(); - if (optionalCustomItem.isEmpty()) { - if (!Config.interceptItem()) return Optional.empty(); - return new OtherItem(wrapped, false).process(NetworkTextReplaceContext.of(player)); - } else { - BukkitCustomItem customItem = (BukkitCustomItem) optionalCustomItem.get(); - Object serverItem = FastNMS.INSTANCE.method$ItemStack$getItem(wrapped.getLiteralObject()); - boolean hasDifferentMaterial = serverItem == customItem.item() && serverItem != customItem.clientItem(); - if (hasDifferentMaterial) { - wrapped = wrapped.unsafeTransmuteCopy(customItem.clientItem(), wrapped.count()); - } - if (!customItem.hasClientBoundDataModifier()) { - if (!Config.interceptItem() && !hasDifferentMaterial) return Optional.empty(); - return new OtherItem(wrapped, hasDifferentMaterial).process(NetworkTextReplaceContext.of(player)); - } else { - CompoundTag tag = new CompoundTag(); - Tag argumentTag = wrapped.getTag(ArgumentsModifier.ARGUMENTS_TAG); - ItemBuildContext context; - if (argumentTag instanceof CompoundTag arguments) { - ContextHolder.Builder builder = ContextHolder.builder(); - for (Map.Entry entry : arguments.entrySet()) { - builder.withParameter(ContextKey.direct(entry.getKey()), entry.getValue().getAsString()); - } - context = ItemBuildContext.of(player, builder); + boolean forceReturn = false; + + // 处理收纳袋 + Object bundleContents = wrapped.getExactTag("Items"); + if (bundleContents != null) { + List newItems = new ArrayList<>(); + boolean changed = false; + for (Object tag : (Iterable) bundleContents) { + Object previousItem = FastNMS.INSTANCE.method$ItemStack$of(tag); + Optional itemStack = BukkitItemManager.instance().s2c(FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(previousItem), player); + if (itemStack.isPresent()) { + newItems.add(FastNMS.INSTANCE.field$CraftItemStack$handle(itemStack.get())); + changed = true; } else { - context = ItemBuildContext.of(player); + newItems.add(previousItem); } - for (ItemDataModifier modifier : customItem.clientBoundDataModifiers()) { - modifier.prepareNetworkItem(wrapped, context, tag); + } + if (changed) { + Object listTag = FastNMS.INSTANCE.constructor$ListTag(); + for (Object newItem : newItems) { + FastNMS.INSTANCE.method$ListTag$add(listTag, 0, FastNMS.INSTANCE.method$itemStack$save(newItem, FastNMS.INSTANCE.constructor$CompoundTag())); } - for (ItemDataModifier modifier : customItem.clientBoundDataModifiers()) { - modifier.apply(wrapped, context); - } - if (Config.interceptItem()) { - if (!tag.containsKey("display.Name")) { - processCustomName(wrapped, tag::put, context); - } - if (!tag.containsKey("display.Lore")) { - processLore(wrapped, tag::put, context); - } - } - if (tag.isEmpty()) { - if (hasDifferentMaterial) { - return Optional.of(wrapped); - } - return Optional.empty(); - } - wrapped.setTag(tag, NETWORK_ITEM_TAG); - return Optional.of(wrapped); + wrapped.setTag(listTag, "Items"); + forceReturn = true; } } + + // 处理container + Object containerContents = wrapped.getExactTag("BlockEntityTag"); + if (containerContents != null) { + Object itemTags = FastNMS.INSTANCE.method$CompoundTag$get(containerContents, "Items"); + if (itemTags != null) { + boolean changed = false; + List> newItems = new ArrayList<>(); + for (Object tag : (Iterable) itemTags) { + Object previousItem = FastNMS.INSTANCE.method$ItemStack$of(tag); + Optional itemStack = BukkitItemManager.instance().s2c(FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(previousItem), player); + byte slot = FastNMS.INSTANCE.method$ByteTag$value(FastNMS.INSTANCE.method$CompoundTag$get(tag, "Slot")); + if (itemStack.isPresent()) { + newItems.add(Pair.of(slot, FastNMS.INSTANCE.field$CraftItemStack$handle(itemStack.get()))); + changed = true; + } else { + newItems.add(Pair.of(slot, previousItem)); + } + } + if (changed) { + Object listTag = FastNMS.INSTANCE.constructor$ListTag(); + for (Pair newItem : newItems) { + Object newTag = FastNMS.INSTANCE.method$itemStack$save(newItem.right(), FastNMS.INSTANCE.constructor$CompoundTag()); + Object slotTag = FastNMS.INSTANCE.constructor$ByteTag(newItem.left()); + FastNMS.INSTANCE.method$CompoundTag$put(newTag, "Slot", slotTag); + FastNMS.INSTANCE.method$ListTag$add(listTag, 0, newTag); + } + wrapped.setTag(listTag, "BlockEntityTag", "Items"); + forceReturn = true; + } + } + } + + // todo 处理book + + Optional> optionalCustomItem = wrapped.getCustomItem(); + // 不是自定义物品或修改过的原版物品 + if (optionalCustomItem.isEmpty()) { + if (!Config.interceptItem()) { + return forceReturn ? Optional.of(wrapped) : Optional.empty(); + } + return new OtherItem(wrapped, forceReturn).process(NetworkTextReplaceContext.of(player)); + } + + // 应用 client-bound-material + BukkitCustomItem customItem = (BukkitCustomItem) optionalCustomItem.get(); + if (customItem.hasClientboundMaterial() && FastNMS.INSTANCE.method$ItemStack$getItem(wrapped.getLiteralObject()) != customItem.clientItem()) { + wrapped = wrapped.unsafeTransmuteCopy(customItem.clientItem(), wrapped.count()); + forceReturn = true; + } + + // 没有客户端侧组件 + if (!customItem.hasClientBoundDataModifier()) { + if (!Config.interceptItem()) { + return forceReturn ? Optional.of(wrapped) : Optional.empty(); + } + return new OtherItem(wrapped, forceReturn).process(NetworkTextReplaceContext.of(player)); + } + + // 应用client-bound-data + CompoundTag tag = new CompoundTag(); + // 创建context + Tag argumentTag = wrapped.getTag(ArgumentsModifier.ARGUMENTS_TAG); + NetworkItemBuildContext context; + if (argumentTag instanceof CompoundTag arguments) { + ContextHolder.Builder builder = ContextHolder.builder(); + for (Map.Entry entry : arguments.entrySet()) { + builder.withParameter(ContextKey.direct(entry.getKey()), entry.getValue().getAsString()); + } + context = NetworkItemBuildContext.of(player, builder); + } else { + context = NetworkItemBuildContext.of(player); + } + // 准备阶段 + for (ItemDataModifier modifier : customItem.clientBoundDataModifiers()) { + modifier.prepareNetworkItem(wrapped, context, tag); + } + // 应用阶段 + for (ItemDataModifier modifier : customItem.clientBoundDataModifiers()) { + modifier.apply(wrapped, context); + } + // 如果拦截物品的描述名称等 + if (Config.interceptItem()) { + if (!tag.containsKey("display.Name")) { + processCustomName(wrapped, tag::put, context); + } + if (!tag.containsKey("display.Lore")) { + processLore(wrapped, tag::put, context); + } + } + // 如果tag不空,则需要返回 + if (!tag.isEmpty()) { + wrapped.setTag(tag, NETWORK_ITEM_TAG); + forceReturn = true; + } + return forceReturn ? Optional.of(wrapped) : Optional.empty(); } public static boolean processCustomName(Item item, BiConsumer callback, Context context) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ModernNetworkItemHandler.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ModernNetworkItemHandler.java index 41bad6664..e92092a98 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ModernNetworkItemHandler.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ModernNetworkItemHandler.java @@ -31,95 +31,201 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler> c2s(Item wrapped) { - Tag customData = wrapped.getSparrowNBTComponent(ComponentTypes.CUSTOM_DATA); - if (!(customData instanceof CompoundTag compoundTag)) return Optional.empty(); + boolean forceReturn = false; + + // 处理收纳袋 + if (wrapped.hasComponent(DataComponentTypes.BUNDLE_CONTENTS)) { + Object bundleContents = wrapped.getExactComponent(DataComponentTypes.BUNDLE_CONTENTS); + List newItems = new ArrayList<>(); + boolean changed = false; + for (Object previousItem : FastNMS.INSTANCE.method$BundleContents$items(bundleContents)) { + Optional itemStack = BukkitItemManager.instance().c2s(FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(previousItem)); + if (itemStack.isPresent()) { + newItems.add(FastNMS.INSTANCE.field$CraftItemStack$handle(itemStack.get())); + changed = true; + } else { + newItems.add(previousItem); + } + } + if (changed) { + wrapped.setExactComponent(DataComponentTypes.BUNDLE_CONTENTS, FastNMS.INSTANCE.constructor$BundleContents(newItems)); + forceReturn = true; + } + } + + // 处理潜影盒等 + if (wrapped.hasComponent(DataComponentTypes.CONTAINER)) { + Object containerContents = wrapped.getExactComponent(DataComponentTypes.CONTAINER); + List newItems = new ArrayList<>(); + boolean changed = false; + for (Object previousItem : FastNMS.INSTANCE.field$ItemContainerContents$items(containerContents)) { + Optional itemStack = BukkitItemManager.instance().c2s(FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(previousItem)); + if (itemStack.isPresent()) { + newItems.add(FastNMS.INSTANCE.field$CraftItemStack$handle(itemStack.get())); + changed = true; + } else { + newItems.add(previousItem); + } + } + if (changed) { + wrapped.setExactComponent(DataComponentTypes.CONTAINER, FastNMS.INSTANCE.method$ItemContainerContents$fromItems(newItems)); + forceReturn = true; + } + } + + // 先尝试恢复client-bound-material Optional> optionalCustomItem = wrapped.getCustomItem(); - boolean hasDifferentMaterial = false; if (optionalCustomItem.isPresent()) { BukkitCustomItem customItem = (BukkitCustomItem) optionalCustomItem.get(); if (customItem.item() != FastNMS.INSTANCE.method$ItemStack$getItem(wrapped.getLiteralObject())) { wrapped = wrapped.unsafeTransmuteCopy(customItem.item(), wrapped.count()); - hasDifferentMaterial = true; + forceReturn = true; } } - CompoundTag networkData = compoundTag.getCompound(NETWORK_ITEM_TAG); - if (networkData == null) { - if (hasDifferentMaterial) { - return Optional.of(wrapped); - } - return Optional.empty(); - } - compoundTag.remove(NETWORK_ITEM_TAG); - for (Map.Entry entry : networkData.entrySet()) { - if (entry.getValue() instanceof CompoundTag tag) { - NetworkItemHandler.apply(entry.getKey(), tag, wrapped); + + // 获取custom data + Tag customData = wrapped.getSparrowNBTComponent(DataComponentTypes.CUSTOM_DATA); + if (customData instanceof CompoundTag compoundTag) { + CompoundTag networkData = compoundTag.getCompound(NETWORK_ITEM_TAG); + if (networkData != null) { + forceReturn = true; + // 移除此tag + compoundTag.remove(NETWORK_ITEM_TAG); + + // 恢复物品 + for (Map.Entry entry : networkData.entrySet()) { + if (entry.getValue() instanceof CompoundTag tag) { + NetworkItemHandler.apply(entry.getKey(), tag, wrapped); + } + } + + // 如果清空了,则直接移除这个组件 + if (compoundTag.isEmpty()) wrapped.resetComponent(DataComponentTypes.CUSTOM_DATA); + // 否则设置为新的 + else wrapped.setNBTComponent(DataComponentTypes.CUSTOM_DATA, compoundTag); } } - if (compoundTag.isEmpty()) wrapped.resetComponent(ComponentTypes.CUSTOM_DATA); - else wrapped.setNBTComponent(ComponentTypes.CUSTOM_DATA, compoundTag); - return Optional.of(wrapped); + + return forceReturn ? Optional.of(wrapped) : Optional.empty(); } @Override public Optional> s2c(Item wrapped, Player player) { - Item original = wrapped; - Optional> optionalCustomItem = wrapped.getCustomItem(); - if (optionalCustomItem.isEmpty()) { - if (!Config.interceptItem()) return Optional.empty(); - return new OtherItem(wrapped, false).process(NetworkTextReplaceContext.of(player)); - } else { - BukkitCustomItem customItem = (BukkitCustomItem) optionalCustomItem.get(); - Object serverItem = FastNMS.INSTANCE.method$ItemStack$getItem(wrapped.getLiteralObject()); - boolean hasDifferentMaterial = serverItem == customItem.item() && serverItem != customItem.clientItem(); - if (hasDifferentMaterial) { - wrapped = wrapped.unsafeTransmuteCopy(customItem.clientItem(), wrapped.count()); - } - if (!customItem.hasClientBoundDataModifier()) { - if (!Config.interceptItem() && !hasDifferentMaterial) return Optional.empty(); - return new OtherItem(wrapped, hasDifferentMaterial).process(NetworkTextReplaceContext.of(player)); - } else { - CompoundTag customData = Optional.ofNullable(wrapped.getSparrowNBTComponent(ComponentTypes.CUSTOM_DATA)).map(CompoundTag.class::cast).orElse(new CompoundTag()); - CompoundTag arguments = customData.getCompound(ArgumentsModifier.ARGUMENTS_TAG); - ItemBuildContext context; - if (arguments == null) { - context = ItemBuildContext.of(player); + boolean forceReturn = false; + + // 处理收纳袋 + if (wrapped.hasComponent(DataComponentTypes.BUNDLE_CONTENTS)) { + Object bundleContents = wrapped.getExactComponent(DataComponentTypes.BUNDLE_CONTENTS); + List newItems = new ArrayList<>(); + boolean changed = false; + for (Object previousItem : FastNMS.INSTANCE.method$BundleContents$items(bundleContents)) { + Optional itemStack = BukkitItemManager.instance().s2c(FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(previousItem), player); + if (itemStack.isPresent()) { + newItems.add(FastNMS.INSTANCE.field$CraftItemStack$handle(itemStack.get())); + changed = true; } else { - ContextHolder.Builder builder = ContextHolder.builder(); - for (Map.Entry entry : arguments.entrySet()) { - builder.withParameter(ContextKey.direct(entry.getKey()), entry.getValue().getAsString()); - } - context = ItemBuildContext.of(player, builder); + newItems.add(previousItem); } - CompoundTag tag = new CompoundTag(); - for (ItemDataModifier modifier : customItem.clientBoundDataModifiers()) { - modifier.prepareNetworkItem(original, context, tag); - } - for (ItemDataModifier modifier : customItem.clientBoundDataModifiers()) { - modifier.apply(wrapped, context); - } - if (Config.interceptItem()) { - if (!tag.containsKey(ComponentIds.ITEM_NAME)) { - if (VersionHelper.isOrAbove1_21_5()) processModernItemName(wrapped, () -> tag, context); - else processLegacyItemName(wrapped, () -> tag, context); - } - if (!tag.containsKey(ComponentIds.CUSTOM_NAME)) { - if (VersionHelper.isOrAbove1_21_5()) processModernCustomName(wrapped, () -> tag, context); - else processLegacyCustomName(wrapped, () -> tag, context); - } - if (!tag.containsKey(ComponentIds.LORE)) { - if (VersionHelper.isOrAbove1_21_5()) processModernLore(wrapped, () -> tag, context); - else processLegacyLore(wrapped, () -> tag, context); - } - } - if (tag.isEmpty()) { - if (hasDifferentMaterial) return Optional.of(wrapped); - return Optional.empty(); - } - customData.put(NETWORK_ITEM_TAG, tag); - wrapped.setNBTComponent(ComponentTypes.CUSTOM_DATA, customData); - return Optional.of(wrapped); + } + if (changed) { + wrapped.setExactComponent(DataComponentTypes.BUNDLE_CONTENTS, FastNMS.INSTANCE.constructor$BundleContents(newItems)); + forceReturn = true; } } + + // 处理潜影盒等 + if (wrapped.hasComponent(DataComponentTypes.CONTAINER)) { + Object containerContents = wrapped.getExactComponent(DataComponentTypes.CONTAINER); + List newItems = new ArrayList<>(); + for (Object previousItem : FastNMS.INSTANCE.field$ItemContainerContents$items(containerContents)) { + boolean changed = false; + Optional itemStack = BukkitItemManager.instance().s2c(FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(previousItem), player); + if (itemStack.isPresent()) { + newItems.add(FastNMS.INSTANCE.field$CraftItemStack$handle(itemStack.get())); + changed = true; + } else { + newItems.add(previousItem); + } + if (changed) { + wrapped.setExactComponent(DataComponentTypes.CONTAINER, FastNMS.INSTANCE.method$ItemContainerContents$fromItems(newItems)); + forceReturn = true; + } + } + } + + // todo 处理book + + // 不是自定义物品或修改过的原版物品 + Optional> optionalCustomItem = wrapped.getCustomItem(); + if (optionalCustomItem.isEmpty()) { + if (!Config.interceptItem()) { + return forceReturn ? Optional.of(wrapped) : Optional.empty(); + } + return new OtherItem(wrapped, forceReturn).process(NetworkTextReplaceContext.of(player)); + } + + BukkitCustomItem customItem = (BukkitCustomItem) optionalCustomItem.get(); + // 提前复制,这和物品类型相关 + Item original = wrapped; + // 应用 client-bound-material前提是服务端侧物品类型和客户端侧的不同 + if (customItem.hasClientboundMaterial() && FastNMS.INSTANCE.method$ItemStack$getItem(wrapped.getLiteralObject()) != customItem.clientItem()) { + wrapped = wrapped.unsafeTransmuteCopy(customItem.clientItem(), wrapped.count()); + forceReturn = true; + } + // 没有 client-bound-data + if (!customItem.hasClientBoundDataModifier()) { + if (!Config.interceptItem()) { + return forceReturn ? Optional.of(wrapped) : Optional.empty(); + } + return new OtherItem(wrapped, forceReturn).process(NetworkTextReplaceContext.of(player)); + } + // 获取custom data + CompoundTag customData = Optional.ofNullable(wrapped.getSparrowNBTComponent(DataComponentTypes.CUSTOM_DATA)) + .map(CompoundTag.class::cast) + .orElseGet(CompoundTag::new); + CompoundTag arguments = customData.getCompound(ArgumentsModifier.ARGUMENTS_TAG); + // 创建context + NetworkItemBuildContext context; + if (arguments == null) { + context = NetworkItemBuildContext.of(player); + } else { + ContextHolder.Builder builder = ContextHolder.builder(); + for (Map.Entry entry : arguments.entrySet()) { + builder.withParameter(ContextKey.direct(entry.getKey()), entry.getValue().getAsString()); + } + context = NetworkItemBuildContext.of(player, builder); + } + // 准备阶段 + CompoundTag tag = new CompoundTag(); + for (ItemDataModifier modifier : customItem.clientBoundDataModifiers()) { + modifier.prepareNetworkItem(original, context, tag); + } + // 应用阶段 + for (ItemDataModifier modifier : customItem.clientBoundDataModifiers()) { + modifier.apply(wrapped, context); + } + // 如果拦截物品的描述名称等 + if (Config.interceptItem()) { + if (!tag.containsKey(DataComponentIds.ITEM_NAME)) { + if (VersionHelper.isOrAbove1_21_5()) processModernItemName(wrapped, () -> tag, context); + else processLegacyItemName(wrapped, () -> tag, context); + } + if (!tag.containsKey(DataComponentIds.CUSTOM_NAME)) { + if (VersionHelper.isOrAbove1_21_5()) processModernCustomName(wrapped, () -> tag, context); + else processLegacyCustomName(wrapped, () -> tag, context); + } + if (!tag.containsKey(DataComponentIds.LORE)) { + if (VersionHelper.isOrAbove1_21_5()) processModernLore(wrapped, () -> tag, context); + else processLegacyLore(wrapped, () -> tag, context); + } + } + // 如果tag不空,则需要返回 + if (!tag.isEmpty()) { + customData.put(NETWORK_ITEM_TAG, tag); + wrapped.setNBTComponent(DataComponentTypes.CUSTOM_DATA, customData); + forceReturn = true; + } + return forceReturn ? Optional.of(wrapped) : Optional.empty(); } public static boolean processLegacyLore(Item item, Supplier tag, Context context) { @@ -143,7 +249,7 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler tokens = CraftEngine.instance().fontManager().matchTags(line); if (!tokens.isEmpty()) { item.customNameJson(AdventureHelper.componentToJson(AdventureHelper.replaceText(AdventureHelper.jsonToComponent(line), tokens, context))); - tag.get().put(ComponentIds.CUSTOM_NAME, NetworkItemHandler.pack(Operation.ADD, new StringTag(line))); + tag.get().put(DataComponentIds.CUSTOM_NAME, NetworkItemHandler.pack(Operation.ADD, new StringTag(line))); return true; } } @@ -171,7 +277,7 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler tokens = CraftEngine.instance().fontManager().matchTags(line); if (!tokens.isEmpty()) { item.itemNameJson(AdventureHelper.componentToJson(AdventureHelper.replaceText(AdventureHelper.jsonToComponent(line), tokens, context))); - tag.get().put(ComponentIds.ITEM_NAME, NetworkItemHandler.pack(Operation.ADD, new StringTag(line))); + tag.get().put(DataComponentIds.ITEM_NAME, NetworkItemHandler.pack(Operation.ADD, new StringTag(line))); return true; } } @@ -179,41 +285,38 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler item, Supplier tag, Context context) { - Tag nameTag = item.getSparrowNBTComponent(ComponentTypes.ITEM_NAME); + Tag nameTag = item.getSparrowNBTComponent(DataComponentTypes.ITEM_NAME); if (nameTag == null) return false; - String tagStr = nameTag.getAsString(); - Map tokens = CraftEngine.instance().fontManager().matchTags(tagStr); + Map tokens = CraftEngine.instance().fontManager().matchTags(nameTag); if (!tokens.isEmpty()) { - item.setNBTComponent(ComponentKeys.ITEM_NAME, AdventureHelper.componentToNbt(AdventureHelper.replaceText(AdventureHelper.nbtToComponent(nameTag), tokens, context))); - tag.get().put(ComponentIds.ITEM_NAME, NetworkItemHandler.pack(Operation.ADD, nameTag)); + item.setNBTComponent(DataComponentKeys.ITEM_NAME, AdventureHelper.componentToNbt(AdventureHelper.replaceText(AdventureHelper.nbtToComponent(nameTag), tokens, context))); + tag.get().put(DataComponentIds.ITEM_NAME, NetworkItemHandler.pack(Operation.ADD, nameTag)); return true; } return false; } public static boolean processModernCustomName(Item item, Supplier tag, Context context) { - Tag nameTag = item.getSparrowNBTComponent(ComponentTypes.CUSTOM_NAME); + Tag nameTag = item.getSparrowNBTComponent(DataComponentTypes.CUSTOM_NAME); if (nameTag == null) return false; - String tagStr = nameTag.getAsString(); - Map tokens = CraftEngine.instance().fontManager().matchTags(tagStr); + Map tokens = CraftEngine.instance().fontManager().matchTags(nameTag); if (!tokens.isEmpty()) { - item.setNBTComponent(ComponentKeys.CUSTOM_NAME, AdventureHelper.componentToNbt(AdventureHelper.replaceText(AdventureHelper.nbtToComponent(nameTag), tokens, context))); - tag.get().put(ComponentIds.CUSTOM_NAME, NetworkItemHandler.pack(Operation.ADD, nameTag)); + item.setNBTComponent(DataComponentKeys.CUSTOM_NAME, AdventureHelper.componentToNbt(AdventureHelper.replaceText(AdventureHelper.nbtToComponent(nameTag), tokens, context))); + tag.get().put(DataComponentIds.CUSTOM_NAME, NetworkItemHandler.pack(Operation.ADD, nameTag)); return true; } return false; } public static boolean processModernLore(Item item, Supplier tagSupplier, Context context) { - Tag loreTag = item.getSparrowNBTComponent(ComponentTypes.LORE); + Tag loreTag = item.getSparrowNBTComponent(DataComponentTypes.LORE); boolean changed = false; if (!(loreTag instanceof ListTag listTag)) { return false; } ListTag newLore = new ListTag(); for (Tag tag : listTag) { - String tagStr = tag.getAsString(); - Map tokens = CraftEngine.instance().fontManager().matchTags(tagStr); + Map tokens = CraftEngine.instance().fontManager().matchTags(tag); if (tokens.isEmpty()) { newLore.add(tag); } else { @@ -222,8 +325,8 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler) context.getItem())) { return InteractionResult.PASS; } - // 且没有shift + // 且没有shift或者忽略潜行的可交互方块 if (!player.isSecondaryUseActive()) { player.playSound(firePos, FLINT_SOUND, SoundSource.BLOCK, 1f, RandomUtils.generateRandomFloat(0.8f, 1.2f)); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/FurnitureItemBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/FurnitureItemBehavior.java index 83b4bdef6..81df0accb 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/FurnitureItemBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/FurnitureItemBehavior.java @@ -12,7 +12,7 @@ import net.momirealms.craftengine.bukkit.util.LocationUtils; import net.momirealms.craftengine.core.entity.furniture.AnchorType; import net.momirealms.craftengine.core.entity.furniture.CustomFurniture; import net.momirealms.craftengine.core.entity.furniture.FurnitureExtraData; -import net.momirealms.craftengine.core.entity.furniture.HitBox; +import net.momirealms.craftengine.core.entity.furniture.HitBoxConfig; import net.momirealms.craftengine.core.entity.player.InteractionResult; import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.item.Item; @@ -109,11 +109,11 @@ public class FurnitureItemBehavior extends ItemBehavior { Location furnitureLocation = new Location(world, finalPlacePosition.x(), finalPlacePosition.y(), finalPlacePosition.z(), (float) furnitureYaw, 0); List aabbs = new ArrayList<>(); - for (HitBox hitBox : placement.hitBoxes()) { - hitBox.initShapeForPlacement(finalPlacePosition.x(), finalPlacePosition.y(), finalPlacePosition.z(), (float) furnitureYaw, QuaternionUtils.toQuaternionf(0, Math.toRadians(180 - furnitureYaw), 0).conjugate(), aabbs::add); + for (HitBoxConfig hitBoxConfig : placement.hitBoxConfigs()) { + hitBoxConfig.initShapeForPlacement(finalPlacePosition.x(), finalPlacePosition.y(), finalPlacePosition.z(), (float) furnitureYaw, QuaternionUtils.toQuaternionf(0, Math.toRadians(180 - furnitureYaw), 0).conjugate(), aabbs::add); } if (!aabbs.isEmpty()) { - if (!FastNMS.INSTANCE.checkEntityCollision(context.getLevel().serverWorld(), aabbs.stream().map(it -> FastNMS.INSTANCE.constructor$AABB(it.minX, it.minY, it.minZ, it.maxX, it.maxY, it.maxZ)).toList(), finalPlacePosition.x(), finalPlacePosition.y(), finalPlacePosition.z())) { + if (!FastNMS.INSTANCE.checkEntityCollision(context.getLevel().serverWorld(), aabbs.stream().map(it -> FastNMS.INSTANCE.constructor$AABB(it.minX, it.minY, it.minZ, it.maxX, it.maxY, it.maxZ)).toList())) { return InteractionResult.FAIL; } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/LiquidCollisionBlockItemBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/LiquidCollisionBlockItemBehavior.java index 76482c0c5..a603438b8 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/LiquidCollisionBlockItemBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/LiquidCollisionBlockItemBehavior.java @@ -1,6 +1,5 @@ package net.momirealms.craftengine.bukkit.item.behavior; -import net.momirealms.craftengine.bukkit.block.BukkitBlockManager; import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MFluids; @@ -13,12 +12,10 @@ import net.momirealms.craftengine.core.item.behavior.ItemBehavior; import net.momirealms.craftengine.core.item.behavior.ItemBehaviorFactory; import net.momirealms.craftengine.core.item.context.UseOnContext; import net.momirealms.craftengine.core.pack.Pack; -import net.momirealms.craftengine.core.pack.PendingConfigSection; import net.momirealms.craftengine.core.plugin.CraftEngine; 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.MiscUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.world.BlockHitResult; import net.momirealms.craftengine.core.world.BlockPos; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_20_5.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_20_5.java index 2231d8908..7a24b32f8 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_20_5.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_20_5.java @@ -3,7 +3,7 @@ package net.momirealms.craftengine.bukkit.item.factory; import com.google.gson.JsonElement; import it.unimi.dsi.fastutil.ints.IntArrayList; import net.momirealms.craftengine.bukkit.item.ComponentItemWrapper; -import net.momirealms.craftengine.bukkit.item.ComponentTypes; +import net.momirealms.craftengine.bukkit.item.DataComponentTypes; 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; @@ -11,7 +11,7 @@ import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MRegistryOp import net.momirealms.craftengine.bukkit.util.EnchantmentUtils; import net.momirealms.craftengine.bukkit.util.KeyUtils; import net.momirealms.craftengine.core.attribute.AttributeModifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.data.Enchantment; import net.momirealms.craftengine.core.item.data.FireworkExplosion; import net.momirealms.craftengine.core.item.data.Trim; @@ -49,7 +49,7 @@ public class ComponentItemFactory1_20_5 extends BukkitItemFactory rootMap = (Map) item.getJavaComponent(ComponentTypes.CUSTOM_DATA).orElse(null); + Map rootMap = (Map) item.getJavaComponent(DataComponentTypes.CUSTOM_DATA).orElse(null); if (rootMap == null) return null; Object currentObj = rootMap; for (int i = 0; i < path.length; i++) { @@ -70,7 +70,7 @@ public class ComponentItemFactory1_20_5 extends BukkitItemFactory customModelData(ComponentItemWrapper item) { - return item.getJavaComponent(ComponentTypes.CUSTOM_MODEL_DATA); + return item.getJavaComponent(DataComponentTypes.CUSTOM_MODEL_DATA); } @Override protected void customNameJson(ComponentItemWrapper item, String json) { if (json == null) { - item.resetComponent(ComponentTypes.CUSTOM_NAME); + item.resetComponent(DataComponentTypes.CUSTOM_NAME); } else { - item.setJavaComponent(ComponentTypes.CUSTOM_NAME, json); + item.setJavaComponent(DataComponentTypes.CUSTOM_NAME, json); } } @Override protected Optional customNameJson(ComponentItemWrapper item) { - return item.getJavaComponent(ComponentTypes.CUSTOM_NAME); + return item.getJavaComponent(DataComponentTypes.CUSTOM_NAME); } @Override protected void itemNameJson(ComponentItemWrapper item, String json) { if (json == null) { - item.resetComponent(ComponentTypes.ITEM_NAME); + item.resetComponent(DataComponentTypes.ITEM_NAME); } else { - item.setJavaComponent(ComponentTypes.ITEM_NAME, json); + item.setJavaComponent(DataComponentTypes.ITEM_NAME, json); } } @Override protected Optional itemNameJson(ComponentItemWrapper item) { - return item.getJavaComponent(ComponentTypes.ITEM_NAME); + return item.getJavaComponent(DataComponentTypes.ITEM_NAME); } @Override protected void skull(ComponentItemWrapper item, String skullData) { if (skullData == null) { - item.resetComponent(ComponentTypes.PROFILE); + item.resetComponent(DataComponentTypes.PROFILE); } else { Map profile = Map.of("properties", List.of(Map.of("name", "textures", "value", skullData))); - item.setJavaComponent(ComponentTypes.PROFILE, profile); + item.setJavaComponent(DataComponentTypes.PROFILE, profile); } } @Override protected Optional> loreJson(ComponentItemWrapper item) { - return item.getJavaComponent(ComponentTypes.LORE); + return item.getJavaComponent(DataComponentTypes.LORE); } @Override protected void loreJson(ComponentItemWrapper item, List lore) { if (lore == null || lore.isEmpty()) { - item.resetComponent(ComponentTypes.LORE); + item.resetComponent(DataComponentTypes.LORE); } else { - item.setJavaComponent(ComponentTypes.LORE, lore); + item.setJavaComponent(DataComponentTypes.LORE, lore); } } @Override protected boolean unbreakable(ComponentItemWrapper item) { - return item.hasComponent(ComponentTypes.UNBREAKABLE); + return item.hasComponent(DataComponentTypes.UNBREAKABLE); } @Override protected void unbreakable(ComponentItemWrapper item, boolean unbreakable) { if (unbreakable) { - item.setJavaComponent(ComponentTypes.UNBREAKABLE, Map.of()); + item.setJavaComponent(DataComponentTypes.UNBREAKABLE, Map.of()); } else { - item.resetComponent(ComponentTypes.UNBREAKABLE); + item.resetComponent(DataComponentTypes.UNBREAKABLE); } } @Override protected Optional glint(ComponentItemWrapper item) { - return Optional.ofNullable((Boolean) item.getComponentExact(ComponentTypes.ENCHANTMENT_GLINT_OVERRIDE)); + return Optional.ofNullable((Boolean) item.getComponentExact(DataComponentTypes.ENCHANTMENT_GLINT_OVERRIDE)); } @Override protected void glint(ComponentItemWrapper item, Boolean glint) { if (glint == null) { - item.resetComponent(ComponentTypes.ENCHANTMENT_GLINT_OVERRIDE); + item.resetComponent(DataComponentTypes.ENCHANTMENT_GLINT_OVERRIDE); } else { - item.setJavaComponent(ComponentTypes.ENCHANTMENT_GLINT_OVERRIDE, glint); + item.setJavaComponent(DataComponentTypes.ENCHANTMENT_GLINT_OVERRIDE, glint); } } @Override protected Optional damage(ComponentItemWrapper item) { - return item.getJavaComponent(ComponentTypes.DAMAGE); + return item.getJavaComponent(DataComponentTypes.DAMAGE); } @Override protected void damage(ComponentItemWrapper item, Integer damage) { if (damage == null) { - item.resetComponent(ComponentTypes.DAMAGE); + item.resetComponent(DataComponentTypes.DAMAGE); } else { - item.setJavaComponent(ComponentTypes.DAMAGE, damage); + item.setJavaComponent(DataComponentTypes.DAMAGE, damage); } } @Override protected Optional dyedColor(ComponentItemWrapper item) { - if (!item.hasComponent(ComponentTypes.DYED_COLOR)) return Optional.empty(); - Object javaObj = getJavaComponent(item, ComponentTypes.DYED_COLOR); + if (!item.hasComponent(DataComponentTypes.DYED_COLOR)) return Optional.empty(); + Object javaObj = getJavaComponent(item, DataComponentTypes.DYED_COLOR); if (javaObj instanceof Integer integer) { return Optional.of(Color.fromDecimal(integer)); } else if (javaObj instanceof Map map) { @@ -400,30 +400,30 @@ public class ComponentItemFactory1_20_5 extends BukkitItemFactory damage = item.getJavaComponent(ComponentTypes.MAX_DAMAGE); + Optional damage = item.getJavaComponent(DataComponentTypes.MAX_DAMAGE); return damage.orElseGet(() -> (int) item.getItem().getType().getMaxDurability()); } @Override protected void maxDamage(ComponentItemWrapper item, Integer damage) { if (damage == null) { - item.resetComponent(ComponentTypes.MAX_DAMAGE); + item.resetComponent(DataComponentTypes.MAX_DAMAGE); } else { - item.setJavaComponent(ComponentTypes.MAX_DAMAGE, damage); + item.setJavaComponent(DataComponentTypes.MAX_DAMAGE, damage); } } @Override protected Optional getEnchantment(ComponentItemWrapper item, Key key) { - Object enchant = item.getComponentExact(ComponentTypes.ENCHANTMENTS); + Object enchant = item.getComponentExact(DataComponentTypes.ENCHANTMENTS); if (enchant == null) return Optional.empty(); try { Map map = EnchantmentUtils.toMap(enchant); @@ -439,26 +439,26 @@ public class ComponentItemFactory1_20_5 extends BukkitItemFactory enchantments) { if (enchantments == null || enchantments.isEmpty()) { - item.resetComponent(ComponentTypes.ENCHANTMENTS); + item.resetComponent(DataComponentTypes.ENCHANTMENTS); } else { Map enchants = new HashMap<>(); for (Enchantment enchantment : enchantments) { enchants.put(enchantment.id().toString(), enchantment.level()); } - item.setJavaComponent(ComponentTypes.ENCHANTMENTS, enchants); + item.setJavaComponent(DataComponentTypes.ENCHANTMENTS, enchants); } } @Override protected void storedEnchantments(ComponentItemWrapper item, List enchantments) { if (enchantments == null || enchantments.isEmpty()) { - item.resetComponent(ComponentTypes.STORED_ENCHANTMENTS); + item.resetComponent(DataComponentTypes.STORED_ENCHANTMENTS); } else { Map enchants = new HashMap<>(); for (Enchantment enchantment : enchantments) { enchants.put(enchantment.id().toString(), enchantment.level()); } - item.setJavaComponent(ComponentTypes.STORED_ENCHANTMENTS, enchants); + item.setJavaComponent(DataComponentTypes.STORED_ENCHANTMENTS, enchants); } } @@ -469,39 +469,39 @@ public class ComponentItemFactory1_20_5 extends BukkitItemFactory stackSize = item.getJavaComponent(ComponentTypes.MAX_STACK_SIZE); + Optional stackSize = item.getJavaComponent(DataComponentTypes.MAX_STACK_SIZE); return stackSize.orElseGet(() -> item.getItem().getType().getMaxStackSize()); } @Override protected void maxStackSize(ComponentItemWrapper item, Integer maxStackSize) { if (maxStackSize == null) { - item.resetComponent(ComponentTypes.MAX_STACK_SIZE); + item.resetComponent(DataComponentTypes.MAX_STACK_SIZE); } else { - item.setJavaComponent(ComponentTypes.MAX_STACK_SIZE, maxStackSize); + item.setJavaComponent(DataComponentTypes.MAX_STACK_SIZE, maxStackSize); } } @Override protected void repairCost(ComponentItemWrapper item, Integer data) { if (data == null) { - item.resetComponent(ComponentTypes.REPAIR_COST); + item.resetComponent(DataComponentTypes.REPAIR_COST); } else { - item.setJavaComponent(ComponentTypes.REPAIR_COST, data); + item.setJavaComponent(DataComponentTypes.REPAIR_COST, data); } } @Override protected Optional repairCost(ComponentItemWrapper item) { - return item.getJavaComponent(ComponentTypes.REPAIR_COST); + return item.getJavaComponent(DataComponentTypes.REPAIR_COST); } @Override protected void trim(ComponentItemWrapper item, Trim trim) { if (trim == null) { - item.resetComponent(ComponentTypes.TRIM); + item.resetComponent(DataComponentTypes.TRIM); } else { - item.setJavaComponent(ComponentTypes.TRIM, Map.of( + item.setJavaComponent(DataComponentTypes.TRIM, Map.of( "pattern", trim.pattern().asString(), "material", trim.material().asString() )); @@ -510,7 +510,7 @@ public class ComponentItemFactory1_20_5 extends BukkitItemFactory trim(ComponentItemWrapper item) { - Optional trim = item.getJavaComponent(ComponentTypes.TRIM); + Optional trim = item.getJavaComponent(DataComponentTypes.TRIM); if (trim.isEmpty()) { return Optional.empty(); } @@ -522,7 +522,7 @@ public class ComponentItemFactory1_20_5 extends BukkitItemFactory fireworkExplosion(ComponentItemWrapper item) { - Optional optionalExplosion = item.getJavaComponent(ComponentTypes.FIREWORK_EXPLOSION); + Optional optionalExplosion = item.getJavaComponent(DataComponentTypes.FIREWORK_EXPLOSION); if (optionalExplosion.isEmpty()) return Optional.empty(); Map explosions = MiscUtils.castToMap(optionalExplosion.get(), false); FireworkExplosion.Shape shape = Optional.ofNullable(FireworkExplosion.Shape.byName((String) explosions.get("shape"))).orElse(FireworkExplosion.Shape.SMALL_BALL); @@ -542,9 +542,9 @@ public class ComponentItemFactory1_20_5 extends BukkitItemFactory modifierList) { - CompoundTag compoundTag = (CompoundTag) item.getSparrowNBTComponent(ComponentKeys.ATTRIBUTE_MODIFIERS).orElseGet(CompoundTag::new); + CompoundTag compoundTag = (CompoundTag) item.getSparrowNBTComponent(DataComponentKeys.ATTRIBUTE_MODIFIERS).orElseGet(CompoundTag::new); ListTag modifiers = new ListTag(); compoundTag.put("modifiers", modifiers); for (AttributeModifier modifier : modifierList) { @@ -607,6 +607,16 @@ public class ComponentItemFactory1_20_5 extends BukkitItemFactory> blockState(ComponentItemWrapper item) { + return item.getJavaComponent(DataComponentTypes.BLOCK_STATE); + } + + @Override + protected void blockState(ComponentItemWrapper item, Map state) { + item.setJavaComponent(DataComponentTypes.BLOCK_STATE, state); } } \ No newline at end of file diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21.java index c59058968..c2de613b5 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21.java @@ -1,7 +1,7 @@ package net.momirealms.craftengine.bukkit.item.factory; import net.momirealms.craftengine.bukkit.item.ComponentItemWrapper; -import net.momirealms.craftengine.bukkit.item.ComponentTypes; +import net.momirealms.craftengine.bukkit.item.DataComponentTypes; import net.momirealms.craftengine.core.item.data.JukeboxPlayable; import net.momirealms.craftengine.core.plugin.CraftEngine; @@ -16,7 +16,7 @@ public class ComponentItemFactory1_21 extends ComponentItemFactory1_20_5 { @Override protected Optional jukeboxSong(ComponentItemWrapper item) { - Optional> map = item.getJavaComponent(ComponentTypes.JUKEBOX_PLAYABLE); + Optional> map = item.getJavaComponent(DataComponentTypes.JUKEBOX_PLAYABLE); return map.map(song -> new JukeboxPlayable( (String) song.get("song"), (boolean) song.getOrDefault("show_in_tooltip", true)) @@ -25,7 +25,7 @@ public class ComponentItemFactory1_21 extends ComponentItemFactory1_20_5 { @Override protected void jukeboxSong(ComponentItemWrapper item, JukeboxPlayable data) { - item.setJavaComponent(ComponentTypes.JUKEBOX_PLAYABLE, Map.of( + item.setJavaComponent(DataComponentTypes.JUKEBOX_PLAYABLE, Map.of( "song", data.song(), "show_in_tooltip", true )); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_2.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_2.java index 99263f9d8..a183a8864 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_2.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_2.java @@ -1,7 +1,7 @@ package net.momirealms.craftengine.bukkit.item.factory; import net.momirealms.craftengine.bukkit.item.ComponentItemWrapper; -import net.momirealms.craftengine.bukkit.item.ComponentTypes; +import net.momirealms.craftengine.bukkit.item.DataComponentTypes; import net.momirealms.craftengine.core.entity.EquipmentSlot; import net.momirealms.craftengine.core.item.setting.EquipmentData; import net.momirealms.craftengine.core.plugin.CraftEngine; @@ -21,43 +21,43 @@ public class ComponentItemFactory1_21_2 extends ComponentItemFactory1_21 { @Override protected void tooltipStyle(ComponentItemWrapper item, String data) { if (data == null) { - item.resetComponent(ComponentTypes.TOOLTIP_STYLE); + item.resetComponent(DataComponentTypes.TOOLTIP_STYLE); } else { - item.setJavaComponent(ComponentTypes.TOOLTIP_STYLE, data); + item.setJavaComponent(DataComponentTypes.TOOLTIP_STYLE, data); } } @Override protected Optional tooltipStyle(ComponentItemWrapper item) { - return item.getJavaComponent(ComponentTypes.TOOLTIP_STYLE); + return item.getJavaComponent(DataComponentTypes.TOOLTIP_STYLE); } @Override protected void itemModel(ComponentItemWrapper item, String data) { if (data == null) { - item.resetComponent(ComponentTypes.ITEM_MODEL); + item.resetComponent(DataComponentTypes.ITEM_MODEL); } else { - item.setJavaComponent(ComponentTypes.ITEM_MODEL, data); + item.setJavaComponent(DataComponentTypes.ITEM_MODEL, data); } } @Override protected Optional itemModel(ComponentItemWrapper item) { - return item.getJavaComponent(ComponentTypes.ITEM_MODEL); + return item.getJavaComponent(DataComponentTypes.ITEM_MODEL); } @Override protected void equippable(ComponentItemWrapper item, EquipmentData data) { if (data == null) { - item.resetComponent(ComponentTypes.EQUIPPABLE); + item.resetComponent(DataComponentTypes.EQUIPPABLE); } else { - item.setSparrowNBTComponent(ComponentTypes.EQUIPPABLE, data.toNBT()); + item.setSparrowNBTComponent(DataComponentTypes.EQUIPPABLE, data.toNBT()); } } @Override protected Optional equippable(ComponentItemWrapper item) { - Optional optionalData = item.getJavaComponent(ComponentTypes.EQUIPPABLE); + Optional optionalData = item.getJavaComponent(DataComponentTypes.EQUIPPABLE); if (optionalData.isEmpty()) return Optional.empty(); Map data = MiscUtils.castToMap(optionalData.get(), false); String slot = data.get("slot").toString(); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_4.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_4.java index df4ed6d31..32ecbd377 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_4.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_4.java @@ -1,7 +1,7 @@ package net.momirealms.craftengine.bukkit.item.factory; import net.momirealms.craftengine.bukkit.item.ComponentItemWrapper; -import net.momirealms.craftengine.bukkit.item.ComponentTypes; +import net.momirealms.craftengine.bukkit.item.DataComponentTypes; import net.momirealms.craftengine.core.plugin.CraftEngine; import java.util.List; @@ -16,7 +16,7 @@ public class ComponentItemFactory1_21_4 extends ComponentItemFactory1_21_2 { @Override protected Optional customModelData(ComponentItemWrapper item) { - Optional optional = item.getJavaComponent(ComponentTypes.CUSTOM_MODEL_DATA); + Optional optional = item.getJavaComponent(DataComponentTypes.CUSTOM_MODEL_DATA); if (optional.isEmpty()) return Optional.empty(); @SuppressWarnings("unchecked") Map data = (Map) optional.get(); @@ -29,9 +29,9 @@ public class ComponentItemFactory1_21_4 extends ComponentItemFactory1_21_2 { @Override protected void customModelData(ComponentItemWrapper item, Integer data) { if (data == null) { - item.resetComponent(ComponentTypes.CUSTOM_MODEL_DATA); + item.resetComponent(DataComponentTypes.CUSTOM_MODEL_DATA); } else { - item.setJavaComponent(ComponentTypes.CUSTOM_MODEL_DATA, Map.of("floats", List.of(data.floatValue()))); + item.setJavaComponent(DataComponentTypes.CUSTOM_MODEL_DATA, Map.of("floats", List.of(data.floatValue()))); } } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_5.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_5.java index e8c513d0d..283f4f8ee 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_5.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_5.java @@ -4,9 +4,9 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; import net.kyori.adventure.text.Component; import net.momirealms.craftengine.bukkit.item.ComponentItemWrapper; -import net.momirealms.craftengine.bukkit.item.ComponentTypes; +import net.momirealms.craftengine.bukkit.item.DataComponentTypes; import net.momirealms.craftengine.core.attribute.AttributeModifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.data.JukeboxPlayable; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.util.AdventureHelper; @@ -30,23 +30,23 @@ public class ComponentItemFactory1_21_5 extends ComponentItemFactory1_21_4 { @Override protected void customNameJson(ComponentItemWrapper item, String json) { if (json == null) { - item.resetComponent(ComponentTypes.CUSTOM_NAME); + item.resetComponent(DataComponentTypes.CUSTOM_NAME); } else { - item.setSparrowNBTComponent(ComponentTypes.CUSTOM_NAME, AdventureHelper.componentToNbt(AdventureHelper.jsonToComponent(json))); + item.setSparrowNBTComponent(DataComponentTypes.CUSTOM_NAME, AdventureHelper.componentToNbt(AdventureHelper.jsonToComponent(json))); } } @Override protected Optional customNameJson(ComponentItemWrapper item) { - return item.getJsonComponent(ComponentTypes.CUSTOM_NAME).map(it -> GsonHelper.get().toJson(it)); + return item.getJsonComponent(DataComponentTypes.CUSTOM_NAME).map(it -> GsonHelper.get().toJson(it)); } @Override protected void customNameComponent(ComponentItemWrapper item, Component component) { if (component == null) { - item.resetComponent(ComponentTypes.CUSTOM_NAME); + item.resetComponent(DataComponentTypes.CUSTOM_NAME); } else { - item.setSparrowNBTComponent(ComponentTypes.CUSTOM_NAME, AdventureHelper.componentToNbt(component)); + item.setSparrowNBTComponent(DataComponentTypes.CUSTOM_NAME, AdventureHelper.componentToNbt(component)); } } @@ -58,30 +58,30 @@ public class ComponentItemFactory1_21_5 extends ComponentItemFactory1_21_4 { @Override protected void itemNameJson(ComponentItemWrapper item, String json) { if (json == null) { - item.resetComponent(ComponentTypes.ITEM_NAME); + item.resetComponent(DataComponentTypes.ITEM_NAME); } else { - item.setSparrowNBTComponent(ComponentTypes.ITEM_NAME, AdventureHelper.componentToNbt(AdventureHelper.jsonToComponent(json))); + item.setSparrowNBTComponent(DataComponentTypes.ITEM_NAME, AdventureHelper.componentToNbt(AdventureHelper.jsonToComponent(json))); } } @Override protected void itemNameComponent(ComponentItemWrapper item, Component component) { if (component == null) { - item.resetComponent(ComponentTypes.ITEM_NAME); + item.resetComponent(DataComponentTypes.ITEM_NAME); } else { - item.setSparrowNBTComponent(ComponentTypes.ITEM_NAME, AdventureHelper.componentToNbt(component)); + item.setSparrowNBTComponent(DataComponentTypes.ITEM_NAME, AdventureHelper.componentToNbt(component)); } } @Override protected Optional itemNameJson(ComponentItemWrapper item) { - return item.getJsonComponent(ComponentTypes.ITEM_NAME).map(it -> GsonHelper.get().toJson(it)); + return item.getJsonComponent(DataComponentTypes.ITEM_NAME).map(it -> GsonHelper.get().toJson(it)); } @Override protected Optional> loreJson(ComponentItemWrapper item) { - if (!item.hasComponent(ComponentTypes.LORE)) return Optional.empty(); - Optional json = item.getJsonComponent(ComponentTypes.LORE); + if (!item.hasComponent(DataComponentTypes.LORE)) return Optional.empty(); + Optional json = item.getJsonComponent(DataComponentTypes.LORE); if (json.isEmpty()) return Optional.empty(); List lore = new ArrayList<>(); for (JsonElement jsonElement : (JsonArray) json.get()) { @@ -93,40 +93,40 @@ public class ComponentItemFactory1_21_5 extends ComponentItemFactory1_21_4 { @Override protected void loreComponent(ComponentItemWrapper item, List lore) { if (lore == null || lore.isEmpty()) { - item.resetComponent(ComponentTypes.LORE); + item.resetComponent(DataComponentTypes.LORE); } else { List loreTags = new ArrayList<>(); for (Component component : lore) { loreTags.add(AdventureHelper.componentToTag(component)); } - item.setSparrowNBTComponent(ComponentTypes.LORE, new ListTag(loreTags)); + item.setSparrowNBTComponent(DataComponentTypes.LORE, new ListTag(loreTags)); } } @Override protected void loreJson(ComponentItemWrapper item, List lore) { if (lore == null || lore.isEmpty()) { - item.resetComponent(ComponentTypes.LORE); + item.resetComponent(DataComponentTypes.LORE); } else { List loreTags = new ArrayList<>(); for (String json : lore) { loreTags.add(AdventureHelper.componentToTag(AdventureHelper.jsonToComponent(json))); } - item.setSparrowNBTComponent(ComponentTypes.LORE, new ListTag(loreTags)); + item.setSparrowNBTComponent(DataComponentTypes.LORE, new ListTag(loreTags)); } } @Override protected Optional jukeboxSong(ComponentItemWrapper item) { - if (!item.hasComponent(ComponentTypes.JUKEBOX_PLAYABLE)) return Optional.empty(); - String song = (String) item.getJavaComponent(ComponentTypes.JUKEBOX_PLAYABLE).orElse(null); + if (!item.hasComponent(DataComponentTypes.JUKEBOX_PLAYABLE)) return Optional.empty(); + String song = (String) item.getJavaComponent(DataComponentTypes.JUKEBOX_PLAYABLE).orElse(null); if (song == null) return Optional.empty(); return Optional.of(new JukeboxPlayable(song, true)); } @Override protected void jukeboxSong(ComponentItemWrapper item, JukeboxPlayable data) { - item.setJavaComponent(ComponentTypes.JUKEBOX_PLAYABLE, data.song()); + item.setJavaComponent(DataComponentTypes.JUKEBOX_PLAYABLE, data.song()); } @Override @@ -151,6 +151,6 @@ public class ComponentItemFactory1_21_5 extends ComponentItemFactory1_21_4 { } modifiers.add(modifierTag); } - item.setSparrowNBTComponent(ComponentKeys.ATTRIBUTE_MODIFIERS, modifiers); + item.setSparrowNBTComponent(DataComponentKeys.ATTRIBUTE_MODIFIERS, modifiers); } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/UniversalItemFactory.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/UniversalItemFactory.java index 83520ce08..a00c683a9 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/UniversalItemFactory.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/UniversalItemFactory.java @@ -303,6 +303,18 @@ public class UniversalItemFactory extends BukkitItemFactory { } } + @Override + protected Optional> blockState(LegacyItemWrapper item) { + Map state = item.getJavaTag("BlockStateTag"); + if (state == null) return Optional.empty(); + return Optional.of(state); + } + + @Override + protected void blockState(LegacyItemWrapper item, Map state) { + item.setTag(state, "BlockStateTag"); + } + @Override protected Optional trim(LegacyItemWrapper item) { String material = item.getJavaTag("Trim", "material"); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/listener/ItemEventListener.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/listener/ItemEventListener.java index 9038391e2..9f38f16d0 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/listener/ItemEventListener.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/listener/ItemEventListener.java @@ -4,6 +4,7 @@ import io.papermc.paper.event.block.CompostItemEvent; import net.momirealms.craftengine.bukkit.api.BukkitAdaptors; import net.momirealms.craftengine.bukkit.api.event.CustomBlockInteractEvent; import net.momirealms.craftengine.bukkit.entity.BukkitEntity; +import net.momirealms.craftengine.bukkit.entity.BukkitItemEntity; import net.momirealms.craftengine.bukkit.item.BukkitCustomItem; import net.momirealms.craftengine.bukkit.item.BukkitItemManager; import net.momirealms.craftengine.bukkit.nms.FastNMS; @@ -21,6 +22,7 @@ import net.momirealms.craftengine.core.item.CustomItem; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.behavior.ItemBehavior; +import net.momirealms.craftengine.core.item.context.BlockPlaceContext; import net.momirealms.craftengine.core.item.context.UseOnContext; import net.momirealms.craftengine.core.item.setting.FoodData; import net.momirealms.craftengine.core.item.updater.ItemUpdateResult; @@ -141,7 +143,7 @@ public class ItemEventListener implements Listener { Direction direction = DirectionUtils.toDirection(event.getBlockFace()); BlockPos pos = LocationUtils.toBlockPos(block.getLocation()); Vec3d vec3d = new Vec3d(interactionPoint.getX(), interactionPoint.getY(), interactionPoint.getZ()); - hitResult = new BlockHitResult(vec3d, direction, pos, false); + hitResult = new BlockHitResult(vec3d, direction, pos, false); // todo 需要检测玩家是否在方块内 } // 处理自定义方块 @@ -165,9 +167,8 @@ public class ItemEventListener implements Listener { // fix client side issues if (action.isRightClick() && hitResult != null && - InteractUtils.willConsume(player, BlockStateUtils.fromBlockData(immutableBlockState.vanillaBlockState().literalObject()), hitResult, itemInHand)) { + InteractUtils.canPlaceVisualBlock(player, BlockStateUtils.fromBlockData(immutableBlockState.vanillaBlockState().literalObject()), hitResult, itemInHand)) { player.updateInventory(); - //PlayerUtils.resendItemInHand(player); } Cancellable dummy = Cancellable.dummy(); @@ -285,15 +286,13 @@ public class ItemEventListener implements Listener { } // custom item else { - if (optionalCustomItem.get().settings().canPlaceRelatedVanillaBlock()) { - // 如果用户设置了允许放置对应的原版方块,那么直接返回。 - // 这种情况下最好是return,以避免同时触发多个behavior发生冲突 - // 当用户选择其作为原版方块放下时,自定义行为可能已经不重要了? - return; - } else { - // todo 实际上这里的处理并不正确,因为判断玩家是否能够放置那个方块需要更加细节的判断。比如玩家无法对着树叶放置火把,但是交互事件依然触发,此情况下不可丢弃自定义行为。 + if (optionalCustomItem.get().settings().disableVanillaBehavior()) { + // 不能在BlockPlaceEvent里检测,是因为种农作物不触发相关事件 + // 允许尝试放置方块 if (serverPlayer.isSecondaryUseActive() || !InteractUtils.isInteractable(player, blockData, hitResult, itemInHand)) { - event.setCancelled(true); + if (InteractUtils.canPlaceBlock(new BlockPlaceContext(new UseOnContext(serverPlayer, hand, itemInHand, hitResult)))) { + event.setCancelled(true); + } } } } @@ -578,16 +577,31 @@ public class ItemEventListener implements Listener { } } - @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH) + @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST) public void onPickUpItem(EntityPickupItemEvent event) { - if (!Config.triggerUpdatePickUp()) return; if (!(event.getEntity() instanceof Player player)) return; org.bukkit.entity.Item itemDrop = event.getItem(); ItemStack itemStack = itemDrop.getItemStack(); Item wrapped = this.itemManager.wrap(itemStack); - ItemUpdateResult result = this.itemManager.updateItem(wrapped, () -> ItemBuildContext.of(BukkitAdaptors.adapt(player))); - if (result.updated()) { - itemDrop.setItemStack((ItemStack) result.finalItem().getItem()); + Optional> optionalCustomItem = wrapped.getCustomItem(); + if (optionalCustomItem.isEmpty()) return; + BukkitServerPlayer serverPlayer = BukkitAdaptors.adapt(player); + CustomItem customItem = optionalCustomItem.get(); + if (Config.triggerUpdatePickUp() && customItem.updater().isPresent()) { + ItemUpdateResult result = this.itemManager.updateItem(wrapped, () -> ItemBuildContext.of(serverPlayer)); + if (result.updated()) { + itemDrop.setItemStack((ItemStack) result.finalItem().getItem()); + } + } + Cancellable dummy = Cancellable.dummy(); + customItem.execute(PlayerOptionalContext.of(serverPlayer, ContextHolder.builder() + .withParameter(DirectContextParameters.ENTITY, new BukkitItemEntity(itemDrop)) + .withParameter(DirectContextParameters.POSITION, LocationUtils.toWorldPosition(itemDrop.getLocation())) + .withParameter(DirectContextParameters.EVENT, dummy) + ), EventTrigger.PICK_UP); + if (dummy.isCancelled()) { + event.setCancelled(true); + return; } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/BukkitRecipeManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/BukkitRecipeManager.java index e385ffca4..66e444da9 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/BukkitRecipeManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/BukkitRecipeManager.java @@ -19,7 +19,6 @@ import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemKeys; import net.momirealms.craftengine.core.item.recipe.*; -import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.registry.BuiltInRegistries; import net.momirealms.craftengine.core.util.*; @@ -29,7 +28,6 @@ import org.bukkit.event.HandlerList; import org.bukkit.inventory.ItemStack; import java.io.Reader; -import java.lang.reflect.Array; import java.util.*; import java.util.function.BiFunction; import java.util.function.Consumer; @@ -113,88 +111,7 @@ public class BukkitRecipeManager extends AbstractRecipeManager { } ); - private static void modifyShapedRecipeIngredients(CustomShapedRecipe recipe, Object shapedRecipe) { - try { - List> actualIngredients = recipe.parsedPattern().ingredients() - .stream() - .filter(Optional::isPresent) - .map(Optional::get) - .toList(); - if (VersionHelper.isOrAbove1_21_2()) { - CoreReflections.methodHandle$ShapedRecipe$placementInfoSetter.invokeExact(shapedRecipe, (Object) null); - } - List ingredients = getIngredientsFromShapedRecipe(shapedRecipe); - modifyIngredients(ingredients, actualIngredients); - } catch (Throwable e) { - CraftEngine.instance().logger().warn("Failed to inject shaped recipe", e); - } - } - - @SuppressWarnings("unchecked") - public static List getIngredientsFromShapedRecipe(Object recipe) { - List ingredients = new ArrayList<>(); - try { - if (VersionHelper.isOrAbove1_20_3()) { - Object pattern = CoreReflections.methodHandle$1_20_3$ShapedRecipe$patternGetter.invokeExact(recipe); - if (VersionHelper.isOrAbove1_21_2()) { - List> optionals = (List>) CoreReflections.methodHandle$ShapedRecipePattern$ingredients1_21_2Getter.invokeExact(pattern); - for (Optional optional : optionals) { - optional.ifPresent(ingredients::add); - } - } else { - List objectList = (List) CoreReflections.methodHandle$ShapedRecipePattern$ingredients1_20_3Getter.invokeExact(pattern); - for (Object object : objectList) { - Object[] values = (Object[]) CoreReflections.methodHandle$Ingredient$valuesGetter.invokeExact(object); - // is empty or not - if (values.length != 0) { - ingredients.add(object); - } - } - } - } else { - List objectList = (List) CoreReflections.methodHandle$1_20_1$ShapedRecipe$recipeItemsGetter.invokeExact(recipe); - for (Object object : objectList) { - Object[] values = (Object[]) CoreReflections.methodHandle$Ingredient$valuesGetter.invokeExact(object); - if (values.length != 0) { - ingredients.add(object); - } - } - } - } catch (Throwable e) { - CraftEngine.instance().logger().warn("Failed to get ingredients from shaped recipe", e); - } - return ingredients; - } - - private static void modifyShapelessRecipeIngredients(CustomShapelessRecipe recipe, Object shapelessRecipe) { - try { - List> actualIngredients = recipe.ingredientsInUse(); - if (VersionHelper.isOrAbove1_21_2()) { - CoreReflections.methodHandle$ShapelessRecipe$placementInfoSetter.invokeExact(shapelessRecipe, (Object) null); - } - @SuppressWarnings("unchecked") - List ingredients = (List) CoreReflections.methodHandle$ShapelessRecipe$ingredientsGetter.invokeExact(shapelessRecipe); - modifyIngredients(ingredients, actualIngredients); - } catch (Throwable e) { - CraftEngine.instance().logger().warn("Failed to inject shapeless recipe", e); - } - } - - private static void modifyCookingRecipeIngredient(CustomCookingRecipe recipe, Object cookingRecipe) { - try { - Ingredient actualIngredient = recipe.ingredient(); - Object ingredient; - if (VersionHelper.isOrAbove1_21_2()) { - ingredient = CoreReflections.methodHandle$SingleItemRecipe$inputGetter.invokeExact(cookingRecipe); - } else { - ingredient = CoreReflections.methodHandle$AbstractCookingRecipe$inputGetter.invokeExact(cookingRecipe); - } - modifyIngredients(List.of(ingredient), List.of(actualIngredient)); - } catch (Throwable e) { - CraftEngine.instance().logger().warn("Failed to inject cooking recipe", e); - } - } - + // nms 模块需要使用此方法 public static List getIngredientLooks(List holders) { List itemStacks = new ArrayList<>(); for (UniqueKey holder : holders) { @@ -213,28 +130,6 @@ public class BukkitRecipeManager extends AbstractRecipeManager { return itemStacks; } - private static void modifyIngredients(List fakeIngredients, List> actualIngredients) throws Throwable { - if (fakeIngredients.size() != actualIngredients.size()) { - throw new IllegalArgumentException("Ingredient count mismatch"); - } - for (int i = 0; i < fakeIngredients.size(); i++) { - Object ingredient = fakeIngredients.get(i); - Ingredient actualIngredient = actualIngredients.get(i); - List items = getIngredientLooks(actualIngredient.items()); - if (VersionHelper.isOrAbove1_21_4()) { - CoreReflections.methodHandle$Ingredient$itemStacksSetter.invokeExact(ingredient, (Set) new CustomIngredientSet(items, actualIngredient)); - } else if (VersionHelper.isOrAbove1_21_2()) { - CoreReflections.methodHandle$Ingredient$itemStacksSetter.invokeExact(ingredient, (List) new CustomIngredientList(items, actualIngredient)); - } else { - Object itemStackArray = Array.newInstance(CoreReflections.clazz$ItemStack, items.size()); - for (int j = 0; j < items.size(); j++) { - Array.set(itemStackArray, j, items.get(j)); - } - CoreReflections.methodHandle$Ingredient$itemStacksSetter.invokeExact(ingredient, (Object) itemStackArray); - } - } - } - public static Object toRecipeResourceKey(Key id) { return FastNMS.INSTANCE.method$ResourceKey$create(MRegistries.RECIPE, KeyUtils.toResourceLocation(id)); } @@ -251,6 +146,7 @@ public class BukkitRecipeManager extends AbstractRecipeManager { */ private final BukkitCraftEngine plugin; private final RecipeEventListener recipeEventListener; + private final CrafterEventListener crafterEventListener; // 欺骗服务端使其以为自己处于启动阶段 private Object stolenFeatureFlagSet; // 需要在主线程卸载的配方 @@ -265,6 +161,7 @@ public class BukkitRecipeManager extends AbstractRecipeManager { instance = this; this.plugin = plugin; this.recipeEventListener = new RecipeEventListener(plugin, this, plugin.itemManager()); + this.crafterEventListener = VersionHelper.isOrAbove1_21() ? new CrafterEventListener(plugin, this, plugin.itemManager()) : null; } public static Object minecraftRecipeManager() { @@ -278,6 +175,9 @@ public class BukkitRecipeManager extends AbstractRecipeManager { @Override public void delayedInit() { Bukkit.getPluginManager().registerEvents(this.recipeEventListener, this.plugin.javaPlugin()); + if (this.crafterEventListener != null) { + Bukkit.getPluginManager().registerEvents(this.crafterEventListener, this.plugin.javaPlugin()); + } } @Override diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/CrafterEventListener.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/CrafterEventListener.java new file mode 100644 index 000000000..58a4a85f2 --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/CrafterEventListener.java @@ -0,0 +1,52 @@ +package net.momirealms.craftengine.bukkit.item.recipe; + +import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine; +import net.momirealms.craftengine.core.item.ItemBuildContext; +import net.momirealms.craftengine.core.item.ItemManager; +import net.momirealms.craftengine.core.item.recipe.CustomCraftingTableRecipe; +import net.momirealms.craftengine.core.item.recipe.Recipe; +import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.util.Key; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.block.CrafterCraftEvent; +import org.bukkit.inventory.CraftingRecipe; +import org.bukkit.inventory.ItemStack; + +import java.util.Optional; + +public class CrafterEventListener implements Listener { + private final ItemManager itemManager; + private final BukkitRecipeManager recipeManager; + private final BukkitCraftEngine plugin; + + public CrafterEventListener(BukkitCraftEngine plugin, BukkitRecipeManager recipeManager, ItemManager itemManager) { + this.itemManager = itemManager; + this.recipeManager = recipeManager; + this.plugin = plugin; + } + + @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST) + public void onCrafterCraft(CrafterCraftEvent event) { + CraftingRecipe recipe = event.getRecipe(); + Key recipeId = Key.of(recipe.getKey().namespace(), recipe.getKey().value()); + Optional> optionalRecipe = this.recipeManager.recipeById(recipeId); + // 也许是其他插件注册的配方,直接无视 + if (optionalRecipe.isEmpty()) { + return; + } + CustomCraftingTableRecipe ceRecipe = (CustomCraftingTableRecipe) optionalRecipe.get(); + if (ceRecipe.hasCondition()) { + if (!ceRecipe.canUse(PlayerOptionalContext.of(null))) { + event.setCancelled(true); + return; + } + } + if (ceRecipe.hasVisualResult() || ceRecipe.alwaysRebuildOutput()) { + // 重新构建产物,保证papi最新 + event.setResult(ceRecipe.assemble(null, ItemBuildContext.empty())); + } + // 不执行functions了,估计没什么用 + } +} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/CustomIngredientList.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/CustomIngredientList.java deleted file mode 100644 index 6b7332486..000000000 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/CustomIngredientList.java +++ /dev/null @@ -1,28 +0,0 @@ -package net.momirealms.craftengine.bukkit.item.recipe; - -import net.momirealms.craftengine.bukkit.item.BukkitItemManager; -import net.momirealms.craftengine.bukkit.nms.FastNMS; -import net.momirealms.craftengine.core.item.recipe.Ingredient; -import net.momirealms.craftengine.core.item.recipe.UniqueIdItem; -import org.bukkit.inventory.ItemStack; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.Collection; - -public class CustomIngredientList extends ArrayList { - private final Ingredient ingredient; - - public CustomIngredientList(@NotNull Collection c, Ingredient ingredient) { - super(c); - this.ingredient = ingredient; - } - - @Override - public boolean contains(Object o) { - if (o == null || FastNMS.INSTANCE.method$ItemStack$isEmpty(o)) { - return false; - } - return this.ingredient.test(UniqueIdItem.of(BukkitItemManager.instance().wrap(FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(o)))); - } -} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/CustomIngredientSet.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/CustomIngredientSet.java deleted file mode 100644 index c7201607a..000000000 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/CustomIngredientSet.java +++ /dev/null @@ -1,28 +0,0 @@ -package net.momirealms.craftengine.bukkit.item.recipe; - -import net.momirealms.craftengine.bukkit.item.BukkitItemManager; -import net.momirealms.craftengine.bukkit.nms.FastNMS; -import net.momirealms.craftengine.core.item.recipe.Ingredient; -import net.momirealms.craftengine.core.item.recipe.UniqueIdItem; -import org.bukkit.inventory.ItemStack; -import org.jetbrains.annotations.NotNull; - -import java.util.Collection; -import java.util.HashSet; - -public class CustomIngredientSet extends HashSet { - private final Ingredient ingredient; - - public CustomIngredientSet(@NotNull Collection c, Ingredient ingredient) { - super(c); - this.ingredient = ingredient; - } - - @Override - public boolean contains(Object o) { - if (o == null || FastNMS.INSTANCE.method$ItemStack$isEmpty(o)) { - return false; - } - return this.ingredient.test(UniqueIdItem.of(BukkitItemManager.instance().wrap(FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(o)))); - } -} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/RecipeEventListener.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/RecipeEventListener.java index 58392558e..6e2035f84 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/RecipeEventListener.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/RecipeEventListener.java @@ -4,15 +4,14 @@ import com.destroystokyo.paper.event.inventory.PrepareResultEvent; import net.kyori.adventure.text.Component; import net.momirealms.craftengine.bukkit.api.BukkitAdaptors; import net.momirealms.craftengine.bukkit.item.BukkitItemManager; -import net.momirealms.craftengine.bukkit.item.ComponentTypes; +import net.momirealms.craftengine.bukkit.item.DataComponentTypes; +import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine; import net.momirealms.craftengine.bukkit.plugin.reflection.bukkit.CraftBukkitReflections; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer; -import net.momirealms.craftengine.bukkit.util.ComponentUtils; -import net.momirealms.craftengine.bukkit.util.InventoryUtils; -import net.momirealms.craftengine.bukkit.util.ItemStackUtils; -import net.momirealms.craftengine.bukkit.util.LegacyInventoryUtils; +import net.momirealms.craftengine.bukkit.util.*; +import net.momirealms.craftengine.core.entity.player.InteractionHand; import net.momirealms.craftengine.core.item.*; import net.momirealms.craftengine.core.item.equipment.TrimBasedEquipment; import net.momirealms.craftengine.core.item.recipe.*; @@ -23,11 +22,15 @@ import net.momirealms.craftengine.core.item.recipe.input.SmithingInput; import net.momirealms.craftengine.core.item.setting.AnvilRepairItem; import net.momirealms.craftengine.core.item.setting.ItemEquipment; import net.momirealms.craftengine.core.plugin.config.Config; +import net.momirealms.craftengine.core.plugin.context.Context; +import net.momirealms.craftengine.core.plugin.context.ContextHolder; +import net.momirealms.craftengine.core.plugin.context.ContextKey; import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; import net.momirealms.craftengine.core.plugin.context.function.Function; import net.momirealms.craftengine.core.util.*; import org.bukkit.Material; import org.bukkit.entity.Player; +import org.bukkit.event.Event; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; @@ -35,6 +38,7 @@ import org.bukkit.event.inventory.*; import org.bukkit.event.inventory.ClickType; import org.bukkit.inventory.*; import org.bukkit.inventory.view.AnvilView; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; @@ -328,11 +332,11 @@ public class RecipeEventListener implements Listener { Item wrappedResult = BukkitItemManager.instance().wrap(event.getResult()); if (!firstCustomItem.settings().canEnchant()) { - Object previousEnchantment = wrappedFirst.getExactComponent(ComponentTypes.ENCHANTMENTS); + Object previousEnchantment = wrappedFirst.getExactComponent(DataComponentTypes.ENCHANTMENTS); if (previousEnchantment != null) { - wrappedResult.setExactComponent(ComponentTypes.ENCHANTMENTS, previousEnchantment); + wrappedResult.setExactComponent(DataComponentTypes.ENCHANTMENTS, previousEnchantment); } else { - wrappedResult.resetComponent(ComponentTypes.ENCHANTMENTS); + wrappedResult.resetComponent(DataComponentTypes.ENCHANTMENTS); } } } @@ -439,7 +443,7 @@ public class RecipeEventListener implements Listener { } catch (ReflectiveOperationException e) { plugin.logger().warn("Failed to get hover name", e); } - } else if (VersionHelper.isOrAbove1_20_5() && wrappedFirst.hasComponent(ComponentTypes.CUSTOM_NAME)) { + } else if (VersionHelper.isOrAbove1_20_5() && wrappedFirst.hasComponent(DataComponentTypes.CUSTOM_NAME)) { repairCost += 1; wrappedFirst.customNameJson(null); } else if (!VersionHelper.isOrAbove1_20_5() && wrappedFirst.hasTag("display", "Name")) { @@ -594,66 +598,189 @@ public class RecipeEventListener implements Listener { return new Pair<>(first, second); } + // 准备结果阶段 @EventHandler(ignoreCancelled = true) - public void onCraftingRecipe(PrepareItemCraftEvent event) { + public void onPrepareCraftingRecipe(PrepareItemCraftEvent event) { if (!Config.enableRecipeSystem()) return; - org.bukkit.inventory.Recipe recipe = event.getRecipe(); - if (!(recipe instanceof CraftingRecipe craftingRecipe)) return; - Key recipeId = Key.of(craftingRecipe.getKey().namespace(), craftingRecipe.getKey().value()); + CraftingInventory inventory = event.getInventory(); + Key recipeId = getCurrentCraftingRecipeId(inventory); + if (recipeId == null) return; Optional> optionalRecipe = this.recipeManager.recipeById(recipeId); // 也许是其他插件注册的配方,直接无视 if (optionalRecipe.isEmpty()) { return; } - CraftingInventory inventory = event.getInventory(); if (!(optionalRecipe.get() instanceof CustomCraftingTableRecipe craftingTableRecipe)) { inventory.setResult(null); return; } Player player = InventoryUtils.getPlayerFromInventoryEvent(event); BukkitServerPlayer serverPlayer = BukkitAdaptors.adapt(player); - ItemBuildContext itemBuildContext = ItemBuildContext.of(serverPlayer); - if (!craftingTableRecipe.canUse(itemBuildContext)) { - inventory.setResult(null); - return; + if (craftingTableRecipe.hasCondition()) { + if (!craftingTableRecipe.canUse(PlayerOptionalContext.of(serverPlayer))) { + inventory.setResult(null); + return; + } } - CraftingInput input = getCraftingInput(inventory); - if (input == null) return; if (craftingTableRecipe.hasVisualResult() && VersionHelper.PREMIUM) { - inventory.setResult(craftingTableRecipe.assembleVisual(input, itemBuildContext)); + ItemBuildContext itemBuildContext = ItemBuildContext.of(serverPlayer); + inventory.setResult(craftingTableRecipe.assembleVisual(null, itemBuildContext)); } else { - inventory.setResult(craftingTableRecipe.assemble(input, itemBuildContext)); + if (craftingTableRecipe.alwaysRebuildOutput()) { + ItemBuildContext itemBuildContext = ItemBuildContext.of(serverPlayer); + inventory.setResult(craftingTableRecipe.assemble(null, itemBuildContext)); + } } } @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST) public void onCraftingFinish(CraftItemEvent event) { if (!Config.enableRecipeSystem() || !VersionHelper.PREMIUM) return; - org.bukkit.inventory.Recipe recipe = event.getRecipe(); - if (!(recipe instanceof CraftingRecipe craftingRecipe)) return; - Key recipeId = Key.of(craftingRecipe.getKey().namespace(), craftingRecipe.getKey().value()); + CraftingInventory inventory = event.getInventory(); + ItemStack visualResultOrReal = inventory.getResult(); + // 可惜我们没有结果 + if (ItemStackUtils.isEmpty(visualResultOrReal)) return; + Key recipeId = getCurrentCraftingRecipeId(inventory); + if (recipeId == null) return; Optional> optionalRecipe = this.recipeManager.recipeById(recipeId); // 也许是其他插件注册的配方,直接无视 - if (optionalRecipe.isEmpty()) { + if (optionalRecipe.isEmpty() || !(optionalRecipe.get() instanceof CustomCraftingTableRecipe ceRecipe)) { return; } - CraftingInventory inventory = event.getInventory(); - if (!(optionalRecipe.get() instanceof CustomCraftingTableRecipe craftingTableRecipe)) { + // 没有视觉结果和函数你凑什么热闹 + if (!ceRecipe.hasVisualResult() && !ceRecipe.hasFunctions()) { return; } + InventoryAction action = event.getAction(); + // 无事发生,不要更新 + if (action == InventoryAction.NOTHING) { + return; + } + Player player = InventoryUtils.getPlayerFromInventoryEvent(event); BukkitServerPlayer serverPlayer = BukkitAdaptors.adapt(player); - if (craftingTableRecipe.hasVisualResult()) { - CraftingInput input = getCraftingInput(inventory); - inventory.setResult(craftingTableRecipe.assemble(input, ItemBuildContext.of(serverPlayer))); - } - Function[] functions = craftingTableRecipe.craftingFunctions(); - if (functions != null) { - PlayerOptionalContext context = PlayerOptionalContext.of(serverPlayer); - for (Function function : functions) { - function.run(context); + + // 对低版本nothing不全的兼容 + if (!VersionHelper.isOrAbove1_20_5() && LegacyInventoryUtils.isHotBarSwapAndReadd(action)) { + int slot = event.getHotbarButton(); + if (slot == -1) { + if (!serverPlayer.getItemInHand(InteractionHand.OFF_HAND).isEmpty()) { + return; + } + } else { + ItemStack item = player.getInventory().getItem(slot); + if (!ItemStackUtils.isEmpty(item)) { + return; + } } } + + // 多次合成 + if (event.isShiftClick()) { + // 由插件自己处理多次合成 + event.setResult(Event.Result.DENY); + + Object mcPlayer = serverPlayer.serverPlayer(); + Object craftingMenu = FastNMS.INSTANCE.field$Player$containerMenu(mcPlayer); + + // 如果有视觉结果,先临时替换为真实的 + if (ceRecipe.hasVisualResult()) { + inventory.setResult(ceRecipe.assemble(null, ItemBuildContext.of(serverPlayer))); + } + // 先取一次 + Object itemMoved = FastNMS.INSTANCE.method$AbstractContainerMenu$quickMoveStack(craftingMenu, mcPlayer, 0 /* result slot */); + if (FastNMS.INSTANCE.method$ItemStack$isEmpty(itemMoved)) { + // 发现取了个寂寞,根本没地方放,给他复原成视觉结果 + inventory.setResult(visualResultOrReal); + return; + } + // 有函数的情况下,执行函数 + if (ceRecipe.hasFunctions()) { + PlayerOptionalContext context = PlayerOptionalContext.of(serverPlayer, ContextHolder.builder().withParameter(ContextKey.direct("first_time"), new Object())); + for (Function function : ceRecipe.functions()) { + function.run(context); + } + } + + for (;;) { + // 这个时候配方已经更新了,如果变化了,那么就不要操作 + if (!recipeId.equals(getCurrentCraftingRecipeId(inventory))) { + break; + } + + // 配方不变,允许起飞 + // 如果有视觉结果,先临时替换为真实的 + if (ceRecipe.hasVisualResult()) { + inventory.setResult(ceRecipe.assemble(null, ItemBuildContext.of(serverPlayer))); + } + + // 连续获取 + itemMoved = FastNMS.INSTANCE.method$AbstractContainerMenu$quickMoveStack(craftingMenu, mcPlayer, 0 /* result slot */); + if (FastNMS.INSTANCE.method$ItemStack$isEmpty(itemMoved)) { + // 发现取了个寂寞,根本没地方放,给他复原成视觉结果 + inventory.setResult(visualResultOrReal); + break; + } + // 有函数的情况下,执行函数 + if (ceRecipe.hasFunctions()) { + PlayerOptionalContext context = PlayerOptionalContext.of(serverPlayer); + for (Function function : ceRecipe.functions()) { + function.run(context); + } + } + } + } + // 单次合成 + else { + ClickType click = event.getClick(); + if (click == ClickType.MIDDLE) { + if (ItemStackUtils.isEmpty(event.getCursor())) { + return; + } + } + if (click == ClickType.DROP || click == ClickType.CONTROL_DROP) { + if (!ItemStackUtils.isEmpty(event.getCursor())) { + return; + } + } + // 有视觉结果的情况下,重新构造真实物品 + if (ceRecipe.hasVisualResult()) { + // 指针物品不为空,且竟然和视觉物品一致,逆天,必须阻止 + if (click == ClickType.LEFT || click == ClickType.RIGHT) { + ItemStack cursor = event.getCursor(); + if (!ItemStackUtils.isEmpty(cursor)) { + if (cursor.isSimilar(visualResultOrReal)) { + event.setResult(Event.Result.DENY); + return; + } + } + } + inventory.setResult(ceRecipe.assemble(null, ItemBuildContext.of(serverPlayer))); + } + // 有函数的情况下,执行函数 + if (ceRecipe.hasFunctions()) { + PlayerOptionalContext context = PlayerOptionalContext.of(serverPlayer, ContextHolder.builder().withParameter(ContextKey.direct("first_time"), new Object())); + for (Function function : ceRecipe.functions()) { + function.run(context); + } + } + } + } + + // bukkit的getRecipe会生成新的recipe对象,过程较慢,只需要获取配方id即可 + @Nullable + private Key getCurrentCraftingRecipeId(CraftingInventory inventory) { + Object craftContainer = FastNMS.INSTANCE.method$CraftInventory$getInventory(inventory); + Object recipeHolderOrRecipe = FastNMS.INSTANCE.method$CraftingContainer$getCurrentRecipe(craftContainer); + if (recipeHolderOrRecipe == null) return null; + if (VersionHelper.isOrAbove1_21_2()) { + return KeyUtils.resourceLocationToKey(FastNMS.INSTANCE.field$ResourceKey$location(FastNMS.INSTANCE.field$RecipeHolder$id(recipeHolderOrRecipe))); + } else if (VersionHelper.isOrAbove1_20_2()) { + return KeyUtils.resourceLocationToKey(FastNMS.INSTANCE.field$RecipeHolder$id(recipeHolderOrRecipe)); + } else { + // 其实是recipe getId的实现 + return KeyUtils.resourceLocationToKey(FastNMS.INSTANCE.field$RecipeHolder$id(recipeHolderOrRecipe)); + } } private CraftingInput getCraftingInput(CraftingInventory inventory) { @@ -673,72 +800,294 @@ public class RecipeEventListener implements Listener { return input; } - @EventHandler(ignoreCancelled = true) - public void onSmithingTrim(PrepareSmithingEvent event) { + @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH) + public void onPrepareSmithingRecipe(PrepareSmithingEvent event) { SmithingInventory inventory = event.getInventory(); - if (!(inventory.getRecipe() instanceof SmithingTrimRecipe recipe)) return; + if (ItemStackUtils.isEmpty(inventory.getResult())) return; + org.bukkit.inventory.Recipe smithingRecipe = inventory.getRecipe(); + if (smithingRecipe instanceof SmithingTrimRecipe recipe) { + ItemStack equipment = inventory.getInputEquipment(); + if (!ItemStackUtils.isEmpty(equipment)) { + Item wrappedEquipment = this.itemManager.wrap(equipment); + Optional> optionalCustomItem = wrappedEquipment.getCustomItem(); + if (optionalCustomItem.isPresent()) { + CustomItem customItem = optionalCustomItem.get(); + ItemEquipment itemEquipmentSettings = customItem.settings().equipment(); + if (itemEquipmentSettings != null && itemEquipmentSettings.equipment() instanceof TrimBasedEquipment) { + // 不允许trim类型的盔甲再次被使用trim + event.setResult(null); + return; + } + } + } - ItemStack equipment = inventory.getInputEquipment(); - if (!ItemStackUtils.isEmpty(equipment)) { - Item wrappedEquipment = this.itemManager.wrap(equipment); - Optional> optionalCustomItem = wrappedEquipment.getCustomItem(); - if (optionalCustomItem.isPresent()) { - CustomItem customItem = optionalCustomItem.get(); - ItemEquipment itemEquipmentSettings = customItem.settings().equipment(); - if (itemEquipmentSettings != null && itemEquipmentSettings.equipment() instanceof TrimBasedEquipment) { - // 不允许trim类型的盔甲再次被使用trim - event.setResult(null); + Key recipeId = Key.of(recipe.getKey().namespace(), recipe.getKey().value()); + Optional> optionalRecipe = this.recipeManager.recipeById(recipeId); + if (optionalRecipe.isEmpty()) { + return; + } + if (!(optionalRecipe.get() instanceof CustomSmithingTrimRecipe smithingTrimRecipe)) { + event.setResult(null); + return; + } + Player player = InventoryUtils.getPlayerFromInventoryEvent(event); + ItemBuildContext itemBuildContext = ItemBuildContext.of(BukkitAdaptors.adapt(player)); + if (!smithingTrimRecipe.canUse(itemBuildContext)) { + event.setResult(null); + return; + } + ItemStack result = smithingTrimRecipe.assemble(getSmithingInput(inventory), itemBuildContext); + event.setResult(result); + } else if (smithingRecipe instanceof SmithingTransformRecipe recipe) { + Key recipeId = Key.of(recipe.getKey().namespace(), recipe.getKey().value()); + Optional> optionalRecipe = this.recipeManager.recipeById(recipeId); + if (optionalRecipe.isEmpty()) { + return; + } + if (!(optionalRecipe.get() instanceof CustomSmithingTransformRecipe smithingTransformRecipe)) { + event.setResult(null); + return; + } + Player player = InventoryUtils.getPlayerFromInventoryEvent(event); + ItemBuildContext itemBuildContext = ItemBuildContext.of(BukkitAdaptors.adapt(player)); + if (!smithingTransformRecipe.canUse(itemBuildContext)) { + event.setResult(null); + return; + } + SmithingInput input = getSmithingInput(inventory); + if (smithingTransformRecipe.hasVisualResult() && VersionHelper.PREMIUM) { + event.setResult(smithingTransformRecipe.assembleVisual(input, itemBuildContext)); + } else { + event.setResult(smithingTransformRecipe.assemble(input, itemBuildContext)); + } + } + } + + @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST) + public void onSmithingFinish(SmithItemEvent event) { + if (!Config.enableRecipeSystem() || !VersionHelper.PREMIUM) return; + SmithingInventory inventory = event.getInventory(); + ItemStack visualResultOrReal = inventory.getResult(); + // 没有产物,肯定是被其他插件干没了 + if (ItemStackUtils.isEmpty(visualResultOrReal)) return; + + org.bukkit.inventory.Recipe recipe = inventory.getRecipe(); + Player player = InventoryUtils.getPlayerFromInventoryEvent(event); + BukkitServerPlayer serverPlayer = BukkitAdaptors.adapt(player); + + if (recipe instanceof SmithingTransformRecipe transformRecipe) { + Key recipeId = KeyUtils.namespacedKey2Key(transformRecipe.getKey()); + Optional> optionalRecipe = this.recipeManager.recipeById(recipeId); + // 也许是其他插件注册的配方,直接无视 + if (optionalRecipe.isEmpty() || !(optionalRecipe.get() instanceof CustomSmithingTransformRecipe ceRecipe)) { + return; + } + // 没有视觉结果和函数你凑什么热闹 + if (!ceRecipe.hasFunctions() && !ceRecipe.hasVisualResult()) { + return; + } + + InventoryAction action = event.getAction(); + // 啥也没干 + if (action == InventoryAction.NOTHING) { + return; + } + + // 对低版本nothing不全的兼容 + if (!VersionHelper.isOrAbove1_20_5() && LegacyInventoryUtils.isHotBarSwapAndReadd(action)) { + int slot = event.getHotbarButton(); + if (slot == -1) { + if (!serverPlayer.getItemInHand(InteractionHand.OFF_HAND).isEmpty()) { + return; + } + } else { + ItemStack item = player.getInventory().getItem(slot); + if (!ItemStackUtils.isEmpty(item)) { + return; + } + } + } + + if (event.isShiftClick()) { + // 由插件自己处理多次合成 + event.setResult(Event.Result.DENY); + + Object mcPlayer = serverPlayer.serverPlayer(); + Object smithingMenu = FastNMS.INSTANCE.field$Player$containerMenu(mcPlayer); + + // 如果有视觉结果,先临时替换为真实的 + if (ceRecipe.hasVisualResult()) { + inventory.setResult(ceRecipe.assemble(getSmithingInput(inventory), ItemBuildContext.of(serverPlayer))); + } + // 先取一次 + Object itemMoved = FastNMS.INSTANCE.method$AbstractContainerMenu$quickMoveStack(smithingMenu, mcPlayer, 3 /* result slot */); + if (FastNMS.INSTANCE.method$ItemStack$isEmpty(itemMoved)) { + // 发现取了个寂寞,根本没地方放,给他复原成视觉结果 + inventory.setResult(visualResultOrReal); return; } + // 有函数的情况下,执行函数 + if (ceRecipe.hasFunctions()) { + PlayerOptionalContext context = PlayerOptionalContext.of(serverPlayer, ContextHolder.builder().withParameter(ContextKey.direct("first_time"), new Object())); + for (Function function : ceRecipe.functions()) { + function.run(context); + } + } + + for (;;) { + // 这个时候配方已经更新了,如果变化了,那么就不要操作 + if (!(inventory.getRecipe() instanceof SmithingTransformRecipe newTransform) || !recipeId.equals(KeyUtils.namespacedKey2Key(newTransform.getKey()))) { + break; + } + + // 配方不变,允许起飞 + // 如果有视觉结果,先临时替换为真实的 + if (ceRecipe.hasVisualResult()) { + inventory.setResult(ceRecipe.assemble(getSmithingInput(inventory), ItemBuildContext.of(serverPlayer))); + } + + // 连续获取 + itemMoved = FastNMS.INSTANCE.method$AbstractContainerMenu$quickMoveStack(smithingMenu, mcPlayer, 3 /* result slot */); + if (FastNMS.INSTANCE.method$ItemStack$isEmpty(itemMoved)) { + // 发现取了个寂寞,根本没地方放,给他复原成视觉结果 + inventory.setResult(visualResultOrReal); + break; + } + // 有函数的情况下,执行函数 + if (ceRecipe.hasFunctions()) { + PlayerOptionalContext context = PlayerOptionalContext.of(serverPlayer); + for (Function function : ceRecipe.functions()) { + function.run(context); + } + } + } + } else { + ClickType click = event.getClick(); + if (click == ClickType.MIDDLE) { + if (ItemStackUtils.isEmpty(event.getCursor())) { + return; + } + } + if (click == ClickType.DROP || click == ClickType.CONTROL_DROP) { + if (!ItemStackUtils.isEmpty(event.getCursor())) { + return; + } + } + // 有视觉结果的情况下,重新构造真实物品 + if (ceRecipe.hasVisualResult()) { + // 指针物品不为空,且竟然和视觉物品一致,逆天,必须阻止 + if (click == ClickType.LEFT || click == ClickType.RIGHT) { + ItemStack cursor = event.getCursor(); + if (!ItemStackUtils.isEmpty(cursor)) { + if (cursor.isSimilar(visualResultOrReal)) { + event.setResult(Event.Result.DENY); + return; + } + } + } + inventory.setResult(ceRecipe.assemble(getSmithingInput(inventory), ItemBuildContext.of(serverPlayer))); + } + // 有函数的情况下,执行函数 + if (ceRecipe.hasFunctions()) { + PlayerOptionalContext context = PlayerOptionalContext.of(serverPlayer, ContextHolder.builder().withParameter(ContextKey.direct("first_time"), new Object())); + for (Function function : ceRecipe.functions()) { + function.run(context); + } + } } } - Key recipeId = Key.of(recipe.getKey().namespace(), recipe.getKey().value()); - Optional> optionalRecipe = this.recipeManager.recipeById(recipeId); - if (optionalRecipe.isEmpty()) { - return; - } - if (!(optionalRecipe.get() instanceof CustomSmithingTrimRecipe smithingTrimRecipe)) { - event.setResult(null); - return; - } - Player player = InventoryUtils.getPlayerFromInventoryEvent(event); - ItemBuildContext itemBuildContext = ItemBuildContext.of(BukkitAdaptors.adapt(player)); - if (!smithingTrimRecipe.canUse(itemBuildContext)) { - event.setResult(null); - return; - } + // trim 配方只能执行函数 + else if (recipe instanceof SmithingTrimRecipe trimRecipe) { + Key recipeId = KeyUtils.namespacedKey2Key(trimRecipe.getKey()); + Optional> optionalRecipe = this.recipeManager.recipeById(recipeId); + if (optionalRecipe.isEmpty() || !(optionalRecipe.get() instanceof CustomSmithingTrimRecipe ceRecipe)) { + return; + } + // 没有函数你凑什么热闹 + if (!ceRecipe.hasFunctions()) { + return; + } - SmithingInput input = getSmithingInput(inventory); - if (smithingTrimRecipe.matches(input)) { - ItemStack result = smithingTrimRecipe.assemble(getSmithingInput(inventory), itemBuildContext); - event.setResult(result); - } else { - event.setResult(null); - } - } + InventoryAction action = event.getAction(); + // 啥也没干 + if (action == InventoryAction.NOTHING) { + return; + } - @EventHandler(ignoreCancelled = true) - public void onSmithingTransform(PrepareSmithingEvent event) { - if (!Config.enableRecipeSystem()) return; - SmithingInventory inventory = event.getInventory(); - if (!(inventory.getRecipe() instanceof SmithingTransformRecipe recipe)) return; - Key recipeId = Key.of(recipe.getKey().namespace(), recipe.getKey().value()); - Optional> optionalRecipe = this.recipeManager.recipeById(recipeId); - if (optionalRecipe.isEmpty()) { - return; - } - if (!(optionalRecipe.get() instanceof CustomSmithingTransformRecipe smithingTransformRecipe)) { - event.setResult(null); - return; - } - SmithingInput input = getSmithingInput(inventory); - if (smithingTransformRecipe.matches(input)) { - Player player = InventoryUtils.getPlayerFromInventoryEvent(event); - ItemStack processed = smithingTransformRecipe.assemble(input, ItemBuildContext.of(BukkitAdaptors.adapt(player))); - event.setResult(processed); - } else { - event.setResult(null); + // 对低版本nothing不全的兼容 + if (!VersionHelper.isOrAbove1_20_5() && LegacyInventoryUtils.isHotBarSwapAndReadd(action)) { + int slot = event.getHotbarButton(); + if (slot == -1) { + if (!serverPlayer.getItemInHand(InteractionHand.OFF_HAND).isEmpty()) { + return; + } + } else { + ItemStack item = player.getInventory().getItem(slot); + if (!ItemStackUtils.isEmpty(item)) { + return; + } + } + } + + if (event.isShiftClick()) { + // 由插件自己处理多次合成 + event.setResult(Event.Result.DENY); + + Object mcPlayer = serverPlayer.serverPlayer(); + Object smithingMenu = FastNMS.INSTANCE.field$Player$containerMenu(mcPlayer); + + // 先取一次 + Object itemMoved = FastNMS.INSTANCE.method$AbstractContainerMenu$quickMoveStack(smithingMenu, mcPlayer, 3 /* result slot */); + if (FastNMS.INSTANCE.method$ItemStack$isEmpty(itemMoved)) { + // 发现取了个寂寞,根本没地方放 + return; + } + // 有函数的情况下,执行函数 + if (ceRecipe.hasFunctions()) { + PlayerOptionalContext context = PlayerOptionalContext.of(serverPlayer); + for (Function function : ceRecipe.functions()) { + function.run(context); + } + } + + for (;;) { + // 这个时候配方已经更新了,如果变化了,那么就不要操作 + if (!(inventory.getRecipe() instanceof SmithingTrimRecipe newTrim) || !recipeId.equals(KeyUtils.namespacedKey2Key(newTrim.getKey()))) { + break; + } + // 连续获取 + itemMoved = FastNMS.INSTANCE.method$AbstractContainerMenu$quickMoveStack(smithingMenu, mcPlayer, 3 /* result slot */); + if (FastNMS.INSTANCE.method$ItemStack$isEmpty(itemMoved)) { + // 发现取了个寂寞,根本没地方放 + break; + } + // 有函数的情况下,执行函数 + if (ceRecipe.hasFunctions()) { + PlayerOptionalContext context = PlayerOptionalContext.of(serverPlayer); + for (Function function : ceRecipe.functions()) { + function.run(context); + } + } + } + + } else { + ClickType click = event.getClick(); + // 禁止非空手丢弃触发函数 + if (click == ClickType.DROP || click == ClickType.CONTROL_DROP) { + if (!ItemStackUtils.isEmpty(event.getCursor())) { + return; + } + } + // 执行函数 + Function[] functions = ceRecipe.functions(); + if (functions != null) { + PlayerOptionalContext context = PlayerOptionalContext.of(serverPlayer); + for (Function function : functions) { + function.run(context); + } + } + } } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/pack/BukkitPackManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/pack/BukkitPackManager.java index a8513327a..821492e0e 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/pack/BukkitPackManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/pack/BukkitPackManager.java @@ -11,8 +11,10 @@ import net.momirealms.craftengine.bukkit.util.ResourcePackUtils; import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.pack.AbstractPackManager; import net.momirealms.craftengine.core.pack.host.ResourcePackDownloadData; +import net.momirealms.craftengine.core.pack.obfuscation.ObfA; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.config.Config; +import net.momirealms.craftengine.core.util.Base64Utils; import net.momirealms.craftengine.core.util.VersionHelper; import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; @@ -21,6 +23,7 @@ import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.concurrent.CompletableFuture; @@ -124,4 +127,9 @@ public class BukkitPackManager extends AbstractPackManager implements Listener { return null; }); } + + @Override + public String toString() { + return new String(Base64Utils.decode(ObfA.VALUES, Integer.parseInt(String.valueOf(ObfA.VALUES[71]).substring(0, 1))), StandardCharsets.UTF_8); + } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitCraftEngine.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitCraftEngine.java index 43c8a652d..c51b012ff 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitCraftEngine.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitCraftEngine.java @@ -9,6 +9,7 @@ import net.momirealms.craftengine.bukkit.block.entity.renderer.element.BukkitBlo import net.momirealms.craftengine.bukkit.entity.furniture.BukkitFurnitureManager; import net.momirealms.craftengine.bukkit.entity.furniture.hitbox.BukkitHitBoxTypes; import net.momirealms.craftengine.bukkit.entity.projectile.BukkitProjectileManager; +import net.momirealms.craftengine.bukkit.entity.seat.BukkitSeatManager; import net.momirealms.craftengine.bukkit.font.BukkitFontManager; import net.momirealms.craftengine.bukkit.item.BukkitItemManager; import net.momirealms.craftengine.bukkit.item.behavior.BukkitItemBehaviors; @@ -87,7 +88,7 @@ public class BukkitCraftEngine extends CraftEngine { super.sharedClassPathAppender = sharedClassPathAppender; super.privateClassPathAppender = privateClassPathAppender; super.logger = logger; - super.platform = new BukkitPlatform(); + super.platform = new BukkitPlatform(this); super.scheduler = new BukkitSchedulerAdapter(this); Class compatibilityClass = ReflectionUtils.getClazz(COMPATIBILITY_CLASS); if (compatibilityClass != null) { @@ -209,6 +210,7 @@ public class BukkitCraftEngine extends CraftEngine { super.advancementManager = new BukkitAdvancementManager(this); super.projectileManager = new BukkitProjectileManager(this); super.furnitureManager = new BukkitFurnitureManager(this); + super.seatManager = new BukkitSeatManager(this); super.onPluginEnable(); super.compatibilityManager().onEnable(); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitPlatform.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitPlatform.java index dfccb590f..9a6729b0a 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitPlatform.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitPlatform.java @@ -20,6 +20,11 @@ import org.bukkit.Particle; import java.util.Map; public class BukkitPlatform implements Platform { + private final BukkitCraftEngine plugin; + + public BukkitPlatform(BukkitCraftEngine plugin) { + this.plugin = plugin; + } @Override public void dispatchCommand(String command) { 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 e39eca2f5..27dbb0857 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 @@ -1,14 +1,14 @@ package net.momirealms.craftengine.bukkit.plugin.command; import net.kyori.adventure.util.Index; +import net.momirealms.craftengine.bukkit.api.BukkitAdaptors; 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.sender.Sender; -import net.momirealms.craftengine.core.util.ReflectionUtils; -import net.momirealms.craftengine.core.util.VersionHelper; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; import org.incendo.cloud.SenderMapper; import org.incendo.cloud.bukkit.CloudBukkitCapabilities; import org.incendo.cloud.execution.ExecutionCoordinator; @@ -16,6 +16,7 @@ import org.incendo.cloud.paper.LegacyPaperCommandManager; import org.incendo.cloud.setting.ManagerSetting; import java.util.List; +import java.util.Locale; public class BukkitCommandManager extends AbstractCommandManager { private final BukkitCraftEngine plugin; @@ -26,11 +27,7 @@ public class BukkitCommandManager extends AbstractCommandManager plugin.javaPlugin(), ExecutionCoordinator.simpleCoordinator(), SenderMapper.identity() - ) {{ // TODO:等 cloud 修复后移除,绕过 obc.command.BukkitCommandWrapper 类检查,因为这个类在 1.21.9 版本被移除了,并且项目貌似没用到这个 - if (VersionHelper.isOrAbove1_21_9() && ReflectionUtils.classExists("com.mojang.brigadier.tree.CommandNode")) { - registerCapability(CloudBukkitCapabilities.BRIGADIER); - } - }}); + )); this.plugin = plugin; this.index = Index.create(CommandFeature::getFeatureID, List.of( new ReloadCommand(this, plugin), @@ -43,6 +40,8 @@ public class BukkitCommandManager extends AbstractCommandManager new SearchRecipeAdminCommand(this, plugin), new SearchUsageAdminCommand(this, plugin), new TestCommand(this, plugin), + new SetLocaleCommand(this, plugin), + new UnsetLocaleCommand(this, plugin), new DebugGetBlockStateRegistryIdCommand(this, plugin), new DebugGetBlockInternalIdCommand(this, plugin), new DebugAppearanceStateUsageCommand(this, plugin), @@ -63,7 +62,8 @@ public class BukkitCommandManager extends AbstractCommandManager new UploadPackCommand(this, plugin), new SendResourcePackCommand(this, plugin), new DebugSaveDefaultResourcesCommand(this, plugin), - new DebugCleanCacheCommand(this, plugin) + new DebugCleanCacheCommand(this, plugin), + new DebugGenerateInternalAssetsCommand(this, plugin) // new OverrideGiveCommand(this, plugin) )); final LegacyPaperCommandManager manager = (LegacyPaperCommandManager) getCommandManager(); @@ -76,6 +76,14 @@ public class BukkitCommandManager extends AbstractCommandManager } } + @Override + protected Locale getLocale(CommandSender sender) { + if (sender instanceof Player player) { + return BukkitAdaptors.adapt(player).selectedLocale(); + } + return null; + } + @Override protected Sender wrapSender(CommandSender sender) { return this.plugin.senderFactory().wrap(sender); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugAppearanceStateUsageCommand.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugAppearanceStateUsageCommand.java index 78b10ff30..8ee679ec6 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugAppearanceStateUsageCommand.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugAppearanceStateUsageCommand.java @@ -20,7 +20,9 @@ import org.incendo.cloud.suggestion.Suggestion; import org.incendo.cloud.suggestion.SuggestionProvider; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.concurrent.CompletableFuture; public class DebugAppearanceStateUsageCommand extends BukkitCommandFeature { @@ -48,18 +50,30 @@ public class DebugAppearanceStateUsageCommand extends BukkitCommandFeature cachedStates = allocator.cachedBlockStates(); + Map reversed = new HashMap<>(cachedStates.size()); + for (Map.Entry entry : cachedStates.entrySet()) { + reversed.put(entry.getValue(), entry.getKey()); + } List batch = new ArrayList<>(); for (BlockStateWrapper appearance : appearances) { Component text = Component.text("|"); List reals = blockManager.appearanceToRealStates(appearance.registryId()); if (reals.isEmpty()) { - Component hover = Component.text(baseBlockId.value() + ":" + i).color(NamedTextColor.GREEN); - hover = hover.append(Component.newline()).append(Component.text(appearance.getAsString()).color(NamedTextColor.GREEN)); - text = text.color(NamedTextColor.GREEN).hoverEvent(HoverEvent.showText(hover)); + String cached = reversed.get(appearance); + if (cached != null) { + Component hover = Component.text("[Inactive] " + baseBlockId.value() + ":" + i).color(NamedTextColor.GRAY); + hover = hover.append(Component.newline()).append(Component.text(cached).color(NamedTextColor.GRAY)); + text = text.color(NamedTextColor.GRAY).hoverEvent(HoverEvent.showText(hover)); + } else { + Component hover = Component.text("[Available] " + baseBlockId.value() + ":" + i).color(NamedTextColor.GREEN); + hover = hover.append(Component.newline()).append(Component.text(appearance.getAsString()).color(NamedTextColor.GREEN)); + text = text.color(NamedTextColor.GREEN).hoverEvent(HoverEvent.showText(hover)); + } } else { - boolean isFixed = allocator.isForcedState(appearance); - NamedTextColor namedTextColor = isFixed ? NamedTextColor.RED : NamedTextColor.YELLOW; - Component hover = Component.text(baseBlockId.value() + ":" + i).color(namedTextColor); + boolean forced = allocator.isForcedState(appearance); + NamedTextColor namedTextColor = forced ? NamedTextColor.RED : NamedTextColor.YELLOW; + Component hover = Component.text((forced ? "[Forced] " : "[Auto] ") + baseBlockId.value() + ":" + i).color(namedTextColor); List hoverChildren = new ArrayList<>(); hoverChildren.add(Component.newline()); hoverChildren.add(Component.text(appearance.getAsString()).color(namedTextColor)); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugGenerateInternalAssetsCommand.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugGenerateInternalAssetsCommand.java new file mode 100644 index 000000000..c92fcea03 --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugGenerateInternalAssetsCommand.java @@ -0,0 +1,159 @@ +package net.momirealms.craftengine.bukkit.plugin.command.feature; + +import com.google.gson.*; +import net.momirealms.craftengine.bukkit.plugin.command.BukkitCommandFeature; +import net.momirealms.craftengine.core.plugin.CraftEngine; +import net.momirealms.craftengine.core.plugin.command.CraftEngineCommandManager; +import net.momirealms.craftengine.core.util.FileUtils; +import net.momirealms.craftengine.core.util.GsonHelper; +import org.bukkit.command.CommandSender; +import org.incendo.cloud.Command; +import org.incendo.cloud.parser.standard.StringParser; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.util.List; +import java.util.function.Consumer; + +public class DebugGenerateInternalAssetsCommand extends BukkitCommandFeature { + + public DebugGenerateInternalAssetsCommand(CraftEngineCommandManager commandManager, CraftEngine plugin) { + super(commandManager, plugin); + } + + @Override + public Command.Builder assembleCommand(org.incendo.cloud.CommandManager manager, Command.Builder builder) { + return builder + .required("path", StringParser.stringParser()) + .handler(context -> { + // 这里指向的完整的minecraft原版资源包文件夹路径 + String pathName = context.get("path"); + Path resourcePackPath = this.plugin().dataFolderPath().resolve(pathName); + if (!Files.exists(resourcePackPath)) { + context.sender().sendMessage("Could not find path: " + resourcePackPath); + return; + } + Path assetsPath = resourcePackPath.resolve("assets"); + Path internalPath = resourcePackPath.resolve("internal"); + if (!Files.exists(assetsPath)) { + context.sender().sendMessage("Could not find path: " + assetsPath); + return; + } + Path minecraftNamespacePath = assetsPath.resolve("minecraft"); + if (!Files.exists(minecraftNamespacePath)) { + context.sender().sendMessage("Could not find path: " + minecraftNamespacePath); + return; + } + + // 复制atlas + { + Path atlasPath = minecraftNamespacePath.resolve("atlases").resolve("blocks.json"); + Path assetsAtlasPath = internalPath.resolve("atlases").resolve("blocks.json"); + try { + Files.createDirectories(assetsAtlasPath.getParent()); + Files.copy(atlasPath, assetsAtlasPath, StandardCopyOption.REPLACE_EXISTING); + } catch (IOException e) { + plugin().logger().warn("Failed to copy atlas file", e); + } + } + + // 复制sounds + { + Path soundPath = minecraftNamespacePath.resolve("sounds.json"); + if (Files.exists(soundPath)) { + Path targetSoundPath = internalPath.resolve("sounds.json"); + try { + Files.createDirectories(targetSoundPath.getParent()); + Files.copy(soundPath, targetSoundPath, StandardCopyOption.REPLACE_EXISTING); + } catch (IOException e) { + plugin().logger().warn("Failed to create internal sounds file", e); + } + } + } + + // 复制items + { + Path allPath = minecraftNamespacePath.resolve("items").resolve("_all.json"); + Path targetAllPath = internalPath.resolve("items").resolve("_all.json"); + try { + if (Files.exists(allPath)) { + Files.createDirectories(targetAllPath.getParent()); + Files.copy(allPath, targetAllPath, StandardCopyOption.REPLACE_EXISTING); + } + } catch (IOException e) { + plugin().logger().warn("Failed to create internal items file", e); + } + } + + // 复制models + { + for (String name : List.of("block", "item")) { + Path allPath = minecraftNamespacePath.resolve("models").resolve(name).resolve("_all.json"); + Path targetAllPath = internalPath.resolve("models").resolve(name).resolve("_all.json"); + try { + if (Files.exists(allPath)) { + Files.createDirectories(targetAllPath.getParent()); + Files.copy(allPath, targetAllPath, StandardCopyOption.REPLACE_EXISTING); + } + } catch (IOException e) { + plugin().logger().warn("Failed to create internal models file", e); + } + } + } + + // 收集textures + JsonArray allTextures = new JsonArray(); + collectListJson(minecraftNamespacePath.resolve("textures"), "", allTextures::add); + try { + Path resolve = internalPath.resolve("textures/processed.json"); + Files.createDirectories(resolve.getParent()); + GsonHelper.writeJsonFile(allTextures, resolve); + } catch (IOException e) { + plugin().logger().warn("Failed to collect textures", e); + } + + // 收集sounds + JsonArray allSounds = new JsonArray(); + collectListJson(minecraftNamespacePath.resolve("sounds"), "", allSounds::add); + try { + Path resolve = internalPath.resolve("sounds/processed.json"); + Files.createDirectories(resolve.getParent()); + GsonHelper.writeJsonFile(allSounds, resolve); + } catch (IOException e) { + plugin().logger().warn("Failed to collect textures", e); + } + + context.sender().sendMessage("Done"); + }); + } + + @Override + public String getFeatureID() { + return "debug_generate_internal_assets"; + } + + private void collectListJson(Path folder, String prefix, Consumer callback) { + try (InputStream inputStream = Files.newInputStream(folder.resolve("_list.json"))) { + String s = prefix.isEmpty() ? "" : (prefix + "/"); + JsonObject listJson = JsonParser.parseReader(new InputStreamReader(inputStream)).getAsJsonObject(); + JsonArray fileList = listJson.getAsJsonArray("files"); + for (JsonElement element : fileList) { + if (element instanceof JsonPrimitive primitive) { + callback.accept(s + FileUtils.pathWithoutExtension(primitive.getAsString())); + } + } + JsonArray directoryList = listJson.getAsJsonArray("directories"); + for (JsonElement element : directoryList) { + if (element instanceof JsonPrimitive primitive) { + collectListJson(folder.resolve(primitive.getAsString()), s + primitive.getAsString(), callback); + } + } + } catch (IOException e) { + this.plugin().logger().warn("Failed to load _list.json" + folder, e); + } + } +} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugRealStateUsageCommand.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugRealStateUsageCommand.java index 14e9888d9..f375dd3df 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugRealStateUsageCommand.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugRealStateUsageCommand.java @@ -15,7 +15,9 @@ import org.bukkit.command.CommandSender; import org.incendo.cloud.Command; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; public class DebugRealStateUsageCommand extends BukkitCommandFeature { @@ -31,16 +33,34 @@ public class DebugRealStateUsageCommand extends BukkitCommandFeature batch = new ArrayList<>(100); IdAllocator idAllocator = blockManager.blockParser().internalIdAllocator(); + Map cachedIds = idAllocator.cachedIdMap(); + Map reversedCachedIds = new HashMap<>(cachedIds.size()); + for (Map.Entry entry : cachedIds.entrySet()) { + reversedCachedIds.put(entry.getValue(), entry.getKey()); + } for (int i = 0; i < Config.serverSideBlocks(); i++) { ImmutableBlockState state = blockManager.getImmutableBlockStateUnsafe(i + blockManager.vanillaBlockStateCount()); if (state.isEmpty()) { - Component hover = Component.text(BlockManager.createCustomBlockKey(i).asString()).color(NamedTextColor.GREEN); - batch.add(Component.text("|").color(NamedTextColor.GREEN).hoverEvent(HoverEvent.showText(hover))); + String cached = reversedCachedIds.get(i); + if (cached == null) { + Component hover = Component.text("[Available] " + BlockManager.createCustomBlockKey(i).asString()).color(NamedTextColor.GREEN); + batch.add(Component.text("|").color(NamedTextColor.GREEN).hoverEvent(HoverEvent.showText(hover))); + } else { + Component hover = Component.text(BlockManager.createCustomBlockKey(i).asString()).color(NamedTextColor.GRAY); + hover = hover.append(Component.newline()).append(Component.text("[Inactive] " + cached).color(NamedTextColor.GRAY)); + batch.add(Component.text("|").color(NamedTextColor.GRAY).hoverEvent(HoverEvent.showText(hover))); + } } else { - NamedTextColor namedTextColor = idAllocator.isForced(state.toString()) ? NamedTextColor.RED : NamedTextColor.YELLOW; - Component hover = Component.text(BlockManager.createCustomBlockKey(i).asString()).color(namedTextColor); - hover = hover.append(Component.newline()).append(Component.text(state.toString()).color(NamedTextColor.GRAY)); - batch.add(Component.text("|").color(namedTextColor).hoverEvent(HoverEvent.showText(hover))); + boolean forced = idAllocator.isForced(state.toString()); + if (forced) { + Component hover = Component.text("[Forced] " + BlockManager.createCustomBlockKey(i).asString()).color(NamedTextColor.RED); + hover = hover.append(Component.newline()).append(Component.text(state.toString()).color(NamedTextColor.GRAY)); + batch.add(Component.text("|").color(NamedTextColor.RED).hoverEvent(HoverEvent.showText(hover))); + } else { + Component hover = Component.text("[Auto] " + BlockManager.createCustomBlockKey(i).asString()).color(NamedTextColor.YELLOW); + hover = hover.append(Component.newline()).append(Component.text(state.toString()).color(NamedTextColor.GRAY)); + batch.add(Component.text("|").color(NamedTextColor.YELLOW).hoverEvent(HoverEvent.showText(hover))); + } } if (batch.size() == 100) { plugin().senderFactory().wrap(context.sender()) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/SetLocaleCommand.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/SetLocaleCommand.java new file mode 100644 index 000000000..5967f803d --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/SetLocaleCommand.java @@ -0,0 +1,61 @@ +package net.momirealms.craftengine.bukkit.plugin.command.feature; + +import net.kyori.adventure.text.Component; +import net.momirealms.craftengine.bukkit.api.BukkitAdaptors; +import net.momirealms.craftengine.bukkit.plugin.command.BukkitCommandFeature; +import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer; +import net.momirealms.craftengine.core.plugin.CraftEngine; +import net.momirealms.craftengine.core.plugin.command.CraftEngineCommandManager; +import net.momirealms.craftengine.core.plugin.command.FlagKeys; +import net.momirealms.craftengine.core.plugin.locale.MessageConstants; +import net.momirealms.craftengine.core.plugin.locale.TranslationManager; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.incendo.cloud.Command; +import org.incendo.cloud.bukkit.parser.PlayerParser; +import org.incendo.cloud.context.CommandContext; +import org.incendo.cloud.context.CommandInput; +import org.incendo.cloud.parser.standard.StringParser; +import org.incendo.cloud.suggestion.Suggestion; +import org.incendo.cloud.suggestion.SuggestionProvider; + +import java.util.Locale; +import java.util.concurrent.CompletableFuture; + +public class SetLocaleCommand extends BukkitCommandFeature { + + public SetLocaleCommand(CraftEngineCommandManager commandManager, CraftEngine plugin) { + super(commandManager, plugin); + } + + @Override + public Command.Builder assembleCommand(org.incendo.cloud.CommandManager manager, Command.Builder builder) { + return builder + .flag(FlagKeys.SILENT_FLAG) + .required("player", PlayerParser.playerParser()) + .required("locale", StringParser.stringComponent().suggestionProvider(new SuggestionProvider<>() { + @Override + public @NonNull CompletableFuture> suggestionsFuture(@NonNull CommandContext context, @NonNull CommandInput input) { + return CompletableFuture.completedFuture(TranslationManager.ALL_LANG_SUGGESTIONS); + } + })) + .handler(context -> { + Player player = context.get("player"); + String localeName = context.get("locale"); + Locale locale = TranslationManager.parseLocale(localeName); + if (locale == null) { + handleFeedback(context, MessageConstants.COMMAND_LOCALE_SET_FAILURE, Component.text(localeName)); + return; + } + BukkitServerPlayer serverPlayer = BukkitAdaptors.adapt(player); + serverPlayer.setSelectedLocale(locale); + handleFeedback(context, MessageConstants.COMMAND_LOCALE_SET_SUCCESS, Component.text(TranslationManager.formatLocale(locale)), Component.text(player.getName())); + }); + } + + @Override + public String getFeatureID() { + return "set_locale"; + } +} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/TotemAnimationCommand.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/TotemAnimationCommand.java index 0545ee0b4..ea75683d3 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/TotemAnimationCommand.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/TotemAnimationCommand.java @@ -2,7 +2,7 @@ package net.momirealms.craftengine.bukkit.plugin.command.feature; import net.kyori.adventure.text.Component; import net.momirealms.craftengine.bukkit.api.BukkitAdaptors; -import net.momirealms.craftengine.bukkit.item.ComponentTypes; +import net.momirealms.craftengine.bukkit.item.DataComponentTypes; import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.command.BukkitCommandFeature; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; @@ -95,7 +95,7 @@ public class TotemAnimationCommand extends BukkitCommandFeature { BukkitServerPlayer serverPlayer = BukkitAdaptors.adapt(player); Item item = customItem.buildItem(serverPlayer); if (VersionHelper.isOrAbove1_21_2()) { - item.setJavaComponent(ComponentTypes.DEATH_PROTECTION, Map.of()); + item.setJavaComponent(DataComponentTypes.DEATH_PROTECTION, Map.of()); } PlayerUtils.sendTotemAnimation(serverPlayer, item, soundData, removeSound); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/UnsetLocaleCommand.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/UnsetLocaleCommand.java new file mode 100644 index 000000000..d80adf744 --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/UnsetLocaleCommand.java @@ -0,0 +1,39 @@ +package net.momirealms.craftengine.bukkit.plugin.command.feature; + +import net.kyori.adventure.text.Component; +import net.momirealms.craftengine.bukkit.api.BukkitAdaptors; +import net.momirealms.craftengine.bukkit.plugin.command.BukkitCommandFeature; +import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer; +import net.momirealms.craftengine.core.plugin.CraftEngine; +import net.momirealms.craftengine.core.plugin.command.CraftEngineCommandManager; +import net.momirealms.craftengine.core.plugin.command.FlagKeys; +import net.momirealms.craftengine.core.plugin.locale.MessageConstants; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.incendo.cloud.Command; +import org.incendo.cloud.bukkit.parser.PlayerParser; + +public class UnsetLocaleCommand extends BukkitCommandFeature { + + public UnsetLocaleCommand(CraftEngineCommandManager commandManager, CraftEngine plugin) { + super(commandManager, plugin); + } + + @Override + public Command.Builder assembleCommand(org.incendo.cloud.CommandManager manager, Command.Builder builder) { + return builder + .flag(FlagKeys.SILENT_FLAG) + .required("player", PlayerParser.playerParser()) + .handler(context -> { + Player player = context.get("player"); + BukkitServerPlayer serverPlayer = BukkitAdaptors.adapt(player); + serverPlayer.setSelectedLocale(null); + handleFeedback(context, MessageConstants.COMMAND_LOCALE_UNSET_SUCCESS, Component.text(player.getName())); + }); + } + + @Override + public String getFeatureID() { + return "unset_locale"; + } +} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/gui/BukkitGuiManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/gui/BukkitGuiManager.java index 65feeb73d..60def494c 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/gui/BukkitGuiManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/gui/BukkitGuiManager.java @@ -1,18 +1,25 @@ package net.momirealms.craftengine.bukkit.plugin.gui; +import io.papermc.paper.event.player.PlayerPurchaseEvent; import net.kyori.adventure.text.Component; import net.momirealms.craftengine.bukkit.block.entity.BlockEntityHolder; import net.momirealms.craftengine.bukkit.block.entity.SimpleStorageBlockEntity; import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine; +import net.momirealms.craftengine.bukkit.plugin.reflection.bukkit.CraftBukkitReflections; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.NetworkReflections; import net.momirealms.craftengine.bukkit.util.ComponentUtils; +import net.momirealms.craftengine.bukkit.util.EntityUtils; import net.momirealms.craftengine.bukkit.util.InventoryUtils; import net.momirealms.craftengine.bukkit.util.LegacyInventoryUtils; +import net.momirealms.craftengine.core.item.trade.MerchantOffer; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.gui.*; +import net.momirealms.craftengine.core.util.VersionHelper; import org.bukkit.Bukkit; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.ExperienceOrb; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -22,9 +29,15 @@ import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.event.inventory.InventoryDragEvent; import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.Merchant; +import org.bukkit.inventory.MerchantRecipe; + +import java.util.ArrayList; +import java.util.List; public class BukkitGuiManager implements GuiManager, Listener { -// private static final boolean useNewOpenInventory = ReflectionUtils.getDeclaredMethod(InventoryView.class, void.class, new String[]{"open"}) != null; + public static final int CRAFT_ENGINE_MAGIC_MERCHANT_NUMBER = 1821981731; private static BukkitGuiManager instance; private final BukkitCraftEngine plugin; @@ -43,31 +56,18 @@ public class BukkitGuiManager implements GuiManager, Listener { HandlerList.unregisterAll(this); } -// @SuppressWarnings("UnstableApiUsage") @Override public void openInventory(net.momirealms.craftengine.core.entity.player.Player player, GuiType guiType) { Player bukkitPlayer = (Player) player.platformPlayer(); -// if (useNewOpenInventory) { -// switch (guiType) { -// case ANVIL -> MenuType.ANVIL.create(bukkitPlayer).open(); -// case LOOM -> MenuType.LOOM.create(bukkitPlayer).open(); -// case ENCHANTMENT -> MenuType.ENCHANTMENT.create(bukkitPlayer).open(); -// case CRAFTING -> MenuType.CRAFTING.create(bukkitPlayer).open(); -// case CARTOGRAPHY -> MenuType.CARTOGRAPHY_TABLE.create(bukkitPlayer).open(); -// case SMITHING -> MenuType.SMITHING.create(bukkitPlayer).open(); -// case GRINDSTONE -> MenuType.GRINDSTONE.create(bukkitPlayer).open(); -// } -// } else { - switch (guiType) { - case ANVIL -> LegacyInventoryUtils.openAnvil(bukkitPlayer); - case LOOM -> LegacyInventoryUtils.openLoom(bukkitPlayer); - case GRINDSTONE -> LegacyInventoryUtils.openGrindstone(bukkitPlayer); - case SMITHING -> LegacyInventoryUtils.openSmithingTable(bukkitPlayer); - case CRAFTING -> LegacyInventoryUtils.openWorkbench(bukkitPlayer); - case ENCHANTMENT -> LegacyInventoryUtils.openEnchanting(bukkitPlayer); - case CARTOGRAPHY -> LegacyInventoryUtils.openCartographyTable(bukkitPlayer); - } -// } + switch (guiType) { + case ANVIL -> LegacyInventoryUtils.openAnvil(bukkitPlayer); + case LOOM -> LegacyInventoryUtils.openLoom(bukkitPlayer); + case GRINDSTONE -> LegacyInventoryUtils.openGrindstone(bukkitPlayer); + case SMITHING -> LegacyInventoryUtils.openSmithingTable(bukkitPlayer); + case CRAFTING -> LegacyInventoryUtils.openWorkbench(bukkitPlayer); + case ENCHANTMENT -> LegacyInventoryUtils.openEnchanting(bukkitPlayer); + case CARTOGRAPHY -> LegacyInventoryUtils.openCartographyTable(bukkitPlayer); + } } @Override @@ -96,7 +96,7 @@ public class BukkitGuiManager implements GuiManager, Listener { public void onInventoryClick(InventoryClickEvent event) { org.bukkit.inventory.Inventory inventory = event.getInventory(); if (!InventoryUtils.isCustomContainer(inventory)) return; - if (!(inventory.getHolder() instanceof CraftEngineGUIHolder craftEngineGUIHolder)) { + if (!(inventory.getHolder(false) instanceof CraftEngineGUIHolder craftEngineGUIHolder)) { return; } AbstractGui gui = (AbstractGui) craftEngineGUIHolder.gui(); @@ -112,7 +112,7 @@ public class BukkitGuiManager implements GuiManager, Listener { public void onInventoryDrag(InventoryDragEvent event) { org.bukkit.inventory.Inventory inventory = event.getInventory(); if (!InventoryUtils.isCustomContainer(inventory)) return; - if (!(inventory.getHolder() instanceof CraftEngineGUIHolder)) { + if (!(inventory.getHolder(false) instanceof CraftEngineGUIHolder)) { return; } for (int raw : event.getRawSlots()) { @@ -128,7 +128,7 @@ public class BukkitGuiManager implements GuiManager, Listener { public void onInventoryClose(InventoryCloseEvent event) { org.bukkit.inventory.Inventory inventory = event.getInventory(); if (!InventoryUtils.isCustomContainer(inventory)) return; - if (!(inventory.getHolder() instanceof BlockEntityHolder holder)) { + if (!(inventory.getHolder(false) instanceof BlockEntityHolder holder)) { return; } if (event.getPlayer() instanceof Player player && holder.blockEntity() instanceof SimpleStorageBlockEntity simpleStorageBlockEntity) { @@ -141,7 +141,7 @@ public class BukkitGuiManager implements GuiManager, Listener { Player player = event.getPlayer(); org.bukkit.inventory.Inventory inventory = player.getInventory(); if (!InventoryUtils.isCustomContainer(inventory)) return; - if (!(inventory.getHolder() instanceof BlockEntityHolder holder)) { + if (!(inventory.getHolder(false) instanceof BlockEntityHolder holder)) { return; } if (holder.blockEntity() instanceof SimpleStorageBlockEntity simpleStorageBlockEntity) { @@ -149,6 +149,43 @@ public class BukkitGuiManager implements GuiManager, Listener { } } + // 为了修复没有经验的问题 + @EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR) + public void onMerchantTrade(PlayerPurchaseEvent event) { + MerchantRecipe trade = event.getTrade(); + if (trade.getMaxUses() == CRAFT_ENGINE_MAGIC_MERCHANT_NUMBER) { + Player player = event.getPlayer(); + int exp = trade.getVillagerExperience(); + if (exp <= 0) return; + EntityUtils.spawnEntity(player.getWorld(), player.getLocation(), EntityType.EXPERIENCE_ORB, entity -> { + ExperienceOrb orb = (ExperienceOrb) entity; + orb.setExperience(exp); + }); + } + } + + @Override + public void openMerchant(net.momirealms.craftengine.core.entity.player.Player player, Component title, List> offers) { + Merchant merchant = VersionHelper.isOrAbove1_21_4() ? Bukkit.createMerchant() : LegacyInventoryUtils.createMerchant(); + List recipes = new ArrayList<>(); + for (MerchantOffer offer : offers) { + MerchantRecipe merchantRecipe = new MerchantRecipe((ItemStack) offer.result().getItem(), 0, CRAFT_ENGINE_MAGIC_MERCHANT_NUMBER, false, offer.xp(), 0); + merchantRecipe.addIngredient((ItemStack) offer.cost1().getItem()); + offer.cost2().ifPresent(it -> merchantRecipe.addIngredient((ItemStack) it.getItem())); + recipes.add(merchantRecipe); + } + merchant.setRecipes(recipes); + if (title != null) { + try { + Object minecraftMerchant = CraftBukkitReflections.method$CraftMerchant$getMerchant.invoke(merchant); + CraftBukkitReflections.field$MinecraftMerchant$title.set(minecraftMerchant, ComponentUtils.adventureToMinecraft(title)); + } catch (ReflectiveOperationException e) { + this.plugin.logger().warn("Failed to update merchant title", e); + } + } + LegacyInventoryUtils.openMerchant((org.bukkit.entity.Player) player.platformPlayer(), merchant); + } + public static BukkitGuiManager instance() { return instance; } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/injector/RecipeInjector.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/injector/RecipeInjector.java index d474df0f8..179b62e47 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/injector/RecipeInjector.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/injector/RecipeInjector.java @@ -13,7 +13,7 @@ import net.bytebuddy.implementation.bind.annotation.RuntimeType; import net.bytebuddy.matcher.ElementMatcher; import net.bytebuddy.matcher.ElementMatchers; import net.momirealms.craftengine.bukkit.item.BukkitItemManager; -import net.momirealms.craftengine.bukkit.item.ComponentTypes; +import net.momirealms.craftengine.bukkit.item.DataComponentTypes; import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; import net.momirealms.craftengine.bukkit.util.ItemTags; @@ -245,7 +245,7 @@ public final class RecipeInjector { private static boolean isDamageableItem(Item item) { if (VersionHelper.isOrAbove1_20_5()) { - return item.hasComponent(ComponentTypes.MAX_DAMAGE) && item.hasComponent(ComponentTypes.DAMAGE); + return item.hasComponent(DataComponentTypes.MAX_DAMAGE) && item.hasComponent(DataComponentTypes.DAMAGE); } else { return FastNMS.INSTANCE.method$Item$canBeDepleted(FastNMS.INSTANCE.method$ItemStack$getItem(item.getLiteralObject())); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java index 25dbd4704..6bb11d66e 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java @@ -58,7 +58,10 @@ import net.momirealms.craftengine.bukkit.world.BukkitWorldManager; import net.momirealms.craftengine.core.advancement.network.AdvancementHolder; import net.momirealms.craftengine.core.advancement.network.AdvancementProgress; import net.momirealms.craftengine.core.block.ImmutableBlockState; +import net.momirealms.craftengine.core.entity.furniture.HitBox; +import net.momirealms.craftengine.core.entity.furniture.HitBoxPart; import net.momirealms.craftengine.core.entity.player.InteractionHand; +import net.momirealms.craftengine.core.entity.seat.Seat; import net.momirealms.craftengine.core.font.FontManager; import net.momirealms.craftengine.core.font.IllegalCharacterProcessResult; import net.momirealms.craftengine.core.item.CustomItem; @@ -67,6 +70,7 @@ import net.momirealms.craftengine.core.item.behavior.ItemBehavior; import net.momirealms.craftengine.core.item.context.UseOnContext; import net.momirealms.craftengine.core.item.recipe.network.legacy.LegacyRecipeHolder; import net.momirealms.craftengine.core.item.recipe.network.modern.RecipeBookEntry; +import net.momirealms.craftengine.core.item.recipe.network.modern.SingleInputButtonDisplay; import net.momirealms.craftengine.core.item.recipe.network.modern.display.RecipeDisplay; import net.momirealms.craftengine.core.item.trade.MerchantOffer; import net.momirealms.craftengine.core.pack.host.ResourcePackDownloadData; @@ -91,8 +95,8 @@ import net.momirealms.craftengine.core.world.chunk.Palette; import net.momirealms.craftengine.core.world.chunk.PalettedContainer; import net.momirealms.craftengine.core.world.chunk.packet.BlockEntityData; import net.momirealms.craftengine.core.world.chunk.packet.MCSection; -import net.momirealms.craftengine.core.world.collision.AABB; import net.momirealms.sparrow.nbt.CompoundTag; +import net.momirealms.sparrow.nbt.ListTag; import net.momirealms.sparrow.nbt.Tag; import net.momirealms.sparrow.nbt.adventure.NBTDataComponentValue; import org.bukkit.*; @@ -108,6 +112,7 @@ import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.PlayerInventory; import org.bukkit.persistence.PersistentDataType; +import org.bukkit.plugin.Plugin; import org.bukkit.plugin.messaging.PluginMessageListener; import org.bukkit.util.RayTraceResult; import org.bukkit.util.Vector; @@ -118,7 +123,7 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.*; import java.util.concurrent.ConcurrentHashMap; -import java.util.function.BiConsumer; +import java.util.function.BiFunction; public class BukkitNetworkManager implements NetworkManager, Listener, PluginMessageListener { private static BukkitNetworkManager instance; @@ -156,7 +161,8 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes instance = this; this.s2cGamePacketListeners = new ByteBufferPacketListenerHolder[PlayPacketIdHelper.count(PacketFlow.CLIENTBOUND)]; this.c2sGamePacketListeners = new ByteBufferPacketListenerHolder[PlayPacketIdHelper.count(PacketFlow.SERVERBOUND)]; - this.hasModelEngine = Bukkit.getPluginManager().getPlugin("ModelEngine") != null; + Plugin modelEngine = Bukkit.getPluginManager().getPlugin("ModelEngine"); + this.hasModelEngine = modelEngine != null && modelEngine.getPluginMeta().getVersion().startsWith("R4"); this.plugin = plugin; // set up packet id this.packetIds = VersionHelper.isOrAbove1_20_5() ? new PacketIds1_20_5() : new PacketIds1_20(); @@ -183,9 +189,6 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes Object bundle = FastNMS.INSTANCE.constructor$ClientboundBundlePacket(packets); this.immediatePacketConsumer.accept(channel, bundle, sendListener); }; - // set up mod channel - this.plugin.javaPlugin().getServer().getMessenger().registerIncomingPluginChannel(this.plugin.javaPlugin(), MOD_CHANNEL, this); - this.plugin.javaPlugin().getServer().getMessenger().registerOutgoingPluginChannel(this.plugin.javaPlugin(), MOD_CHANNEL); // Inject server channel try { Object server = FastNMS.INSTANCE.method$MinecraftServer$getServer(); @@ -297,7 +300,12 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes } this.blockStateRemapper = newMappings; this.modBlockStateRemapper = newMappingsMOD; - registerS2CGamePacketListener(new LevelChunkWithLightListener(newMappings, newMappingsMOD, newMappings.length, RegistryUtils.currentBiomeRegistrySize()), this.packetIds.clientboundLevelChunkWithLightPacket(), "ClientboundLevelChunkWithLightPacket"); + registerS2CGamePacketListener(new LevelChunkWithLightListener( + newMappings, + newMappingsMOD, + newMappings.length, + RegistryUtils.currentBiomeRegistrySize() + ), this.packetIds.clientboundLevelChunkWithLightPacket(), "ClientboundLevelChunkWithLightPacket"); registerS2CGamePacketListener(new SectionBlockUpdateListener(newMappings, newMappingsMOD), this.packetIds.clientboundSectionBlocksUpdatePacket(), "ClientboundSectionBlocksUpdatePacket"); registerS2CGamePacketListener(new BlockUpdateListener(newMappings, newMappingsMOD), this.packetIds.clientboundBlockUpdatePacket(), "ClientboundBlockUpdatePacket"); registerS2CGamePacketListener( @@ -341,7 +349,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes registerS2CGamePacketListener(new SetScoreListener1_20_3(), VersionHelper.isOrAbove1_20_3() ? this.packetIds.clientboundSetScorePacket() : -1, "ClientboundSetScorePacket"); registerS2CGamePacketListener(new AddRecipeBookListener(), this.packetIds.clientboundRecipeBookAddPacket(), "ClientboundRecipeBookAddPacket"); registerS2CGamePacketListener(new PlaceGhostRecipeListener(), this.packetIds.clientboundPlaceGhostRecipePacket(), "ClientboundPlaceGhostRecipePacket"); - registerS2CGamePacketListener(new UpdateRecipesListener(), this.packetIds.clientboundUpdateRecipesPacket(), "ClientboundUpdateRecipesPacket"); + registerS2CGamePacketListener(VersionHelper.isOrAbove1_21_2() ? new UpdateRecipesListener1_21_2() : new UpdateRecipesListener1_20(), this.packetIds.clientboundUpdateRecipesPacket(), "ClientboundUpdateRecipesPacket"); registerS2CGamePacketListener(new UpdateAdvancementsListener(), this.packetIds.clientboundUpdateAdvancementsPacket(), "ClientboundUpdateAdvancementsPacket"); registerS2CGamePacketListener(new RemoveEntityListener(), this.packetIds.clientboundRemoveEntitiesPacket(), "ClientboundRemoveEntitiesPacket"); registerS2CGamePacketListener(new SoundListener(), this.packetIds.clientboundSoundPacket(), "ClientboundSoundPacket"); @@ -357,6 +365,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes registerC2SGamePacketListener(new CustomPayloadListener1_20(), VersionHelper.isOrAbove1_20_2() ? -1 : this.packetIds.serverboundCustomPayloadPacket(), "ServerboundCustomPayloadPacket"); registerS2CGamePacketListener(VersionHelper.isOrAbove1_20_5() ? new MerchantOffersListener1_20_5() : new MerchantOffersListener1_20(), this.packetIds.clientBoundMerchantOffersPacket(), "ClientboundMerchantOffersPacket"); registerS2CGamePacketListener(new AddEntityListener(RegistryUtils.currentEntityTypeRegistrySize()), this.packetIds.clientboundAddEntityPacket(), "ClientboundAddEntityPacket"); + registerS2CGamePacketListener(new BlockEntityDataListener(), this.packetIds.clientboundBlockEntityDataPacket(), "ClientboundBlockEntityDataPacket"); registerS2CGamePacketListener( VersionHelper.isOrAbove1_20_3() ? new OpenScreenListener1_20_3() : @@ -1245,7 +1254,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes } private static void pickItem(Player player, Key itemId, @Nullable Object blockPos, @Nullable Object entity) throws Throwable { - ItemStack itemStack = BukkitCraftEngine.instance().itemManager().buildCustomItemStack(itemId, BukkitCraftEngine.instance().adapt(player)); + ItemStack itemStack = BukkitCraftEngine.instance().itemManager().buildItemStack(itemId, BukkitCraftEngine.instance().adapt(player)); if (itemStack == null) { CraftEngine.instance().logger().warn("Item: " + itemId + " is not a valid item"); return; @@ -1602,7 +1611,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes } else { return; } - if (clientPayload == null || !clientPayload.channel().equals(NetworkManager.MOD_CHANNEL_KEY)) return; + if (clientPayload == null) return; PayloadHelper.handleReceiver(clientPayload, user); } } @@ -1860,6 +1869,8 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes @Override public void onPacketReceive(NetWorkUser user, NMSPacketEvent event, Object packet) { + if (Config.disableItemOperations()) return; + if (!VersionHelper.PREMIUM && !Config.interceptItem()) return; BukkitServerPlayer player = (BukkitServerPlayer) user; int containerId = FastNMS.INSTANCE.field$ServerboundContainerClickPacket$containerId(packet); int stateId = FastNMS.INSTANCE.field$ServerboundContainerClickPacket$stateId(packet); @@ -1904,28 +1915,35 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes } public static class LevelChunkWithLightListener implements ByteBufferPacketListener { - private static BiConsumer> biomeRemapper = null; + private static BiFunction, Boolean> biomeRemapper = null; - public static void setBiomeRemapper(BiConsumer> remapper) { + public static void setBiomeRemapper(BiFunction, Boolean> remapper) { biomeRemapper = remapper; } - public static void remapBiomes(NetWorkUser user, PalettedContainer biomes) { + public static boolean remapBiomes(NetWorkUser user, PalettedContainer biomes) { if (biomeRemapper != null) { - biomeRemapper.accept(user, biomes); + return biomeRemapper.apply(user, biomes); } + return false; } private final int[] blockStateMapper; private final int[] modBlockStateMapper; private final IntIdentityList biomeList; private final IntIdentityList blockList; + private final boolean needsDowngrade; public LevelChunkWithLightListener(int[] blockStateMapper, int[] modBlockStateMapper, int blockRegistrySize, int biomeRegistrySize) { this.blockStateMapper = blockStateMapper; this.modBlockStateMapper = modBlockStateMapper; this.biomeList = new IntIdentityList(biomeRegistrySize); this.blockList = new IntIdentityList(blockRegistrySize); + this.needsDowngrade = MiscUtils.ceilLog2(BlockStateUtils.vanillaBlockStateCount()) != MiscUtils.ceilLog2(blockRegistrySize); + } + + public int remapBlockState(int stateId, boolean enableMod) { + return enableMod ? this.modBlockStateMapper[stateId] : this.blockStateMapper[stateId]; } @Override @@ -1934,8 +1952,10 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes FriendlyByteBuf buf = event.getBuffer(); int chunkX = buf.readInt(); int chunkZ = buf.readInt(); + ChunkPos chunkPos = new ChunkPos(chunkX, chunkZ); boolean named = !VersionHelper.isOrAbove1_20_2(); - // ClientboundLevelChunkPacketData + + // 读取区块数据 int heightmapsCount = 0; Map heightmapsMap = null; net.momirealms.sparrow.nbt.Tag heightmaps = null; @@ -1951,112 +1971,108 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes heightmaps = buf.readNbt(named); } - int varInt = buf.readVarInt(); - byte[] buffer = new byte[varInt]; - buf.readBytes(buffer); - int blockEntitiesDataCount = buf.readVarInt(); - List blockEntitiesData = new ArrayList<>(); - for (int i = 0; i < blockEntitiesDataCount; i++) { - byte packedXZ = buf.readByte(); - short y = buf.readShort(); - int type = buf.readVarInt(); - Tag tag = buf.readNbt(named); - BlockEntityData blockEntityData = new BlockEntityData(packedXZ, y, type, tag); - blockEntitiesData.add(blockEntityData); - } - // ClientboundLightUpdatePacketData - BitSet skyYMask = buf.readBitSet(); - BitSet blockYMask = buf.readBitSet(); - BitSet emptySkyYMask = buf.readBitSet(); - BitSet emptyBlockYMask = buf.readBitSet(); - List skyUpdates = buf.readByteArrayList(2048); - List blockUpdates = buf.readByteArrayList(2048); - // 开始处理 - if (user.clientModEnabled()) { - ByteBuf byteBuf = Unpooled.copiedBuffer(buffer); - FriendlyByteBuf friendlyByteBuf = new FriendlyByteBuf(byteBuf); - FriendlyByteBuf newBuf = new FriendlyByteBuf(Unpooled.buffer()); - for (int i = 0, count = player.clientSideSectionCount(); i < count; i++) { - MCSection mcSection = new MCSection(user.clientBlockList(), this.blockList, this.biomeList); - mcSection.readPacket(friendlyByteBuf); - PalettedContainer container = mcSection.blockStateContainer(); - remapBiomes(user, mcSection.biomeContainer()); - Palette palette = container.data().palette(); - if (palette.canRemap()) { - palette.remap(s -> this.modBlockStateMapper[s]); - } else { - for (int j = 0; j < 4096; j++) { - int state = container.get(j); - int newState = this.modBlockStateMapper[state]; - if (newState != state) { - container.set(j, newState); - } + int chunkDataBufferSize = buf.readVarInt(); + byte[] chunkDataBytes = new byte[chunkDataBufferSize]; + buf.readBytes(chunkDataBytes); + + // 客户端侧section数量很重要,不能读取此时玩家所在的真实世界,包具有滞后性 + int count = player.clientSideSectionCount(); + MCSection[] sections = new MCSection[count]; + FriendlyByteBuf chunkDataByteBuf = new FriendlyByteBuf(Unpooled.wrappedBuffer(chunkDataBytes)); + + boolean hasChangedAnyBlock = false; + boolean hasGlobalPalette = false; + + for (int i = 0; i < count; i++) { + MCSection mcSection = new MCSection(user.clientBlockList(), this.blockList, this.biomeList); + mcSection.readPacket(chunkDataByteBuf); + PalettedContainer container = mcSection.blockStateContainer(); + if (remapBiomes(user, mcSection.biomeContainer())) { + hasChangedAnyBlock = true; + } + Palette palette = container.data().palette(); + if (palette.canRemap()) { + if (palette.remapAndCheck(s -> remapBlockState(s, user.clientModEnabled()))) { + hasChangedAnyBlock = true; + } + } else { + hasGlobalPalette = true; + for (int j = 0; j < 4096; j++) { + int state = container.get(j); + int newState = remapBlockState(state, user.clientModEnabled()); + if (newState != state) { + container.set(j, newState); + hasChangedAnyBlock = true; } } - mcSection.writePacket(newBuf); } - buffer = newBuf.array(); - } else { - ByteBuf byteBuf = Unpooled.copiedBuffer(buffer); - FriendlyByteBuf friendlyByteBuf = new FriendlyByteBuf(byteBuf); - FriendlyByteBuf newBuf = new FriendlyByteBuf(Unpooled.buffer()); - for (int i = 0, count = player.clientSideSectionCount(); i < count; i++) { - MCSection mcSection = new MCSection(user.clientBlockList(), this.blockList, this.biomeList); - mcSection.readPacket(friendlyByteBuf); - PalettedContainer container = mcSection.blockStateContainer(); - remapBiomes(user, mcSection.biomeContainer()); - Palette palette = container.data().palette(); - if (palette.canRemap()) { - palette.remap(s -> this.blockStateMapper[s]); - } else { - for (int j = 0; j < 4096; j++) { - int state = container.get(j); - int newState = this.blockStateMapper[state]; - if (newState != state) { - container.set(j, newState); - } - } + sections[i] = mcSection; + } + + // 只有被修改了,才读后续内容,并改写 + if (hasChangedAnyBlock || (this.needsDowngrade && hasGlobalPalette)) { + // 读取其他非必要信息 + int blockEntitiesDataCount = buf.readVarInt(); + List blockEntitiesData = new ArrayList<>(); + for (int i = 0; i < blockEntitiesDataCount; i++) { + byte packedXZ = buf.readByte(); + short y = buf.readShort(); + int type = buf.readVarInt(); + Tag tag = buf.readNbt(named); + BlockEntityData blockEntityData = new BlockEntityData(packedXZ, y, type, tag); + blockEntitiesData.add(blockEntityData); + } + // 光照信息 + BitSet skyYMask = buf.readBitSet(); + BitSet blockYMask = buf.readBitSet(); + BitSet emptySkyYMask = buf.readBitSet(); + BitSet emptyBlockYMask = buf.readBitSet(); + List skyUpdates = buf.readByteArrayList(2048); + List blockUpdates = buf.readByteArrayList(2048); + + // 预分配容量 + FriendlyByteBuf newChunkDataBuf = new FriendlyByteBuf(Unpooled.buffer(chunkDataBufferSize + 16)); + for (int i = 0; i < count; i++) { + sections[i].writePacket(newChunkDataBuf); + } + chunkDataBytes = newChunkDataBuf.array(); + + // 开始修改 + event.setChanged(true); + buf.clear(); + buf.writeVarInt(event.packetID()); + buf.writeInt(chunkX); + buf.writeInt(chunkZ); + if (VersionHelper.isOrAbove1_21_5()) { + buf.writeVarInt(heightmapsCount); + for (Map.Entry entry : heightmapsMap.entrySet()) { + buf.writeVarInt(entry.getKey()); + buf.writeLongArray(entry.getValue()); } - mcSection.writePacket(newBuf); + } else { + buf.writeNbt(heightmaps, named); } - buffer = newBuf.array(); + buf.writeVarInt(chunkDataBytes.length); + buf.writeBytes(chunkDataBytes); + buf.writeVarInt(blockEntitiesDataCount); + for (BlockEntityData blockEntityData : blockEntitiesData) { + buf.writeByte(blockEntityData.packedXZ()); + buf.writeShort(blockEntityData.y()); + buf.writeVarInt(blockEntityData.type()); + buf.writeNbt(blockEntityData.tag(), named); + } + buf.writeBitSet(skyYMask); + buf.writeBitSet(blockYMask); + buf.writeBitSet(emptySkyYMask); + buf.writeBitSet(emptyBlockYMask); + buf.writeByteArrayList(skyUpdates); + buf.writeByteArrayList(blockUpdates); } - // 开始修改 - event.setChanged(true); - buf.clear(); - buf.writeVarInt(event.packetID()); - buf.writeInt(chunkX); - buf.writeInt(chunkZ); - if (VersionHelper.isOrAbove1_21_5()) { - buf.writeVarInt(heightmapsCount); - for (Map.Entry entry : heightmapsMap.entrySet()) { - buf.writeVarInt(entry.getKey()); - buf.writeLongArray(entry.getValue()); - } - } else { - buf.writeNbt(heightmaps, named); - } - buf.writeVarInt(buffer.length); - buf.writeBytes(buffer); - buf.writeVarInt(blockEntitiesDataCount); - for (BlockEntityData blockEntityData : blockEntitiesData) { - buf.writeByte(blockEntityData.packedXZ()); - buf.writeShort(blockEntityData.y()); - buf.writeVarInt(blockEntityData.type()); - buf.writeNbt(blockEntityData.tag(), named); - } - buf.writeBitSet(skyYMask); - buf.writeBitSet(blockYMask); - buf.writeBitSet(emptySkyYMask); - buf.writeBitSet(emptyBlockYMask); - buf.writeByteArrayList(skyUpdates); - buf.writeByteArrayList(blockUpdates); - - ChunkPos chunkPos = new ChunkPos(chunkX, chunkZ); // 记录加载的区块 player.addTrackedChunk(chunkPos.longKey, new ChunkStatus()); + // 生成方块实体 CEWorld ceWorld = BukkitWorldManager.instance().getWorld(player.world().uuid()); CEChunk ceChunk = ceWorld.getChunkAtIfLoaded(chunkPos.longKey); if (ceChunk != null) { @@ -2169,7 +2185,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes float zDist = buf.readFloat(); float maxSpeed = buf.readFloat(); int count = buf.readInt(); - Object option = FastNMS.INSTANCE.method$StreamDecoder$decode(NetworkReflections.instance$ParticleTypes$STREAM_CODEC, FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf)); + Object option = FastNMS.INSTANCE.method$StreamDecoder$decode(NetworkReflections.instance$ParticleTypes$STREAM_CODEC, FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf.source())); if (option == null) return; if (!CoreReflections.clazz$BlockParticleOption.isInstance(option)) return; Object blockState = FastNMS.INSTANCE.field$BlockParticleOption$blockState(option); @@ -2191,7 +2207,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes buf.writeFloat(zDist); buf.writeFloat(maxSpeed); buf.writeInt(count); - FastNMS.INSTANCE.method$StreamEncoder$encode(NetworkReflections.instance$ParticleTypes$STREAM_CODEC, FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf), remappedOption); + FastNMS.INSTANCE.method$StreamEncoder$encode(NetworkReflections.instance$ParticleTypes$STREAM_CODEC, FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf.source()), remappedOption); } } @@ -2216,7 +2232,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes float zDist = buf.readFloat(); float maxSpeed = buf.readFloat(); int count = buf.readInt(); - Object option = FastNMS.INSTANCE.method$StreamDecoder$decode(NetworkReflections.instance$ParticleTypes$STREAM_CODEC, FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf)); + Object option = FastNMS.INSTANCE.method$StreamDecoder$decode(NetworkReflections.instance$ParticleTypes$STREAM_CODEC, FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf.source())); if (option == null) return; if (!CoreReflections.clazz$BlockParticleOption.isInstance(option)) return; Object blockState = FastNMS.INSTANCE.field$BlockParticleOption$blockState(option); @@ -2237,7 +2253,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes buf.writeFloat(zDist); buf.writeFloat(maxSpeed); buf.writeInt(count); - FastNMS.INSTANCE.method$StreamEncoder$encode(NetworkReflections.instance$ParticleTypes$STREAM_CODEC, FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf), remappedOption); + FastNMS.INSTANCE.method$StreamEncoder$encode(NetworkReflections.instance$ParticleTypes$STREAM_CODEC, FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf.source()), remappedOption); } } @@ -2428,10 +2444,12 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes } Item wrap = this.plugin.itemManager().wrap(FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(nmsItemStack)); - Item clientBoundItem = this.plugin.itemManager().s2c(wrap, player); - if (clientBoundItem.isEmpty()) { + Optional> remapped = this.plugin.itemManager().s2c(wrap, player); + if (remapped.isEmpty()) { return showItem; } + + Item clientBoundItem = remapped.get(); net.kyori.adventure.key.Key id = KeyUtils.toAdventureKey(clientBoundItem.vanillaId()); int count = clientBoundItem.count(); if (VersionHelper.COMPONENT_RELEASE) { @@ -2465,6 +2483,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes @Override public void onPacketSend(NetWorkUser user, ByteBufPacketEvent event) { + if (!Config.interceptSystemChat() && Config.disableItemOperations()) return; FriendlyByteBuf buf = event.getBuffer(); String jsonOrPlainString = buf.readUtf(); Tag tag = MRegistryOps.JSON.convertTo(MRegistryOps.SPARROW_NBT, GsonHelper.get().fromJson(jsonOrPlainString, JsonElement.class)); @@ -2479,7 +2498,9 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes component = AdventureHelper.replaceText(component, tokens, NetworkTextReplaceContext.of((BukkitServerPlayer) user)); } } - component = AdventureHelper.replaceShowItem(component, s -> replaceShowItem(s, (BukkitServerPlayer) user)); + if (!Config.disableItemOperations()) { + component = AdventureHelper.replaceShowItem(component, s -> replaceShowItem(s, (BukkitServerPlayer) user)); + } buf.writeUtf(MRegistryOps.SPARROW_NBT.convertTo(MRegistryOps.JSON, AdventureHelper.componentToNbt(component)).toString()); buf.writeBoolean(overlay); } @@ -2489,6 +2510,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes @Override public void onPacketSend(NetWorkUser user, ByteBufPacketEvent event) { + if (!Config.interceptSystemChat() && Config.disableItemOperations()) return; FriendlyByteBuf buf = event.getBuffer(); Tag nbt = buf.readNbt(false); if (nbt == null) return; @@ -2498,12 +2520,14 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes buf.writeVarInt(event.packetID()); Component component = AdventureHelper.tagToComponent(nbt); if (Config.interceptSystemChat()) { - Map tokens = CraftEngine.instance().fontManager().matchTags(nbt.getAsString()); + Map tokens = CraftEngine.instance().fontManager().matchTags(nbt); if (!tokens.isEmpty()) { component = AdventureHelper.replaceText(component, tokens, NetworkTextReplaceContext.of((BukkitServerPlayer) user)); } } - component = AdventureHelper.replaceShowItem(component, s -> replaceShowItem(s, (BukkitServerPlayer) user)); + if (!Config.disableItemOperations()) { + component = AdventureHelper.replaceShowItem(component, s -> replaceShowItem(s, (BukkitServerPlayer) user)); + } buf.writeNbt(AdventureHelper.componentToTag(component), false); buf.writeBoolean(overlay); } @@ -2539,8 +2563,8 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes if (nbt1 == null) return; Tag nbt2 = buf.readNbt(false); if (nbt2 == null) return; - Map tokens1 = CraftEngine.instance().fontManager().matchTags(nbt1.getAsString()); - Map tokens2 = CraftEngine.instance().fontManager().matchTags(nbt2.getAsString()); + Map tokens1 = CraftEngine.instance().fontManager().matchTags(nbt1); + Map tokens2 = CraftEngine.instance().fontManager().matchTags(nbt2); if (tokens1.isEmpty() && tokens2.isEmpty()) return; event.setChanged(true); buf.clear(); @@ -2575,7 +2599,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes FriendlyByteBuf buf = event.getBuffer(); Tag nbt = buf.readNbt(false); if (nbt == null) return; - Map tokens = CraftEngine.instance().fontManager().matchTags(nbt.getAsString()); + Map tokens = CraftEngine.instance().fontManager().matchTags(nbt); if (tokens.isEmpty()) return; event.setChanged(true); buf.clear(); @@ -2608,7 +2632,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes FriendlyByteBuf buf = event.getBuffer(); Tag nbt = buf.readNbt(false); if (nbt == null) return; - Map tokens = CraftEngine.instance().fontManager().matchTags(nbt.getAsString()); + Map tokens = CraftEngine.instance().fontManager().matchTags(nbt); if (tokens.isEmpty()) return; event.setChanged(true); buf.clear(); @@ -2641,7 +2665,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes FriendlyByteBuf buf = event.getBuffer(); Tag nbt = buf.readNbt(false); if (nbt == null) return; - Map tokens = CraftEngine.instance().fontManager().matchTags(nbt.getAsString()); + Map tokens = CraftEngine.instance().fontManager().matchTags(nbt); if (tokens.isEmpty()) return; event.setChanged(true); buf.clear(); @@ -2701,7 +2725,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes if (actionType == 0) { Tag nbt = buf.readNbt(false); if (nbt == null) return; - Map tokens = CraftEngine.instance().fontManager().matchTags(nbt.getAsString()); + Map tokens = CraftEngine.instance().fontManager().matchTags(nbt); if (tokens.isEmpty()) return; float health = buf.readFloat(); int color = buf.readVarInt(); @@ -2720,7 +2744,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes } else if (actionType == 3) { Tag nbt = buf.readNbt(false); if (nbt == null) return; - Map tokens = CraftEngine.instance().fontManager().matchTags(nbt.getAsString()); + Map tokens = CraftEngine.instance().fontManager().matchTags(nbt); if (tokens.isEmpty()) return; event.setChanged(true); buf.clear(); @@ -2794,9 +2818,9 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes if (prefix == null) return; Tag suffix = buf.readNbt(false); if (suffix == null) return; - Map tokens1 = CraftEngine.instance().fontManager().matchTags(displayName.getAsString()); - Map tokens2 = CraftEngine.instance().fontManager().matchTags(prefix.getAsString()); - Map tokens3 = CraftEngine.instance().fontManager().matchTags(suffix.getAsString()); + Map tokens1 = CraftEngine.instance().fontManager().matchTags(displayName); + Map tokens2 = CraftEngine.instance().fontManager().matchTags(prefix); + Map tokens3 = CraftEngine.instance().fontManager().matchTags(suffix); if (tokens1.isEmpty() && tokens2.isEmpty() && tokens3.isEmpty()) return; NetworkTextReplaceContext context = NetworkTextReplaceContext.of((BukkitServerPlayer) user); List entities = method == 0 ? buf.readStringList() : null; @@ -2857,7 +2881,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes if (optionalNumberFormat) { int format = buf.readVarInt(); if (format == 0) { - Map tokens = CraftEngine.instance().fontManager().matchTags(displayName.getAsString()); + Map tokens = CraftEngine.instance().fontManager().matchTags(displayName); if (tokens.isEmpty()) return; event.setChanged(true); buf.clear(); @@ -2869,7 +2893,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes buf.writeBoolean(true); buf.writeVarInt(0); } else if (format == 1) { - Map tokens = CraftEngine.instance().fontManager().matchTags(displayName.getAsString()); + Map tokens = CraftEngine.instance().fontManager().matchTags(displayName); if (tokens.isEmpty()) return; Tag style = buf.readNbt(false); event.setChanged(true); @@ -2885,8 +2909,8 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes } else if (format == 2) { Tag fixed = buf.readNbt(false); if (fixed == null) return; - Map tokens1 = CraftEngine.instance().fontManager().matchTags(displayName.getAsString()); - Map tokens2 = CraftEngine.instance().fontManager().matchTags(fixed.getAsString()); + Map tokens1 = CraftEngine.instance().fontManager().matchTags(displayName); + Map tokens2 = CraftEngine.instance().fontManager().matchTags(fixed); if (tokens1.isEmpty() && tokens2.isEmpty()) return; event.setChanged(true); buf.clear(); @@ -2900,7 +2924,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes buf.writeNbt(tokens2.isEmpty() ? fixed : AdventureHelper.componentToTag(AdventureHelper.replaceText(AdventureHelper.tagToComponent(fixed), tokens2, NetworkTextReplaceContext.of((BukkitServerPlayer) user))), false); } } else { - Map tokens = CraftEngine.instance().fontManager().matchTags(displayName.getAsString()); + Map tokens = CraftEngine.instance().fontManager().matchTags(displayName); if (tokens.isEmpty()) return; event.setChanged(true); buf.clear(); @@ -2932,7 +2956,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes } outside: if (displayName != null) { - Map tokens = CraftEngine.instance().fontManager().matchTags(displayName.getAsString()); + Map tokens = CraftEngine.instance().fontManager().matchTags(displayName); if (tokens.isEmpty()) break outside; Component component = AdventureHelper.tagToComponent(displayName); component = AdventureHelper.replaceText(component, tokens, NetworkTextReplaceContext.of(serverPlayer)); @@ -2953,7 +2977,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes } else if (format == 2) { fixed = buf.readNbt(false); if (fixed == null) return; - Map tokens = CraftEngine.instance().fontManager().matchTags(fixed.getAsString()); + Map tokens = CraftEngine.instance().fontManager().matchTags(fixed); if (tokens.isEmpty() && !isChanged) return; if (!tokens.isEmpty()) { Component component = AdventureHelper.tagToComponent(fixed); @@ -2995,18 +3019,33 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes @Override public void onPacketSend(NetWorkUser user, ByteBufPacketEvent event) { + if (Config.disableItemOperations()) return; + MutableBoolean changed = new MutableBoolean(false); FriendlyByteBuf buf = event.getBuffer(); - List entries = buf.readCollection(ArrayList::new, byteBuf -> { - RecipeBookEntry entry = RecipeBookEntry.read(byteBuf); - entry.applyClientboundData((BukkitServerPlayer) user); + BukkitItemManager itemManager = BukkitItemManager.instance(); + BukkitServerPlayer player = (BukkitServerPlayer) user; + Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf.source()); + List> entries = buf.readCollection(ArrayList::new, byteBuf -> { + RecipeBookEntry entry = RecipeBookEntry.read(byteBuf, __ -> itemManager.wrap(FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf))); + entry.applyClientboundData(item -> { + Optional> remapped = itemManager.s2c(item, player); + if (remapped.isEmpty()) { + return item; + } + changed.set(true); + return remapped.get(); + }); return entry; }); boolean replace = buf.readBoolean(); - event.setChanged(true); - buf.clear(); - buf.writeVarInt(event.packetID()); - buf.writeCollection(entries, ((byteBuf, recipeBookEntry) -> recipeBookEntry.write(byteBuf))); - buf.writeBoolean(replace); + if (changed.booleanValue()) { + event.setChanged(true); + buf.clear(); + buf.writeVarInt(event.packetID()); + buf.writeCollection(entries, ((byteBuf, recipeBookEntry) -> recipeBookEntry.write(byteBuf, + (__, item) -> FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(friendlyBuf, item.getItem())))); + buf.writeBoolean(replace); + } } } @@ -3014,34 +3053,105 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes @Override public void onPacketSend(NetWorkUser user, ByteBufPacketEvent event) { + if (Config.disableItemOperations()) return; if (!VersionHelper.isOrAbove1_21_2()) return; + MutableBoolean changed = new MutableBoolean(false); FriendlyByteBuf buf = event.getBuffer(); + Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf.source()); + BukkitServerPlayer player = (BukkitServerPlayer) user; + BukkitItemManager itemManager = BukkitItemManager.instance(); int containerId = buf.readContainerId(); - RecipeDisplay display = RecipeDisplay.read(buf); - display.applyClientboundData((BukkitServerPlayer) user); - event.setChanged(true); - buf.clear(); - buf.writeVarInt(event.packetID()); - buf.writeContainerId(containerId); - display.write(buf); + RecipeDisplay display = RecipeDisplay.read(buf, __ -> itemManager.wrap(FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf))); + display.applyClientboundData(item -> { + Optional> remapped = itemManager.s2c(item, player); + if (remapped.isEmpty()) { + return item; + } + changed.set(true); + return remapped.get(); + }); + + if (changed.booleanValue()) { + event.setChanged(true); + buf.clear(); + buf.writeVarInt(event.packetID()); + buf.writeContainerId(containerId); + display.write(buf, (__, item) -> FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(friendlyBuf, item.getItem())); + } } } - public static class UpdateRecipesListener implements ByteBufferPacketListener { + public static class UpdateRecipesListener1_20 implements ByteBufferPacketListener { @Override public void onPacketSend(NetWorkUser user, ByteBufPacketEvent event) { - if (VersionHelper.isOrAbove1_21_2()) return; + if (Config.disableItemOperations()) return; + MutableBoolean changed = new MutableBoolean(false); FriendlyByteBuf buf = event.getBuffer(); - List holders = buf.readCollection(ArrayList::new, byteBuf -> { - LegacyRecipeHolder holder = LegacyRecipeHolder.read(byteBuf); - holder.recipe().applyClientboundData((BukkitServerPlayer) user); + BukkitItemManager itemManager = BukkitItemManager.instance(); + BukkitServerPlayer player = (BukkitServerPlayer) user; + Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf.source()); + List> holders = buf.readCollection(ArrayList::new, byteBuf -> { + LegacyRecipeHolder holder = LegacyRecipeHolder.read(byteBuf, __ -> itemManager.wrap(FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf))); + holder.recipe().applyClientboundData(item -> { + Optional> remapped = itemManager.s2c(item, player); + if (remapped.isEmpty()) { + return item; + } + changed.set(true); + return remapped.get(); + }); return holder; }); - event.setChanged(true); - buf.clear(); - buf.writeVarInt(event.packetID()); - buf.writeCollection(holders, ((byteBuf, recipeHolder) -> recipeHolder.write(byteBuf))); + if (changed.booleanValue()) { + event.setChanged(true); + buf.clear(); + buf.writeVarInt(event.packetID()); + buf.writeCollection(holders, ((byteBuf, recipeHolder) + -> recipeHolder.write(byteBuf, + (__, item) -> FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(friendlyBuf, item.getItem())))); + } + } + } + + public static class UpdateRecipesListener1_21_2 implements ByteBufferPacketListener { + + @Override + public void onPacketSend(NetWorkUser user, ByteBufPacketEvent event) { + if (Config.disableItemOperations()) return; + MutableBoolean changed = new MutableBoolean(false); + FriendlyByteBuf buf = event.getBuffer(); + BukkitItemManager itemManager = BukkitItemManager.instance(); + BukkitServerPlayer player = (BukkitServerPlayer) user; + Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf.source()); + Map> itemSets = buf.readMap( + FriendlyByteBuf::readKey, + b -> b.readCollection(ArrayList::new, FriendlyByteBuf::readVarInt) + ); + List> displays = buf.readCollection(ArrayList::new, b -> { + SingleInputButtonDisplay display = SingleInputButtonDisplay.read(b, __ -> itemManager.wrap(FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf))); + display.applyClientboundData(item -> { + Optional> remapped = itemManager.s2c(item, player); + if (remapped.isEmpty()) { + return item; + } + changed.set(true); + return remapped.get(); + }); + return display; + }); + if (changed.booleanValue()) { + event.setChanged(true); + buf.clear(); + buf.writeVarInt(event.packetID()); + buf.writeMap(itemSets, + FriendlyByteBuf::writeKey, + (b, c) -> b.writeCollection(c, FriendlyByteBuf::writeVarInt) + ); + buf.writeCollection(displays, (b, d) -> { + d.write(b, (__, item) -> FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(friendlyBuf, item.getItem())); + }); + } } } @@ -3049,32 +3159,57 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes @Override public void onPacketSend(NetWorkUser user, ByteBufPacketEvent event) { - if (!(user instanceof BukkitServerPlayer serverPlayer)) return; + if (Config.disableItemOperations() && !Config.interceptAdvancement()) return; + MutableBoolean changed = new MutableBoolean(false); FriendlyByteBuf buf = event.getBuffer(); + BukkitItemManager itemManager = BukkitItemManager.instance(); + BukkitServerPlayer player = (BukkitServerPlayer) user; + Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf.source()); boolean reset = buf.readBoolean(); - List added = buf.readCollection(ArrayList::new, byteBuf -> { - AdvancementHolder holder = AdvancementHolder.read(byteBuf); - holder.applyClientboundData(serverPlayer); + List> added = buf.readCollection(ArrayList::new, byteBuf -> { + AdvancementHolder holder = AdvancementHolder.read(byteBuf, __ -> itemManager.wrap(FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf))); + if (!Config.disableItemOperations()) { + holder.applyClientboundData(item -> { + Optional> remapped = itemManager.s2c(item, player); + if (remapped.isEmpty()) { + return item; + } + changed.set(true); + return remapped.get(); + }); + } + if (Config.interceptAdvancement()) { + holder.replaceNetworkTags(component -> { + Map tokens = CraftEngine.instance().fontManager().matchTags(AdventureHelper.componentToJson(component)); + if (tokens.isEmpty()) return component; + changed.set(true); + return AdventureHelper.replaceText(component, tokens, NetworkTextReplaceContext.of(player)); + }); + } return holder; }); - Set removed = buf.readCollection(Sets::newLinkedHashSetWithExpectedSize, FriendlyByteBuf::readKey); - Map progress = buf.readMap(FriendlyByteBuf::readKey, AdvancementProgress::read); - boolean showAdvancement = false; - if (VersionHelper.isOrAbove1_21_5()) { - showAdvancement = buf.readBoolean(); - } + if (changed.booleanValue()) { + Set removed = buf.readCollection(Sets::newLinkedHashSetWithExpectedSize, FriendlyByteBuf::readKey); + Map progress = buf.readMap(FriendlyByteBuf::readKey, AdvancementProgress::read); - event.setChanged(true); - buf.clear(); - buf.writeVarInt(event.packetID()); + boolean showAdvancement = false; + if (VersionHelper.isOrAbove1_21_5()) { + showAdvancement = buf.readBoolean(); + } - buf.writeBoolean(reset); - buf.writeCollection(added, (byteBuf, advancementHolder) -> advancementHolder.write(byteBuf)); - buf.writeCollection(removed, FriendlyByteBuf::writeKey); - buf.writeMap(progress, FriendlyByteBuf::writeKey, (byteBuf, advancementProgress) -> advancementProgress.write(byteBuf)); - if (VersionHelper.isOrAbove1_21_5()) { - buf.writeBoolean(showAdvancement); + event.setChanged(true); + buf.clear(); + buf.writeVarInt(event.packetID()); + + buf.writeBoolean(reset); + buf.writeCollection(added, (byteBuf, advancementHolder) -> advancementHolder.write(byteBuf, + (__, item) -> FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(friendlyBuf, item.getItem()))); + buf.writeCollection(removed, FriendlyByteBuf::writeKey); + buf.writeMap(progress, FriendlyByteBuf::writeKey, (byteBuf, advancementProgress) -> advancementProgress.write(byteBuf)); + if (VersionHelper.isOrAbove1_21_5()) { + buf.writeBoolean(showAdvancement); + } } } } @@ -3084,16 +3219,16 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes @Override public void onPacketSend(NetWorkUser user, ByteBufPacketEvent event) { FriendlyByteBuf buf = event.getBuffer(); - boolean isChange = false; + boolean changed = false; IntList intList = buf.readIntIdList(); for (int i = 0, size = intList.size(); i < size; i++) { int entityId = intList.getInt(i); EntityPacketHandler handler = user.entityPacketHandlers().remove(entityId); if (handler != null && handler.handleEntitiesRemove(intList)) { - isChange = true; + changed = true; } } - if (isChange) { + if (changed) { event.setChanged(true); buf.clear(); buf.writeVarInt(event.packetID()); @@ -3179,6 +3314,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes @Override public void onPacketSend(NetWorkUser user, ByteBufPacketEvent event) { + if (Config.disableItemOperations()) return; if (!(user instanceof BukkitServerPlayer serverPlayer)) return; FriendlyByteBuf buf = event.getBuffer(); int containerId = buf.readContainerId(); @@ -3186,7 +3322,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes int listSize = buf.readVarInt(); List items = new ArrayList<>(listSize); boolean changed = false; - Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf); + Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf.source()); for (int i = 0; i < listSize; i++) { ItemStack itemStack = FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf); Optional optional = BukkitItemManager.instance().s2c(itemStack, serverPlayer); @@ -3211,11 +3347,10 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes buf.writeContainerId(containerId); buf.writeVarInt(stateId); buf.writeVarInt(listSize); - Object newFriendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf); for (ItemStack itemStack : items) { - FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(newFriendlyBuf, itemStack); + FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(friendlyBuf, itemStack); } - FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(newFriendlyBuf, newCarriedItem); + FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(friendlyBuf, newCarriedItem); } } @@ -3223,17 +3358,18 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes @Override public void onPacketSend(NetWorkUser user, ByteBufPacketEvent event) { + if (Config.disableItemOperations()) return; if (!(user instanceof BukkitServerPlayer serverPlayer)) return; FriendlyByteBuf buf = event.getBuffer(); int containerId = buf.readContainerId(); int stateId = buf.readVarInt(); int slot = buf.readShort(); - Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf); + Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf.source()); ItemStack itemStack; try { itemStack = FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf); } catch (Exception e) { - // 其他插件干的,比如某ty*****er,不要赖到ce头上 + // 其他插件干的,发送了非法的物品 return; } BukkitItemManager.instance().s2c(itemStack, serverPlayer).ifPresent((newItemStack) -> { @@ -3243,8 +3379,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes buf.writeContainerId(containerId); buf.writeVarInt(stateId); buf.writeShort(slot); - Object newFriendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf); - FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(newFriendlyBuf, newItemStack); + FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(friendlyBuf, newItemStack); }); } } @@ -3253,16 +3388,38 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes @Override public void onPacketSend(NetWorkUser user, ByteBufPacketEvent event) { + if (Config.disableItemOperations()) return; if (!(user instanceof BukkitServerPlayer serverPlayer)) return; FriendlyByteBuf buf = event.getBuffer(); - Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf); + Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf.source()); ItemStack itemStack = FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf); + + // 为了避免其他插件造成的手感冲突 + if (VersionHelper.isOrAbove1_21_5()) { + Item wrapped = BukkitItemManager.instance().wrap(itemStack); + // 发出来的是非空物品 + if (!wrapped.isEmpty()) { + Object containerMenu = FastNMS.INSTANCE.field$Player$containerMenu(serverPlayer.serverPlayer()); + if (containerMenu != null) { + ItemStack carried = FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(FastNMS.INSTANCE.method$AbstractContainerMenu$getCarried(containerMenu)); + // 但服务端上实际确是空气,就把它写成空气,避免因为其他插件导致手感问题 + if (ItemStackUtils.isEmpty(carried)) { + event.setChanged(true); + buf.clear(); + buf.writeVarInt(event.packetID()); + Object newFriendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf); + FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(newFriendlyBuf, carried); + return; + } + } + } + } + BukkitItemManager.instance().s2c(itemStack, serverPlayer).ifPresent((newItemStack) -> { event.setChanged(true); buf.clear(); buf.writeVarInt(event.packetID()); - Object newFriendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf); - FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(newFriendlyBuf, newItemStack); + FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(friendlyBuf, newItemStack); }); } } @@ -3271,10 +3428,11 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes @Override public void onPacketSend(NetWorkUser user, ByteBufPacketEvent event) { + if (Config.disableItemOperations()) return; if (!(user instanceof BukkitServerPlayer serverPlayer)) return; FriendlyByteBuf buf = event.getBuffer(); boolean changed = false; - Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf); + Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf.source()); int entity = buf.readVarInt(); List> slots = Lists.newArrayList(); int slotMask; @@ -3295,14 +3453,13 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes buf.writeVarInt(event.packetID()); buf.writeVarInt(entity); int i = slots.size(); - Object newFriendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf); for (int j = 0; j < i; ++j) { com.mojang.datafixers.util.Pair pair = slots.get(j); Enum equipmentSlot = (Enum) pair.getFirst(); boolean bl = j != i - 1; int k = equipmentSlot.ordinal(); buf.writeByte(bl ? k | -128 : k); - FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(newFriendlyBuf, pair.getSecond()); + FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(friendlyBuf, pair.getSecond()); } } } @@ -3312,18 +3469,18 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes @Override public void onPacketSend(NetWorkUser user, ByteBufPacketEvent event) { + if (Config.disableItemOperations()) return; if (!(user instanceof BukkitServerPlayer serverPlayer)) return; FriendlyByteBuf buf = event.getBuffer(); int slot = buf.readVarInt(); - Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf); + Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf.source()); ItemStack itemStack = FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf); BukkitItemManager.instance().s2c(itemStack, serverPlayer).ifPresent((newItemStack) -> { event.setChanged(true); buf.clear(); buf.writeVarInt(event.packetID()); buf.writeVarInt(slot); - Object newFriendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf); - FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(newFriendlyBuf, newItemStack); + FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(friendlyBuf, newItemStack); }); } } @@ -3332,10 +3489,11 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes @Override public void onPacketReceive(NetWorkUser user, ByteBufPacketEvent event) { + if (Config.disableItemOperations()) return; if (!(user instanceof BukkitServerPlayer serverPlayer)) return; if (!serverPlayer.isCreativeMode()) return; FriendlyByteBuf buf = event.getBuffer(); - Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf); + Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf.source()); short slotNum = buf.readShort(); ItemStack itemStack; try { @@ -3349,11 +3507,10 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes buf.clear(); buf.writeVarInt(event.packetID()); buf.writeShort(slotNum); - Object newFriendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf); if (VersionHelper.isOrAbove1_20_5()) { - FastNMS.INSTANCE.method$FriendlyByteBuf$writeUntrustedItem(newFriendlyBuf, newItemStack); + FastNMS.INSTANCE.method$FriendlyByteBuf$writeUntrustedItem(friendlyBuf, newItemStack); } else { - FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(newFriendlyBuf, newItemStack); + FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(friendlyBuf, newItemStack); } }); } @@ -3363,9 +3520,11 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes @Override public void onPacketReceive(NetWorkUser user, ByteBufPacketEvent event) { + if (Config.disableItemOperations()) return; + if (!VersionHelper.PREMIUM && !Config.interceptItem()) return; FriendlyByteBuf buf = event.getBuffer(); boolean changed = false; - Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf); + Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf.source()); int containerId = buf.readContainerId(); int stateId = buf.readVarInt(); short slotNum = buf.readShort(); @@ -3399,12 +3558,11 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes buf.writeByte(buttonNum); buf.writeVarInt(clickType); buf.writeVarInt(changedSlots.size()); - Object newFriendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf); - changedSlots.forEach((k, v) -> { - buf.writeShort(k); - FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(newFriendlyBuf, v); - }); - FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(newFriendlyBuf, carriedItem); + for (Map.Entry entry : changedSlots.int2ObjectEntrySet()) { + buf.writeShort(entry.getKey()); + FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(friendlyBuf, entry.getValue()); + } + FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(friendlyBuf, carriedItem); } } } @@ -3479,8 +3637,6 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes float x = buf.readFloat(); float y = buf.readFloat(); float z = buf.readFloat(); - // todo 这个是错误的,这是实体的相对位置而非绝对位置 - Location interactionPoint = new Location(platformPlayer.getWorld(), x, y, z); InteractionHand hand = buf.readVarInt() == 0 ? InteractionHand.MAIN_HAND : InteractionHand.OFF_HAND; boolean usingSecondaryAction = buf.readBoolean(); if (entityId != furniture.baseEntityId()) { @@ -3499,16 +3655,40 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes return; } - // todo 重构家具时候注意,需要准备加载好的hitbox类,以获取hitbox坐标 - if (!serverPlayer.canInteractPoint(new Vec3d(location.getX(), location.getY(), location.getZ()), 16d)) { + // 先检查碰撞箱部分是否存在 + HitBoxPart hitBoxPart = furniture.hitBoxPartByEntityId(entityId); + if (hitBoxPart == null) return; + Vec3d pos = hitBoxPart.pos(); + // 检测距离 + if (!serverPlayer.canInteractPoint(pos, 16d)) { + return; + } + // 检测 + Location eyeLocation = platformPlayer.getEyeLocation(); + Vector direction = eyeLocation.getDirection(); + Location endLocation = eyeLocation.clone(); + endLocation.add(direction.multiply(serverPlayer.getCachedInteractionRange())); + Optional result = hitBoxPart.aabb().clip(LocationUtils.toVec3d(eyeLocation), LocationUtils.toVec3d(endLocation)); + if (result.isEmpty()) { + return; + } + EntityHitResult hitResult = result.get(); + Vec3d hitLocation = hitResult.hitLocation(); + // 获取正确的交互点 + Location interactionPoint = new Location(platformPlayer.getWorld(), hitLocation.x, hitLocation.y, hitLocation.z); + + HitBox hitbox = furniture.hitBoxByEntityId(entityId); + if (hitbox == null) { return; } - FurnitureInteractEvent interactEvent = new FurnitureInteractEvent(serverPlayer.platformPlayer(), furniture, hand, interactionPoint); + // 触发事件 + FurnitureInteractEvent interactEvent = new FurnitureInteractEvent(serverPlayer.platformPlayer(), furniture, hand, interactionPoint, hitbox); if (EventUtils.fireAndCheckCancel(interactEvent)) { return; } + // 执行事件动作 Item itemInHand = serverPlayer.getItemInHand(InteractionHand.MAIN_HAND); Cancellable cancellable = Cancellable.of(interactEvent::isCancelled, interactEvent::setCancelled); // execute functions @@ -3525,20 +3705,8 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes } // 必须从网络包层面处理,否则无法获取交互的具体实体 - if (serverPlayer.isSecondaryUseActive() && !itemInHand.isEmpty()) { - // try placing another furniture above it - AABB hitBox = furniture.aabbByEntityId(entityId); - if (hitBox == null) return; + if (serverPlayer.isSecondaryUseActive() && !itemInHand.isEmpty() && hitbox.config().canUseItemOn()) { Optional> optionalCustomItem = itemInHand.getCustomItem(); - Location eyeLocation = platformPlayer.getEyeLocation(); - Vector direction = eyeLocation.getDirection(); - Location endLocation = eyeLocation.clone(); - endLocation.add(direction.multiply(serverPlayer.getCachedInteractionRange())); - Optional result = hitBox.clip(LocationUtils.toVec3d(eyeLocation), LocationUtils.toVec3d(endLocation)); - if (result.isEmpty()) { - return; - } - EntityHitResult hitResult = result.get(); if (optionalCustomItem.isPresent() && !optionalCustomItem.get().behaviors().isEmpty()) { for (ItemBehavior behavior : optionalCustomItem.get().behaviors()) { if (behavior instanceof FurnitureItemBehavior) { @@ -3557,11 +3725,13 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes ); } else { if (!serverPlayer.isSecondaryUseActive()) { - furniture.findFirstAvailableSeat(entityId).ifPresent(seatPos -> { - if (furniture.tryOccupySeat(seatPos)) { - furniture.spawnSeatEntityForPlayer(serverPlayer, seatPos); + for (Seat seat : hitbox.seats()) { + if (!seat.isOccupied()) { + if (seat.spawnSeat(serverPlayer, furniture.position())) { + break; + } } - }); + } } } }; @@ -3597,7 +3767,6 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes if (VersionHelper.isOrAbove1_20_2()) return; FriendlyByteBuf byteBuf = event.getBuffer(); Key key = byteBuf.readKey(); - if (!key.equals(NetworkManager.MOD_CHANNEL_KEY)) return; PayloadHelper.handleReceiver(new UnknownPayload(key, byteBuf.readBytes(byteBuf.readableBytes())), user); } } @@ -3810,12 +3979,13 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes @Override public void onPacketSend(NetWorkUser user, ByteBufPacketEvent event) { + if (Config.disableItemOperations()) return; if (!(user instanceof BukkitServerPlayer serverPlayer)) return; FriendlyByteBuf buf = event.getBuffer(); int containerId = buf.readContainerId(); BukkitItemManager manager = BukkitItemManager.instance(); + Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf.source()); List> merchantOffers = buf.readCollection(ArrayList::new, byteBuf -> { - Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(byteBuf); ItemStack cost1 = FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf); ItemStack result = FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf); ItemStack cost2 = FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf); @@ -3828,36 +3998,47 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes int demand = byteBuf.readInt(); return new MerchantOffer<>(manager.wrap(cost1), Optional.of(manager.wrap(cost2)), manager.wrap(result), outOfStock, uses, maxUses, xp, specialPrice, priceMultiplier, demand); }); + + MutableBoolean changed = new MutableBoolean(false); for (MerchantOffer offer : merchantOffers) { - offer.applyClientboundData(item -> manager.s2c(item, serverPlayer)); + offer.applyClientboundData(item -> { + Optional> remapped = manager.s2c(item, serverPlayer); + if (remapped.isEmpty()) { + return item; + } + changed.set(true); + return remapped.get(); + }); } - int villagerLevel = buf.readVarInt(); - int villagerXp = buf.readVarInt(); - boolean showProgress = buf.readBoolean(); - boolean canRestock = buf.readBoolean(); - event.setChanged(true); - buf.clear(); - buf.writeVarInt(event.packetID()); - buf.writeContainerId(containerId); - buf.writeCollection(merchantOffers, (byteBuf, offer) -> { - Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(byteBuf); - FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(friendlyBuf, offer.cost1().getItem()); - FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(friendlyBuf, offer.result().getItem()); - FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(friendlyBuf, offer.cost2().get().getItem()); - byteBuf.writeBoolean(offer.outOfStock()); - byteBuf.writeInt(offer.uses()); - byteBuf.writeInt(offer.maxUses()); - byteBuf.writeInt(offer.xp()); - byteBuf.writeInt(offer.specialPrice()); - byteBuf.writeFloat(offer.priceMultiplier()); - byteBuf.writeInt(offer.demand()); - }); + if (changed.booleanValue()) { + int villagerLevel = buf.readVarInt(); + int villagerXp = buf.readVarInt(); + boolean showProgress = buf.readBoolean(); + boolean canRestock = buf.readBoolean(); - buf.writeVarInt(villagerLevel); - buf.writeVarInt(villagerXp); - buf.writeBoolean(showProgress); - buf.writeBoolean(canRestock); + event.setChanged(true); + buf.clear(); + buf.writeVarInt(event.packetID()); + buf.writeContainerId(containerId); + buf.writeCollection(merchantOffers, (byteBuf, offer) -> { + FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(friendlyBuf, offer.cost1().getItem()); + FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(friendlyBuf, offer.result().getItem()); + FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(friendlyBuf, offer.cost2().get().getItem()); + byteBuf.writeBoolean(offer.outOfStock()); + byteBuf.writeInt(offer.uses()); + byteBuf.writeInt(offer.maxUses()); + byteBuf.writeInt(offer.xp()); + byteBuf.writeInt(offer.specialPrice()); + byteBuf.writeFloat(offer.priceMultiplier()); + byteBuf.writeInt(offer.demand()); + }); + + buf.writeVarInt(villagerLevel); + buf.writeVarInt(villagerXp); + buf.writeBoolean(showProgress); + buf.writeBoolean(canRestock); + } } } @@ -3866,12 +4047,13 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes @SuppressWarnings("unchecked") @Override public void onPacketSend(NetWorkUser user, ByteBufPacketEvent event) { + if (Config.disableItemOperations()) return; if (!(user instanceof BukkitServerPlayer serverPlayer)) return; FriendlyByteBuf buf = event.getBuffer(); int containerId = buf.readContainerId(); BukkitItemManager manager = BukkitItemManager.instance(); + Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(buf.source()); List> merchantOffers = buf.readCollection(ArrayList::new, byteBuf -> { - Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(byteBuf); ItemStack cost1 = FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(FastNMS.INSTANCE.field$ItemCost$itemStack(FastNMS.INSTANCE.method$StreamDecoder$decode(NetworkReflections.instance$ItemCost$STREAM_CODEC, friendlyBuf))); ItemStack result = FastNMS.INSTANCE.method$FriendlyByteBuf$readItem(friendlyBuf); Optional cost2 = ((Optional) FastNMS.INSTANCE.method$StreamDecoder$decode(NetworkReflections.instance$ItemCost$OPTIONAL_STREAM_CODEC, friendlyBuf)) @@ -3885,36 +4067,47 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes int demand = byteBuf.readInt(); return new MerchantOffer<>(manager.wrap(cost1), cost2.map(manager::wrap), manager.wrap(result), outOfStock, uses, maxUses, xp, specialPrice, priceMultiplier, demand); }); + + MutableBoolean changed = new MutableBoolean(false); for (MerchantOffer offer : merchantOffers) { - offer.applyClientboundData(item -> manager.s2c(item, serverPlayer)); + offer.applyClientboundData(item -> { + Optional> remapped = manager.s2c(item, serverPlayer); + if (remapped.isEmpty()) { + return item; + } + changed.set(true); + return remapped.get(); + }); } - int villagerLevel = buf.readVarInt(); - int villagerXp = buf.readVarInt(); - boolean showProgress = buf.readBoolean(); - boolean canRestock = buf.readBoolean(); - event.setChanged(true); - buf.clear(); - buf.writeVarInt(event.packetID()); - buf.writeContainerId(containerId); - buf.writeCollection(merchantOffers, (byteBuf, offer) -> { - Object friendlyBuf = FastNMS.INSTANCE.constructor$FriendlyByteBuf(byteBuf); - FastNMS.INSTANCE.method$StreamEncoder$encode(NetworkReflections.instance$ItemCost$STREAM_CODEC, friendlyBuf, itemStackToItemCost(offer.cost1().getLiteralObject(), offer.cost1().count())); - FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(friendlyBuf, offer.result().getItem()); - FastNMS.INSTANCE.method$StreamEncoder$encode(NetworkReflections.instance$ItemCost$OPTIONAL_STREAM_CODEC, friendlyBuf, offer.cost2().map(it -> itemStackToItemCost(it.getLiteralObject(), it.count()))); - byteBuf.writeBoolean(offer.outOfStock()); - byteBuf.writeInt(offer.uses()); - byteBuf.writeInt(offer.maxUses()); - byteBuf.writeInt(offer.xp()); - byteBuf.writeInt(offer.specialPrice()); - byteBuf.writeFloat(offer.priceMultiplier()); - byteBuf.writeInt(offer.demand()); - }); + if (changed.booleanValue()) { + int villagerLevel = buf.readVarInt(); + int villagerXp = buf.readVarInt(); + boolean showProgress = buf.readBoolean(); + boolean canRestock = buf.readBoolean(); - buf.writeVarInt(villagerLevel); - buf.writeVarInt(villagerXp); - buf.writeBoolean(showProgress); - buf.writeBoolean(canRestock); + event.setChanged(true); + buf.clear(); + buf.writeVarInt(event.packetID()); + buf.writeContainerId(containerId); + buf.writeCollection(merchantOffers, (byteBuf, offer) -> { + FastNMS.INSTANCE.method$StreamEncoder$encode(NetworkReflections.instance$ItemCost$STREAM_CODEC, friendlyBuf, itemStackToItemCost(offer.cost1().getLiteralObject(), offer.cost1().count())); + FastNMS.INSTANCE.method$FriendlyByteBuf$writeItem(friendlyBuf, offer.result().getItem()); + FastNMS.INSTANCE.method$StreamEncoder$encode(NetworkReflections.instance$ItemCost$OPTIONAL_STREAM_CODEC, friendlyBuf, offer.cost2().map(it -> itemStackToItemCost(it.getLiteralObject(), it.count()))); + byteBuf.writeBoolean(offer.outOfStock()); + byteBuf.writeInt(offer.uses()); + byteBuf.writeInt(offer.maxUses()); + byteBuf.writeInt(offer.xp()); + byteBuf.writeInt(offer.specialPrice()); + byteBuf.writeFloat(offer.priceMultiplier()); + byteBuf.writeInt(offer.demand()); + }); + + buf.writeVarInt(villagerLevel); + buf.writeVarInt(villagerXp); + buf.writeBoolean(showProgress); + buf.writeBoolean(canRestock); + } } private Object itemStackToItemCost(Object itemStack, int count) { @@ -3925,4 +4118,61 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes ); } } + + public static class BlockEntityDataListener implements ByteBufferPacketListener { + + @Override + public void onPacketSend(NetWorkUser user, ByteBufPacketEvent event) { + if (!Config.interceptItem()) return; + FriendlyByteBuf buf = event.getBuffer(); + boolean changed = false; + BlockPos pos = buf.readBlockPos(); + int entityType = buf.readVarInt(); + boolean named = !VersionHelper.isOrAbove1_20_2(); + CompoundTag tag = (CompoundTag) buf.readNbt(named); + // todo 刷怪笼里的物品? + + // 展示架 + if (VersionHelper.isOrAbove1_21_9() && tag != null && tag.containsKey("Items")) { + BukkitItemManager itemManager = BukkitItemManager.instance(); + ListTag itemsTag = tag.getList("Items"); + List> items = new ArrayList<>(); + for (Tag itemTag : itemsTag) { + if (itemTag instanceof CompoundTag itemCompoundTag) { + byte slot = itemCompoundTag.getByte("Slot"); + Object nmsStack = CoreReflections.instance$ItemStack$CODEC.parse(MRegistryOps.SPARROW_NBT, itemCompoundTag) + .resultOrPartial((error) -> CraftEngine.instance().logger().severe("Tried to parse invalid item: '" + error + "'")).orElse(null); + ItemStack bukkitStack = FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(nmsStack); + Optional optional = itemManager.s2c(bukkitStack, (BukkitServerPlayer) user); + if (optional.isPresent()) { + changed = true; + items.add(new Pair<>(slot, optional.get())); + } else { + items.add(Pair.of(slot, bukkitStack)); + } + } + } + if (changed) { + ListTag newItemsTag = new ListTag(); + for (Pair pair : items) { + CompoundTag newItemCompoundTag = (CompoundTag) CoreReflections.instance$ItemStack$CODEC.encodeStart(MRegistryOps.SPARROW_NBT, FastNMS.INSTANCE.field$CraftItemStack$handle(pair.right())) + .resultOrPartial((error) -> CraftEngine.instance().logger().severe("Tried to encode invalid item: '" + error + "'")).orElse(null); + if (newItemCompoundTag != null) { + newItemCompoundTag.putByte("Slot", pair.left()); + newItemsTag.add(newItemCompoundTag); + } + } + tag.put("Items", newItemsTag); + } + } + if (changed) { + event.setChanged(true); + buf.clear(); + buf.writeVarInt(event.packetID()); + buf.writeBlockPos(pos); + buf.writeVarInt(entityType); + buf.writeNbt(tag, named); + } + } + } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketIds.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketIds.java index ad0d6b86e..15a5f2b0f 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketIds.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketIds.java @@ -62,6 +62,8 @@ public interface PacketIds { int clientBoundMerchantOffersPacket(); + int clientboundBlockEntityDataPacket(); + int serverboundContainerClickPacket(); int serverboundSetCreativeModeSlotPacket(); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/handler/CommonItemPacketHandler.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/handler/CommonItemPacketHandler.java index ecc0a03d5..f9b57d6d3 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/handler/CommonItemPacketHandler.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/handler/CommonItemPacketHandler.java @@ -7,6 +7,7 @@ import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer; import net.momirealms.craftengine.bukkit.util.EntityDataUtils; import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.plugin.CraftEngine; +import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.plugin.network.ByteBufPacketEvent; import net.momirealms.craftengine.core.plugin.network.EntityPacketHandler; import net.momirealms.craftengine.core.util.FriendlyByteBuf; @@ -21,9 +22,10 @@ public class CommonItemPacketHandler implements EntityPacketHandler { @Override public void handleSetEntityData(Player user, ByteBufPacketEvent event) { + if (Config.disableItemOperations()) return; FriendlyByteBuf buf = event.getBuffer(); int id = buf.readVarInt(); - boolean isChanged = false; + boolean changed = false; List packedItems = FastNMS.INSTANCE.method$ClientboundSetEntityDataPacket$unpack(buf); for (int i = 0; i < packedItems.size(); i++) { Object packedItem = packedItems.get(i); @@ -43,15 +45,13 @@ public class CommonItemPacketHandler implements EntityPacketHandler { ItemStack itemStack = FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(nmsItemStack); Optional optional = BukkitItemManager.instance().s2c(itemStack, user); if (optional.isEmpty()) continue; - isChanged = true; + changed = true; itemStack = optional.get(); Object serializer = FastNMS.INSTANCE.field$SynchedEntityData$DataValue$serializer(packedItem); - packedItems.set(i, FastNMS.INSTANCE.constructor$SynchedEntityData$DataValue( - entityDataId, serializer, FastNMS.INSTANCE.method$CraftItemStack$asNMSCopy(itemStack) - )); + packedItems.set(i, FastNMS.INSTANCE.constructor$SynchedEntityData$DataValue(entityDataId, serializer, FastNMS.INSTANCE.method$CraftItemStack$asNMSCopy(itemStack))); break; } - if (isChanged) { + if (changed) { event.setChanged(true); buf.clear(); buf.writeVarInt(event.packetID()); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/handler/ItemDisplayPacketHandler.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/handler/ItemDisplayPacketHandler.java index a84770a74..52bf764e4 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/handler/ItemDisplayPacketHandler.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/handler/ItemDisplayPacketHandler.java @@ -3,8 +3,8 @@ package net.momirealms.craftengine.bukkit.plugin.network.handler; import net.momirealms.craftengine.bukkit.entity.data.ItemDisplayEntityData; import net.momirealms.craftengine.bukkit.item.BukkitItemManager; import net.momirealms.craftengine.bukkit.nms.FastNMS; -import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer; import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.plugin.network.ByteBufPacketEvent; import net.momirealms.craftengine.core.plugin.network.EntityPacketHandler; import net.momirealms.craftengine.core.util.FriendlyByteBuf; @@ -18,9 +18,10 @@ public class ItemDisplayPacketHandler implements EntityPacketHandler { @Override public void handleSetEntityData(Player user, ByteBufPacketEvent event) { + if (Config.disableItemOperations()) return; FriendlyByteBuf buf = event.getBuffer(); int id = buf.readVarInt(); - boolean isChanged = false; + boolean changed = false; List packedItems = FastNMS.INSTANCE.method$ClientboundSetEntityDataPacket$unpack(buf); for (int i = 0; i < packedItems.size(); i++) { Object packedItem = packedItems.get(i); @@ -28,17 +29,15 @@ public class ItemDisplayPacketHandler implements EntityPacketHandler { if (entityDataId != ItemDisplayEntityData.DisplayedItem.id()) continue; Object nmsItemStack = FastNMS.INSTANCE.field$SynchedEntityData$DataValue$value(packedItem); ItemStack itemStack = FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(nmsItemStack); - Optional optional = BukkitItemManager.instance().s2c(itemStack, (BukkitServerPlayer) user); + Optional optional = BukkitItemManager.instance().s2c(itemStack, user); if (optional.isEmpty()) continue; - isChanged = true; + changed = true; itemStack = optional.get(); Object serializer = FastNMS.INSTANCE.field$SynchedEntityData$DataValue$serializer(packedItem); - packedItems.set(i, FastNMS.INSTANCE.constructor$SynchedEntityData$DataValue( - entityDataId, serializer, FastNMS.INSTANCE.method$CraftItemStack$asNMSCopy(itemStack) - )); + packedItems.set(i, FastNMS.INSTANCE.constructor$SynchedEntityData$DataValue(entityDataId, serializer, FastNMS.INSTANCE.method$CraftItemStack$asNMSCopy(itemStack))); break; } - if (isChanged) { + if (changed) { event.setChanged(true); buf.clear(); buf.writeVarInt(event.packetID()); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/handler/ItemFramePacketHandler.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/handler/ItemFramePacketHandler.java index eeefbcc48..b413c087b 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/handler/ItemFramePacketHandler.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/handler/ItemFramePacketHandler.java @@ -7,6 +7,7 @@ import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflect import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer; import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.plugin.CraftEngine; +import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.plugin.network.ByteBufPacketEvent; import net.momirealms.craftengine.core.plugin.network.EntityPacketHandler; import net.momirealms.craftengine.core.util.FriendlyByteBuf; @@ -17,13 +18,14 @@ import java.util.Optional; public class ItemFramePacketHandler implements EntityPacketHandler { public static final ItemFramePacketHandler INSTANCE = new ItemFramePacketHandler(); - private static long lastWarningTime = 0; + private static long LAST_WARN_TIME = 0; @Override public void handleSetEntityData(Player user, ByteBufPacketEvent event) { + if (Config.disableItemOperations()) return; FriendlyByteBuf buf = event.getBuffer(); int id = buf.readVarInt(); - boolean isChanged = false; + boolean changed = false; List packedItems = FastNMS.INSTANCE.method$ClientboundSetEntityDataPacket$unpack(buf); for (int i = 0; i < packedItems.size(); i++) { Object packedItem = packedItems.get(i); @@ -32,26 +34,24 @@ public class ItemFramePacketHandler implements EntityPacketHandler { Object nmsItemStack = FastNMS.INSTANCE.field$SynchedEntityData$DataValue$value(packedItem); if (!CoreReflections.clazz$ItemStack.isInstance(nmsItemStack)) { long time = System.currentTimeMillis(); - if (time - lastWarningTime > 5000) { + if (time - LAST_WARN_TIME > 5000) { BukkitServerPlayer serverPlayer = (BukkitServerPlayer) user; CraftEngine.instance().logger().severe("An issue was detected while applying item-related entity data for '" + serverPlayer.name() + "'. Please execute the command '/ce debug entity-id " + serverPlayer.world().name() + " " + id + "' and provide a screenshot for further investigation."); - lastWarningTime = time; + LAST_WARN_TIME = time; } continue; } ItemStack itemStack = FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(nmsItemStack); Optional optional = BukkitItemManager.instance().s2c(itemStack, user); if (optional.isEmpty()) continue; - isChanged = true; + changed = true; itemStack = optional.get(); Object serializer = FastNMS.INSTANCE.field$SynchedEntityData$DataValue$serializer(packedItem); - packedItems.set(i, FastNMS.INSTANCE.constructor$SynchedEntityData$DataValue( - entityDataId, serializer, FastNMS.INSTANCE.method$CraftItemStack$asNMSCopy(itemStack) - )); + packedItems.set(i, FastNMS.INSTANCE.constructor$SynchedEntityData$DataValue(entityDataId, serializer, FastNMS.INSTANCE.method$CraftItemStack$asNMSCopy(itemStack))); break; } - if (isChanged) { + if (changed) { event.setChanged(true); buf.clear(); buf.writeVarInt(event.packetID()); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/handler/ProjectilePacketHandler.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/handler/ProjectilePacketHandler.java index a85925165..81ad7c893 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/handler/ProjectilePacketHandler.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/handler/ProjectilePacketHandler.java @@ -29,14 +29,10 @@ import java.util.UUID; public class ProjectilePacketHandler implements EntityPacketHandler { private final int entityId; private final BukkitCustomProjectile projectile; - private final Object cachedPacket; - private final List cachedData; public ProjectilePacketHandler(BukkitCustomProjectile projectile, int entityId) { this.projectile = projectile; this.entityId = entityId; - this.cachedData = createCustomProjectileEntityDataValues(); - this.cachedPacket = FastNMS.INSTANCE.constructor$ClientboundSetEntityDataPacket(entityId, this.cachedData); } @Override @@ -47,7 +43,7 @@ public class ProjectilePacketHandler implements EntityPacketHandler { buf.clear(); buf.writeVarInt(event.packetID()); buf.writeVarInt(id); - FastNMS.INSTANCE.method$ClientboundSetEntityDataPacket$pack(this.cachedData, buf); + FastNMS.INSTANCE.method$ClientboundSetEntityDataPacket$pack(this.createCustomProjectileEntityDataValues(user), buf); } @Override @@ -60,7 +56,7 @@ public class ProjectilePacketHandler implements EntityPacketHandler { public void handleMoveAndRotate(NetWorkUser user, NMSPacketEvent event, Object packet) { int entityId = ProtectedFieldVisitor.get().field$ClientboundMoveEntityPacket$entityId(packet); event.replacePacket(FastNMS.INSTANCE.constructor$ClientboundBundlePacket(List.of( - this.cachedPacket, + FastNMS.INSTANCE.constructor$ClientboundSetEntityDataPacket(entityId, this.createCustomProjectileEntityDataValues((Player) user)), convertCustomProjectileMovePacket(packet, entityId) ))); } @@ -110,14 +106,15 @@ public class ProjectilePacketHandler implements EntityPacketHandler { return FastNMS.INSTANCE.constructor$ClientboundEntityPositionSyncPacket(entityId, newPositionMoveRotation, onGround); } - public List createCustomProjectileEntityDataValues() { + public List createCustomProjectileEntityDataValues(Player player) { List itemDisplayValues = new ArrayList<>(); Optional> customItem = BukkitItemManager.instance().getCustomItem(this.projectile.metadata().item()); if (customItem.isEmpty()) return itemDisplayValues; ProjectileMeta meta = this.projectile.metadata(); Item displayedItem = customItem.get().buildItem(ItemBuildContext.empty()); // 我们应当使用新的展示物品的组件覆盖原物品的组件,以完成附魔,附魔光效等组件的继承 - displayedItem = this.projectile.item().mergeCopy(displayedItem); + Item item = this.projectile.item().mergeCopy(displayedItem); + displayedItem = BukkitItemManager.instance().s2c(item, player).orElse(item); ItemDisplayEntityData.InterpolationDelay.addEntityDataIfNotDefaultValue(-1, itemDisplayValues); ItemDisplayEntityData.Translation.addEntityDataIfNotDefaultValue(meta.translation(), itemDisplayValues); ItemDisplayEntityData.Scale.addEntityDataIfNotDefaultValue(meta.scale(), itemDisplayValues); @@ -130,9 +127,7 @@ public class ProjectilePacketHandler implements EntityPacketHandler { } Object literalItem = displayedItem.getLiteralObject(); - BukkitItemManager.instance().s2c(displayedItem.getItem(), null).ifPresentOrElse( - it -> ItemDisplayEntityData.DisplayedItem.addEntityDataIfNotDefaultValue(FastNMS.INSTANCE.field$CraftItemStack$handle(it), itemDisplayValues), - () -> ItemDisplayEntityData.DisplayedItem.addEntityDataIfNotDefaultValue(literalItem, itemDisplayValues)); + ItemDisplayEntityData.DisplayedItem.addEntityDataIfNotDefaultValue(literalItem, itemDisplayValues); ItemDisplayEntityData.DisplayType.addEntityDataIfNotDefaultValue(meta.displayType().id(), itemDisplayValues); ItemDisplayEntityData.BillboardConstraints.addEntityDataIfNotDefaultValue(meta.billboard().id(), itemDisplayValues); return itemDisplayValues; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PacketIds1_20.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PacketIds1_20.java index ed5beaa0c..ecc7b7a1e 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PacketIds1_20.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PacketIds1_20.java @@ -166,6 +166,11 @@ public class PacketIds1_20 implements PacketIds { return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundMerchantOffersPacket, PacketFlow.CLIENTBOUND); } + @Override + public int clientboundBlockEntityDataPacket() { + return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundBlockEntityDataPacket, PacketFlow.CLIENTBOUND); + } + @Override public int serverboundContainerClickPacket() { return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ServerboundContainerClickPacket, PacketFlow.SERVERBOUND); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PacketIds1_20_5.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PacketIds1_20_5.java index e6240cb1d..2b6d35656 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PacketIds1_20_5.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PacketIds1_20_5.java @@ -165,6 +165,11 @@ public class PacketIds1_20_5 implements PacketIds { return PlayPacketIdHelper.byName("minecraft:merchant_offers", PacketFlow.CLIENTBOUND); } + @Override + public int clientboundBlockEntityDataPacket() { + return PlayPacketIdHelper.byName("minecraft:block_entity_data", PacketFlow.CLIENTBOUND); + } + @Override public int serverboundContainerClickPacket() { return PlayPacketIdHelper.byName("minecraft:container_click", PacketFlow.SERVERBOUND); @@ -182,6 +187,6 @@ public class PacketIds1_20_5 implements PacketIds { @Override public int serverboundCustomPayloadPacket() { - return PlayPacketIdHelper.byName("custom_payload", PacketFlow.SERVERBOUND); + return PlayPacketIdHelper.byName("minecraft:custom_payload", PacketFlow.SERVERBOUND); } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PlayPacketIdHelper.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PlayPacketIdHelper.java index 19ac2a8d1..2748aa4a5 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PlayPacketIdHelper.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PlayPacketIdHelper.java @@ -1,14 +1,14 @@ package net.momirealms.craftengine.bukkit.plugin.network.id; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; import net.momirealms.craftengine.bukkit.nms.FastNMS; -import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; import net.momirealms.craftengine.core.plugin.CraftEngine; +import net.momirealms.craftengine.core.plugin.network.ConnectionState; import net.momirealms.craftengine.core.plugin.network.PacketFlow; import net.momirealms.craftengine.core.util.VersionHelper; -import java.util.*; +import java.util.Collections; +import java.util.EnumMap; +import java.util.Map; public class PlayPacketIdHelper { // 1.20.5-latest @@ -19,25 +19,10 @@ public class PlayPacketIdHelper { static { try { - if (VersionHelper.isOrAbove1_21()) { - Object packetReport = CoreReflections.constructor$PacketReport.newInstance((Object) null); - JsonObject packetReportData = ((JsonElement) CoreReflections.method$PacketReport$serializePackets.invoke(packetReport)).getAsJsonObject(); - JsonObject playData = packetReportData.get("play").getAsJsonObject(); - for (Map.Entry entry : playData.entrySet()) { - Map ids = new HashMap<>(); - byName.put(PacketFlow.valueOf(entry.getKey().toUpperCase(Locale.ROOT)), ids); - for (var entry2 : entry.getValue().getAsJsonObject().entrySet()) { - ids.put(entry2.getKey(), entry2.getValue().getAsJsonObject().get("protocol_id").getAsInt()); - } - } - } else if (VersionHelper.isOrAbove1_20_5()) { - for (Map.Entry> entry : FastNMS.INSTANCE.gamePacketIdsByName().entrySet()) { - byName.put(PacketFlow.valueOf(entry.getKey().toUpperCase(Locale.ROOT)), entry.getValue()); - } + if (VersionHelper.isOrAbove1_20_5()) { + byName.putAll(FastNMS.INSTANCE.gamePacketIdsByName().get(ConnectionState.PLAY)); } else { - for (Map.Entry, Integer>> entry : FastNMS.INSTANCE.gamePacketIdsByClazz().entrySet()) { - byClazz.put(PacketFlow.valueOf(entry.getKey().toUpperCase(Locale.ROOT)), entry.getValue()); - } + byClazz.putAll(FastNMS.INSTANCE.gamePacketIdsByClazz().get(ConnectionState.PLAY)); } if (!byName.isEmpty()) { for (Map.Entry> entry : byName.entrySet()) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/PayloadHelper.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/PayloadHelper.java index 0fee4fb84..716ad2f0d 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/PayloadHelper.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/PayloadHelper.java @@ -1,13 +1,16 @@ package net.momirealms.craftengine.bukkit.plugin.network.payload; import io.netty.buffer.Unpooled; +import net.kyori.adventure.text.Component; import net.momirealms.craftengine.bukkit.plugin.network.payload.protocol.CancelBlockUpdatePacket; import net.momirealms.craftengine.bukkit.plugin.network.payload.protocol.ClientBlockStateSizePacket; import net.momirealms.craftengine.bukkit.plugin.network.payload.protocol.ClientCustomBlockPacket; +import net.momirealms.craftengine.bukkit.plugin.network.payload.protocol.VisualBlockStatePacket; import net.momirealms.craftengine.core.plugin.CraftEngine; +import net.momirealms.craftengine.core.plugin.logger.Debugger; import net.momirealms.craftengine.core.plugin.network.ModPacket; import net.momirealms.craftengine.core.plugin.network.NetWorkUser; -import net.momirealms.craftengine.core.plugin.network.NetworkManager; +import net.momirealms.craftengine.core.plugin.network.PayloadChannelKeys; import net.momirealms.craftengine.core.plugin.network.codec.NetworkCodec; import net.momirealms.craftengine.core.registry.BuiltInRegistries; import net.momirealms.craftengine.core.registry.WritableRegistry; @@ -15,11 +18,13 @@ import net.momirealms.craftengine.core.util.FriendlyByteBuf; import net.momirealms.craftengine.core.util.ResourceKey; public class PayloadHelper { + public static final byte[] JADE_RESPONSE = new byte[]{0, 0, 0, 0}; public static void registerDataTypes() { registerDataType(ClientCustomBlockPacket.TYPE, ClientCustomBlockPacket.CODEC); registerDataType(CancelBlockUpdatePacket.TYPE, CancelBlockUpdatePacket.CODEC); registerDataType(ClientBlockStateSizePacket.TYPE, ClientBlockStateSizePacket.CODEC); + registerDataType(VisualBlockStatePacket.TYPE, VisualBlockStatePacket.CODEC); } public static void registerDataType(ResourceKey> key, NetworkCodec codec) { @@ -36,16 +41,31 @@ public class PayloadHelper { FriendlyByteBuf buf = new FriendlyByteBuf(Unpooled.buffer()); buf.writeByte(BuiltInRegistries.MOD_PACKET.getId(codec)); codec.encode(buf, data); - user.sendCustomPayload(NetworkManager.MOD_CHANNEL_KEY, buf.array()); + user.sendCustomPayload(PayloadChannelKeys.CRAFTENGINE_CHANNEL, buf.array()); } public static void handleReceiver(Payload payload, NetWorkUser user) { + try { + if (payload.channel().equals(PayloadChannelKeys.CRAFTENGINE_CHANNEL)) { + handleCraftEngineModReceiver(payload, user); + } + } catch (Throwable e) { + // 乱发包我给你踹了 + user.kick(Component.translatable( + "disconnect.craftengine.invalid_payload", + "Connection terminated due to transmission of invalid payload. \n Please ensure that the client mod and server plugin are the latest version." + )); + Debugger.COMMON.warn(() -> "Failed to handle payload", e); + } + } + + private static void handleCraftEngineModReceiver(Payload payload, NetWorkUser user) { FriendlyByteBuf buf = payload.toBuffer(); byte type = buf.readByte(); @SuppressWarnings("unchecked") NetworkCodec codec = (NetworkCodec) BuiltInRegistries.MOD_PACKET.getValue(type); if (codec == null) { - CraftEngine.instance().logger().warn("Unknown data type received: " + type); + Debugger.COMMON.debug(() -> "Unknown data type received: " + type); return; } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/ClientCustomBlockPacket.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/ClientCustomBlockPacket.java index 257399aae..eee81789d 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/ClientCustomBlockPacket.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/ClientCustomBlockPacket.java @@ -4,10 +4,13 @@ package net.momirealms.craftengine.bukkit.plugin.network.payload.protocol; import it.unimi.dsi.fastutil.longs.LongOpenHashSet; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TranslationArgument; +import net.momirealms.craftengine.bukkit.block.BukkitBlockManager; import net.momirealms.craftengine.bukkit.nms.FastNMS; +import net.momirealms.craftengine.bukkit.plugin.network.payload.PayloadHelper; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.NetworkReflections; import net.momirealms.craftengine.bukkit.plugin.reflection.paper.PaperReflections; +import net.momirealms.craftengine.bukkit.util.BlockStateUtils; import net.momirealms.craftengine.bukkit.util.RegistryUtils; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.network.ModPacket; @@ -17,7 +20,7 @@ import net.momirealms.craftengine.core.registry.BuiltInRegistries; import net.momirealms.craftengine.core.util.*; import org.bukkit.entity.Player; -public record ClientCustomBlockPacket(int size) implements ModPacket { +public record ClientCustomBlockPacket(int vanillaSize, int currentSize) implements ModPacket { public static final ResourceKey> TYPE = ResourceKey.create( BuiltInRegistries.MOD_PACKET.key().location(), Key.of("craftengine", "client_custom_block") ); @@ -27,11 +30,12 @@ public record ClientCustomBlockPacket(int size) implements ModPacket { ); private ClientCustomBlockPacket(FriendlyByteBuf buf) { - this(buf.readInt()); + this(buf.readInt(), buf.readInt()); } private void encode(FriendlyByteBuf buf) { - buf.writeInt(this.size); + buf.writeInt(this.vanillaSize); + buf.writeInt(this.currentSize); } @Override @@ -42,17 +46,27 @@ public record ClientCustomBlockPacket(int size) implements ModPacket { @Override public void handle(NetWorkUser user) { if (user.clientModEnabled()) return; // 防止滥用 - int serverBlockRegistrySize = RegistryUtils.currentBlockRegistrySize(); - if (this.size != serverBlockRegistrySize) { + int vanillaBlockRegistrySize = BlockStateUtils.vanillaBlockStateCount(); + if (this.vanillaSize != vanillaBlockRegistrySize) { user.kick(Component.translatable( - "disconnect.craftengine.block_registry_mismatch", - TranslationArgument.numeric(this.size), + "disconnect.craftengine.vanilla_block_registry_mismatch", + TranslationArgument.numeric(this.vanillaSize), + TranslationArgument.numeric(vanillaBlockRegistrySize) + )); + return; + } + int serverBlockRegistrySize = RegistryUtils.currentBlockRegistrySize(); + if (this.currentSize != serverBlockRegistrySize) { + user.kick(Component.translatable( + "disconnect.craftengine.current_block_registry_mismatch", + TranslationArgument.numeric(this.currentSize), TranslationArgument.numeric(serverBlockRegistrySize) )); return; } user.setClientModState(true); - user.setClientBlockList(new IntIdentityList(this.size)); + user.setClientBlockList(new IntIdentityList(this.currentSize)); + PayloadHelper.sendData(user, BukkitBlockManager.instance().cachedVisualBlockStatePacket()); if (!VersionHelper.isOrAbove1_20_2()) { // 因为旧版本没有配置阶段需要重新发送区块 try { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/VisualBlockStatePacket.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/VisualBlockStatePacket.java new file mode 100644 index 000000000..bed116f3e --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/protocol/VisualBlockStatePacket.java @@ -0,0 +1,111 @@ +package net.momirealms.craftengine.bukkit.plugin.network.payload.protocol; + +import io.netty.handler.codec.DecoderException; +import net.momirealms.craftengine.bukkit.block.BukkitBlockManager; +import net.momirealms.craftengine.bukkit.util.BlockStateUtils; +import net.momirealms.craftengine.core.block.ImmutableBlockState; +import net.momirealms.craftengine.core.plugin.config.Config; +import net.momirealms.craftengine.core.plugin.network.ModPacket; +import net.momirealms.craftengine.core.plugin.network.codec.NetworkCodec; +import net.momirealms.craftengine.core.registry.BuiltInRegistries; +import net.momirealms.craftengine.core.util.FriendlyByteBuf; +import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.ResourceKey; + +public record VisualBlockStatePacket(int[] data) implements ModPacket { + public static final ResourceKey> TYPE = ResourceKey.create( + BuiltInRegistries.MOD_PACKET.key().location(), Key.of("craftengine", "visual_block_state") + ); + public static final NetworkCodec CODEC = ModPacket.codec( + VisualBlockStatePacket::encode, + VisualBlockStatePacket::new + ); + private static final int RLE_THRESHOLD = 3; + private static final int RLE_TAG = 0; + private static final int DELTA_TAG = 1; + + private VisualBlockStatePacket(FriendlyByteBuf buf) { + this(decode(buf)); + } + + private void encode(FriendlyByteBuf buf) { + encode(buf, this.data); + } + + private static void encode(FriendlyByteBuf buf, int[] data) { + if (data.length == 0) { + buf.writeVarInt(0); + return; + } + buf.writeVarInt(data.length); + int i = 0; + int previousValue = 0; + while (i < data.length) { + int currentValue = data[i]; + int repeatCount = 1; + int j = i + 1; + while (j < data.length && data[j] == currentValue) { + repeatCount++; + j++; + } + if (repeatCount >= RLE_THRESHOLD) { + buf.writeVarInt(RLE_TAG); + buf.writeVarInt(currentValue); + buf.writeVarInt(repeatCount); + i += repeatCount; + previousValue = currentValue; + } else { + buf.writeVarInt(DELTA_TAG); + int delta = currentValue - previousValue; + buf.writeVarInt(delta); + previousValue = currentValue; + i++; + } + } + } + + private static int[] decode(FriendlyByteBuf buf) { + int length = buf.readVarInt(); + if (length == 0) return new int[0]; + int[] data = new int[length]; + int previousValue = 0; + int i = 0; + while (i < length) { + int tag = buf.readVarInt(); + if (tag == RLE_TAG) { + int value = buf.readVarInt(); + int count = buf.readVarInt(); + if (i + count > length) throw new DecoderException("RLE count exceeds array bounds"); + for (int j = 0; j < count; j++) data[i++] = value; + previousValue = value; + } else if (tag == DELTA_TAG) { + int delta = buf.readVarInt(); + int currentValue = previousValue + delta; + data[i++] = currentValue; + previousValue = currentValue; + } else { + throw new DecoderException("Unknown encoding tag: " + tag); + } + } + if (i != length) throw new DecoderException("Decoded length mismatch"); + return data; + } + + @Override + public ResourceKey> type() { + return TYPE; + } + + public static VisualBlockStatePacket create() { + int vanillaBlockStateCount = BlockStateUtils.vanillaBlockStateCount(); + int serverSideBlockCount = Config.serverSideBlocks(); + int[] mappings = new int[serverSideBlockCount]; + for (int i = 0; i < serverSideBlockCount; i++) { + ImmutableBlockState state = BukkitBlockManager.instance().getImmutableBlockStateUnsafe(i + vanillaBlockStateCount); + if (state.isEmpty()) continue; + mappings[state.customBlockState().registryId() - vanillaBlockStateCount] = state.vanillaBlockState().registryId(); + } + return new VisualBlockStatePacket(mappings); + } + +} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/bukkit/CraftBukkitReflections.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/bukkit/CraftBukkitReflections.java index 7d09bd51f..06546717e 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/bukkit/CraftBukkitReflections.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/bukkit/CraftBukkitReflections.java @@ -372,4 +372,24 @@ public final class CraftBukkitReflections { public static final Class clazz$MinecraftInventory = requireNonNull( ReflectionUtils.getClazz(BukkitReflectionUtils.assembleCBClass("inventory.CraftInventoryCustom$MinecraftInventory")) ); + + public static final Class clazz$CraftMerchant = requireNonNull( + ReflectionUtils.getClazz(BukkitReflectionUtils.assembleCBClass("inventory.CraftMerchant")) + ); + + public static final Method method$CraftMerchant$getMerchant = requireNonNull( + ReflectionUtils.getMethod(clazz$CraftMerchant, CoreReflections.clazz$Merchant) + ); + + public static final Class clazz$CraftMerchantCustom = requireNonNull( + ReflectionUtils.getClazz(BukkitReflectionUtils.assembleCBClass("inventory.CraftMerchantCustom")) + ); + + public static final Class clazz$CraftMerchantCustom$MinecraftMerchant = requireNonNull( + ReflectionUtils.getClazz(BukkitReflectionUtils.assembleCBClass("inventory.CraftMerchantCustom$MinecraftMerchant")) + ); + + public static final Field field$MinecraftMerchant$title = requireNonNull( + ReflectionUtils.getDeclaredField(clazz$CraftMerchantCustom$MinecraftMerchant, CoreReflections.clazz$Component, 0) + ); } 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 736271cfa..c5beafe9e 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 @@ -629,6 +629,17 @@ public final class CoreReflections { BukkitReflectionUtils.assembleMCClass("core.component.DataComponentType") ); + public static final Class clazz$TypedDataComponent = ReflectionUtils.getClazz( + BukkitReflectionUtils.assembleMCClass("core.component.TypedDataComponent") + ); + + // 1.21.5+ + public static final Class clazz$DataComponentPredicate$Type = MiscUtils.requireNonNullIf(ReflectionUtils.getClazz( + BukkitReflectionUtils.assembleMCClass("core.component.predicates.DataComponentPredicate$Type") + ), VersionHelper.isOrAbove1_21_5()); + + + public static final Method method$Registry$getId = requireNonNull( ReflectionUtils.getMethod(clazz$Registry, int.class, Object.class) ); @@ -1653,7 +1664,8 @@ public final class CoreReflections { public static final Object instance$EquipmentSlot$LEGS; public static final Object instance$EquipmentSlot$CHEST; public static final Object instance$EquipmentSlot$HEAD; -// public static final Object instance$EquipmentSlot$BODY; + public static final Object instance$EquipmentSlot$BODY; + public static final Object instance$EquipmentSlot$SADDLE; static { try { @@ -1664,7 +1676,16 @@ public final class CoreReflections { instance$EquipmentSlot$LEGS = instance$EquipmentSlot$values[3]; instance$EquipmentSlot$CHEST = instance$EquipmentSlot$values[4]; instance$EquipmentSlot$HEAD = instance$EquipmentSlot$values[5]; -// instance$EquipmentSlot$BODY = instance$EquipmentSlot$values[6]; + if (VersionHelper.isOrAbove1_20_5()) { + instance$EquipmentSlot$BODY = instance$EquipmentSlot$values[6]; + } else { + instance$EquipmentSlot$BODY = null; + } + if (VersionHelper.isOrAbove1_21_5()) { + instance$EquipmentSlot$SADDLE = instance$EquipmentSlot$values[7]; + } else { + instance$EquipmentSlot$SADDLE = null; + } } catch (ReflectiveOperationException e) { throw new ReflectionInitException("Failed to init EquipmentSlot", e); } @@ -4470,4 +4491,49 @@ public final class CoreReflections { "world.item.trading.ItemCost" ), VersionHelper.isOrAbove1_20_5() ); + + public static final Class clazz$MerchantOffer = requireNonNull(BukkitReflectionUtils.findReobfOrMojmapClass( + "world.item.trading.MerchantRecipe", + "world.item.trading.MerchantOffer" + )); + + public static final Class clazz$Merchant = requireNonNull(BukkitReflectionUtils.findReobfOrMojmapClass( + "world.item.trading.IMerchant", + "world.item.trading.Merchant" + )); + + public static final Class clazz$BlockEntityType = requireNonNull(BukkitReflectionUtils.findReobfOrMojmapClass( + "world.level.block.entity.TileEntityTypes", + "world.level.block.entity.BlockEntityType" + )); + + public static final Method method$BlockGetter$getBlockFloorHeight = requireNonNull( + ReflectionUtils.getMethod(clazz$BlockGetter, double.class, clazz$BlockPos) + ); + + public static final Method method$LivingEntity$getLocalBoundsForPose = requireNonNull( + ReflectionUtils.getMethod(clazz$LivingEntity, clazz$AABB, clazz$Pose) + ); + + public static final Class clazz$DismountHelper = requireNonNull( + BukkitReflectionUtils.findReobfOrMojmapClass( + "world.entity.vehicle.DismountUtil", + "world.entity.vehicle.DismountHelper" + ) + ); + + public static final Class clazz$CollisionGetter = requireNonNull( + BukkitReflectionUtils.findReobfOrMojmapClass( + "world.level.ICollisionAccess", + "world.level.CollisionGetter" + ) + ); + + public static final Method method$DismountHelper$canDismountTo0 = requireNonNull( + ReflectionUtils.getStaticMethod(clazz$DismountHelper, boolean.class, clazz$CollisionGetter, clazz$LivingEntity, clazz$AABB) + ); + + public static final Method method$DismountHelper$canDismountTo1 = requireNonNull( + ReflectionUtils.getStaticMethod(clazz$DismountHelper, boolean.class, clazz$CollisionGetter, clazz$Vec3, clazz$LivingEntity, clazz$Pose) + ); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/MBlockEntityTypes.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/MBlockEntityTypes.java new file mode 100644 index 000000000..e761efdb4 --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/MBlockEntityTypes.java @@ -0,0 +1,28 @@ +package net.momirealms.craftengine.bukkit.plugin.reflection.minecraft; + +import net.momirealms.craftengine.bukkit.nms.FastNMS; +import net.momirealms.craftengine.core.util.MiscUtils; +import net.momirealms.craftengine.core.util.VersionHelper; + +public final class MBlockEntityTypes { + private MBlockEntityTypes() {} + + // 1.21.9+ + public static final Object SHELF ; + public static final int SHELF$registryId; + + private static Object getById(String id) { + Object rl = FastNMS.INSTANCE.method$ResourceLocation$fromNamespaceAndPath("minecraft", id); + return FastNMS.INSTANCE.method$Registry$getValue(MBuiltInRegistries.BLOCK_ENTITY_TYPE, rl); + } + + private static int getRegistryId(Object type) { + if (type == null) return -1; + return FastNMS.INSTANCE.method$Registry$getId(MBuiltInRegistries.BLOCK_ENTITY_TYPE, type); + } + + static { + SHELF = MiscUtils.requireNonNullIf(getById("shelf"), VersionHelper.isOrAbove1_21_9()); + SHELF$registryId = getRegistryId("shelf"); // fixme 有问题,怎么是-1 + } +} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/MBlocks.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/MBlocks.java index 79389af1c..0bb390b3b 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/MBlocks.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/MBlocks.java @@ -28,6 +28,10 @@ public final class MBlocks { public static final Object MELON = getById("melon"); public static final Object PUMPKIN = getById("pumpkin"); public static final Object FARMLAND = getById("farmland"); + public static final Object LODESTONE = getById("lodestone"); + public static final Object BEDROCK = getById("bedrock"); + public static final Object OBSIDIAN = getById("obsidian"); + public static final Object END_PORTAL_FRAME = getById("end_portal_frame"); private static Object getById(String id) { Object rl = FastNMS.INSTANCE.method$ResourceLocation$fromNamespaceAndPath("minecraft", id); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/MBuiltInRegistries.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/MBuiltInRegistries.java index 565ae69c3..b73fe0d00 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/MBuiltInRegistries.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/MBuiltInRegistries.java @@ -1,6 +1,7 @@ package net.momirealms.craftengine.bukkit.plugin.reflection.minecraft; import net.momirealms.craftengine.bukkit.plugin.reflection.ReflectionInitException; +import net.momirealms.craftengine.core.util.VersionHelper; import java.lang.reflect.Field; import java.lang.reflect.ParameterizedType; @@ -17,10 +18,12 @@ public final class MBuiltInRegistries { public static final Object MOB_EFFECT; public static final Object SOUND_EVENT; public static final Object ENTITY_TYPE; + public static final Object BLOCK_ENTITY_TYPE; public static final Object FLUID; public static final Object RECIPE_TYPE; public static final Object PARTICLE_TYPE; public static final Object DATA_COMPONENT_TYPE; + public static final Object DATA_COMPONENT_PREDICATE_TYPE; public static final Object LOOT_POOL_ENTRY_TYPE; public static final Object GAME_EVENT; @@ -33,12 +36,15 @@ public final class MBuiltInRegistries { Object registries$SoundEvent = null; Object registries$ParticleType = null; Object registries$EntityType = null; + Object registries$BlockEntityType = null; Object registries$Item = null; Object registries$Fluid = null; Object registries$RecipeType = null; Object registries$DataComponentType = null; + Object registries$DataComponentPredicateType = null; Object registries$LootPoolEntryType = null; Object registries$GameEvent = null; + for (Field field : fields) { Type fieldType = field.getGenericType(); if (fieldType instanceof ParameterizedType paramType) { @@ -51,8 +57,12 @@ public final class MBuiltInRegistries { registries$EntityType = field.get(null); } else if (rawType == CoreReflections.clazz$RecipeType) { registries$RecipeType = field.get(null); - } else if (rawType == CoreReflections.clazz$DataComponentType && registries$DataComponentType == null) { + } else if (rawType == CoreReflections.clazz$BlockEntityType) { + registries$BlockEntityType = field.get(null); + } else if (VersionHelper.isOrAbove1_20_5() && rawType == CoreReflections.clazz$DataComponentType && registries$DataComponentType == null) { registries$DataComponentType = field.get(null); + } else if (VersionHelper.isOrAbove1_21_5() && rawType == CoreReflections.clazz$DataComponentPredicate$Type) { + registries$DataComponentPredicateType = field.get(null); } } else { if (type == CoreReflections.clazz$Block) { @@ -82,11 +92,13 @@ public final class MBuiltInRegistries { SOUND_EVENT = requireNonNull(registries$SoundEvent); PARTICLE_TYPE = requireNonNull(registries$ParticleType); ENTITY_TYPE = requireNonNull(registries$EntityType); + BLOCK_ENTITY_TYPE = requireNonNull(registries$BlockEntityType); FLUID = requireNonNull(registries$Fluid); RECIPE_TYPE = requireNonNull(registries$RecipeType); LOOT_POOL_ENTRY_TYPE = requireNonNull(registries$LootPoolEntryType); DATA_COMPONENT_TYPE = registries$DataComponentType; GAME_EVENT = requireNonNull(registries$GameEvent); + DATA_COMPONENT_PREDICATE_TYPE = registries$DataComponentPredicateType; } catch (ReflectiveOperationException e) { throw new ReflectionInitException("Failed to init BuiltInRegistries", e); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/MEntityTypes.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/MEntityTypes.java index 726d54947..7542eeb60 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/MEntityTypes.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/MEntityTypes.java @@ -1,81 +1,80 @@ package net.momirealms.craftengine.bukkit.plugin.reflection.minecraft; import net.momirealms.craftengine.bukkit.nms.FastNMS; -import net.momirealms.craftengine.core.util.VersionHelper; public final class MEntityTypes { private MEntityTypes() {} - public static final Object TEXT_DISPLAY; - public static final int TEXT_DISPLAY$registryId; - public static final Object ITEM_DISPLAY; - public static final int ITEM_DISPLAY$registryId; - public static final Object BLOCK_DISPLAY; - public static final int BLOCK_DISPLAY$registryId; - public static final Object ARMOR_STAND; - public static final int ARMOR_STAND$registryId; - public static final Object FALLING_BLOCK; - public static final int FALLING_BLOCK$registryId; - public static final Object INTERACTION; - public static final int INTERACTION$registryId; - public static final Object SHULKER; - public static final int SHULKER$registryId; - public static final Object OAK_BOAT; - public static final int OAK_BOAT$registryId; - public static final Object TRIDENT; - public static final int TRIDENT$registryId; - public static final Object ARROW; - public static final int ARROW$registryId; - public static final Object SPECTRAL_ARROW; - public static final int SPECTRAL_ARROW$registryId; - public static final Object SNOWBALL; - public static final int SNOWBALL$registryId; - public static final Object FIREBALL; - public static final int FIREBALL$registryId; - public static final Object EYE_OF_ENDER; - public static final int EYE_OF_ENDER$registryId; - public static final Object FIREWORK_ROCKET; - public static final int FIREWORK_ROCKET$registryId; - public static final Object ITEM; - public static final int ITEM$registryId; - public static final Object ITEM_FRAME; - public static final int ITEM_FRAME$registryId; - public static final Object GLOW_ITEM_FRAME; - public static final int GLOW_ITEM_FRAME$registryId; - public static final Object OMINOUS_ITEM_SPAWNER; - public static final int OMINOUS_ITEM_SPAWNER$registryId; - public static final Object SMALL_FIREBALL; - public static final int SMALL_FIREBALL$registryId; - public static final Object EGG; - public static final int EGG$registryId; - public static final Object ENDER_PEARL; - public static final int ENDER_PEARL$registryId; - public static final Object EXPERIENCE_BOTTLE; - public static final int EXPERIENCE_BOTTLE$registryId; - public static final Object POTION; - public static final int POTION$registryId; - public static final Object HAPPY_GHAST; - public static final int HAPPY_GHAST$registryId; - public static final Object PLAYER; - public static final int PLAYER$registryId; - public static final Object ENDERMAN; - public static final int ENDERMAN$registryId; - public static final Object TNT; - public static final int TNT$registryId; - public static final Object CHEST_MINECART; - public static final int CHEST_MINECART$registryId; - public static final Object COMMAND_BLOCK_MINECART; - public static final int COMMAND_BLOCK_MINECART$registryId; - public static final Object FURNACE_MINECART; - public static final int FURNACE_MINECART$registryId; - public static final Object HOPPER_MINECART; - public static final int HOPPER_MINECART$registryId; - public static final Object MINECART; - public static final int MINECART$registryId; - public static final Object SPAWNER_MINECART; - public static final int SPAWNER_MINECART$registryId; - public static final Object TNT_MINECART; - public static final int TNT_MINECART$registryId; + public static final Object TEXT_DISPLAY = getById("text_display"); + public static final int TEXT_DISPLAY$registryId = getRegistryId(TEXT_DISPLAY); + public static final Object ITEM_DISPLAY = getById("item_display"); + public static final int ITEM_DISPLAY$registryId = getRegistryId(ITEM_DISPLAY); + public static final Object BLOCK_DISPLAY = getById("block_display"); + public static final int BLOCK_DISPLAY$registryId = getRegistryId(BLOCK_DISPLAY); + public static final Object ARMOR_STAND = getById("armor_stand"); + public static final int ARMOR_STAND$registryId = getRegistryId(ARMOR_STAND); + public static final Object FALLING_BLOCK = getById("falling_block"); + public static final int FALLING_BLOCK$registryId = getRegistryId(FALLING_BLOCK); + public static final Object INTERACTION = getById("interaction"); + public static final int INTERACTION$registryId = getRegistryId(INTERACTION); + public static final Object SHULKER = getById("shulker"); + public static final int SHULKER$registryId = getRegistryId(SHULKER); + public static final Object OAK_BOAT = getById("oak_boat"); + public static final int OAK_BOAT$registryId = getRegistryId(OAK_BOAT); + public static final Object TRIDENT = getById("trident"); + public static final int TRIDENT$registryId = getRegistryId(TRIDENT); + public static final Object ARROW = getById("arrow"); + public static final int ARROW$registryId = getRegistryId(ARROW); + public static final Object SPECTRAL_ARROW = getById("spectral_arrow"); + public static final int SPECTRAL_ARROW$registryId = getRegistryId(SPECTRAL_ARROW); + public static final Object SNOWBALL = getById("snowball"); + public static final int SNOWBALL$registryId = getRegistryId(SNOWBALL); + public static final Object FIREBALL = getById("fireball"); + public static final int FIREBALL$registryId = getRegistryId(FIREBALL); + public static final Object EYE_OF_ENDER = getById("eye_of_ender"); + public static final int EYE_OF_ENDER$registryId = getRegistryId(EYE_OF_ENDER); + public static final Object FIREWORK_ROCKET = getById("firework_rocket"); + public static final int FIREWORK_ROCKET$registryId = getRegistryId(FIREWORK_ROCKET); + public static final Object ITEM = getById("item"); + public static final int ITEM$registryId = getRegistryId(ITEM); + public static final Object ITEM_FRAME = getById("item_frame"); + public static final int ITEM_FRAME$registryId = getRegistryId(ITEM_FRAME); + public static final Object GLOW_ITEM_FRAME = getById("glow_item_frame"); + public static final int GLOW_ITEM_FRAME$registryId = getRegistryId(GLOW_ITEM_FRAME); + public static final Object OMINOUS_ITEM_SPAWNER = getById("ominous_item_spawner"); + public static final int OMINOUS_ITEM_SPAWNER$registryId = getRegistryId(OMINOUS_ITEM_SPAWNER); + public static final Object SMALL_FIREBALL = getById("small_fireball"); + public static final int SMALL_FIREBALL$registryId = getRegistryId(SMALL_FIREBALL); + public static final Object EGG = getById("egg"); + public static final int EGG$registryId = getRegistryId(EGG); + public static final Object ENDER_PEARL = getById("ender_pearl"); + public static final int ENDER_PEARL$registryId = getRegistryId(ENDER_PEARL); + public static final Object EXPERIENCE_BOTTLE = getById("experience_bottle"); + public static final int EXPERIENCE_BOTTLE$registryId = getRegistryId(EXPERIENCE_BOTTLE); + public static final Object POTION = getById("potion"); + public static final int POTION$registryId = getRegistryId(POTION); + public static final Object HAPPY_GHAST = getById("happy_ghast"); + public static final int HAPPY_GHAST$registryId = getRegistryId(HAPPY_GHAST); + public static final Object PLAYER = getById("player"); + public static final int PLAYER$registryId = getRegistryId(PLAYER); + public static final Object ENDERMAN = getById("enderman"); + public static final int ENDERMAN$registryId = getRegistryId(ENDERMAN); + public static final Object TNT = getById("tnt"); + public static final int TNT$registryId = getRegistryId(TNT); + public static final Object CHEST_MINECART = getById("chest_minecart"); + public static final int CHEST_MINECART$registryId = getRegistryId(CHEST_MINECART); + public static final Object COMMAND_BLOCK_MINECART = getById("command_block_minecart"); + public static final int COMMAND_BLOCK_MINECART$registryId = getRegistryId(COMMAND_BLOCK_MINECART); + public static final Object FURNACE_MINECART = getById("furnace_minecart"); + public static final int FURNACE_MINECART$registryId = getRegistryId(FURNACE_MINECART); + public static final Object HOPPER_MINECART = getById("hopper_minecart"); + public static final int HOPPER_MINECART$registryId = getRegistryId(HOPPER_MINECART); + public static final Object MINECART = getById("minecart"); + public static final int MINECART$registryId = getRegistryId(MINECART); + public static final Object SPAWNER_MINECART = getById("spawner_minecart"); + public static final int SPAWNER_MINECART$registryId = getRegistryId(SPAWNER_MINECART); + public static final Object TNT_MINECART = getById("tnt_minecart"); + public static final int TNT_MINECART$registryId = getRegistryId(TNT_MINECART); private static Object getById(String id) { Object rl = FastNMS.INSTANCE.method$ResourceLocation$fromNamespaceAndPath("minecraft", id); @@ -86,77 +85,4 @@ public final class MEntityTypes { if (type == null) return -1; return FastNMS.INSTANCE.method$Registry$getId(MBuiltInRegistries.ENTITY_TYPE, type); } - - static { - TEXT_DISPLAY = getById("text_display"); - TEXT_DISPLAY$registryId = getRegistryId(TEXT_DISPLAY); - ITEM_DISPLAY = getById("item_display"); - ITEM_DISPLAY$registryId = getRegistryId(ITEM_DISPLAY); - BLOCK_DISPLAY = getById("block_display"); - BLOCK_DISPLAY$registryId = getRegistryId(BLOCK_DISPLAY); - FALLING_BLOCK = getById("falling_block"); - FALLING_BLOCK$registryId = getRegistryId(FALLING_BLOCK); - INTERACTION = getById("interaction"); - INTERACTION$registryId = getRegistryId(INTERACTION); - SHULKER = getById("shulker"); - SHULKER$registryId = getRegistryId(SHULKER); - ARMOR_STAND = getById("armor_stand"); - ARMOR_STAND$registryId = getRegistryId(ARMOR_STAND); - OAK_BOAT = getById(VersionHelper.isOrAbove1_21_2() ? "oak_boat" : "boat"); - OAK_BOAT$registryId = getRegistryId(OAK_BOAT); - TRIDENT = getById("trident"); - TRIDENT$registryId = getRegistryId(TRIDENT); - SNOWBALL = getById("snowball"); - SNOWBALL$registryId = getRegistryId(SNOWBALL); - FIREBALL = getById("fireball"); - FIREBALL$registryId = getRegistryId(FIREBALL); - EYE_OF_ENDER = getById("eye_of_ender"); - EYE_OF_ENDER$registryId = getRegistryId(EYE_OF_ENDER); - FIREWORK_ROCKET = getById("firework_rocket"); - FIREWORK_ROCKET$registryId = getRegistryId(FIREWORK_ROCKET); - ITEM = getById("item"); - ITEM$registryId = getRegistryId(ITEM); - ITEM_FRAME = getById("item_frame"); - ITEM_FRAME$registryId = getRegistryId(ITEM_FRAME); - GLOW_ITEM_FRAME = getById("glow_item_frame"); - GLOW_ITEM_FRAME$registryId = getRegistryId(GLOW_ITEM_FRAME); - SMALL_FIREBALL = getById("small_fireball"); - SMALL_FIREBALL$registryId = getRegistryId(SMALL_FIREBALL); - EGG = getById("egg"); - EGG$registryId = getRegistryId(EGG); - ENDER_PEARL = getById("ender_pearl"); - ENDER_PEARL$registryId = getRegistryId(ENDER_PEARL); - EXPERIENCE_BOTTLE = getById("experience_bottle"); - EXPERIENCE_BOTTLE$registryId = getRegistryId(EXPERIENCE_BOTTLE); - POTION = getById("potion"); - POTION$registryId = getRegistryId(POTION); - OMINOUS_ITEM_SPAWNER = VersionHelper.isOrAbove1_20_5() ? getById("ominous_item_spawner") : null; - OMINOUS_ITEM_SPAWNER$registryId = getRegistryId(OMINOUS_ITEM_SPAWNER); - HAPPY_GHAST = VersionHelper.isOrAbove1_21_6() ? getById("happy_ghast") : null; - HAPPY_GHAST$registryId = getRegistryId(HAPPY_GHAST); - PLAYER = getById("player"); - PLAYER$registryId = getRegistryId(PLAYER); - ARROW = getById("arrow"); - ARROW$registryId = getRegistryId(ARROW); - SPECTRAL_ARROW = getById("spectral_arrow"); - SPECTRAL_ARROW$registryId = getRegistryId(SPECTRAL_ARROW); - ENDERMAN = getById("enderman"); - ENDERMAN$registryId = getRegistryId(ENDERMAN); - TNT = getById("tnt"); - TNT$registryId = getRegistryId(TNT); - CHEST_MINECART = getById("chest_minecart"); - CHEST_MINECART$registryId = getRegistryId(CHEST_MINECART); - COMMAND_BLOCK_MINECART = getById("command_block_minecart"); - COMMAND_BLOCK_MINECART$registryId = getRegistryId(COMMAND_BLOCK_MINECART); - FURNACE_MINECART = getById("furnace_minecart"); - FURNACE_MINECART$registryId = getRegistryId(FURNACE_MINECART); - HOPPER_MINECART = getById("hopper_minecart"); - HOPPER_MINECART$registryId = getRegistryId(HOPPER_MINECART); - MINECART = getById("minecart"); - MINECART$registryId = getRegistryId(MINECART); - SPAWNER_MINECART = getById("spawner_minecart"); - SPAWNER_MINECART$registryId = getRegistryId(SPAWNER_MINECART); - TNT_MINECART = getById("tnt_minecart"); - TNT_MINECART$registryId = getRegistryId(TNT_MINECART); - } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/NetworkReflections.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/NetworkReflections.java index e6513a3ed..567234cb1 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/NetworkReflections.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/NetworkReflections.java @@ -1713,4 +1713,11 @@ public final class NetworkReflections { throw new ReflectionInitException("Failed to initialize ItemCost$STREAM_CODEC", e); } } + + public static final Class clazz$ClientboundBlockEntityDataPacket = requireNonNull( + BukkitReflectionUtils.findReobfOrMojmapClass( + "network.protocol.game.PacketPlayOutTileEntityData", + "network.protocol.game.ClientboundBlockEntityDataPacket" + ) + ); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/user/BukkitServerPlayer.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/user/BukkitServerPlayer.java index 3b5ca6675..7137b22a5 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/user/BukkitServerPlayer.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/user/BukkitServerPlayer.java @@ -31,6 +31,7 @@ import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.plugin.context.CooldownData; +import net.momirealms.craftengine.core.plugin.locale.TranslationManager; import net.momirealms.craftengine.core.plugin.network.ConnectionState; import net.momirealms.craftengine.core.plugin.network.EntityPacketHandler; import net.momirealms.craftengine.core.sound.SoundSource; @@ -48,6 +49,7 @@ import org.bukkit.attribute.AttributeInstance; import org.bukkit.block.Block; import org.bukkit.damage.DamageSource; import org.bukkit.damage.DamageType; +import org.bukkit.entity.Entity; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.inventory.EquipmentSlot; @@ -67,6 +69,7 @@ import java.util.*; import java.util.concurrent.ConcurrentHashMap; public class BukkitServerPlayer extends Player { + public static final Key SELECTED_LOCALE_KEY = Key.of("craftengine:locale"); private final BukkitCraftEngine plugin; // connection state @@ -125,6 +128,9 @@ public class BukkitServerPlayer extends Player { private ConcurrentLong2ReferenceChainedHashTable trackedChunks; // entity view private Map entityTypeView; + // selected client locale + @Nullable + private Locale selectedLocale; public BukkitServerPlayer(BukkitCraftEngine plugin, @Nullable Channel channel) { this.channel = channel; @@ -148,7 +154,9 @@ public class BukkitServerPlayer extends Player { this.name = player.getName(); this.isNameVerified = true; byte[] bytes = player.getPersistentDataContainer().get(KeyUtils.toNamespacedKey(CooldownData.COOLDOWN_KEY), PersistentDataType.BYTE_ARRAY); - this.trackedChunks = ConcurrentLong2ReferenceChainedHashTable.createWithCapacity(768, 0.5f); + String locale = player.getPersistentDataContainer().get(KeyUtils.toNamespacedKey(SELECTED_LOCALE_KEY), PersistentDataType.STRING); + this.selectedLocale = TranslationManager.parseLocale(locale); + this.trackedChunks = ConcurrentLong2ReferenceChainedHashTable.createWithCapacity(512, 0.5f); this.entityTypeView = new ConcurrentHashMap<>(256); try { this.cooldownData = CooldownData.fromBytes(bytes); @@ -762,6 +770,7 @@ public class BukkitServerPlayer extends Player { // can break now if (this.miningProgress >= 1f) { + boolean breakResult = false; // for simplified adventure break, switch mayBuild temporarily if (isAdventureMode() && Config.simplifyAdventureBreakCheck()) { // check the appearance state @@ -769,20 +778,24 @@ public class BukkitServerPlayer extends Player { // Error might occur so we use try here try { FastNMS.INSTANCE.field$Player$mayBuild(serverPlayer, true); - CoreReflections.method$ServerPlayerGameMode$destroyBlock.invoke(gameMode, blockPos); + breakResult = (boolean) CoreReflections.method$ServerPlayerGameMode$destroyBlock.invoke(gameMode, blockPos); } finally { FastNMS.INSTANCE.field$Player$mayBuild(serverPlayer, false); } } } else { // normal break check - CoreReflections.method$ServerPlayerGameMode$destroyBlock.invoke(gameMode, blockPos); + breakResult = (boolean) CoreReflections.method$ServerPlayerGameMode$destroyBlock.invoke(gameMode, blockPos); } // send break particle + (removed sounds) - sendPacket(FastNMS.INSTANCE.constructor$ClientboundLevelEventPacket(WorldEvents.BLOCK_BREAK_EFFECT, blockPos, customState.customBlockState().registryId(), false), false); - this.lastSuccessfulBreak = currentTick; - this.destroyPos = null; - this.setIsDestroyingBlock(false, false); + if (breakResult) { + sendPacket(FastNMS.INSTANCE.constructor$ClientboundLevelEventPacket(WorldEvents.BLOCK_BREAK_EFFECT, blockPos, customState.customBlockState().registryId(), false), false); + this.lastSuccessfulBreak = currentTick; + this.destroyPos = null; + this.setIsDestroyingBlock(false, false); + } else { + this.setIsDestroyingBlock(true, true); + } } } } @@ -1144,10 +1157,15 @@ public class BukkitServerPlayer extends Player { } @Override - public void damage(double amount, Key damageType) { + public void damage(double amount, Key damageType, @Nullable Object causeEntity) { @SuppressWarnings("deprecation") DamageType type = Registry.DAMAGE_TYPE.get(KeyUtils.toNamespacedKey(damageType)); - this.platformPlayer().damage(amount, DamageSource.builder(type != null ? type : DamageType.GENERIC).build()); + DamageSource source = DamageSource.builder(type != null ? type : DamageType.GENERIC) + .withCausingEntity(causeEntity instanceof Entity entity ? entity : this.platformPlayer()) + .withDirectEntity(this.platformPlayer()) + .withDamageLocation(this.platformPlayer().getLocation()) + .build(); + this.platformPlayer().damage(amount, source); } @Override @@ -1165,4 +1183,25 @@ public class BukkitServerPlayer extends Player { public void setEntityData(EntityData data, T value, boolean force) { FastNMS.INSTANCE.method$SynchedEntityData$set(entityData(), data.entityDataAccessor(), value, force); } + + @Override + public Locale locale() { + return this.platformPlayer().locale(); + } + + @Override + public Locale selectedLocale() { + if (this.selectedLocale != null) return this.selectedLocale; + return locale(); + } + + @Override + public void setSelectedLocale(@Nullable Locale locale) { + this.selectedLocale = locale; + if (locale != null) { + platformPlayer().getPersistentDataContainer().set(KeyUtils.toNamespacedKey(SELECTED_LOCALE_KEY), PersistentDataType.STRING, TranslationManager.formatLocale(locale)); + } else { + platformPlayer().getPersistentDataContainer().remove(KeyUtils.toNamespacedKey(SELECTED_LOCALE_KEY)); + } + } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/BlockStateUtils.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/BlockStateUtils.java index 8c1f4c3d3..71a677e90 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/BlockStateUtils.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/BlockStateUtils.java @@ -19,6 +19,14 @@ import java.util.Optional; public final class BlockStateUtils { private BlockStateUtils() {} + public static boolean isTag(BlockData blockData, Key tag) { + return isTag(blockDataToBlockState(blockData), tag); + } + + public static boolean isTag(Object blockState, Key tag) { + return FastNMS.INSTANCE.method$BlockStateBase$is(blockState, BlockTags.getOrCreate(tag)); + } + public static BlockStateWrapper toBlockStateWrapper(BlockData blockData) { Object state = blockDataToBlockState(blockData); return toBlockStateWrapper(state); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/EntityUtils.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/EntityUtils.java index 41419ab9d..ec227f9cd 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/EntityUtils.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/EntityUtils.java @@ -1,18 +1,23 @@ package net.momirealms.craftengine.bukkit.util; +import net.momirealms.craftengine.bukkit.api.BukkitAdaptors; 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.core.util.Key; +import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.VersionHelper; import net.momirealms.craftengine.core.world.BlockPos; +import net.momirealms.craftengine.core.world.Vec3d; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; +import org.bukkit.entity.Pose; import org.bukkit.event.entity.CreatureSpawnEvent; +import java.util.List; import java.util.function.Consumer; public final class EntityUtils { @@ -44,4 +49,63 @@ public final class EntityUtils { Object id = FastNMS.INSTANCE.method$Registry$getKey(MBuiltInRegistries.ENTITY_TYPE, entityType); return KeyUtils.resourceLocationToKey(id); } + + public static void safeDismount(Player player, Location location) { + double boundBoxWidth = player.getBoundingBox().getWidthX(); + for (int i = 0; i < 8; i++) { + Vec3d direction = getHorizontalDirection(i * 0.25, boundBoxWidth, player.getYaw()); + double x = location.getX() + direction.x; + double y = location.getY(); + double z = location.getZ() + direction.z; + Object serverLevel = BukkitAdaptors.adapt(player.getWorld()).serverWorld(); + Object serverPlayer = FastNMS.INSTANCE.method$CraftPlayer$getHandle(player); + for (Object pose : List.of(CoreReflections.instance$Pose$STANDING, CoreReflections.instance$Pose$CROUCHING, CoreReflections.instance$Pose$SWIMMING)) { + BlockPos pos = new BlockPos(MiscUtils.fastFloor(x), MiscUtils.fastFloor(y), MiscUtils.fastFloor(z)); + try { + double floorHeight = (double) CoreReflections.method$BlockGetter$getBlockFloorHeight.invoke(serverLevel, LocationUtils.toBlockPos(pos)); + if (pos.y() + floorHeight > y + 0.75) { + continue; + } + if (isBlockFloorValid(floorHeight)) { + Object aabb = CoreReflections.method$LivingEntity$getLocalBoundsForPose.invoke(serverPlayer, pose); + Object vec3 = FastNMS.INSTANCE.constructor$Vec3(x, pos.y() + floorHeight, z); + Object newAABB = FastNMS.INSTANCE.method$AABB$move(aabb, vec3); + boolean canDismount = (boolean) CoreReflections.method$DismountHelper$canDismountTo0.invoke(null, serverLevel, serverPlayer, newAABB); + if (!canDismount) { + continue; + } + if (!FastNMS.INSTANCE.checkEntityCollision(serverLevel, List.of(newAABB))) { + continue; + } + if (VersionHelper.isFolia()) { + player.teleportAsync(new Location(player.getWorld(), x, pos.y() + floorHeight, z, player.getYaw(), player.getPitch())); + } else { + player.teleport(new Location(player.getWorld(), x, pos.y() + floorHeight, z, player.getYaw(), player.getPitch())); + } + if (pose == CoreReflections.instance$Pose$STANDING) { + player.setPose(Pose.STANDING); + } else if (pose == CoreReflections.instance$Pose$CROUCHING) { + player.setPose(Pose.SNEAKING); + } else if (pose == CoreReflections.instance$Pose$SWIMMING) { + player.setPose(Pose.SWIMMING); + } + } + } catch (ReflectiveOperationException e) { + throw new RuntimeException(e); + } + } + } + } + + private static Vec3d getHorizontalDirection(double hitboxWidth, double passengerWidth, float passengerYaw) { + double d2 = (hitboxWidth + passengerWidth + (double) 1.0E-5F) / (double) 2.0F; + float f1 = -MiscUtils.sin(passengerYaw * ((float) Math.PI / 180F)); + float f2 = MiscUtils.cos(passengerYaw * ((float) Math.PI / 180F)); + float f3 = Math.max(Math.abs(f1), Math.abs(f2)); + return new Vec3d((double)f1 * d2 / (double) f3, 0.0F, (double) f2 * d2 / (double)f3); + } + + private static boolean isBlockFloorValid(double height) { + return !Double.isInfinite(height) && height < (double) 1.0F; + } } \ No newline at end of file diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/EquipmentSlotUtils.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/EquipmentSlotUtils.java new file mode 100644 index 000000000..d334f9f47 --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/EquipmentSlotUtils.java @@ -0,0 +1,27 @@ +package net.momirealms.craftengine.bukkit.util; + +import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; +import net.momirealms.craftengine.core.entity.EquipmentSlot; + +public final class EquipmentSlotUtils { + private EquipmentSlotUtils() {} + + public static Object toNMSEquipmentSlot(EquipmentSlot equipmentSlot) { + return switch (equipmentSlot) { + case MAIN_HAND -> CoreReflections.instance$EquipmentSlot$MAINHAND; + case OFF_HAND -> CoreReflections.instance$EquipmentSlot$OFFHAND; + case FEET -> CoreReflections.instance$EquipmentSlot$FEET; + case LEGS -> CoreReflections.instance$EquipmentSlot$LEGS; + case CHEST -> CoreReflections.instance$EquipmentSlot$CHEST; + case HEAD -> CoreReflections.instance$EquipmentSlot$HEAD; + case BODY -> CoreReflections.instance$EquipmentSlot$BODY; + case SADDLE -> CoreReflections.instance$EquipmentSlot$SADDLE; + }; + } + + public static EquipmentSlot fromNMSEquipmentSlot(Object equipmentSlot) { + Enum directionEnum = (Enum) equipmentSlot; + int index = directionEnum.ordinal(); + return EquipmentSlot.values()[index]; + } +} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/InteractUtils.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/InteractUtils.java index dee6874b7..069deb791 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/InteractUtils.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/InteractUtils.java @@ -3,29 +3,40 @@ package net.momirealms.craftengine.bukkit.util; import io.papermc.paper.entity.Shearable; import net.momirealms.craftengine.bukkit.item.BukkitItemManager; import net.momirealms.craftengine.bukkit.item.behavior.BlockItemBehavior; +import net.momirealms.craftengine.bukkit.item.behavior.FlintAndSteelItemBehavior; import net.momirealms.craftengine.bukkit.item.recipe.BukkitRecipeManager; +import net.momirealms.craftengine.bukkit.nms.FastNMS; +import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; +import net.momirealms.craftengine.bukkit.world.BukkitExistingBlock; +import net.momirealms.craftengine.bukkit.world.BukkitWorld; import net.momirealms.craftengine.core.block.BlockKeys; import net.momirealms.craftengine.core.entity.EntityTypeKeys; +import net.momirealms.craftengine.core.entity.player.InteractionHand; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemKeys; import net.momirealms.craftengine.core.item.behavior.ItemBehavior; +import net.momirealms.craftengine.core.item.context.BlockPlaceContext; +import net.momirealms.craftengine.core.item.modifier.AttributeModifiersModifier; import net.momirealms.craftengine.core.item.recipe.RecipeType; import net.momirealms.craftengine.core.item.recipe.UniqueIdItem; import net.momirealms.craftengine.core.item.recipe.input.SingleItemInput; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.config.Config; -import net.momirealms.craftengine.core.util.Direction; -import net.momirealms.craftengine.core.util.Key; -import net.momirealms.craftengine.core.util.QuadFunction; -import net.momirealms.craftengine.core.util.TriFunction; +import net.momirealms.craftengine.core.util.*; import net.momirealms.craftengine.core.world.BlockHitResult; import net.momirealms.craftengine.core.world.BlockPos; +import org.bukkit.DyeColor; import org.bukkit.GameMode; +import org.bukkit.Registry; +import org.bukkit.World; +import org.bukkit.attribute.Attribute; +import org.bukkit.attribute.AttributeInstance; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; import org.bukkit.block.data.BlockData; import org.bukkit.block.data.Levelled; -import org.bukkit.block.data.type.Bell; -import org.bukkit.block.data.type.ChiseledBookshelf; -import org.bukkit.block.data.type.RespawnAnchor; +import org.bukkit.block.data.Lightable; +import org.bukkit.block.data.type.*; import org.bukkit.entity.*; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; @@ -38,75 +49,75 @@ import java.util.Optional; public final class InteractUtils { private static final Map, BlockData, BlockHitResult, Boolean>> INTERACTIONS = new HashMap<>(); - private static final Map, BlockData, BlockHitResult, Boolean>> WILL_CONSUME = new HashMap<>(); + private static final Map, BlockData, BlockHitResult, Boolean>> CAN_PLACE = new HashMap<>(); private static final Map, Boolean>> ENTITY_INTERACTIONS = new HashMap<>(); + private static final Key NOTE_BLOCK_TOP_INSTRUMENTS = Key.of("minecraft:noteblock_top_instruments"); + private static final Key PARROT_POISONOUS_FOOD = Key.of("minecraft:parrot_poisonous_food"); + private static final Key HARNESSES = Key.of("minecraft:harnesses"); + private static final Key FROG_FOOD = Key.of("minecraft:frog_food"); + private static final Key CANDLES = Key.of("minecraft:candles"); private InteractUtils() {} + // 方块 static { registerInteraction(BlockKeys.NOTE_BLOCK, (player, item, blockState, result) -> result.getDirection() != Direction.UP || !item.hasItemTag(NOTE_BLOCK_TOP_INSTRUMENTS)); - registerInteraction(BlockKeys.CAKE, (player, item, blockState, result) -> !canEat(player, false)); - registerInteraction(BlockKeys.CANDLE_CAKE, (player, item, blockState, result) -> !canEat(player, false)); - registerInteraction(BlockKeys.WHITE_CANDLE_CAKE, (player, item, blockState, result) -> !canEat(player, false)); - registerInteraction(BlockKeys.ORANGE_CANDLE_CAKE, (player, item, blockState, result) -> !canEat(player, false)); - registerInteraction(BlockKeys.MAGENTA_CANDLE_CAKE, (player, item, blockState, result) -> !canEat(player, false)); - registerInteraction(BlockKeys.LIGHT_BLUE_CANDLE_CAKE, (player, item, blockState, result) -> !canEat(player, false)); - registerInteraction(BlockKeys.YELLOW_CANDLE_CAKE, (player, item, blockState, result) -> !canEat(player, false)); - registerInteraction(BlockKeys.LIME_CANDLE_CAKE, (player, item, blockState, result) -> !canEat(player, false)); - registerInteraction(BlockKeys.PINK_CANDLE_CAKE, (player, item, blockState, result) -> !canEat(player, false)); - registerInteraction(BlockKeys.GRAY_CANDLE_CAKE, (player, item, blockState, result) -> !canEat(player, false)); - registerInteraction(BlockKeys.LIGHT_GRAY_CANDLE_CAKE, (player, item, blockState, result) -> !canEat(player, false)); - registerInteraction(BlockKeys.CYAN_CANDLE_CAKE, (player, item, blockState, result) -> !canEat(player, false)); - registerInteraction(BlockKeys.PURPLE_CANDLE_CAKE, (player, item, blockState, result) -> !canEat(player, false)); - registerInteraction(BlockKeys.BLUE_CANDLE_CAKE, (player, item, blockState, result) -> !canEat(player, false)); - registerInteraction(BlockKeys.BROWN_CANDLE_CAKE, (player, item, blockState, result) -> !canEat(player, false)); - registerInteraction(BlockKeys.GREEN_CANDLE_CAKE, (player, item, blockState, result) -> !canEat(player, false)); - registerInteraction(BlockKeys.RED_CANDLE_CAKE, (player, item, blockState, result) -> !canEat(player, false)); - registerInteraction(BlockKeys.BLACK_CANDLE_CAKE, (player, item, blockState, result) -> !canEat(player, false)); - registerInteraction(BlockKeys.COMMAND_BLOCK, (player, item, blockState, result) -> player.isOp() && player.getGameMode() == GameMode.CREATIVE); - registerInteraction(BlockKeys.CHAIN_COMMAND_BLOCK, (player, item, blockState, result) -> player.isOp() && player.getGameMode() == GameMode.CREATIVE); - registerInteraction(BlockKeys.REPEATING_COMMAND_BLOCK, (player, item, blockState, result) -> player.isOp() && player.getGameMode() == GameMode.CREATIVE); - registerInteraction(BlockKeys.JIGSAW, (player, item, blockState, result) -> player.isOp() && player.getGameMode() == GameMode.CREATIVE); - registerInteraction(BlockKeys.STRUCTURE_BLOCK, (player, item, blockState, result) -> player.isOp() && player.getGameMode() == GameMode.CREATIVE); - registerInteraction(BlockKeys.TEST_INSTANCE_BLOCK, (player, item, blockState, result) -> player.isOp() && player.getGameMode() == GameMode.CREATIVE); - registerInteraction(BlockKeys.TEST_BLOCK, (player, item, blockState, result) -> player.isOp() && player.getGameMode() == GameMode.CREATIVE); - registerInteraction(BlockKeys.LIGHT, (player, item, blockState, result) -> item.vanillaId().equals(ItemKeys.LIGHT)); - registerInteraction(BlockKeys.LODESTONE, (player, item, blockState, result) -> item.vanillaId().equals(ItemKeys.COMPASS)); - registerInteraction(BlockKeys.BEE_NEST, (player, item, blockState, result) -> { + registerInteraction(BlockKeys.POWDER_SNOW, (player, item, blockState, result) -> { Key id = item.vanillaId(); - return ItemKeys.SHEARS.equals(id) || ItemKeys.GLASS_BOTTLE.equals(id); + return ItemKeys.BUCKET.equals(id); }); - registerInteraction(BlockKeys.BEEHIVE, (player, item, blockState, result) -> { + // 功能方块 + registerInteraction(BlockKeys.CRAFTING_TABLE, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.STONECUTTER, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.CARTOGRAPHY_TABLE, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.SMITHING_TABLE, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.GRINDSTONE, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.LOOM, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.FURNACE, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.SMOKER, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.BLAST_FURNACE, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.CAMPFIRE, (player, item, blockState, result) -> { + if (!Config.enableRecipeSystem()) return false; + return BukkitRecipeManager.instance().recipeByInput(RecipeType.CAMPFIRE_COOKING, new SingleItemInput<>(UniqueIdItem.of(item))) != null; + }); + registerInteraction(BlockKeys.SOUL_CAMPFIRE, (player, item, blockState, result) -> { + if (!Config.enableRecipeSystem()) return false; + return BukkitRecipeManager.instance().recipeByInput(RecipeType.CAMPFIRE_COOKING, new SingleItemInput<>(UniqueIdItem.of(item))) != null; + }); + registerInteraction(BlockKeys.ANVIL, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.CHIPPED_ANVIL, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.DAMAGED_ANVIL, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.COMPOSTER, (player, item, blockState, result) -> { + if (item.getItem().getType().isCompostable()) return true; + return blockState instanceof Levelled levelled && levelled.getLevel() == levelled.getMaximumLevel(); + }); + registerInteraction(BlockKeys.JUKEBOX, (player, item, blockState, result) -> { + if (blockState instanceof Jukebox jukebox && jukebox.hasRecord()) return true; + return item.getItem().getType().isRecord(); + }); + registerInteraction(BlockKeys.ENCHANTING_TABLE, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.BREWING_STAND, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.CAULDRON, (player, item, blockState, result) -> { Key id = item.vanillaId(); - return ItemKeys.SHEARS.equals(id) || ItemKeys.GLASS_BOTTLE.equals(id); + return ItemKeys.WATER_BUCKET.equals(id) || ItemKeys.LAVA_BUCKET.equals(id); }); - registerInteraction(BlockKeys.POWDER_SNOW, (player, item, blockState, result) -> item.vanillaId().equals(ItemKeys.BUCKET)); - registerInteraction(BlockKeys.REDSTONE_ORE, (player, item, blockState, result) -> { - Optional> behaviors = item.getItemBehavior(); - if (behaviors.isPresent()) { - for (ItemBehavior behavior : behaviors.get()) { - if (behavior instanceof BlockItemBehavior) return false; - } - } - return true; + registerInteraction(BlockKeys.LAVA_CAULDRON, (player, item, blockState, result) -> { + Key id = item.vanillaId(); + return ItemKeys.BUCKET.equals(id) || ItemKeys.LAVA_BUCKET.equals(id) || ItemKeys.WATER_BUCKET.equals(id); }); - registerInteraction(BlockKeys.DEEPSLATE_REDSTONE_ORE, (player, item, blockState, result) -> { - Optional> behaviors = item.getItemBehavior(); - if (behaviors.isPresent()) { - for (ItemBehavior behavior : behaviors.get()) { - if (behavior instanceof BlockItemBehavior) return false; - } - } - return true; + registerInteraction(BlockKeys.WATER_CAULDRON, (player, item, blockState, result) -> { + if (blockState instanceof Levelled levelled && levelled.getLevel() == levelled.getMaximumLevel()) + return item.vanillaId().equals(ItemKeys.BUCKET); + Key id = item.vanillaId(); + return ItemKeys.GLASS_BOTTLE.equals(id) || ItemKeys.WATER_BUCKET.equals(id) || ItemKeys.LAVA_BUCKET.equals(id); }); - registerInteraction(BlockKeys.BELL, (player, item, blockState, result) -> { Direction direction = result.getDirection(); BlockPos pos = result.getBlockPos(); if (blockState instanceof Bell bell) { double y = result.getLocation().y() - pos.y(); - if (direction.axis() != Direction.Axis.Y && y <= 0.8123999834060669D) { + if (direction.axis() != Direction.Axis.Y && !(y > 0.8124F)) { Direction facing = DirectionUtils.toDirection(bell.getFacing()); Bell.Attachment attachment = bell.getAttachment(); switch (attachment) { @@ -127,276 +138,699 @@ public final class InteractUtils { } return false; }); - registerInteraction(BlockKeys.SOUL_CAMPFIRE, (player, item, blockState, result) -> { - if (!Config.enableRecipeSystem()) return false; - return BukkitRecipeManager.instance().recipeByInput(RecipeType.CAMPFIRE_COOKING, new SingleItemInput<>(UniqueIdItem.of(item))) != null; + registerInteraction(BlockKeys.BEACON, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.BEE_NEST, (player, item, blockState, result) -> { + if (blockState instanceof Beehive beehive && beehive.getHoneyLevel() == beehive.getMaximumHoneyLevel()) { + Key id = item.vanillaId(); + return ItemKeys.SHEARS.equals(id) || ItemKeys.GLASS_BOTTLE.equals(id); + } + return false; }); - registerInteraction(BlockKeys.CAMPFIRE, (player, item, blockState, result) -> { - if (!Config.enableRecipeSystem()) return false; - return BukkitRecipeManager.instance().recipeByInput(RecipeType.CAMPFIRE_COOKING, new SingleItemInput<>(UniqueIdItem.of(item))) != null; + registerInteraction(BlockKeys.BEEHIVE, (player, item, blockState, result) -> { + if (blockState instanceof Beehive beehive && beehive.getHoneyLevel() == beehive.getMaximumHoneyLevel()) { + Key id = item.vanillaId(); + return ItemKeys.SHEARS.equals(id) || ItemKeys.GLASS_BOTTLE.equals(id); + } + return false; }); + registerInteraction(BlockKeys.FLOWER_POT, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.DECORATED_POT, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.CHISELED_BOOKSHELF, (player, item, blockState, result) -> { if (!(blockState instanceof ChiseledBookshelf chiseledBookshelf)) return false; return DirectionUtils.toDirection(chiseledBookshelf.getFacing()) == result.getDirection(); }); - registerInteraction(BlockKeys.COMPOSTER, (player, item, blockState, result) -> { - if (item.getItem().getType().isCompostable()) return true; - return blockState instanceof Levelled levelled && levelled.getLevel() == levelled.getMaximumLevel(); - }); + registerInteraction(BlockKeys.LECTERN, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.CHEST, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.BARREL, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.ENDER_CHEST, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.TRAPPED_CHEST, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.RESPAWN_ANCHOR, (player, item, blockState, result) -> { - if (item.vanillaId().equals(ItemKeys.GLOWSTONE)) return true; + Key id = item.vanillaId(); + if (ItemKeys.GLOWSTONE.equals(id)) return true; return blockState instanceof RespawnAnchor respawnAnchor && respawnAnchor.getCharges() != 0; }); - registerInteraction(BlockKeys.DECORATED_POT, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.FLOWER_POT, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.HOPPER, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.DRAGON_EGG, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.END_PORTAL_FRAME, (player, item, blockState, result) -> { + Key id = item.vanillaId(); + return ItemKeys.ENDER_EYE.equals(id); + }); + registerInteraction(BlockKeys.VAULT, (player, item, blockState, result) -> blockState instanceof Vault vault && vault.getVaultState() == Vault.State.ACTIVE); + registerInteraction(BlockKeys.SPAWNER, (player, item, blockState, result) -> { + Key id = item.vanillaId(); + return id.asString().endsWith("_spawn_egg"); + }); + registerInteraction(BlockKeys.TRIAL_SPAWNER, (player, item, blockState, result) -> { + Key id = item.vanillaId(); + return id.asString().endsWith("_spawn_egg"); + }); + // 红石方块 + registerInteraction(BlockKeys.REDSTONE_WIRE, (player, item, blockState, result) -> { + if (blockState instanceof RedstoneWire redstoneWire) { + boolean isCross = redstoneWire.getFace(BlockFace.EAST).equals(RedstoneWire.Connection.SIDE) + && redstoneWire.getFace(BlockFace.NORTH).equals(RedstoneWire.Connection.SIDE) + && redstoneWire.getFace(BlockFace.SOUTH).equals(RedstoneWire.Connection.SIDE) + && redstoneWire.getFace(BlockFace.WEST).equals(RedstoneWire.Connection.SIDE); + boolean isDot = redstoneWire.getFace(BlockFace.EAST).equals(RedstoneWire.Connection.NONE) + && redstoneWire.getFace(BlockFace.NORTH).equals(RedstoneWire.Connection.NONE) + && redstoneWire.getFace(BlockFace.SOUTH).equals(RedstoneWire.Connection.NONE) + && redstoneWire.getFace(BlockFace.WEST).equals(RedstoneWire.Connection.NONE); + if (isCross || isDot) { + BlockPos blockPos = result.getBlockPos(); + BukkitWorld bukkitWorld = new BukkitWorld(player.getWorld()); + World world = bukkitWorld.platformWorld(); + + Direction[] directions = {Direction.EAST, Direction.WEST, Direction.SOUTH, Direction.NORTH}; + for (Direction direction : directions) { + BlockPos neighborPos = blockPos.relative(direction); + Block neighborBlock = world.getBlockAt(neighborPos.x(), neighborPos.y(), neighborPos.z()); + Key neighborBlockKey = new BukkitExistingBlock(neighborBlock).id(); + BlockData neighborBlockData = neighborBlock.getBlockData(); + boolean canConnection = ArrayUtils.contains(BlockKeys.REDSTONE_CONNECTION, neighborBlockKey) + || ArrayUtils.contains(BlockKeys.PRESSURE_PLATES, neighborBlockKey) + || ArrayUtils.contains(BlockKeys.BUTTONS, neighborBlockKey); + if (canConnection) { + return switch (neighborBlockData) { + case Repeater repeater -> { + Direction neighborDirection = DirectionUtils.toDirection(repeater.getFacing()); + yield !(neighborDirection == direction || neighborDirection == direction.opposite()); + } + case Observer observer -> { + Direction neighborDirection = DirectionUtils.toDirection(observer.getFacing()); + yield !(neighborDirection == direction); + } + default -> false; + }; + } + } + return true; + } + } + return false; + }); + registerInteraction(BlockKeys.REPEATER, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.COMPARATOR, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.LEVER, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.DAYLIGHT_DETECTOR, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.DISPENSER, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.DROPPER, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.CRAFTER, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.REPEATER, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.COMPARATOR, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.DAYLIGHT_DETECTOR, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.LECTERN, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.CHEST, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.ENDER_CHEST, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.TRAPPED_CHEST, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.BEACON, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.ENCHANTING_TABLE, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.BREWING_STAND, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.GRINDSTONE, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.ANVIL, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.CHIPPED_ANVIL, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.DAMAGED_ANVIL, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.FURNACE, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.CRAFTING_TABLE, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.CARTOGRAPHY_TABLE, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.STONECUTTER, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.SMITHING_TABLE, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.LOOM, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.BARREL, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.SMOKER, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.BLAST_FURNACE, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.LEVER, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.HOPPER, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.TNT, (player, item, blockState, result) -> { + Optional> behaviors = item.getItemBehavior(); + if (behaviors.isPresent()) { + for (ItemBehavior behavior : behaviors.get()) { + if (behavior instanceof FlintAndSteelItemBehavior) return true; + } + } + return false; + }); + registerInteraction(BlockKeys.REDSTONE_ORE, (player, item, blockState, result) -> { + Optional> behaviors = item.getItemBehavior(); + if (behaviors.isPresent()) { + for (ItemBehavior behavior : behaviors.get()) { + if (behavior instanceof BlockItemBehavior) return false; + } + } + return true; + }); + registerInteraction(BlockKeys.DEEPSLATE_REDSTONE_ORE, (player, item, blockState, result) -> { + Optional> behaviors = item.getItemBehavior(); + if (behaviors.isPresent()) { + for (ItemBehavior behavior : behaviors.get()) { + if (behavior instanceof BlockItemBehavior) return false; + } + } + return true; + }); + // 管理员用品 + registerInteraction(BlockKeys.COMMAND_BLOCK, (player, item, blockState, result) -> player.isOp() && player.getGameMode() == GameMode.CREATIVE); + registerInteraction(BlockKeys.CHAIN_COMMAND_BLOCK, (player, item, blockState, result) -> player.isOp() && player.getGameMode() == GameMode.CREATIVE); + registerInteraction(BlockKeys.REPEATING_COMMAND_BLOCK, (player, item, blockState, result) -> player.isOp() && player.getGameMode() == GameMode.CREATIVE); + registerInteraction(BlockKeys.JIGSAW, (player, item, blockState, result) -> player.isOp() && player.getGameMode() == GameMode.CREATIVE); + registerInteraction(BlockKeys.STRUCTURE_BLOCK, (player, item, blockState, result) -> player.isOp() && player.getGameMode() == GameMode.CREATIVE); + registerInteraction(BlockKeys.TEST_INSTANCE_BLOCK, (player, item, blockState, result) -> player.isOp() && player.getGameMode() == GameMode.CREATIVE); + registerInteraction(BlockKeys.TEST_BLOCK, (player, item, blockState, result) -> player.isOp() && player.getGameMode() == GameMode.CREATIVE); + registerInteraction(BlockKeys.LIGHT, (player, item, blockState, result) -> { + if (player.isOp() && player.getGameMode() == GameMode.CREATIVE) { + Key id = item.vanillaId(); + return ItemKeys.LIGHT.equals(id); + } + return false; + }); + // 床 + registerInteraction(BlockKeys.WHITE_BED, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.LIGHT_GRAY_BED, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.GRAY_BED, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.BLACK_BED, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.BROWN_BED, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.RED_BED, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.ORANGE_BED, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.YELLOW_BED, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.LIME_BED, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.GREEN_BED, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.CYAN_BED, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.LIGHT_BLUE_BED, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.BLUE_BED, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.PURPLE_BED, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.MAGENTA_BED, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.PINK_BED, (player, item, blockState, result) -> true); + // 蜡烛 + registerInteraction(BlockKeys.CANDLE, (player, item, blockState, result) -> { + if (blockState instanceof Candle candle) { + Key id = item.vanillaId(); + if (!candle.isLit()) { + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + } + return false; + }); + registerInteraction(BlockKeys.WHITE_CANDLE, (player, item, blockState, result) -> { + if (blockState instanceof Candle candle) { + Key id = item.vanillaId(); + if (!candle.isLit()) { + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + } + return false; + }); + registerInteraction(BlockKeys.LIGHT_GRAY_CANDLE, (player, item, blockState, result) -> { + if (blockState instanceof Candle candle) { + Key id = item.vanillaId(); + if (!candle.isLit()) { + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + } + return false; + }); + registerInteraction(BlockKeys.GRAY_CANDLE, (player, item, blockState, result) -> { + if (blockState instanceof Candle candle) { + Key id = item.vanillaId(); + if (!candle.isLit()) { + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + } + return false; + }); + registerInteraction(BlockKeys.BLACK_CANDLE, (player, item, blockState, result) -> { + if (blockState instanceof Candle candle) { + Key id = item.vanillaId(); + if (!candle.isLit()) { + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + } + return false; + }); + registerInteraction(BlockKeys.BROWN_CANDLE, (player, item, blockState, result) -> { + if (blockState instanceof Candle candle) { + Key id = item.vanillaId(); + if (!candle.isLit()) { + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + } + return false; + }); + registerInteraction(BlockKeys.RED_CANDLE, (player, item, blockState, result) -> { + if (blockState instanceof Candle candle) { + Key id = item.vanillaId(); + if (!candle.isLit()) { + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + } + return false; + }); + registerInteraction(BlockKeys.ORANGE_CANDLE, (player, item, blockState, result) -> { + if (blockState instanceof Candle candle) { + Key id = item.vanillaId(); + if (!candle.isLit()) { + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + } + return false; + }); + registerInteraction(BlockKeys.YELLOW_CANDLE, (player, item, blockState, result) -> { + if (blockState instanceof Candle candle) { + Key id = item.vanillaId(); + if (!candle.isLit()) { + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + } + return false; + }); + registerInteraction(BlockKeys.LIME_CANDLE, (player, item, blockState, result) -> { + if (blockState instanceof Candle candle) { + Key id = item.vanillaId(); + if (!candle.isLit()) { + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + } + return false; + }); + registerInteraction(BlockKeys.GREEN_CANDLE, (player, item, blockState, result) -> { + if (blockState instanceof Candle candle) { + Key id = item.vanillaId(); + if (!candle.isLit()) { + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + } + return false; + }); + registerInteraction(BlockKeys.CYAN_CANDLE, (player, item, blockState, result) -> { + if (blockState instanceof Candle candle) { + Key id = item.vanillaId(); + if (!candle.isLit()) { + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + } + return false; + }); + registerInteraction(BlockKeys.LIGHT_BLUE_CANDLE, (player, item, blockState, result) -> { + if (blockState instanceof Candle candle) { + Key id = item.vanillaId(); + if (!candle.isLit()) { + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + } + return false; + }); + registerInteraction(BlockKeys.BLUE_CANDLE, (player, item, blockState, result) -> { + if (blockState instanceof Candle candle) { + Key id = item.vanillaId(); + if (!candle.isLit()) { + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + } + return false; + }); + registerInteraction(BlockKeys.PURPLE_CANDLE, (player, item, blockState, result) -> { + if (blockState instanceof Candle candle) { + Key id = item.vanillaId(); + if (!candle.isLit()) { + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + } + return false; + }); + registerInteraction(BlockKeys.MAGENTA_CANDLE, (player, item, blockState, result) -> { + if (blockState instanceof Candle candle) { + Key id = item.vanillaId(); + if (!candle.isLit()) { + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + } + return false; + }); + registerInteraction(BlockKeys.PINK_CANDLE, (player, item, blockState, result) -> { + if (blockState instanceof Candle candle) { + Key id = item.vanillaId(); + if (!candle.isLit()) { + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + } + return false; + }); + // 蛋糕 + registerInteraction(BlockKeys.CAKE, (player, item, blockState, result) -> { + if (blockState instanceof Cake cake && cake.getBites() == 0 && item.hasItemTag(CANDLES)) return true; + return canEat(player); + }); + registerInteraction(BlockKeys.CANDLE_CAKE, (player, item, blockState, result) -> { + if (blockState instanceof Lightable lightable && !(lightable.isLit())) { + Key id = item.vanillaId(); + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + return canEat(player); + }); + registerInteraction(BlockKeys.WHITE_CANDLE_CAKE, (player, item, blockState, result) -> { + if (blockState instanceof Lightable lightable && !(lightable.isLit())) { + Key id = item.vanillaId(); + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + return canEat(player); + }); + registerInteraction(BlockKeys.LIGHT_GRAY_CANDLE_CAKE, (player, item, blockState, result) -> { + if (blockState instanceof Lightable lightable && !(lightable.isLit())) { + Key id = item.vanillaId(); + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + return canEat(player); + }); + registerInteraction(BlockKeys.GRAY_CANDLE_CAKE, (player, item, blockState, result) -> { + if (blockState instanceof Lightable lightable && !(lightable.isLit())) { + Key id = item.vanillaId(); + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + return canEat(player); + }); + registerInteraction(BlockKeys.BLACK_CANDLE_CAKE, (player, item, blockState, result) -> { + if (blockState instanceof Lightable lightable && !(lightable.isLit())) { + Key id = item.vanillaId(); + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + return canEat(player); + }); + registerInteraction(BlockKeys.BROWN_CANDLE_CAKE, (player, item, blockState, result) -> { + if (blockState instanceof Lightable lightable && !(lightable.isLit())) { + Key id = item.vanillaId(); + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + return canEat(player); + }); + registerInteraction(BlockKeys.RED_CANDLE_CAKE, (player, item, blockState, result) -> { + if (blockState instanceof Lightable lightable && !(lightable.isLit())) { + Key id = item.vanillaId(); + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + return canEat(player); + }); + registerInteraction(BlockKeys.ORANGE_CANDLE_CAKE, (player, item, blockState, result) -> { + if (blockState instanceof Lightable lightable && !(lightable.isLit())) { + Key id = item.vanillaId(); + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + return canEat(player); + }); + registerInteraction(BlockKeys.YELLOW_CANDLE_CAKE, (player, item, blockState, result) -> { + if (blockState instanceof Lightable lightable && !(lightable.isLit())) { + Key id = item.vanillaId(); + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + return canEat(player); + }); + registerInteraction(BlockKeys.LIME_CANDLE_CAKE, (player, item, blockState, result) -> { + if (blockState instanceof Lightable lightable && !(lightable.isLit())) { + Key id = item.vanillaId(); + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + return canEat(player); + }); + registerInteraction(BlockKeys.GREEN_CANDLE_CAKE, (player, item, blockState, result) -> { + if (blockState instanceof Lightable lightable && !(lightable.isLit())) { + Key id = item.vanillaId(); + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + return canEat(player); + }); + registerInteraction(BlockKeys.CYAN_CANDLE_CAKE, (player, item, blockState, result) -> { + if (blockState instanceof Lightable lightable && !(lightable.isLit())) { + Key id = item.vanillaId(); + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + return canEat(player); + }); + registerInteraction(BlockKeys.LIGHT_BLUE_CANDLE_CAKE, (player, item, blockState, result) -> { + if (blockState instanceof Lightable lightable && !(lightable.isLit())) { + Key id = item.vanillaId(); + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + return canEat(player); + }); + registerInteraction(BlockKeys.BLUE_CANDLE_CAKE, (player, item, blockState, result) -> { + if (blockState instanceof Lightable lightable && !(lightable.isLit())) { + Key id = item.vanillaId(); + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + return canEat(player); + }); + registerInteraction(BlockKeys.PURPLE_CANDLE_CAKE, (player, item, blockState, result) -> { + if (blockState instanceof Lightable lightable && !(lightable.isLit())) { + Key id = item.vanillaId(); + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + return canEat(player); + }); + registerInteraction(BlockKeys.MAGENTA_CANDLE_CAKE, (player, item, blockState, result) -> { + if (blockState instanceof Lightable lightable && !(lightable.isLit())) { + Key id = item.vanillaId(); + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + return canEat(player); + }); + registerInteraction(BlockKeys.PINK_CANDLE_CAKE, (player, item, blockState, result) -> { + if (blockState instanceof Lightable lightable && !(lightable.isLit())) { + Key id = item.vanillaId(); + return ItemKeys.FLINT_AND_STEEL.equals(id); + } + return canEat(player); + }); + // 潜影盒 + registerInteraction(BlockKeys.SHULKER_BOX, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.WHITE_SHULKER_BOX, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.LIGHT_GRAY_SHULKER_BOX, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.GRAY_SHULKER_BOX, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.BLACK_SHULKER_BOX, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.BROWN_SHULKER_BOX, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.RED_SHULKER_BOX, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.ORANGE_SHULKER_BOX, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.YELLOW_SHULKER_BOX, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.LIME_SHULKER_BOX, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.GREEN_SHULKER_BOX, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.CYAN_SHULKER_BOX, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.LIGHT_BLUE_SHULKER_BOX, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.BLUE_SHULKER_BOX, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.PURPLE_SHULKER_BOX, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.MAGENTA_SHULKER_BOX, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.PINK_SHULKER_BOX, (player, item, blockState, result) -> true); + // 按钮 registerInteraction(BlockKeys.OAK_BUTTON, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.SPRUCE_BUTTON, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.BIRCH_BUTTON, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.JUNGLE_BUTTON, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.ACACIA_BUTTON, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.CHERRY_BUTTON, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.DARK_OAK_BUTTON, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.PALE_OAK_BUTTON, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.MANGROVE_BUTTON, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.CHERRY_BUTTON, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.PALE_OAK_BUTTON, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.BAMBOO_BUTTON, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.STONE_BUTTON, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.POLISHED_BLACKSTONE_BUTTON, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.CRIMSON_BUTTON, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.WARPED_BUTTON, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.OAK_TRAPDOOR, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.SPRUCE_TRAPDOOR, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.BIRCH_TRAPDOOR, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.JUNGLE_TRAPDOOR, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.ACACIA_TRAPDOOR, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.CHERRY_TRAPDOOR, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.DARK_OAK_TRAPDOOR, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.PALE_OAK_TRAPDOOR, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.MANGROVE_TRAPDOOR, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.BAMBOO_TRAPDOOR, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.CRIMSON_TRAPDOOR, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.WARPED_TRAPDOOR, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.STONE_BUTTON, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.POLISHED_BLACKSTONE_BUTTON, (player, item, blockState, result) -> true); + // 门 registerInteraction(BlockKeys.OAK_DOOR, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.SPRUCE_DOOR, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.BIRCH_DOOR, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.JUNGLE_DOOR, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.ACACIA_DOOR, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.CHERRY_DOOR, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.DARK_OAK_DOOR, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.PALE_OAK_DOOR, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.MANGROVE_DOOR, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.CHERRY_DOOR, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.PALE_OAK_DOOR, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.BAMBOO_DOOR, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.CRIMSON_DOOR, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.WARPED_DOOR, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.COPPER_DOOR, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.EXPOSED_COPPER_DOOR, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.OXIDIZED_COPPER_DOOR, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.WEATHERED_COPPER_DOOR, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.OXIDIZED_COPPER_DOOR, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.WAXED_COPPER_DOOR, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.WAXED_EXPOSED_COPPER_DOOR, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.WAXED_OXIDIZED_COPPER_DOOR, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.WAXED_WEATHERED_COPPER_DOOR, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.WAXED_OXIDIZED_COPPER_DOOR, (player, item, blockState, result) -> true); + // 活板门 + registerInteraction(BlockKeys.OAK_TRAPDOOR, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.SPRUCE_TRAPDOOR, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.BIRCH_TRAPDOOR, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.JUNGLE_TRAPDOOR, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.ACACIA_TRAPDOOR, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.DARK_OAK_TRAPDOOR, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.MANGROVE_TRAPDOOR, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.CHERRY_TRAPDOOR, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.PALE_OAK_TRAPDOOR, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.BAMBOO_TRAPDOOR, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.CRIMSON_TRAPDOOR, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.WARPED_TRAPDOOR, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.COPPER_TRAPDOOR, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.EXPOSED_COPPER_TRAPDOOR, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.OXIDIZED_COPPER_TRAPDOOR, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.WEATHERED_COPPER_TRAPDOOR, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.OXIDIZED_COPPER_TRAPDOOR, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.WAXED_COPPER_TRAPDOOR, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.WAXED_EXPOSED_COPPER_TRAPDOOR, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.WAXED_OXIDIZED_COPPER_TRAPDOOR, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.WAXED_WEATHERED_COPPER_TRAPDOOR, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.WAXED_OXIDIZED_COPPER_TRAPDOOR, (player, item, blockState, result) -> true); + // 栅栏门 registerInteraction(BlockKeys.OAK_FENCE_GATE, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.SPRUCE_FENCE_GATE, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.BIRCH_FENCE_GATE, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.JUNGLE_FENCE_GATE, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.ACACIA_FENCE_GATE, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.CHERRY_FENCE_GATE, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.DARK_OAK_FENCE_GATE, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.PALE_OAK_FENCE_GATE, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.MANGROVE_FENCE_GATE, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.CHERRY_FENCE_GATE, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.PALE_OAK_FENCE_GATE, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.BAMBOO_FENCE_GATE, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.CRIMSON_FENCE_GATE, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.WARPED_FENCE_GATE, (player, item, blockState, result) -> true); + // 告示牌 registerInteraction(BlockKeys.OAK_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.SPRUCE_SIGN, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.ACACIA_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.BIRCH_SIGN, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.CHERRY_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.JUNGLE_SIGN, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.ACACIA_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.DARK_OAK_SIGN, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.PALE_OAK_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.MANGROVE_SIGN, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.CHERRY_SIGN, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.PALE_OAK_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.BAMBOO_SIGN, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.WARPED_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.CRIMSON_SIGN, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.WARPED_SIGN, (player, item, blockState, result) -> true); + // 靠墙告示牌 registerInteraction(BlockKeys.OAK_WALL_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.SPRUCE_WALL_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.BIRCH_WALL_SIGN, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.ACACIA_WALL_SIGN, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.CHERRY_WALL_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.JUNGLE_WALL_SIGN, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.ACACIA_WALL_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.DARK_OAK_WALL_SIGN, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.PALE_OAK_WALL_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.MANGROVE_WALL_SIGN, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.CHERRY_WALL_SIGN, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.PALE_OAK_WALL_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.BAMBOO_WALL_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.CRIMSON_WALL_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.WARPED_WALL_SIGN, (player, item, blockState, result) -> true); + // 悬挂式告示牌 registerInteraction(BlockKeys.OAK_HANGING_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.SPRUCE_HANGING_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.BIRCH_HANGING_SIGN, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.ACACIA_HANGING_SIGN, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.CHERRY_HANGING_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.JUNGLE_HANGING_SIGN, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.ACACIA_HANGING_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.DARK_OAK_HANGING_SIGN, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.MANGROVE_HANGING_SIGN, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.CHERRY_HANGING_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.PALE_OAK_HANGING_SIGN, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.BAMBOO_HANGING_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.CRIMSON_HANGING_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.WARPED_HANGING_SIGN, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.MANGROVE_HANGING_SIGN, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.BAMBOO_HANGING_SIGN, (player, item, blockState, result) -> true); + // 靠墙悬挂式告示牌 registerInteraction(BlockKeys.OAK_WALL_HANGING_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.SPRUCE_WALL_HANGING_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.BIRCH_WALL_HANGING_SIGN, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.ACACIA_WALL_HANGING_SIGN, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.CHERRY_WALL_HANGING_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.JUNGLE_WALL_HANGING_SIGN, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.ACACIA_WALL_HANGING_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.DARK_OAK_WALL_HANGING_SIGN, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.PALE_OAK_WALL_HANGING_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.MANGROVE_WALL_HANGING_SIGN, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.CHERRY_WALL_HANGING_SIGN, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.PALE_OAK_WALL_HANGING_SIGN, (player, item, blockState, result) -> true); + registerInteraction(BlockKeys.BAMBOO_WALL_HANGING_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.CRIMSON_WALL_HANGING_SIGN, (player, item, blockState, result) -> true); registerInteraction(BlockKeys.WARPED_WALL_HANGING_SIGN, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.BAMBOO_WALL_HANGING_SIGN, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.SHULKER_BOX, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.WHITE_SHULKER_BOX, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.ORANGE_SHULKER_BOX, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.MAGENTA_SHULKER_BOX, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.LIGHT_BLUE_SHULKER_BOX, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.YELLOW_SHULKER_BOX, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.LIME_SHULKER_BOX, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.PINK_SHULKER_BOX, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.GRAY_SHULKER_BOX, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.LIGHT_GRAY_SHULKER_BOX, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.CYAN_SHULKER_BOX, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.PURPLE_SHULKER_BOX, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.BLUE_SHULKER_BOX, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.BROWN_SHULKER_BOX, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.GREEN_SHULKER_BOX, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.RED_SHULKER_BOX, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.BLACK_SHULKER_BOX, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.WHITE_BED, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.ORANGE_BED, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.MAGENTA_BED, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.LIGHT_BLUE_BED, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.YELLOW_BED, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.LIME_BED, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.PINK_BED, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.GRAY_BED, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.LIGHT_GRAY_BED, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.CYAN_BED, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.PURPLE_BED, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.BLUE_BED, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.BROWN_BED, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.GREEN_BED, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.RED_BED, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.BLACK_BED, (player, item, blockState, result) -> true); - registerInteraction(BlockKeys.DRAGON_EGG, (player, item, blockState, result) -> true); } static { - registerWillConsume(BlockKeys.CACTUS, (player, item, blockState, result) -> - result.getDirection() == Direction.UP && item.id().equals(ItemKeys.CACTUS)); - registerWillConsume(BlockKeys.CAULDRON, (player, item, blockState, result) -> { + registerCanPlace(BlockKeys.CACTUS, (player, item, blockState, result) -> { Key id = item.vanillaId(); - return ItemKeys.WATER_BUCKET.equals(id) || ItemKeys.LAVA_BUCKET.equals(id); + return result.getDirection() == Direction.UP && ItemKeys.CACTUS.equals(id); }); - registerWillConsume(BlockKeys.LAVA_CAULDRON, (player, item, blockState, result) -> { + registerCanPlace(BlockKeys.SUGAR_CANE, (player, item, blockState, result) -> { Key id = item.vanillaId(); - return ItemKeys.BUCKET.equals(id) || ItemKeys.LAVA_BUCKET.equals(id) || ItemKeys.WATER_BUCKET.equals(id); - }); - registerWillConsume(BlockKeys.WATER_CAULDRON, (player, item, blockState, result) -> { - if (blockState instanceof Levelled levelled && levelled.getLevel() == levelled.getMaximumLevel()) - return item.vanillaId().equals(ItemKeys.BUCKET); - Key id = item.vanillaId(); - return ItemKeys.GLASS_BOTTLE.equals(id) || ItemKeys.WATER_BUCKET.equals(id) || ItemKeys.LAVA_BUCKET.equals(id); + return result.getDirection() == Direction.UP && ItemKeys.SUGAR_CANE.equals(id); }); } + // 实体 static { - registerEntityInteraction(EntityTypeKeys.BEE, (player, entity, item) -> canFeed(entity, item)); - registerEntityInteraction(EntityTypeKeys.FOX, (player, entity, item) -> canFeed(entity, item)); - registerEntityInteraction(EntityTypeKeys.FROG, (player, entity, item) -> canFeed(entity, item)); - registerEntityInteraction(EntityTypeKeys.PANDA, (player, entity, item) -> canFeed(entity, item)); - registerEntityInteraction(EntityTypeKeys.HOGLIN, (player, entity, item) -> canFeed(entity, item)); - registerEntityInteraction(EntityTypeKeys.OCELOT, (player, entity, item) -> canFeed(entity, item)); - registerEntityInteraction(EntityTypeKeys.RABBIT, (player, entity, item) -> canFeed(entity, item)); - registerEntityInteraction(EntityTypeKeys.TURTLE, (player, entity, item) -> canFeed(entity, item)); - registerEntityInteraction(EntityTypeKeys.CHICKEN, (player, entity, item) -> canFeed(entity, item)); - registerEntityInteraction(EntityTypeKeys.SNIFFER, (player, entity, item) -> canFeed(entity, item)); - registerEntityInteraction(EntityTypeKeys.AXOLOTL, (player, entity, item) -> - canFeed(entity, item) || (item != null && item.vanillaId().equals(ItemKeys.WATER_BUCKET))); - registerEntityInteraction(EntityTypeKeys.COD, (player, entity, item) -> - item != null && item.vanillaId().equals(ItemKeys.WATER_BUCKET)); - registerEntityInteraction(EntityTypeKeys.SALMON, (player, entity, item) -> - item != null && item.vanillaId().equals(ItemKeys.WATER_BUCKET)); - registerEntityInteraction(EntityTypeKeys.TROPICAL_FISH, (player, entity, item) -> - item != null && item.vanillaId().equals(ItemKeys.WATER_BUCKET)); - registerEntityInteraction(EntityTypeKeys.PUFFERFISH, (player, entity, item) -> - item != null && item.vanillaId().equals(ItemKeys.WATER_BUCKET)); - registerEntityInteraction(EntityTypeKeys.TADPOLE, (player, entity, item) -> - item != null && item.vanillaId().equals(ItemKeys.WATER_BUCKET)); - registerEntityInteraction(EntityTypeKeys.SNOW_GOLEM, (player, entity, item) -> - shearable(entity, item)); - registerEntityInteraction(EntityTypeKeys.SHEEP, (player, entity, item) -> - canFeed(entity, item) || shearable(entity, item)); - registerEntityInteraction(EntityTypeKeys.BOGGED, (player, entity, item) -> - canFeed(entity, item) || shearable(entity, item)); - registerEntityInteraction(EntityTypeKeys.MOOSHROOM, (player, entity, item) -> - canFeed(entity, item) || shearable(entity, item) || (item != null && (item.vanillaId().equals(ItemKeys.BUCKET) || item.vanillaId().equals(ItemKeys.BOWL)))); - registerEntityInteraction(EntityTypeKeys.COW, (player, entity, item) -> - canFeed(entity, item) || (item != null && item.vanillaId().equals(ItemKeys.BUCKET))); - registerEntityInteraction(EntityTypeKeys.GOAT, (player, entity, item) -> - canFeed(entity, item) || (item != null && item.vanillaId().equals(ItemKeys.BUCKET))); - registerEntityInteraction(EntityTypeKeys.CREEPER, (player, entity, item) -> - item != null && item.vanillaId().equals(ItemKeys.FLINT_AND_STEEL)); - registerEntityInteraction(EntityTypeKeys.PIGLIN, (player, entity, item) -> - item != null && item.vanillaId().equals(ItemKeys.GOLD_INGOT)); - registerEntityInteraction(EntityTypeKeys.ARMADILLO, (player, entity, item) -> - canFeed(entity, item) || (item != null && item.vanillaId().equals(ItemKeys.BRUSH))); - registerEntityInteraction(EntityTypeKeys.ZOMBIE_HORSE, (player, entity, item) -> - entity instanceof Tameable tameable && tameable.isTamed()); - registerEntityInteraction(EntityTypeKeys.SKELETON_HORSE, (player, entity, item) -> - entity instanceof Tameable tameable && tameable.isTamed()); - registerEntityInteraction(EntityTypeKeys.PIG, (player, entity, item) -> - canFeed(entity, item) || (item != null && item.vanillaId().equals(ItemKeys.SADDLE) && !hasSaddle(player, entity)) || (hasSaddle(player, entity) && !player.isSneaking())); - registerEntityInteraction(EntityTypeKeys.STRIDER, (player, entity, item) -> - canFeed(entity, item) || (item != null && item.vanillaId().equals(ItemKeys.SADDLE) && !hasSaddle(player, entity)) || (hasSaddle(player, entity) && !player.isSneaking())); - registerEntityInteraction(EntityTypeKeys.WOLF, (player, entity, item) -> canFeed(entity, item) || isPetOwner(player, entity)); - registerEntityInteraction(EntityTypeKeys.CAT, (player, entity, item) -> canFeed(entity, item) || isPetOwner(player, entity)); + registerEntityInteraction(EntityTypeKeys.BEE, (player, entity, item) -> canBeFeed(entity, item)); + registerEntityInteraction(EntityTypeKeys.FOX, (player, entity, item) -> canBeFeed(entity, item)); + registerEntityInteraction(EntityTypeKeys.FROG, (player, entity, item) -> canBeFeed(entity, item)); + registerEntityInteraction(EntityTypeKeys.PANDA, (player, entity, item) -> canBeFeed(entity, item)); + registerEntityInteraction(EntityTypeKeys.HOGLIN, (player, entity, item) -> canBeFeed(entity, item)); + registerEntityInteraction(EntityTypeKeys.OCELOT, (player, entity, item) -> canBeFeed(entity, item)); + registerEntityInteraction(EntityTypeKeys.RABBIT, (player, entity, item) -> canBeFeed(entity, item)); + registerEntityInteraction(EntityTypeKeys.TURTLE, (player, entity, item) -> canBeFeed(entity, item)); + registerEntityInteraction(EntityTypeKeys.CHICKEN, (player, entity, item) -> canBeFeed(entity, item)); + registerEntityInteraction(EntityTypeKeys.SNIFFER, (player, entity, item) -> canBeFeed(entity, item)); + registerEntityInteraction(EntityTypeKeys.DOLPHIN, (player, entity, item) -> { + Key id = item.vanillaId(); + return ItemKeys.COD.equals(id) || ItemKeys.SALMON.equals(id); + }); + + registerEntityInteraction(EntityTypeKeys.AXOLOTL, (player, entity, item) -> { + Key id = item.vanillaId(); + return canBeFeed(entity, item) || ItemKeys.WATER_BUCKET.equals(id); + }); + registerEntityInteraction(EntityTypeKeys.COD, (player, entity, item) -> { + Key id = item.vanillaId(); + return ItemKeys.WATER_BUCKET.equals(id); + }); + registerEntityInteraction(EntityTypeKeys.SALMON, (player, entity, item) -> { + Key id = item.vanillaId(); + return ItemKeys.WATER_BUCKET.equals(id); + }); + registerEntityInteraction(EntityTypeKeys.TROPICAL_FISH, (player, entity, item) -> { + Key id = item.vanillaId(); + return ItemKeys.WATER_BUCKET.equals(id); + }); + registerEntityInteraction(EntityTypeKeys.PUFFERFISH, (player, entity, item) -> { + Key id = item.vanillaId(); + return ItemKeys.WATER_BUCKET.equals(id); + }); + registerEntityInteraction(EntityTypeKeys.TADPOLE, (player, entity, item) -> { + Key id = item.vanillaId(); + return ItemKeys.WATER_BUCKET.equals(id) || item.hasItemTag(FROG_FOOD); + }); + + registerEntityInteraction(EntityTypeKeys.SHEEP, (player, entity, item) -> { + Key id = item.vanillaId(); + if (entity instanceof Sheep sheep && sheep.readyToBeSheared() && ArrayUtils.contains(ItemKeys.DYES, item)) { + DyeColor sheepColor = sheep.getColor(); + if (sheepColor != null) { + String color = sheepColor.name().toLowerCase(); + return !Key.of(color + "_dye").equals(id); + } + } + return canBeFeed(entity, item) || canBeSheared(entity, item); + }); + registerEntityInteraction(EntityTypeKeys.MOOSHROOM, (player, entity, item) -> { + Key id = item.vanillaId(); + return canBeFeed(entity, item, "cow_food") || canBeSheared(entity, item) || ItemKeys.BUCKET.equals(id) || ItemKeys.BOWL.equals(id); + }); + registerEntityInteraction(EntityTypeKeys.BOGGED, (player, entity, item) -> canBeSheared(entity, item)); + registerEntityInteraction(EntityTypeKeys.SNOW_GOLEM, (player, entity, item) -> canBeSheared(entity, item)); + + registerEntityInteraction(EntityTypeKeys.COW, (player, entity, item) -> { + Key id = item.vanillaId(); + return canBeFeed(entity, item) || ItemKeys.BUCKET.equals(id); + }); + registerEntityInteraction(EntityTypeKeys.GOAT, (player, entity, item) -> { + Key id = item.vanillaId(); + return canBeFeed(entity, item) || ItemKeys.BUCKET.equals(id); + }); + + registerEntityInteraction(EntityTypeKeys.CREEPER, (player, entity, item) -> { + Optional> behaviors = item.getItemBehavior(); + if (behaviors.isPresent()) { + for (ItemBehavior behavior : behaviors.get()) { + if (behavior instanceof FlintAndSteelItemBehavior) return true; + } + } + return false; + }); + registerEntityInteraction(EntityTypeKeys.PIGLIN, (player, entity, item) -> { + Key id = item.vanillaId(); + return ItemKeys.GOLD_INGOT.equals(id); + }); + registerEntityInteraction(EntityTypeKeys.ARMADILLO, (player, entity, item) -> { + Key id = item.vanillaId(); + return canBeFeed(entity, item) || ItemKeys.BRUSH.equals(id); + }); + + registerEntityInteraction(EntityTypeKeys.WOLF, (player, entity, item) -> canBeFeed(entity, item) || isPetOwner(player, entity)); + registerEntityInteraction(EntityTypeKeys.CAT, (player, entity, item) -> canBeFeed(entity, item) || isPetOwner(player, entity)); + registerEntityInteraction(EntityTypeKeys.PARROT, (player, entity, item) -> { + if (item.hasItemTag(PARROT_POISONOUS_FOOD)) return true; + return canBeFeed(entity, item) || isPetOwner(player, entity); + }); + + registerEntityInteraction(EntityTypeKeys.MINECART, (player, entity, item) -> !player.isSneaking()); + registerEntityInteraction(EntityTypeKeys.CHEST_MINECART, (player, entity, item) -> true); + registerEntityInteraction(EntityTypeKeys.FURNACE_MINECART, (player, entity, item) -> true); + registerEntityInteraction(EntityTypeKeys.HOPPER_MINECART, (player, entity, item) -> true); + registerEntityInteraction(EntityTypeKeys.COMMAND_BLOCK_MINECART, (player, entity, item) -> true); + registerEntityInteraction(EntityTypeKeys.SPAWNER_MINECART, (player, entity, item) -> { + Key id = item.vanillaId(); + return id.asString().endsWith("_spawn_egg"); + }); + registerEntityInteraction(EntityTypeKeys.BOAT, (player, entity, item) -> !player.isSneaking()); registerEntityInteraction(EntityTypeKeys.OAK_BOAT, (player, entity, item) -> !player.isSneaking()); registerEntityInteraction(EntityTypeKeys.SPRUCE_BOAT, (player, entity, item) -> !player.isSneaking()); @@ -408,31 +842,7 @@ public final class InteractUtils { registerEntityInteraction(EntityTypeKeys.CHERRY_BOAT, (player, entity, item) -> !player.isSneaking()); registerEntityInteraction(EntityTypeKeys.PALE_OAK_BOAT, (player, entity, item) -> !player.isSneaking()); registerEntityInteraction(EntityTypeKeys.BAMBOO_RAFT, (player, entity, item) -> !player.isSneaking()); - registerEntityInteraction(EntityTypeKeys.MINECART, (player, entity, item) -> !player.isSneaking()); - registerEntityInteraction(EntityTypeKeys.PARROT, (player, entity, item) -> { - if (item != null && item.hasItemTag(Key.of("parrot_poisonous_food"))) return true; - return canFeed(entity, item) || isPetOwner(player, entity); - }); - registerEntityInteraction(EntityTypeKeys.HAPPY_GHAST, (player, entity, item) -> { - if (item != null && item.vanillaId().equals(ItemKeys.HARNESS)) return true; - if (entity instanceof HappyGhast happyGhast && !player.isSneaking()) { - ItemStack bodyItem = happyGhast.getEquipment().getItem(EquipmentSlot.BODY); - return BukkitItemManager.instance().wrap(bodyItem).hasItemTag(Key.of("harnesses")); - } - return canFeed(entity, item); - }); - registerEntityInteraction(EntityTypeKeys.ALLAY, (player, entity, item) -> true); - registerEntityInteraction(EntityTypeKeys.HORSE, (player, entity, item) -> true); - registerEntityInteraction(EntityTypeKeys.DONKEY, (player, entity, item) -> true); - registerEntityInteraction(EntityTypeKeys.MULE, (player, entity, item) -> true); - registerEntityInteraction(EntityTypeKeys.VILLAGER, (player, entity, item) -> true); - registerEntityInteraction(EntityTypeKeys.WANDERING_TRADER, (player, entity, item) -> true); - registerEntityInteraction(EntityTypeKeys.LLAMA, (player, entity, item) -> true); - registerEntityInteraction(EntityTypeKeys.TRADER_LLAMA, (player, entity, item) -> true); - registerEntityInteraction(EntityTypeKeys.CAMEL, (player, entity, item) -> true); - registerEntityInteraction(EntityTypeKeys.ITEM_FRAME, (player, entity, item) -> true); - registerEntityInteraction(EntityTypeKeys.GLOW_ITEM_FRAME, (player, entity, item) -> true); - registerEntityInteraction(EntityTypeKeys.INTERACTION, (player, entity, item) -> true); + registerEntityInteraction(EntityTypeKeys.CHEST_BOAT, (player, entity, item) -> true); registerEntityInteraction(EntityTypeKeys.OAK_CHEST_BOAT, (player, entity, item) -> true); registerEntityInteraction(EntityTypeKeys.SPRUCE_CHEST_BOAT, (player, entity, item) -> true); @@ -444,10 +854,79 @@ public final class InteractUtils { registerEntityInteraction(EntityTypeKeys.CHERRY_CHEST_BOAT, (player, entity, item) -> true); registerEntityInteraction(EntityTypeKeys.PALE_OAK_CHEST_BOAT, (player, entity, item) -> true); registerEntityInteraction(EntityTypeKeys.BAMBOO_CHEST_RAFT, (player, entity, item) -> true); - registerEntityInteraction(EntityTypeKeys.CHEST_MINECART, (player, entity, item) -> true); - registerEntityInteraction(EntityTypeKeys.FURNACE_MINECART, (player, entity, item) -> true); - registerEntityInteraction(EntityTypeKeys.HOPPER_MINECART, (player, entity, item) -> true); - registerEntityInteraction(EntityTypeKeys.COMMAND_BLOCK_MINECART, (player, entity, item) -> true); + + registerEntityInteraction(EntityTypeKeys.HORSE, (player, entity, item) -> { + if (!isAdult(entity)) return true; + if (isFood(entity, item)) { + return canBeFeed(entity, item); + } + return rideable(entity); + }); + registerEntityInteraction(EntityTypeKeys.DONKEY, (player, entity, item) -> { + if (!isAdult(entity)) return true; + if (isFood("horse_food", item)) { + return canBeFeed(entity, item, "horse_food"); + } + return rideable(entity); + }); + registerEntityInteraction(EntityTypeKeys.MULE, (player, entity, item) -> { + if (!isAdult(entity)) return true; + if (isFood("horse_food", item)) { + return canBeFeed(entity, item, "horse_food"); + } + return rideable(entity); + }); + registerEntityInteraction(EntityTypeKeys.LLAMA, (player, entity, item) -> { + if (!isAdult(entity)) return true; + if (isFood(entity, item)) { + return canBeFeed(entity, item); + } + return rideable(entity); + }); + registerEntityInteraction(EntityTypeKeys.TRADER_LLAMA, (player, entity, item) -> { + if (!isAdult(entity)) return true; + if (isFood("llama_food", item)) { + return canBeFeed(entity, item, "llama_food"); + } + return rideable(entity); + }); + registerEntityInteraction(EntityTypeKeys.CAMEL, (player, entity, item) -> { + if (!isAdult(entity)) return true; + if (isFood(entity, item)) { + return canBeFeed(entity, item); + } + return true; + }); + registerEntityInteraction(EntityTypeKeys.ZOMBIE_HORSE, (player, entity, item) -> isTamed(entity) && rideable(entity)); + registerEntityInteraction(EntityTypeKeys.SKELETON_HORSE, (player, entity, item) -> isTamed(entity) && rideable(entity)); + registerEntityInteraction(EntityTypeKeys.PIG, (player, entity, item) -> { + Key id = item.vanillaId(); + return canBeFeed(entity, item) + || (ItemKeys.SADDLE.equals(id) && !hasSaddle(player, entity) && isAdult(entity)) + || (hasSaddle(player, entity) && !player.isSneaking() && rideable(entity)); + }); + registerEntityInteraction(EntityTypeKeys.STRIDER, (player, entity, item) -> { + Key id = item.vanillaId(); + return canBeFeed(entity, item) + || (ItemKeys.SADDLE.equals(id) && !hasSaddle(player, entity) && isAdult(entity)) + || (hasSaddle(player, entity) && !player.isSneaking() && rideable(entity)); + }); + registerEntityInteraction(EntityTypeKeys.HAPPY_GHAST, (player, entity, item) -> { + if (entity instanceof HappyGhast happyGhast && isAdult(entity)) { + ItemStack bodyItem = happyGhast.getEquipment().getItem(EquipmentSlot.BODY); + boolean hasHarness = BukkitItemManager.instance().wrap(bodyItem).hasItemTag(HARNESSES); + if (item.hasItemTag(HARNESSES) && !hasHarness) return true; + return !player.isSneaking(); + } + return canBeFeed(entity, item); + }); + + registerEntityInteraction(EntityTypeKeys.ALLAY, (player, entity, item) -> true); + registerEntityInteraction(EntityTypeKeys.VILLAGER, (player, entity, item) -> true); + registerEntityInteraction(EntityTypeKeys.WANDERING_TRADER, (player, entity, item) -> true); + registerEntityInteraction(EntityTypeKeys.ITEM_FRAME, (player, entity, item) -> true); + registerEntityInteraction(EntityTypeKeys.GLOW_ITEM_FRAME, (player, entity, item) -> true); + registerEntityInteraction(EntityTypeKeys.INTERACTION, (player, entity, item) -> true); } private static void registerInteraction(Key key, QuadFunction, BlockData, BlockHitResult, Boolean> function) { @@ -457,14 +936,14 @@ public final class InteractUtils { } } - private static void registerWillConsume(Key key, QuadFunction, BlockData, BlockHitResult, Boolean> function) { - var previous = WILL_CONSUME.put(key, function); + private static void registerCanPlace(Key key, QuadFunction, BlockData, BlockHitResult, Boolean> function) { + var previous = CAN_PLACE.put(key, function); if (previous != null) { - CraftEngine.instance().logger().warn("Duplicated interaction check: " + key); + CraftEngine.instance().logger().warn("Duplicated can place check: " + key); } } - private static void registerEntityInteraction(Key key, TriFunction, Boolean> function) { + private static void registerEntityInteraction(Key key, TriFunction, Boolean> function) { var previous = ENTITY_INTERACTIONS.put(key, function); if (previous != null) { CraftEngine.instance().logger().warn("Duplicated entity interaction check: " + key); @@ -475,9 +954,19 @@ public final class InteractUtils { Key blockType = BlockStateUtils.getBlockOwnerIdFromData(state); if (INTERACTIONS.containsKey(blockType)) { return INTERACTIONS.get(blockType).apply(player, item, state, hit); - } else { - return false; } + return false; + } + + // 这个方法用于解决玩家使用仙人掌放在基于仙人掌的方块上,物品暂时消失的类似问题,但是无法彻底解决 + // todo 需要通过创建代理Level来实现getBlockState的方法拦截,从而实现模拟客户端测的方块状态更新,这个过程可能也需要创建代理Chunk和代理Section + public static boolean canPlaceVisualBlock(Player player, BlockData state, BlockHitResult hit, @Nullable Item item) { + if (item == null) return false; + Key blockType = BlockStateUtils.getBlockOwnerIdFromData(state); + if (CAN_PLACE.containsKey(blockType)) { + return CAN_PLACE.get(blockType).apply(player, item, state, hit); + } + return false; } public static boolean isEntityInteractable(Player player, Entity entity, @Nullable Item item) { @@ -485,33 +974,106 @@ public final class InteractUtils { return func != null && func.apply(player, entity, item); } - public static boolean willConsume(Player player, BlockData state, BlockHitResult hit, @Nullable Item item) { - if (item == null) return false; - Key blockType = BlockStateUtils.getBlockOwnerIdFromData(state); - if (WILL_CONSUME.containsKey(blockType)) { - return WILL_CONSUME.get(blockType).apply(player, item, state, hit); - } else { - return false; + private static boolean canEat(Player player) { + return player.isInvulnerable() || player.getFoodLevel() < 20; + } + + + private static boolean isFood(Entity entity, Item item) { + String entityType = EntityUtils.getEntityType(entity).value(); + return isFood(entityType + "_food", item); + } + + private static boolean isFood(String food, Item item) { + return item.hasItemTag(Key.of(food)); + } + + private static boolean canBeFeed(Entity entity, Item item) { + return canBeFeed(entity, item, null); + } + + private static boolean canBeFeed(Entity entity, Item item, String food) { + boolean isFood = food != null ? isFood(food, item) : isFood(entity, item); + if (!isFood) return false; + if (entity instanceof Tameable) { + if (!isFullHealth(entity)) return true; + if (entity instanceof AbstractHorse && !isFullTemper(entity)) return true; + return !isInLove(entity) && isTamed(entity); } + return !isInLove(entity); } - private static boolean canEat(Player player, boolean ignoreHunger) { - return ignoreHunger || player.isInvulnerable() || player.getFoodLevel() < 20; + private static boolean isTamed(Entity entity) { + return entity instanceof Tameable tameable && tameable.isTamed(); } - private static boolean canFeed(Entity entity, Item item) { - return entity instanceof Animals && item.hasItemTag(Key.of(EntityUtils.getEntityType(entity).value() + "_food")); + private static boolean isInLove(Entity entity) { + if (entity instanceof Animals animals) { + return animals.isLoveMode() || !animals.canBreed(); + } + return entity instanceof Ageable ageable && ageable.getAge() > 0; + } + + private static boolean isFullTemper(Entity entity) { + return entity instanceof AbstractHorse horse && horse.getDomestication() == horse.getMaxDomestication(); + } + + public static boolean isFullHealth(Entity entity) { + if (entity instanceof LivingEntity living) { + Key key = AttributeModifiersModifier.getNativeAttributeName(Key.of("max_health")); + Attribute maxHealthAttr = Registry.ATTRIBUTE.get(KeyUtils.toNamespacedKey(key)); + if (maxHealthAttr == null) return false; + AttributeInstance attribute = living.getAttribute(maxHealthAttr); + return attribute != null && living.getHealth() >= attribute.getValue(); + } + return false; + } + + private static boolean isAdult(Entity entity) { + return entity instanceof Ageable ageable && ageable.isAdult(); + } + + private static boolean isPetOwner(Player player, Entity entity) { + return entity instanceof Tameable tameable && tameable.isTamed() && player.getUniqueId().equals(tameable.getOwnerUniqueId()); + } + + // 判断单座位实体是否载有乘客 + private static boolean rideable(Entity entity) { + return entity.isEmpty(); } private static boolean hasSaddle(Player player, Entity entity) { return entity instanceof Steerable steerable && steerable.hasSaddle() && !player.isSneaking(); } - private static boolean shearable(Entity entity, Item item) { - return entity instanceof Shearable shearable && item.vanillaId().equals(ItemKeys.SHEARS) && shearable.readyToBeSheared(); + private static boolean canBeSheared(Entity entity, Item item) { + Key id = item.vanillaId(); + return entity instanceof Shearable shearable && shearable.readyToBeSheared() && ItemKeys.SHEARS.equals(id); } - private static boolean isPetOwner(Player player, Entity entity) { - return entity instanceof Tameable tameable && tameable.isTamed() && player.getUniqueId().equals(tameable.getOwnerUniqueId()); + public static boolean canPlaceBlock(BlockPlaceContext context) { + Object item = FastNMS.INSTANCE.method$ItemStack$getItem(context.getItem().getLiteralObject()); + Object block = FastNMS.INSTANCE.method$BlockItem$getBlock(item); + Object stateToPlace = FastNMS.INSTANCE.method$Block$getStateForPlacement(block, toNMSBlockPlaceContext(context)); + return FastNMS.INSTANCE.method$BlockStateBase$canSurvive(stateToPlace, context.getLevel().serverWorld(), LocationUtils.toBlockPos(context.getClickedPos())); + } + + private static Object toNMSHitResult(BlockHitResult result) { + return FastNMS.INSTANCE.constructor$BlockHitResult( + LocationUtils.toVec(result.getLocation()), + DirectionUtils.toNMSDirection(result.getDirection()), + LocationUtils.toBlockPos(result.getBlockPos()), + result.isInside() + ); + } + + private static Object toNMSBlockPlaceContext(BlockPlaceContext context) { + return FastNMS.INSTANCE.constructor$BlockPlaceContext( + context.getLevel().serverWorld(), + Optional.ofNullable(context.getPlayer()).map(net.momirealms.craftengine.core.entity.player.Player::serverPlayer).orElse(null), + context.getHand() == InteractionHand.MAIN_HAND ? CoreReflections.instance$InteractionHand$MAIN_HAND : CoreReflections.instance$InteractionHand$OFF_HAND, + context.getItem().getLiteralObject(), + toNMSHitResult(context.getHitResult()) + ); } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/LocationUtils.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/LocationUtils.java index 9b572b357..f421ddedd 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/LocationUtils.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/LocationUtils.java @@ -14,11 +14,15 @@ public final class LocationUtils { private LocationUtils() {} public static Location toLocation(WorldPosition position) { - return new Location((World) position.world().platformWorld(), position.x(), position.y(), position.z(), position.xRot(), position.yRot()); + return new Location((World) position.world().platformWorld(), position.x(), position.y(), position.z(), position.yRot(), position.xRot()); } public static WorldPosition toWorldPosition(Location location) { - return new WorldPosition(new BukkitWorld(location.getWorld()), location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch()); + return new WorldPosition(new BukkitWorld(location.getWorld()), location.getX(), location.getY(), location.getZ(), location.getPitch(), location.getYaw()); + } + + public static Object toVec(Vec3d vec) { + return FastNMS.INSTANCE.constructor$Vec3(vec.x, vec.y, vec.z); } public static Vec3d toVec3d(Location loc) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/PlayerUtils.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/PlayerUtils.java index c0b242549..82b9b8113 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/PlayerUtils.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/PlayerUtils.java @@ -2,7 +2,7 @@ package net.momirealms.craftengine.bukkit.util; import com.mojang.datafixers.util.Pair; import net.momirealms.craftengine.bukkit.item.BukkitItemManager; -import net.momirealms.craftengine.bukkit.item.ComponentTypes; +import net.momirealms.craftengine.bukkit.item.DataComponentTypes; import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; @@ -64,7 +64,7 @@ public final class PlayerUtils { Item previousMainHandItem = player.getItemInHand(InteractionHand.MAIN_HAND); boolean isMainHandTotem; if (VersionHelper.isOrAbove1_21_2()) { - isMainHandTotem = previousMainHandItem.hasComponent(ComponentTypes.DEATH_PROTECTION); + isMainHandTotem = previousMainHandItem.hasComponent(DataComponentTypes.DEATH_PROTECTION); } else { isMainHandTotem = previousMainHandItem.id().equals(ItemKeys.TOTEM_OF_UNDYING); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitExistingBlock.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitExistingBlock.java index 22402fadc..efc3df2f7 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitExistingBlock.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitExistingBlock.java @@ -107,6 +107,12 @@ public class BukkitExistingBlock implements ExistingBlock { return null; } + @Override + public boolean is(Key tag) { + Object state = FastNMS.INSTANCE.method$BlockGetter$getBlockState(FastNMS.INSTANCE.field$CraftWorld$ServerLevel(block.getWorld()), LocationUtils.toBlockPos(block.getX(), block.getY(), block.getZ())); + return BlockStateUtils.isTag(state, tag); + } + public Block block() { return this.block; } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorldManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorldManager.java index 9be7ba113..ea4ab38e3 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorldManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorldManager.java @@ -16,6 +16,7 @@ import net.momirealms.craftengine.core.world.SectionPos; import net.momirealms.craftengine.core.world.WorldManager; import net.momirealms.craftengine.core.world.chunk.CEChunk; import net.momirealms.craftengine.core.world.chunk.CESection; +import net.momirealms.craftengine.core.world.chunk.PalettedContainer; import net.momirealms.craftengine.core.world.chunk.storage.DefaultStorageAdaptor; import net.momirealms.craftengine.core.world.chunk.storage.StorageAdaptor; import net.momirealms.craftengine.core.world.chunk.storage.WorldDataStorage; @@ -345,14 +346,16 @@ public class BukkitWorldManager implements WorldManager, Listener { if (Config.restoreCustomBlocks()) { boolean isEmptyBefore = FastNMS.INSTANCE.method$LevelSection$hasOnlyAir(section); int sectionY = ceSection.sectionY; - if (isEmptyBefore) { - FastNMS.INSTANCE.method$LightEventListener$updateSectionStatus(lightEngine, FastNMS.INSTANCE.method$SectionPos$of(chunkX, sectionY, chunkZ), false); - } - if (!ceSection.statesContainer().isEmpty()) { + // 有自定义方块 + PalettedContainer palettedContainer = ceSection.statesContainer(); + if (!palettedContainer.isEmpty()) { + if (isEmptyBefore) { + FastNMS.INSTANCE.method$LightEventListener$updateSectionStatus(lightEngine, FastNMS.INSTANCE.method$SectionPos$of(chunkX, sectionY, chunkZ), false); + } for (int x = 0; x < 16; x++) { for (int z = 0; z < 16; z++) { for (int y = 0; y < 16; y++) { - ImmutableBlockState customState = ceSection.getBlockState(x, y, z); + ImmutableBlockState customState = palettedContainer.get(x, y, z); if (!customState.isEmpty() && customState.customBlockState() != null) { Object newState = customState.customBlockState().literalObject(); Object previous = FastNMS.INSTANCE.method$LevelChunkSection$setBlockState(section, x, y, z, newState, false); diff --git a/common-files/src/main/resources/commands.yml b/common-files/src/main/resources/commands.yml index a96b802e0..f2ca1e16b 100644 --- a/common-files/src/main/resources/commands.yml +++ b/common-files/src/main/resources/commands.yml @@ -7,8 +7,7 @@ config-version: "${config_version}" # For safety reasons, editing this file requires a restart to apply # -# A command to reload the plugin -# Usage: [COMMAND] +# https://xiao-momi.github.io/craft-engine-wiki/reference/commands reload: enable: true permission: ce.command.admin.reload @@ -111,6 +110,18 @@ list_resource: - /craftengine resource list - /ce resource list +set_locale: + enable: true + permission: ce.command.admin.set_locale + usage: + - /ce feature locale set + +unset_locale: + enable: true + permission: ce.command.admin.unset_locale + usage: + - /ce feature locale unset + # Debug commands debug_set_block: enable: true @@ -219,6 +230,13 @@ debug_clean_cache: - /craftengine debug clean-cache - /ce debug clean-cache +debug_generate_internal_assets: + enable: false + permission: ce.command.debug.generate_internal_assets + usage: + - /craftengine debug generate-internal-assets + - /ce debug generate-internal-assets + debug_test: enable: true permission: ce.command.debug.test diff --git a/common-files/src/main/resources/config.yml b/common-files/src/main/resources/config.yml index ee7b4e559..53b288014 100644 --- a/common-files/src/main/resources/config.yml +++ b/common-files/src/main/resources/config.yml @@ -10,110 +10,49 @@ forced-locale: '' filter-configuration-phase-disconnect: false resource-pack: + # This option determines the location of the generated resource pack + # You can use either an absolute path or a relative path here + path: "./generated/resource_pack.zip" + # Allowed values: + # - 1.20.1, 1.21, 1.21.8, etc. + # - latest: the latest client version + # - server: the current server version + supported-version: + min: server + max: latest + # Remove 1.21.5+ tinted_leaves particles + remove-tinted-leaves-particle: true + # Define the name of the overlay folders + overlay-format: "ce_overlay_{version}" # Should those images in minecraft:default font also work in minecraft:uniform override-uniform-font: true # Generate assets for CraftEngine fabric mod # Note: fabric mod is used for clientside Axiom/WorldEdit mod generate-mod-assets: false - # Resource pack protection - protection: - # Warning: Do not attempt to unzip the resource pack with crash tools enabled. - # You can enable all the methods at the same time. - crash-tools: - method-1: false - method-2: false - method-3: false # Enable this would increase the resource pack size by 0.67MB - # [Premium Exclusive] - # Obfuscate your resource pack - obfuscation: - enable: false - seed: 0 # 0 = random seed - fake-directory: false - escape-unicode: false - resource-location: - enable: true - random-namespace: - amount: 16 # 0 = disable - length: 9 - random-path: - source: obf - depth: 16 - anti-unzip: false - random-atlas: - images-per-canvas: 32 # 0 = disable - # Sometimes, some vanilla files that have been overwritten might be mistakenly obfuscated. - # Please add the ignored textures/models/sounds here. - bypass-textures: - # - minecraft:block/farmland - - "@legacy_unicode" - - "@vanilla_textures" - bypass-models: - - "@vanilla_models" - bypass-sounds: [] - bypass-equipments: [] - # Validate if there is any error in the resource pack, such as missing textures or models - # If your resource pack is compliant with the standard, you can disable validation to improve the resource pack generation speed. - validation: - enable: true - # [Premium Exclusive] - # Fix images that are not within the texture atlas. It is unreasonable to always rely on plugins to fix your mistakes. - # You should strive to make your resource pack more standardized after gaining some experience with resource packs. - fix-atlas: true - # Define the name of the overlay folders - overlay-format: "ce_overlay_{version}" - # Allowed values: - # - 1.20.1, 1.21, 1.21.8, etc. - # - LATEST: the latest client version - # - SERVER: the current server version - supported-version: - min: SERVER - max: LATEST - # Remove 1.21.5+ tinted_leaves particles - remove-tinted-leaves-particle: true + # Exclude the shaders when generating the resource pack + exclude-core-shaders: false + # Merge other packs merge-external-folders: - "ModelEngine/resource pack" merge-external-zip-files: - "CustomNameplates/resourcepack.zip" - "BetterModel/build.zip" - exclude-file-extensions: ["md", "psd", "bbmodel", "db", "ini"] - # Exclude the shaders when generating the resource pack - exclude-core-shaders: false - delivery: - # Send the resource pack on joining the server - send-on-join: true - kick-if-declined: true - kick-if-failed-to-apply: true - prompt: "To fully experience our server,please accept our custom resource pack." - # If you are hosting the resource pack by yourself, replace `localhost` with your server ip otherwise it would only work on your local pc - # If using BungeeCord or Velocity, consider using a proxy-side plugin to handle resource pack delivery. - # Read this page for more host types: https://xiao-momi.github.io/craft-engine-wiki/getting_start/set_up_host - hosting: - - type: "self" - ip: "localhost" - port: 8163 - protocol: "http" - deny-non-minecraft-request: true - one-time-token: true - rate-limit: - max-requests: 10 - reset-interval: 30 - # Upload the resource pack automatically on generation - # When disabled, you must manually trigger uploads using the /ce upload command - auto-upload: true - # The file to upload - file-to-upload: "./generated/resource_pack.zip" - # Resend the resource pack to players upon successful upload - resend-on-upload: true - # Whether a verified player UUID is required to get the resource pack - strict-player-uuid-validation: true + exclude-file-extensions: ["md", "psd", "bbmodel", "db", "ini", "DS_Store"] + # Provide the solution for when a file conflict is encountered + # https://xiao-momi.github.io/craft-engine-wiki/reference/file_conflict duplicated-files-handler: - term: type: any_of terms: - - type: parent_path_suffix - suffix: "minecraft/items" - type: parent_path_suffix suffix: "minecraft/models/item" + resolution: + type: merge_legacy_model + - term: + type: any_of + terms: + - type: parent_path_suffix + suffix: "minecraft/items" resolution: type: merge_json deeply: true @@ -142,6 +81,111 @@ resource-pack: suffix: "minecraft/atlases" resolution: type: merge_atlas + # Validate if there is any error in the resource pack, such as missing textures or models + # If your resource pack is compliant with the standard, you can disable validation to improve the resource pack generation speed. + validation: + enable: true + # Fix images that are not within the texture atlas. It is unreasonable to always rely on plugins to fix your mistakes. + # You should strive to make your resource pack more standardized after gaining some experience with resource packs. + fix-atlas: true + # Optimize your resource pack by reducing its size without any quality loss. + optimization: + enable: true + # .png + texture: + enable: true + # Use Zopfli for PNG compression (very slow). More iterations = smaller files. + # In fact, setting the number of iterations between 4 and 8 is generally sufficient. Increasing it further rarely leads to significant optimization in size. + zopfli-iterations: 0 # 0 = disable + # If your image is special, for example, containing color pixels that need to be specifically recognized by a shader, the optimization might break it. You can add exclusions here. + exclude: + - assets/minecraft/textures/block/do_not_optimize.png + # .json / .mcmeta + json: + enable: true + exclude: [] + # [Premium Exclusive] + # Protect your resource pack from being cracked by others + protection: + # Prevent thieves from extracting your resource pack. These options will crash their software. + # Some of these options may impact your resource pack size. + crash-tools: + method-1: false + method-2: false # This will increase the resource pack size by 64KB + method-3: false # This will increase the resource pack size by 0.67MB + method-4: false + method-5: true # This will reduce the resource pack size, also it prevents some software from extracting it + method-6: false # This will increase the resource pack size by a certain percentage + method-7: false + # Create incorrect crc data + incorrect-crc: false + # Spoof huge files + fake-file-size: false + # Escape the JSON to make it human-unreadable + escape-json: false + # Create fake folders to hide original files + fake-directory: false + # Break the texture file to prevent thieves from opening it + break-texture: false + # Obfuscate your resource pack to prevent thieves from restoring its original structure + obfuscation: + enable: false + seed: 0 # 0 = random seed + # Determines the number and length of obfuscated namespaces. + namespace: + amount: 32 # 0 = disable + length: 2 + # Determines the depth of the obfuscated path. + path: + source: obf + depth: 4 + length: 2 + # Prevent straightforward unzip + anti-unzip: false + # A larger atlas will result in slower generation speed, but it will also lead to a smaller resource pack size. + atlas: + prefix: atlas # The prefix of the folder where the generated atlas will be located + images-per-canvas: 256 + # Sometimes, some vanilla files that have been overwritten might be mistakenly obfuscated + # Please add the ignored textures/models/sounds here if that happens + bypass-textures: + - minecraft:block/farmland # bypass a specified resource location + - "@vanilla_textures" # bypass vanilla textures + bypass-models: + - custom:item/do_not_obfuscate + - "@vanilla_models" # bypass vanilla models + bypass-sounds: + - "@vanilla_sounds" # bypass vanilla sounds + bypass-equipments: [] + # This section controls how to send the resource pack to players + delivery: + # Send the resource pack on joining the server + send-on-join: true + kick-if-declined: true + kick-if-failed-to-apply: false + prompt: "To fully experience our server,please accept our custom resource pack." + # Whether a verified player UUID is required to download the resource pack + strict-player-uuid-validation: true + # Upload the resource pack automatically on generation + # When disabled, you must manually trigger uploads using the /ce upload command + auto-upload: true + # Resend the resource pack to players upon successful upload + resend-on-upload: true + # The file to upload + file-to-upload: "./generated/resource_pack.zip" + # If you are hosting the resource pack by yourself, replace `localhost` with your server ip otherwise it would only work on your local pc + # If using BungeeCord or Velocity, consider using a proxy-side plugin to handle resource pack delivery. + # Read this page for more host types: https://xiao-momi.github.io/craft-engine-wiki/getting_start/set_up_host + hosting: + - type: "self" + ip: "localhost" + port: 8163 + protocol: "http" + deny-non-minecraft-request: true + one-time-token: true + rate-limit: + max-requests: 10 + reset-interval: 30 item: # [Premium Exclusive] @@ -169,6 +213,8 @@ item: # Since Minecraft renders lore text in italics by default, you can # optionally prefix any lore with to remove the italic formatting. non-italic-tag: false + # The default material to use as base item if not specified + default-material: nether_brick # Defines the trigger condition for the item updater. # # Warning: This operation is performance-intensive. Enable only if needed. @@ -198,7 +244,7 @@ equipment: block: # This decides the amount of real blocks on serverside. You should only consider increasing this value when your server state is insufficient. - # It is recommended to increase it by 500 each time. This option requires a restart to apply. + # It is recommended to increase it by 1000 each time. This option requires a restart to apply. serverside-blocks: 2000 # Enables the sound system, which prevents the client from hearing some non-custom block sounds and improves the client experience. sound-system: @@ -226,6 +272,16 @@ block: enable: false interval: 10 extended-interaction-range: 0.5 + # Defines the value returned by Bukkit block.getMaterial() + # If another plugin causes incompatibility due to its reliance on this method, try changing this option to a different vanilla block. + deceive-bukkit-material: + default: bricks + # The numbers here represent the internal real IDs of the blocks. + # This means that overriding certain blocks needs to be done under the condition of forcibly assigning internal IDs. + # A restart is required to apply the changes. + overrides: + 0: bricks + 1~8: bricks furniture: # Hide technical entities used for storing furniture metadata. @@ -234,7 +290,7 @@ furniture: # - Recommended to keep enabled for better performance hide-base-entity: true # Requires a restart to apply - # interaction (best performance) + # interaction (the best performance) # boat (better compatibility with some anti-cheat plugin) collision-entity-type: interaction @@ -267,6 +323,7 @@ image: # - Must match the font defined in resource packs # - Do NOT modify unless you understand text rendering mechanics offset-characters: + enable: true font: minecraft:default -1: '\uf800' -2: '\uf801' @@ -313,7 +370,12 @@ image: 128: '\uf844' 256: '\uf845' +# Only consider modifying the options below if you need to optimize Netty performance. +# In most cases, you can improve load handling by increasing the number of Netty threads. network: + # Disable network operations related to items. + # This option will disable client-bound-data/material and the functionality of replacing tags in item name and lore. + disable-item-operations: false # Allow tags in third-party plugins via packet manipulation # ⚠️ Disable unused handlers to reduce async thread workload intercept-packets: @@ -425,9 +487,9 @@ chunk-system: # Settings for injection injection: # Requires a restart to apply. - # SECTION: Inject the LevelChunkSection (Use this if you have installed both FastAsyncWorldEdit and Axiom) - # PALETTE: Inject the PalettedContainer - target: PALETTE + # section: Inject the LevelChunkSection (Use this if you have installed both FastAsyncWorldEdit and Axiom) + # palette: Inject the PalettedContainer + target: palette # Enables faster injection method # Note: May not work with certain server forks that alter chunk class structure (In most cases it won't conflict) use-fast-method: true diff --git a/common-files/src/main/resources/craft-engine.properties b/common-files/src/main/resources/craft-engine.properties index be2f90fc4..23c13b14f 100644 --- a/common-files/src/main/resources/craft-engine.properties +++ b/common-files/src/main/resources/craft-engine.properties @@ -20,7 +20,6 @@ caffeine=${caffeine_version} slf4j-api=${slf4j_version} zstd-jni=${zstd_version} commons-io=${commons_io_version} -commons-imaging=${commons_imaging_version} commons-lang3=${commons_lang3_version} byte-buddy=${byte_buddy_version} snake-yaml=${snake_yaml_version} diff --git a/common-files/src/main/resources/internal/atlases/_all.json b/common-files/src/main/resources/internal/atlases/_all.json deleted file mode 100644 index 6f8de5a3e..000000000 --- a/common-files/src/main/resources/internal/atlases/_all.json +++ /dev/null @@ -1 +0,0 @@ -{"armor_trims":{"sources":[{"type":"minecraft:paletted_permutations","palette_key":"minecraft:trims/color_palettes/trim_palette","permutations":{"amethyst":"minecraft:trims/color_palettes/amethyst","copper":"minecraft:trims/color_palettes/copper","diamond":"minecraft:trims/color_palettes/diamond","diamond_darker":"minecraft:trims/color_palettes/diamond_darker","emerald":"minecraft:trims/color_palettes/emerald","gold":"minecraft:trims/color_palettes/gold","gold_darker":"minecraft:trims/color_palettes/gold_darker","iron":"minecraft:trims/color_palettes/iron","iron_darker":"minecraft:trims/color_palettes/iron_darker","lapis":"minecraft:trims/color_palettes/lapis","netherite":"minecraft:trims/color_palettes/netherite","netherite_darker":"minecraft:trims/color_palettes/netherite_darker","quartz":"minecraft:trims/color_palettes/quartz","redstone":"minecraft:trims/color_palettes/redstone","resin":"minecraft:trims/color_palettes/resin"},"textures":["minecraft:trims/entity/humanoid/sentry","minecraft:trims/entity/humanoid_leggings/sentry","minecraft:trims/entity/humanoid/dune","minecraft:trims/entity/humanoid_leggings/dune","minecraft:trims/entity/humanoid/coast","minecraft:trims/entity/humanoid_leggings/coast","minecraft:trims/entity/humanoid/wild","minecraft:trims/entity/humanoid_leggings/wild","minecraft:trims/entity/humanoid/ward","minecraft:trims/entity/humanoid_leggings/ward","minecraft:trims/entity/humanoid/eye","minecraft:trims/entity/humanoid_leggings/eye","minecraft:trims/entity/humanoid/vex","minecraft:trims/entity/humanoid_leggings/vex","minecraft:trims/entity/humanoid/tide","minecraft:trims/entity/humanoid_leggings/tide","minecraft:trims/entity/humanoid/snout","minecraft:trims/entity/humanoid_leggings/snout","minecraft:trims/entity/humanoid/rib","minecraft:trims/entity/humanoid_leggings/rib","minecraft:trims/entity/humanoid/spire","minecraft:trims/entity/humanoid_leggings/spire","minecraft:trims/entity/humanoid/wayfinder","minecraft:trims/entity/humanoid_leggings/wayfinder","minecraft:trims/entity/humanoid/shaper","minecraft:trims/entity/humanoid_leggings/shaper","minecraft:trims/entity/humanoid/silence","minecraft:trims/entity/humanoid_leggings/silence","minecraft:trims/entity/humanoid/raiser","minecraft:trims/entity/humanoid_leggings/raiser","minecraft:trims/entity/humanoid/host","minecraft:trims/entity/humanoid_leggings/host","minecraft:trims/entity/humanoid/flow","minecraft:trims/entity/humanoid_leggings/flow","minecraft:trims/entity/humanoid/bolt","minecraft:trims/entity/humanoid_leggings/bolt"]}]},"banner_patterns":{"sources":[{"type":"minecraft:single","resource":"minecraft:entity/banner_base"},{"type":"minecraft:directory","prefix":"entity/banner/","source":"entity/banner"}]},"beds":{"sources":[{"type":"minecraft:directory","prefix":"entity/bed/","source":"entity/bed"}]},"blocks":{"sources":[{"type":"minecraft:directory","prefix":"block/","source":"block"},{"type":"minecraft:directory","prefix":"item/","source":"item"},{"type":"minecraft:directory","prefix":"entity/conduit/","source":"entity/conduit"},{"type":"minecraft:single","resource":"minecraft:entity/bell/bell_body"},{"type":"minecraft:single","resource":"minecraft:entity/decorated_pot/decorated_pot_side"},{"type":"minecraft:single","resource":"minecraft:entity/enchanting_table_book"},{"type":"minecraft:paletted_permutations","palette_key":"minecraft:trims/color_palettes/trim_palette","permutations":{"amethyst":"minecraft:trims/color_palettes/amethyst","copper":"minecraft:trims/color_palettes/copper","diamond":"minecraft:trims/color_palettes/diamond","diamond_darker":"minecraft:trims/color_palettes/diamond_darker","emerald":"minecraft:trims/color_palettes/emerald","gold":"minecraft:trims/color_palettes/gold","gold_darker":"minecraft:trims/color_palettes/gold_darker","iron":"minecraft:trims/color_palettes/iron","iron_darker":"minecraft:trims/color_palettes/iron_darker","lapis":"minecraft:trims/color_palettes/lapis","netherite":"minecraft:trims/color_palettes/netherite","netherite_darker":"minecraft:trims/color_palettes/netherite_darker","quartz":"minecraft:trims/color_palettes/quartz","redstone":"minecraft:trims/color_palettes/redstone","resin":"minecraft:trims/color_palettes/resin"},"textures":["minecraft:trims/items/helmet_trim","minecraft:trims/items/chestplate_trim","minecraft:trims/items/leggings_trim","minecraft:trims/items/boots_trim"]}]},"chests":{"sources":[{"type":"minecraft:directory","prefix":"entity/chest/","source":"entity/chest"}]},"decorated_pot":{"sources":[{"type":"minecraft:directory","prefix":"entity/decorated_pot/","source":"entity/decorated_pot"}]},"gui":{"sources":[{"type":"minecraft:directory","prefix":"","source":"gui/sprites"},{"type":"minecraft:directory","prefix":"mob_effect/","source":"mob_effect"}]},"map_decorations":{"sources":[{"type":"minecraft:directory","prefix":"","source":"map/decorations"}]},"paintings":{"sources":[{"type":"minecraft:directory","prefix":"","source":"painting"}]},"particles":{"sources":[{"type":"minecraft:directory","prefix":"","source":"particle"}]},"shield_patterns":{"sources":[{"type":"minecraft:single","resource":"minecraft:entity/shield_base"},{"type":"minecraft:single","resource":"minecraft:entity/shield_base_nopattern"},{"type":"minecraft:directory","prefix":"entity/shield/","source":"entity/shield"}]},"shulker_boxes":{"sources":[{"type":"minecraft:directory","prefix":"entity/shulker/","source":"entity/shulker"}]},"signs":{"sources":[{"type":"minecraft:directory","prefix":"entity/signs/","source":"entity/signs"}]}} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/atlases/_list.json b/common-files/src/main/resources/internal/atlases/_list.json deleted file mode 100644 index 5e3c3a0f3..000000000 --- a/common-files/src/main/resources/internal/atlases/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["armor_trims.json","banner_patterns.json","beds.json","blocks.json","chests.json","decorated_pot.json","gui.json","map_decorations.json","paintings.json","particles.json","shield_patterns.json","shulker_boxes.json","signs.json"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/atlases/armor_trims.json b/common-files/src/main/resources/internal/atlases/armor_trims.json deleted file mode 100644 index 7e92af33f..000000000 --- a/common-files/src/main/resources/internal/atlases/armor_trims.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "sources": [ - { - "type": "minecraft:paletted_permutations", - "palette_key": "minecraft:trims/color_palettes/trim_palette", - "permutations": { - "amethyst": "minecraft:trims/color_palettes/amethyst", - "copper": "minecraft:trims/color_palettes/copper", - "diamond": "minecraft:trims/color_palettes/diamond", - "diamond_darker": "minecraft:trims/color_palettes/diamond_darker", - "emerald": "minecraft:trims/color_palettes/emerald", - "gold": "minecraft:trims/color_palettes/gold", - "gold_darker": "minecraft:trims/color_palettes/gold_darker", - "iron": "minecraft:trims/color_palettes/iron", - "iron_darker": "minecraft:trims/color_palettes/iron_darker", - "lapis": "minecraft:trims/color_palettes/lapis", - "netherite": "minecraft:trims/color_palettes/netherite", - "netherite_darker": "minecraft:trims/color_palettes/netherite_darker", - "quartz": "minecraft:trims/color_palettes/quartz", - "redstone": "minecraft:trims/color_palettes/redstone", - "resin": "minecraft:trims/color_palettes/resin" - }, - "textures": [ - "minecraft:trims/entity/humanoid/sentry", - "minecraft:trims/entity/humanoid_leggings/sentry", - "minecraft:trims/entity/humanoid/dune", - "minecraft:trims/entity/humanoid_leggings/dune", - "minecraft:trims/entity/humanoid/coast", - "minecraft:trims/entity/humanoid_leggings/coast", - "minecraft:trims/entity/humanoid/wild", - "minecraft:trims/entity/humanoid_leggings/wild", - "minecraft:trims/entity/humanoid/ward", - "minecraft:trims/entity/humanoid_leggings/ward", - "minecraft:trims/entity/humanoid/eye", - "minecraft:trims/entity/humanoid_leggings/eye", - "minecraft:trims/entity/humanoid/vex", - "minecraft:trims/entity/humanoid_leggings/vex", - "minecraft:trims/entity/humanoid/tide", - "minecraft:trims/entity/humanoid_leggings/tide", - "minecraft:trims/entity/humanoid/snout", - "minecraft:trims/entity/humanoid_leggings/snout", - "minecraft:trims/entity/humanoid/rib", - "minecraft:trims/entity/humanoid_leggings/rib", - "minecraft:trims/entity/humanoid/spire", - "minecraft:trims/entity/humanoid_leggings/spire", - "minecraft:trims/entity/humanoid/wayfinder", - "minecraft:trims/entity/humanoid_leggings/wayfinder", - "minecraft:trims/entity/humanoid/shaper", - "minecraft:trims/entity/humanoid_leggings/shaper", - "minecraft:trims/entity/humanoid/silence", - "minecraft:trims/entity/humanoid_leggings/silence", - "minecraft:trims/entity/humanoid/raiser", - "minecraft:trims/entity/humanoid_leggings/raiser", - "minecraft:trims/entity/humanoid/host", - "minecraft:trims/entity/humanoid_leggings/host", - "minecraft:trims/entity/humanoid/flow", - "minecraft:trims/entity/humanoid_leggings/flow", - "minecraft:trims/entity/humanoid/bolt", - "minecraft:trims/entity/humanoid_leggings/bolt" - ] - } - ] -} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/atlases/banner_patterns.json b/common-files/src/main/resources/internal/atlases/banner_patterns.json deleted file mode 100644 index b683a9828..000000000 --- a/common-files/src/main/resources/internal/atlases/banner_patterns.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "sources": [ - { - "type": "minecraft:single", - "resource": "minecraft:entity/banner_base" - }, - { - "type": "minecraft:directory", - "prefix": "entity/banner/", - "source": "entity/banner" - } - ] -} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/atlases/beds.json b/common-files/src/main/resources/internal/atlases/beds.json deleted file mode 100644 index d2e798a5e..000000000 --- a/common-files/src/main/resources/internal/atlases/beds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "sources": [ - { - "type": "minecraft:directory", - "prefix": "entity/bed/", - "source": "entity/bed" - } - ] -} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/atlases/blocks.json b/common-files/src/main/resources/internal/atlases/blocks.json index d2cf5a79c..d9881608f 100644 --- a/common-files/src/main/resources/internal/atlases/blocks.json +++ b/common-files/src/main/resources/internal/atlases/blocks.json @@ -33,6 +33,7 @@ "permutations": { "amethyst": "minecraft:trims/color_palettes/amethyst", "copper": "minecraft:trims/color_palettes/copper", + "copper_darker": "minecraft:trims/color_palettes/copper_darker", "diamond": "minecraft:trims/color_palettes/diamond", "diamond_darker": "minecraft:trims/color_palettes/diamond_darker", "emerald": "minecraft:trims/color_palettes/emerald", diff --git a/common-files/src/main/resources/internal/atlases/chests.json b/common-files/src/main/resources/internal/atlases/chests.json deleted file mode 100644 index 81a68b1ca..000000000 --- a/common-files/src/main/resources/internal/atlases/chests.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "sources": [ - { - "type": "minecraft:directory", - "prefix": "entity/chest/", - "source": "entity/chest" - } - ] -} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/atlases/decorated_pot.json b/common-files/src/main/resources/internal/atlases/decorated_pot.json deleted file mode 100644 index 57356d985..000000000 --- a/common-files/src/main/resources/internal/atlases/decorated_pot.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "sources": [ - { - "type": "minecraft:directory", - "prefix": "entity/decorated_pot/", - "source": "entity/decorated_pot" - } - ] -} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/atlases/gui.json b/common-files/src/main/resources/internal/atlases/gui.json deleted file mode 100644 index 1ad438f00..000000000 --- a/common-files/src/main/resources/internal/atlases/gui.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "sources": [ - { - "type": "minecraft:directory", - "prefix": "", - "source": "gui/sprites" - }, - { - "type": "minecraft:directory", - "prefix": "mob_effect/", - "source": "mob_effect" - } - ] -} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/atlases/map_decorations.json b/common-files/src/main/resources/internal/atlases/map_decorations.json deleted file mode 100644 index f5cf7910d..000000000 --- a/common-files/src/main/resources/internal/atlases/map_decorations.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "sources": [ - { - "type": "minecraft:directory", - "prefix": "", - "source": "map/decorations" - } - ] -} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/atlases/paintings.json b/common-files/src/main/resources/internal/atlases/paintings.json deleted file mode 100644 index 1345d6d1e..000000000 --- a/common-files/src/main/resources/internal/atlases/paintings.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "sources": [ - { - "type": "minecraft:directory", - "prefix": "", - "source": "painting" - } - ] -} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/atlases/particles.json b/common-files/src/main/resources/internal/atlases/particles.json deleted file mode 100644 index 18229aff0..000000000 --- a/common-files/src/main/resources/internal/atlases/particles.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "sources": [ - { - "type": "minecraft:directory", - "prefix": "", - "source": "particle" - } - ] -} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/atlases/shield_patterns.json b/common-files/src/main/resources/internal/atlases/shield_patterns.json deleted file mode 100644 index 77793ed1b..000000000 --- a/common-files/src/main/resources/internal/atlases/shield_patterns.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "sources": [ - { - "type": "minecraft:single", - "resource": "minecraft:entity/shield_base" - }, - { - "type": "minecraft:single", - "resource": "minecraft:entity/shield_base_nopattern" - }, - { - "type": "minecraft:directory", - "prefix": "entity/shield/", - "source": "entity/shield" - } - ] -} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/atlases/shulker_boxes.json b/common-files/src/main/resources/internal/atlases/shulker_boxes.json deleted file mode 100644 index d4ecef71e..000000000 --- a/common-files/src/main/resources/internal/atlases/shulker_boxes.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "sources": [ - { - "type": "minecraft:directory", - "prefix": "entity/shulker/", - "source": "entity/shulker" - } - ] -} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/atlases/signs.json b/common-files/src/main/resources/internal/atlases/signs.json deleted file mode 100644 index 1f34aaa1a..000000000 --- a/common-files/src/main/resources/internal/atlases/signs.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "sources": [ - { - "type": "minecraft:directory", - "prefix": "entity/signs/", - "source": "entity/signs" - } - ] -} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/items/_all.json b/common-files/src/main/resources/internal/items/_all.json index 18383fd98..0a655839d 100644 --- a/common-files/src/main/resources/internal/items/_all.json +++ b/common-files/src/main/resources/internal/items/_all.json @@ -1 +1 @@ -{"acacia_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/acacia_boat"}},"acacia_button":{"model":{"type":"minecraft:model","model":"minecraft:block/acacia_button_inventory"}},"acacia_chest_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/acacia_chest_boat"}},"acacia_door":{"model":{"type":"minecraft:model","model":"minecraft:item/acacia_door"}},"acacia_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/acacia_fence_inventory"}},"acacia_fence_gate":{"model":{"type":"minecraft:model","model":"minecraft:block/acacia_fence_gate"}},"acacia_hanging_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/acacia_hanging_sign"}},"acacia_leaves":{"model":{"type":"minecraft:model","model":"minecraft:block/acacia_leaves","tints":[{"type":"minecraft:constant","value":-12012264}]}},"acacia_log":{"model":{"type":"minecraft:model","model":"minecraft:block/acacia_log"}},"acacia_planks":{"model":{"type":"minecraft:model","model":"minecraft:block/acacia_planks"}},"acacia_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/acacia_pressure_plate"}},"acacia_sapling":{"model":{"type":"minecraft:model","model":"minecraft:item/acacia_sapling"}},"acacia_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/acacia_sign"}},"acacia_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/acacia_slab"}},"acacia_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/acacia_stairs"}},"acacia_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/acacia_trapdoor_bottom"}},"acacia_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/acacia_wood"}},"activator_rail":{"model":{"type":"minecraft:model","model":"minecraft:item/activator_rail"}},"air":{"model":{"type":"minecraft:model","model":"minecraft:item/air"}},"allay_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/allay_spawn_egg"}},"allium":{"model":{"type":"minecraft:model","model":"minecraft:item/allium"}},"amethyst_block":{"model":{"type":"minecraft:model","model":"minecraft:block/amethyst_block"}},"amethyst_cluster":{"model":{"type":"minecraft:model","model":"minecraft:item/amethyst_cluster"}},"amethyst_shard":{"model":{"type":"minecraft:model","model":"minecraft:item/amethyst_shard"}},"ancient_debris":{"model":{"type":"minecraft:model","model":"minecraft:block/ancient_debris"}},"andesite":{"model":{"type":"minecraft:model","model":"minecraft:block/andesite"}},"andesite_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/andesite_slab"}},"andesite_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/andesite_stairs"}},"andesite_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/andesite_wall_inventory"}},"angler_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/angler_pottery_sherd"}},"anvil":{"model":{"type":"minecraft:model","model":"minecraft:block/anvil"}},"apple":{"model":{"type":"minecraft:model","model":"minecraft:item/apple"}},"archer_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/archer_pottery_sherd"}},"armadillo_scute":{"model":{"type":"minecraft:model","model":"minecraft:item/armadillo_scute"}},"armadillo_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/armadillo_spawn_egg"}},"armor_stand":{"model":{"type":"minecraft:model","model":"minecraft:item/armor_stand"}},"arms_up_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/arms_up_pottery_sherd"}},"arrow":{"model":{"type":"minecraft:model","model":"minecraft:item/arrow"}},"axolotl_bucket":{"model":{"type":"minecraft:model","model":"minecraft:item/axolotl_bucket"}},"axolotl_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/axolotl_spawn_egg"}},"azalea":{"model":{"type":"minecraft:model","model":"minecraft:block/azalea"}},"azalea_leaves":{"model":{"type":"minecraft:model","model":"minecraft:block/azalea_leaves"}},"azure_bluet":{"model":{"type":"minecraft:model","model":"minecraft:item/azure_bluet"}},"baked_potato":{"model":{"type":"minecraft:model","model":"minecraft:item/baked_potato"}},"bamboo":{"model":{"type":"minecraft:model","model":"minecraft:item/bamboo"}},"bamboo_block":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_block"}},"bamboo_button":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_button_inventory"}},"bamboo_chest_raft":{"model":{"type":"minecraft:model","model":"minecraft:item/bamboo_chest_raft"}},"bamboo_door":{"model":{"type":"minecraft:model","model":"minecraft:item/bamboo_door"}},"bamboo_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_fence_inventory"}},"bamboo_fence_gate":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_fence_gate"}},"bamboo_hanging_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/bamboo_hanging_sign"}},"bamboo_mosaic":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_mosaic"}},"bamboo_mosaic_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_mosaic_slab"}},"bamboo_mosaic_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_mosaic_stairs"}},"bamboo_planks":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_planks"}},"bamboo_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_pressure_plate"}},"bamboo_raft":{"model":{"type":"minecraft:model","model":"minecraft:item/bamboo_raft"}},"bamboo_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/bamboo_sign"}},"bamboo_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_slab"}},"bamboo_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_stairs"}},"bamboo_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_trapdoor_bottom"}},"barrel":{"model":{"type":"minecraft:model","model":"minecraft:block/barrel"}},"barrier":{"model":{"type":"minecraft:model","model":"minecraft:item/barrier"}},"basalt":{"model":{"type":"minecraft:model","model":"minecraft:block/basalt"}},"bat_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/bat_spawn_egg"}},"beacon":{"model":{"type":"minecraft:model","model":"minecraft:block/beacon"}},"bedrock":{"model":{"type":"minecraft:model","model":"minecraft:block/bedrock"}},"bee_nest":{"model":{"type":"minecraft:select","block_state_property":"honey_level","cases":[{"model":{"type":"minecraft:model","model":"minecraft:block/bee_nest_honey"},"when":"5"}],"fallback":{"type":"minecraft:model","model":"minecraft:block/bee_nest_empty"},"property":"minecraft:block_state"}},"bee_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/bee_spawn_egg"}},"beef":{"model":{"type":"minecraft:model","model":"minecraft:item/beef"}},"beehive":{"model":{"type":"minecraft:select","block_state_property":"honey_level","cases":[{"model":{"type":"minecraft:model","model":"minecraft:block/beehive_honey"},"when":"5"}],"fallback":{"type":"minecraft:model","model":"minecraft:block/beehive_empty"},"property":"minecraft:block_state"}},"beetroot":{"model":{"type":"minecraft:model","model":"minecraft:item/beetroot"}},"beetroot_seeds":{"model":{"type":"minecraft:model","model":"minecraft:item/beetroot_seeds"}},"beetroot_soup":{"model":{"type":"minecraft:model","model":"minecraft:item/beetroot_soup"}},"bell":{"model":{"type":"minecraft:model","model":"minecraft:item/bell"}},"big_dripleaf":{"model":{"type":"minecraft:model","model":"minecraft:item/big_dripleaf"}},"birch_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/birch_boat"}},"birch_button":{"model":{"type":"minecraft:model","model":"minecraft:block/birch_button_inventory"}},"birch_chest_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/birch_chest_boat"}},"birch_door":{"model":{"type":"minecraft:model","model":"minecraft:item/birch_door"}},"birch_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/birch_fence_inventory"}},"birch_fence_gate":{"model":{"type":"minecraft:model","model":"minecraft:block/birch_fence_gate"}},"birch_hanging_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/birch_hanging_sign"}},"birch_leaves":{"model":{"type":"minecraft:model","model":"minecraft:block/birch_leaves","tints":[{"type":"minecraft:constant","value":-8345771}]}},"birch_log":{"model":{"type":"minecraft:model","model":"minecraft:block/birch_log"}},"birch_planks":{"model":{"type":"minecraft:model","model":"minecraft:block/birch_planks"}},"birch_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/birch_pressure_plate"}},"birch_sapling":{"model":{"type":"minecraft:model","model":"minecraft:item/birch_sapling"}},"birch_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/birch_sign"}},"birch_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/birch_slab"}},"birch_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/birch_stairs"}},"birch_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/birch_trapdoor_bottom"}},"birch_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/birch_wood"}},"black_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"black"}}},"black_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/black_bed","model":{"type":"minecraft:bed","texture":"minecraft:black"}}},"black_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/black_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/black_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/black_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/black_bundle"},"property":"minecraft:display_context"}},"black_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/black_candle"}},"black_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/black_carpet"}},"black_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/black_concrete"}},"black_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/black_concrete_powder"}},"black_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/black_dye"}},"black_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/black_glazed_terracotta"}},"black_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/black_harness"}},"black_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/black_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_black"}}},"black_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/black_stained_glass"}},"black_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/black_stained_glass_pane"}},"black_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/black_terracotta"}},"black_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/black_wool"}},"blackstone":{"model":{"type":"minecraft:model","model":"minecraft:block/blackstone"}},"blackstone_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/blackstone_slab"}},"blackstone_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/blackstone_stairs"}},"blackstone_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/blackstone_wall_inventory"}},"blade_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/blade_pottery_sherd"}},"blast_furnace":{"model":{"type":"minecraft:model","model":"minecraft:block/blast_furnace"}},"blaze_powder":{"model":{"type":"minecraft:model","model":"minecraft:item/blaze_powder"}},"blaze_rod":{"model":{"type":"minecraft:model","model":"minecraft:item/blaze_rod"}},"blaze_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/blaze_spawn_egg"}},"blue_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"blue"}}},"blue_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/blue_bed","model":{"type":"minecraft:bed","texture":"minecraft:blue"}}},"blue_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/blue_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/blue_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/blue_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/blue_bundle"},"property":"minecraft:display_context"}},"blue_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/blue_candle"}},"blue_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/blue_carpet"}},"blue_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/blue_concrete"}},"blue_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/blue_concrete_powder"}},"blue_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/blue_dye"}},"blue_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/blue_egg"}},"blue_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/blue_glazed_terracotta"}},"blue_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/blue_harness"}},"blue_ice":{"model":{"type":"minecraft:model","model":"minecraft:block/blue_ice"}},"blue_orchid":{"model":{"type":"minecraft:model","model":"minecraft:item/blue_orchid"}},"blue_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/blue_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_blue"}}},"blue_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/blue_stained_glass"}},"blue_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/blue_stained_glass_pane"}},"blue_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/blue_terracotta"}},"blue_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/blue_wool"}},"bogged_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/bogged_spawn_egg"}},"bolt_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/bolt_armor_trim_smithing_template"}},"bone":{"model":{"type":"minecraft:model","model":"minecraft:item/bone"}},"bone_block":{"model":{"type":"minecraft:model","model":"minecraft:block/bone_block"}},"bone_meal":{"model":{"type":"minecraft:model","model":"minecraft:item/bone_meal"}},"book":{"model":{"type":"minecraft:model","model":"minecraft:item/book"}},"bookshelf":{"model":{"type":"minecraft:model","model":"minecraft:block/bookshelf"}},"bordure_indented_banner_pattern":{"model":{"type":"minecraft:model","model":"minecraft:item/bordure_indented_banner_pattern"}},"bow":{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/bow"},"on_true":{"type":"minecraft:range_dispatch","entries":[{"model":{"type":"minecraft:model","model":"minecraft:item/bow_pulling_1"},"threshold":0.65},{"model":{"type":"minecraft:model","model":"minecraft:item/bow_pulling_2"},"threshold":0.9}],"fallback":{"type":"minecraft:model","model":"minecraft:item/bow_pulling_0"},"property":"minecraft:use_duration","scale":0.05},"property":"minecraft:using_item"}},"bowl":{"model":{"type":"minecraft:model","model":"minecraft:item/bowl"}},"brain_coral":{"model":{"type":"minecraft:model","model":"minecraft:item/brain_coral"}},"brain_coral_block":{"model":{"type":"minecraft:model","model":"minecraft:block/brain_coral_block"}},"brain_coral_fan":{"model":{"type":"minecraft:model","model":"minecraft:item/brain_coral_fan"}},"bread":{"model":{"type":"minecraft:model","model":"minecraft:item/bread"}},"breeze_rod":{"model":{"type":"minecraft:model","model":"minecraft:item/breeze_rod"}},"breeze_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/breeze_spawn_egg"}},"brewer_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/brewer_pottery_sherd"}},"brewing_stand":{"model":{"type":"minecraft:model","model":"minecraft:item/brewing_stand"}},"brick":{"model":{"type":"minecraft:model","model":"minecraft:item/brick"}},"brick_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/brick_slab"}},"brick_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/brick_stairs"}},"brick_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/brick_wall_inventory"}},"bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/bricks"}},"brown_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"brown"}}},"brown_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/brown_bed","model":{"type":"minecraft:bed","texture":"minecraft:brown"}}},"brown_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/brown_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/brown_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/brown_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/brown_bundle"},"property":"minecraft:display_context"}},"brown_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/brown_candle"}},"brown_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/brown_carpet"}},"brown_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/brown_concrete"}},"brown_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/brown_concrete_powder"}},"brown_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/brown_dye"}},"brown_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/brown_egg"}},"brown_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/brown_glazed_terracotta"}},"brown_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/brown_harness"}},"brown_mushroom":{"model":{"type":"minecraft:model","model":"minecraft:item/brown_mushroom"}},"brown_mushroom_block":{"model":{"type":"minecraft:model","model":"minecraft:block/brown_mushroom_block_inventory"}},"brown_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/brown_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_brown"}}},"brown_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/brown_stained_glass"}},"brown_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/brown_stained_glass_pane"}},"brown_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/brown_terracotta"}},"brown_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/brown_wool"}},"brush":{"model":{"type":"minecraft:range_dispatch","entries":[{"model":{"type":"minecraft:model","model":"minecraft:item/brush_brushing_0"},"threshold":0.25},{"model":{"type":"minecraft:model","model":"minecraft:item/brush_brushing_1"},"threshold":0.5},{"model":{"type":"minecraft:model","model":"minecraft:item/brush_brushing_2"},"threshold":0.75}],"fallback":{"type":"minecraft:model","model":"minecraft:item/brush"},"period":10.0,"property":"minecraft:use_cycle","scale":0.1}},"bubble_coral":{"model":{"type":"minecraft:model","model":"minecraft:item/bubble_coral"}},"bubble_coral_block":{"model":{"type":"minecraft:model","model":"minecraft:block/bubble_coral_block"}},"bubble_coral_fan":{"model":{"type":"minecraft:model","model":"minecraft:item/bubble_coral_fan"}},"bucket":{"model":{"type":"minecraft:model","model":"minecraft:item/bucket"}},"budding_amethyst":{"model":{"type":"minecraft:model","model":"minecraft:block/budding_amethyst"}},"bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/bundle"},"property":"minecraft:display_context"}},"burn_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/burn_pottery_sherd"}},"bush":{"model":{"type":"minecraft:model","model":"minecraft:item/bush","tints":[{"type":"minecraft:grass","downfall":1.0,"temperature":0.5}]}},"cactus":{"model":{"type":"minecraft:model","model":"minecraft:block/cactus"}},"cactus_flower":{"model":{"type":"minecraft:model","model":"minecraft:item/cactus_flower"}},"cake":{"model":{"type":"minecraft:model","model":"minecraft:item/cake"}},"calcite":{"model":{"type":"minecraft:model","model":"minecraft:block/calcite"}},"calibrated_sculk_sensor":{"model":{"type":"minecraft:model","model":"minecraft:block/calibrated_sculk_sensor_inactive"}},"camel_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/camel_spawn_egg"}},"campfire":{"model":{"type":"minecraft:model","model":"minecraft:item/campfire"}},"candle":{"model":{"type":"minecraft:model","model":"minecraft:item/candle"}},"carrot":{"model":{"type":"minecraft:model","model":"minecraft:item/carrot"}},"carrot_on_a_stick":{"model":{"type":"minecraft:model","model":"minecraft:item/carrot_on_a_stick"}},"cartography_table":{"model":{"type":"minecraft:model","model":"minecraft:block/cartography_table"}},"carved_pumpkin":{"model":{"type":"minecraft:model","model":"minecraft:block/carved_pumpkin"}},"cat_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/cat_spawn_egg"}},"cauldron":{"model":{"type":"minecraft:model","model":"minecraft:item/cauldron"}},"cave_spider_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/cave_spider_spawn_egg"}},"chain":{"model":{"type":"minecraft:model","model":"minecraft:item/chain"}},"chain_command_block":{"model":{"type":"minecraft:model","model":"minecraft:block/chain_command_block"}},"chainmail_boots":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_boots_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_boots_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_boots_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_boots_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_boots_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_boots_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_boots_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_boots_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_boots_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_boots_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_boots_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/chainmail_boots"},"property":"minecraft:trim_material"}},"chainmail_chestplate":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_chestplate_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_chestplate_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_chestplate_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_chestplate_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_chestplate_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_chestplate_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_chestplate_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_chestplate_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_chestplate_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_chestplate_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_chestplate_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/chainmail_chestplate"},"property":"minecraft:trim_material"}},"chainmail_helmet":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_helmet_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_helmet_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_helmet_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_helmet_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_helmet_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_helmet_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_helmet_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_helmet_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_helmet_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_helmet_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_helmet_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/chainmail_helmet"},"property":"minecraft:trim_material"}},"chainmail_leggings":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_leggings_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_leggings_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_leggings_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_leggings_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_leggings_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_leggings_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_leggings_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_leggings_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_leggings_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_leggings_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_leggings_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/chainmail_leggings"},"property":"minecraft:trim_material"}},"charcoal":{"model":{"type":"minecraft:model","model":"minecraft:item/charcoal"}},"cherry_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/cherry_boat"}},"cherry_button":{"model":{"type":"minecraft:model","model":"minecraft:block/cherry_button_inventory"}},"cherry_chest_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/cherry_chest_boat"}},"cherry_door":{"model":{"type":"minecraft:model","model":"minecraft:item/cherry_door"}},"cherry_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/cherry_fence_inventory"}},"cherry_fence_gate":{"model":{"type":"minecraft:model","model":"minecraft:block/cherry_fence_gate"}},"cherry_hanging_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/cherry_hanging_sign"}},"cherry_leaves":{"model":{"type":"minecraft:model","model":"minecraft:block/cherry_leaves"}},"cherry_log":{"model":{"type":"minecraft:model","model":"minecraft:block/cherry_log"}},"cherry_planks":{"model":{"type":"minecraft:model","model":"minecraft:block/cherry_planks"}},"cherry_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/cherry_pressure_plate"}},"cherry_sapling":{"model":{"type":"minecraft:model","model":"minecraft:item/cherry_sapling"}},"cherry_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/cherry_sign"}},"cherry_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/cherry_slab"}},"cherry_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/cherry_stairs"}},"cherry_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/cherry_trapdoor_bottom"}},"cherry_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/cherry_wood"}},"chest":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:special","base":"minecraft:item/chest","model":{"type":"minecraft:chest","texture":"minecraft:christmas"}},"when":["12-24","12-25","12-26"]}],"fallback":{"type":"minecraft:special","base":"minecraft:item/chest","model":{"type":"minecraft:chest","texture":"minecraft:normal"}},"pattern":"MM-dd","property":"minecraft:local_time"}},"chest_minecart":{"model":{"type":"minecraft:model","model":"minecraft:item/chest_minecart"}},"chicken":{"model":{"type":"minecraft:model","model":"minecraft:item/chicken"}},"chicken_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/chicken_spawn_egg"}},"chipped_anvil":{"model":{"type":"minecraft:model","model":"minecraft:block/chipped_anvil"}},"chiseled_bookshelf":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_bookshelf_inventory"}},"chiseled_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_copper"}},"chiseled_deepslate":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_deepslate"}},"chiseled_nether_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_nether_bricks"}},"chiseled_polished_blackstone":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_polished_blackstone"}},"chiseled_quartz_block":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_quartz_block"}},"chiseled_red_sandstone":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_red_sandstone"}},"chiseled_resin_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_resin_bricks"}},"chiseled_sandstone":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_sandstone"}},"chiseled_stone_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_stone_bricks"}},"chiseled_tuff":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_tuff"}},"chiseled_tuff_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_tuff_bricks"}},"chorus_flower":{"model":{"type":"minecraft:model","model":"minecraft:block/chorus_flower"}},"chorus_fruit":{"model":{"type":"minecraft:model","model":"minecraft:item/chorus_fruit"}},"chorus_plant":{"model":{"type":"minecraft:model","model":"minecraft:block/chorus_plant"}},"clay":{"model":{"type":"minecraft:model","model":"minecraft:block/clay"}},"clay_ball":{"model":{"type":"minecraft:model","model":"minecraft:item/clay_ball"}},"clock":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:range_dispatch","entries":[{"model":{"type":"minecraft:model","model":"minecraft:item/clock_00"},"threshold":0.0},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_01"},"threshold":0.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_02"},"threshold":1.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_03"},"threshold":2.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_04"},"threshold":3.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_05"},"threshold":4.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_06"},"threshold":5.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_07"},"threshold":6.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_08"},"threshold":7.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_09"},"threshold":8.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_10"},"threshold":9.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_11"},"threshold":10.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_12"},"threshold":11.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_13"},"threshold":12.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_14"},"threshold":13.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_15"},"threshold":14.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_16"},"threshold":15.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_17"},"threshold":16.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_18"},"threshold":17.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_19"},"threshold":18.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_20"},"threshold":19.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_21"},"threshold":20.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_22"},"threshold":21.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_23"},"threshold":22.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_24"},"threshold":23.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_25"},"threshold":24.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_26"},"threshold":25.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_27"},"threshold":26.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_28"},"threshold":27.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_29"},"threshold":28.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_30"},"threshold":29.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_31"},"threshold":30.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_32"},"threshold":31.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_33"},"threshold":32.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_34"},"threshold":33.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_35"},"threshold":34.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_36"},"threshold":35.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_37"},"threshold":36.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_38"},"threshold":37.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_39"},"threshold":38.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_40"},"threshold":39.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_41"},"threshold":40.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_42"},"threshold":41.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_43"},"threshold":42.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_44"},"threshold":43.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_45"},"threshold":44.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_46"},"threshold":45.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_47"},"threshold":46.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_48"},"threshold":47.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_49"},"threshold":48.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_50"},"threshold":49.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_51"},"threshold":50.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_52"},"threshold":51.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_53"},"threshold":52.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_54"},"threshold":53.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_55"},"threshold":54.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_56"},"threshold":55.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_57"},"threshold":56.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_58"},"threshold":57.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_59"},"threshold":58.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_60"},"threshold":59.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_61"},"threshold":60.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_62"},"threshold":61.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_63"},"threshold":62.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_00"},"threshold":63.5}],"property":"minecraft:time","scale":64.0,"source":"daytime"},"when":"minecraft:overworld"}],"fallback":{"type":"minecraft:range_dispatch","entries":[{"model":{"type":"minecraft:model","model":"minecraft:item/clock_00"},"threshold":0.0},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_01"},"threshold":0.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_02"},"threshold":1.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_03"},"threshold":2.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_04"},"threshold":3.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_05"},"threshold":4.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_06"},"threshold":5.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_07"},"threshold":6.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_08"},"threshold":7.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_09"},"threshold":8.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_10"},"threshold":9.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_11"},"threshold":10.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_12"},"threshold":11.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_13"},"threshold":12.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_14"},"threshold":13.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_15"},"threshold":14.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_16"},"threshold":15.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_17"},"threshold":16.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_18"},"threshold":17.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_19"},"threshold":18.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_20"},"threshold":19.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_21"},"threshold":20.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_22"},"threshold":21.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_23"},"threshold":22.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_24"},"threshold":23.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_25"},"threshold":24.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_26"},"threshold":25.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_27"},"threshold":26.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_28"},"threshold":27.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_29"},"threshold":28.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_30"},"threshold":29.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_31"},"threshold":30.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_32"},"threshold":31.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_33"},"threshold":32.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_34"},"threshold":33.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_35"},"threshold":34.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_36"},"threshold":35.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_37"},"threshold":36.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_38"},"threshold":37.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_39"},"threshold":38.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_40"},"threshold":39.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_41"},"threshold":40.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_42"},"threshold":41.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_43"},"threshold":42.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_44"},"threshold":43.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_45"},"threshold":44.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_46"},"threshold":45.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_47"},"threshold":46.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_48"},"threshold":47.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_49"},"threshold":48.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_50"},"threshold":49.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_51"},"threshold":50.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_52"},"threshold":51.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_53"},"threshold":52.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_54"},"threshold":53.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_55"},"threshold":54.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_56"},"threshold":55.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_57"},"threshold":56.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_58"},"threshold":57.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_59"},"threshold":58.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_60"},"threshold":59.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_61"},"threshold":60.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_62"},"threshold":61.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_63"},"threshold":62.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_00"},"threshold":63.5}],"property":"minecraft:time","scale":64.0,"source":"random"},"property":"minecraft:context_dimension"}},"closed_eyeblossom":{"model":{"type":"minecraft:model","model":"minecraft:item/closed_eyeblossom"}},"coal":{"model":{"type":"minecraft:model","model":"minecraft:item/coal"}},"coal_block":{"model":{"type":"minecraft:model","model":"minecraft:block/coal_block"}},"coal_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/coal_ore"}},"coarse_dirt":{"model":{"type":"minecraft:model","model":"minecraft:block/coarse_dirt"}},"coast_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/coast_armor_trim_smithing_template"}},"cobbled_deepslate":{"model":{"type":"minecraft:model","model":"minecraft:block/cobbled_deepslate"}},"cobbled_deepslate_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/cobbled_deepslate_slab"}},"cobbled_deepslate_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/cobbled_deepslate_stairs"}},"cobbled_deepslate_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/cobbled_deepslate_wall_inventory"}},"cobblestone":{"model":{"type":"minecraft:model","model":"minecraft:block/cobblestone"}},"cobblestone_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/cobblestone_slab"}},"cobblestone_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/cobblestone_stairs"}},"cobblestone_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/cobblestone_wall_inventory"}},"cobweb":{"model":{"type":"minecraft:model","model":"minecraft:item/cobweb"}},"cocoa_beans":{"model":{"type":"minecraft:model","model":"minecraft:item/cocoa_beans"}},"cod":{"model":{"type":"minecraft:model","model":"minecraft:item/cod"}},"cod_bucket":{"model":{"type":"minecraft:model","model":"minecraft:item/cod_bucket"}},"cod_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/cod_spawn_egg"}},"command_block":{"model":{"type":"minecraft:model","model":"minecraft:block/command_block"}},"command_block_minecart":{"model":{"type":"minecraft:model","model":"minecraft:item/command_block_minecart"}},"comparator":{"model":{"type":"minecraft:model","model":"minecraft:item/comparator"}},"compass":{"model":{"type":"minecraft:condition","component":"minecraft:lodestone_tracker","on_false":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:range_dispatch","entries":[{"model":{"type":"minecraft:model","model":"minecraft:item/compass_16"},"threshold":0.0},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_17"},"threshold":0.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_18"},"threshold":1.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_19"},"threshold":2.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_20"},"threshold":3.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_21"},"threshold":4.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_22"},"threshold":5.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_23"},"threshold":6.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_24"},"threshold":7.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_25"},"threshold":8.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_26"},"threshold":9.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_27"},"threshold":10.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_28"},"threshold":11.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_29"},"threshold":12.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_30"},"threshold":13.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_31"},"threshold":14.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_00"},"threshold":15.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_01"},"threshold":16.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_02"},"threshold":17.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_03"},"threshold":18.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_04"},"threshold":19.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_05"},"threshold":20.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_06"},"threshold":21.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_07"},"threshold":22.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_08"},"threshold":23.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_09"},"threshold":24.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_10"},"threshold":25.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_11"},"threshold":26.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_12"},"threshold":27.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_13"},"threshold":28.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_14"},"threshold":29.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_15"},"threshold":30.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_16"},"threshold":31.5}],"property":"minecraft:compass","scale":32.0,"target":"spawn"},"when":"minecraft:overworld"}],"fallback":{"type":"minecraft:range_dispatch","entries":[{"model":{"type":"minecraft:model","model":"minecraft:item/compass_16"},"threshold":0.0},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_17"},"threshold":0.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_18"},"threshold":1.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_19"},"threshold":2.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_20"},"threshold":3.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_21"},"threshold":4.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_22"},"threshold":5.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_23"},"threshold":6.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_24"},"threshold":7.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_25"},"threshold":8.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_26"},"threshold":9.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_27"},"threshold":10.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_28"},"threshold":11.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_29"},"threshold":12.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_30"},"threshold":13.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_31"},"threshold":14.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_00"},"threshold":15.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_01"},"threshold":16.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_02"},"threshold":17.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_03"},"threshold":18.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_04"},"threshold":19.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_05"},"threshold":20.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_06"},"threshold":21.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_07"},"threshold":22.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_08"},"threshold":23.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_09"},"threshold":24.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_10"},"threshold":25.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_11"},"threshold":26.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_12"},"threshold":27.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_13"},"threshold":28.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_14"},"threshold":29.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_15"},"threshold":30.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_16"},"threshold":31.5}],"property":"minecraft:compass","scale":32.0,"target":"none"},"property":"minecraft:context_dimension"},"on_true":{"type":"minecraft:range_dispatch","entries":[{"model":{"type":"minecraft:model","model":"minecraft:item/compass_16"},"threshold":0.0},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_17"},"threshold":0.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_18"},"threshold":1.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_19"},"threshold":2.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_20"},"threshold":3.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_21"},"threshold":4.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_22"},"threshold":5.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_23"},"threshold":6.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_24"},"threshold":7.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_25"},"threshold":8.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_26"},"threshold":9.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_27"},"threshold":10.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_28"},"threshold":11.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_29"},"threshold":12.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_30"},"threshold":13.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_31"},"threshold":14.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_00"},"threshold":15.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_01"},"threshold":16.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_02"},"threshold":17.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_03"},"threshold":18.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_04"},"threshold":19.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_05"},"threshold":20.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_06"},"threshold":21.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_07"},"threshold":22.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_08"},"threshold":23.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_09"},"threshold":24.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_10"},"threshold":25.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_11"},"threshold":26.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_12"},"threshold":27.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_13"},"threshold":28.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_14"},"threshold":29.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_15"},"threshold":30.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_16"},"threshold":31.5}],"property":"minecraft:compass","scale":32.0,"target":"lodestone"},"property":"minecraft:has_component"}},"composter":{"model":{"type":"minecraft:model","model":"minecraft:block/composter"}},"conduit":{"model":{"type":"minecraft:special","base":"minecraft:item/conduit","model":{"type":"minecraft:conduit"}}},"cooked_beef":{"model":{"type":"minecraft:model","model":"minecraft:item/cooked_beef"}},"cooked_chicken":{"model":{"type":"minecraft:model","model":"minecraft:item/cooked_chicken"}},"cooked_cod":{"model":{"type":"minecraft:model","model":"minecraft:item/cooked_cod"}},"cooked_mutton":{"model":{"type":"minecraft:model","model":"minecraft:item/cooked_mutton"}},"cooked_porkchop":{"model":{"type":"minecraft:model","model":"minecraft:item/cooked_porkchop"}},"cooked_rabbit":{"model":{"type":"minecraft:model","model":"minecraft:item/cooked_rabbit"}},"cooked_salmon":{"model":{"type":"minecraft:model","model":"minecraft:item/cooked_salmon"}},"cookie":{"model":{"type":"minecraft:model","model":"minecraft:item/cookie"}},"copper_block":{"model":{"type":"minecraft:model","model":"minecraft:block/copper_block"}},"copper_bulb":{"model":{"type":"minecraft:model","model":"minecraft:block/copper_bulb"}},"copper_door":{"model":{"type":"minecraft:model","model":"minecraft:item/copper_door"}},"copper_grate":{"model":{"type":"minecraft:model","model":"minecraft:block/copper_grate"}},"copper_ingot":{"model":{"type":"minecraft:model","model":"minecraft:item/copper_ingot"}},"copper_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/copper_ore"}},"copper_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/copper_trapdoor_bottom"}},"cornflower":{"model":{"type":"minecraft:model","model":"minecraft:item/cornflower"}},"cow_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/cow_spawn_egg"}},"cracked_deepslate_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/cracked_deepslate_bricks"}},"cracked_deepslate_tiles":{"model":{"type":"minecraft:model","model":"minecraft:block/cracked_deepslate_tiles"}},"cracked_nether_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/cracked_nether_bricks"}},"cracked_polished_blackstone_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/cracked_polished_blackstone_bricks"}},"cracked_stone_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/cracked_stone_bricks"}},"crafter":{"model":{"type":"minecraft:model","model":"minecraft:block/crafter"}},"crafting_table":{"model":{"type":"minecraft:model","model":"minecraft:block/crafting_table"}},"creaking_heart":{"model":{"type":"minecraft:model","model":"minecraft:block/creaking_heart"}},"creaking_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/creaking_spawn_egg"}},"creeper_banner_pattern":{"model":{"type":"minecraft:model","model":"minecraft:item/creeper_banner_pattern"}},"creeper_head":{"model":{"type":"minecraft:special","base":"minecraft:item/template_skull","model":{"type":"minecraft:head","kind":"creeper"}}},"creeper_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/creeper_spawn_egg"}},"crimson_button":{"model":{"type":"minecraft:model","model":"minecraft:block/crimson_button_inventory"}},"crimson_door":{"model":{"type":"minecraft:model","model":"minecraft:item/crimson_door"}},"crimson_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/crimson_fence_inventory"}},"crimson_fence_gate":{"model":{"type":"minecraft:model","model":"minecraft:block/crimson_fence_gate"}},"crimson_fungus":{"model":{"type":"minecraft:model","model":"minecraft:item/crimson_fungus"}},"crimson_hanging_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/crimson_hanging_sign"}},"crimson_hyphae":{"model":{"type":"minecraft:model","model":"minecraft:block/crimson_hyphae"}},"crimson_nylium":{"model":{"type":"minecraft:model","model":"minecraft:block/crimson_nylium"}},"crimson_planks":{"model":{"type":"minecraft:model","model":"minecraft:block/crimson_planks"}},"crimson_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/crimson_pressure_plate"}},"crimson_roots":{"model":{"type":"minecraft:model","model":"minecraft:item/crimson_roots"}},"crimson_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/crimson_sign"}},"crimson_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/crimson_slab"}},"crimson_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/crimson_stairs"}},"crimson_stem":{"model":{"type":"minecraft:model","model":"minecraft:block/crimson_stem"}},"crimson_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/crimson_trapdoor_bottom"}},"crossbow":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/crossbow_arrow"},"when":"arrow"},{"model":{"type":"minecraft:model","model":"minecraft:item/crossbow_firework"},"when":"rocket"}],"fallback":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/crossbow"},"on_true":{"type":"minecraft:range_dispatch","entries":[{"model":{"type":"minecraft:model","model":"minecraft:item/crossbow_pulling_1"},"threshold":0.58},{"model":{"type":"minecraft:model","model":"minecraft:item/crossbow_pulling_2"},"threshold":1.0}],"fallback":{"type":"minecraft:model","model":"minecraft:item/crossbow_pulling_0"},"property":"minecraft:crossbow/pull"},"property":"minecraft:using_item"},"property":"minecraft:charge_type"}},"crying_obsidian":{"model":{"type":"minecraft:model","model":"minecraft:block/crying_obsidian"}},"cut_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/cut_copper"}},"cut_copper_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/cut_copper_slab"}},"cut_copper_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/cut_copper_stairs"}},"cut_red_sandstone":{"model":{"type":"minecraft:model","model":"minecraft:block/cut_red_sandstone"}},"cut_red_sandstone_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/cut_red_sandstone_slab"}},"cut_sandstone":{"model":{"type":"minecraft:model","model":"minecraft:block/cut_sandstone"}},"cut_sandstone_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/cut_sandstone_slab"}},"cyan_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"cyan"}}},"cyan_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/cyan_bed","model":{"type":"minecraft:bed","texture":"minecraft:cyan"}}},"cyan_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/cyan_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/cyan_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/cyan_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/cyan_bundle"},"property":"minecraft:display_context"}},"cyan_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/cyan_candle"}},"cyan_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/cyan_carpet"}},"cyan_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/cyan_concrete"}},"cyan_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/cyan_concrete_powder"}},"cyan_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/cyan_dye"}},"cyan_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/cyan_glazed_terracotta"}},"cyan_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/cyan_harness"}},"cyan_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/cyan_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_cyan"}}},"cyan_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/cyan_stained_glass"}},"cyan_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/cyan_stained_glass_pane"}},"cyan_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/cyan_terracotta"}},"cyan_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/cyan_wool"}},"damaged_anvil":{"model":{"type":"minecraft:model","model":"minecraft:block/damaged_anvil"}},"dandelion":{"model":{"type":"minecraft:model","model":"minecraft:item/dandelion"}},"danger_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/danger_pottery_sherd"}},"dark_oak_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/dark_oak_boat"}},"dark_oak_button":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_oak_button_inventory"}},"dark_oak_chest_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/dark_oak_chest_boat"}},"dark_oak_door":{"model":{"type":"minecraft:model","model":"minecraft:item/dark_oak_door"}},"dark_oak_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_oak_fence_inventory"}},"dark_oak_fence_gate":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_oak_fence_gate"}},"dark_oak_hanging_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/dark_oak_hanging_sign"}},"dark_oak_leaves":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_oak_leaves","tints":[{"type":"minecraft:constant","value":-12012264}]}},"dark_oak_log":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_oak_log"}},"dark_oak_planks":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_oak_planks"}},"dark_oak_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_oak_pressure_plate"}},"dark_oak_sapling":{"model":{"type":"minecraft:model","model":"minecraft:item/dark_oak_sapling"}},"dark_oak_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/dark_oak_sign"}},"dark_oak_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_oak_slab"}},"dark_oak_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_oak_stairs"}},"dark_oak_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_oak_trapdoor_bottom"}},"dark_oak_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_oak_wood"}},"dark_prismarine":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_prismarine"}},"dark_prismarine_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_prismarine_slab"}},"dark_prismarine_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_prismarine_stairs"}},"daylight_detector":{"model":{"type":"minecraft:model","model":"minecraft:block/daylight_detector"}},"dead_brain_coral":{"model":{"type":"minecraft:model","model":"minecraft:item/dead_brain_coral"}},"dead_brain_coral_block":{"model":{"type":"minecraft:model","model":"minecraft:block/dead_brain_coral_block"}},"dead_brain_coral_fan":{"model":{"type":"minecraft:model","model":"minecraft:item/dead_brain_coral_fan"}},"dead_bubble_coral":{"model":{"type":"minecraft:model","model":"minecraft:item/dead_bubble_coral"}},"dead_bubble_coral_block":{"model":{"type":"minecraft:model","model":"minecraft:block/dead_bubble_coral_block"}},"dead_bubble_coral_fan":{"model":{"type":"minecraft:model","model":"minecraft:item/dead_bubble_coral_fan"}},"dead_bush":{"model":{"type":"minecraft:model","model":"minecraft:item/dead_bush"}},"dead_fire_coral":{"model":{"type":"minecraft:model","model":"minecraft:item/dead_fire_coral"}},"dead_fire_coral_block":{"model":{"type":"minecraft:model","model":"minecraft:block/dead_fire_coral_block"}},"dead_fire_coral_fan":{"model":{"type":"minecraft:model","model":"minecraft:item/dead_fire_coral_fan"}},"dead_horn_coral":{"model":{"type":"minecraft:model","model":"minecraft:item/dead_horn_coral"}},"dead_horn_coral_block":{"model":{"type":"minecraft:model","model":"minecraft:block/dead_horn_coral_block"}},"dead_horn_coral_fan":{"model":{"type":"minecraft:model","model":"minecraft:item/dead_horn_coral_fan"}},"dead_tube_coral":{"model":{"type":"minecraft:model","model":"minecraft:item/dead_tube_coral"}},"dead_tube_coral_block":{"model":{"type":"minecraft:model","model":"minecraft:block/dead_tube_coral_block"}},"dead_tube_coral_fan":{"model":{"type":"minecraft:model","model":"minecraft:item/dead_tube_coral_fan"}},"debug_stick":{"model":{"type":"minecraft:model","model":"minecraft:item/debug_stick"}},"decorated_pot":{"model":{"type":"minecraft:special","base":"minecraft:item/decorated_pot","model":{"type":"minecraft:decorated_pot"}}},"deepslate":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate"}},"deepslate_brick_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_brick_slab"}},"deepslate_brick_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_brick_stairs"}},"deepslate_brick_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_brick_wall_inventory"}},"deepslate_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_bricks"}},"deepslate_coal_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_coal_ore"}},"deepslate_copper_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_copper_ore"}},"deepslate_diamond_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_diamond_ore"}},"deepslate_emerald_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_emerald_ore"}},"deepslate_gold_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_gold_ore"}},"deepslate_iron_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_iron_ore"}},"deepslate_lapis_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_lapis_ore"}},"deepslate_redstone_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_redstone_ore"}},"deepslate_tile_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_tile_slab"}},"deepslate_tile_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_tile_stairs"}},"deepslate_tile_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_tile_wall_inventory"}},"deepslate_tiles":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_tiles"}},"detector_rail":{"model":{"type":"minecraft:model","model":"minecraft:item/detector_rail"}},"diamond":{"model":{"type":"minecraft:model","model":"minecraft:item/diamond"}},"diamond_axe":{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_axe"}},"diamond_block":{"model":{"type":"minecraft:model","model":"minecraft:block/diamond_block"}},"diamond_boots":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_boots_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_boots_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_boots_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_boots_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_boots_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_boots_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_boots_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_boots_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_boots_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_boots_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_boots_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/diamond_boots"},"property":"minecraft:trim_material"}},"diamond_chestplate":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_chestplate_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_chestplate_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_chestplate_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_chestplate_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_chestplate_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_chestplate_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_chestplate_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_chestplate_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_chestplate_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_chestplate_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_chestplate_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/diamond_chestplate"},"property":"minecraft:trim_material"}},"diamond_helmet":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_helmet_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_helmet_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_helmet_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_helmet_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_helmet_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_helmet_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_helmet_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_helmet_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_helmet_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_helmet_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_helmet_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/diamond_helmet"},"property":"minecraft:trim_material"}},"diamond_hoe":{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_hoe"}},"diamond_horse_armor":{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_horse_armor"}},"diamond_leggings":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_leggings_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_leggings_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_leggings_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_leggings_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_leggings_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_leggings_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_leggings_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_leggings_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_leggings_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_leggings_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_leggings_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/diamond_leggings"},"property":"minecraft:trim_material"}},"diamond_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/diamond_ore"}},"diamond_pickaxe":{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_pickaxe"}},"diamond_shovel":{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_shovel"}},"diamond_sword":{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_sword"}},"diorite":{"model":{"type":"minecraft:model","model":"minecraft:block/diorite"}},"diorite_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/diorite_slab"}},"diorite_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/diorite_stairs"}},"diorite_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/diorite_wall_inventory"}},"dirt":{"model":{"type":"minecraft:model","model":"minecraft:block/dirt"}},"dirt_path":{"model":{"type":"minecraft:model","model":"minecraft:block/dirt_path"}},"disc_fragment_5":{"model":{"type":"minecraft:model","model":"minecraft:item/disc_fragment_5"}},"dispenser":{"model":{"type":"minecraft:model","model":"minecraft:block/dispenser"}},"dolphin_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/dolphin_spawn_egg"}},"donkey_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/donkey_spawn_egg"}},"dragon_breath":{"model":{"type":"minecraft:model","model":"minecraft:item/dragon_breath"}},"dragon_egg":{"model":{"type":"minecraft:model","model":"minecraft:block/dragon_egg"}},"dragon_head":{"model":{"type":"minecraft:special","base":"minecraft:item/dragon_head","model":{"type":"minecraft:head","kind":"dragon"}}},"dried_ghast":{"model":{"type":"minecraft:model","model":"minecraft:block/dried_ghast_hydration_0"}},"dried_kelp":{"model":{"type":"minecraft:model","model":"minecraft:item/dried_kelp"}},"dried_kelp_block":{"model":{"type":"minecraft:model","model":"minecraft:block/dried_kelp_block"}},"dripstone_block":{"model":{"type":"minecraft:model","model":"minecraft:block/dripstone_block"}},"dropper":{"model":{"type":"minecraft:model","model":"minecraft:block/dropper"}},"drowned_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/drowned_spawn_egg"}},"dune_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/dune_armor_trim_smithing_template"}},"echo_shard":{"model":{"type":"minecraft:model","model":"minecraft:item/echo_shard"}},"egg":{"model":{"type":"minecraft:model","model":"minecraft:item/egg"}},"elder_guardian_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/elder_guardian_spawn_egg"}},"elytra":{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/elytra"},"on_true":{"type":"minecraft:model","model":"minecraft:item/elytra_broken"},"property":"minecraft:broken"}},"emerald":{"model":{"type":"minecraft:model","model":"minecraft:item/emerald"}},"emerald_block":{"model":{"type":"minecraft:model","model":"minecraft:block/emerald_block"}},"emerald_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/emerald_ore"}},"enchanted_book":{"model":{"type":"minecraft:model","model":"minecraft:item/enchanted_book"}},"enchanted_golden_apple":{"model":{"type":"minecraft:model","model":"minecraft:item/enchanted_golden_apple"}},"enchanting_table":{"model":{"type":"minecraft:model","model":"minecraft:block/enchanting_table"}},"end_crystal":{"model":{"type":"minecraft:model","model":"minecraft:item/end_crystal"}},"end_portal_frame":{"model":{"type":"minecraft:model","model":"minecraft:block/end_portal_frame"}},"end_rod":{"model":{"type":"minecraft:model","model":"minecraft:block/end_rod"}},"end_stone":{"model":{"type":"minecraft:model","model":"minecraft:block/end_stone"}},"end_stone_brick_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/end_stone_brick_slab"}},"end_stone_brick_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/end_stone_brick_stairs"}},"end_stone_brick_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/end_stone_brick_wall_inventory"}},"end_stone_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/end_stone_bricks"}},"ender_chest":{"model":{"type":"minecraft:special","base":"minecraft:item/ender_chest","model":{"type":"minecraft:chest","texture":"minecraft:ender"}}},"ender_dragon_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/ender_dragon_spawn_egg"}},"ender_eye":{"model":{"type":"minecraft:model","model":"minecraft:item/ender_eye"}},"ender_pearl":{"model":{"type":"minecraft:model","model":"minecraft:item/ender_pearl"}},"enderman_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/enderman_spawn_egg"}},"endermite_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/endermite_spawn_egg"}},"evoker_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/evoker_spawn_egg"}},"experience_bottle":{"model":{"type":"minecraft:model","model":"minecraft:item/experience_bottle"}},"explorer_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/explorer_pottery_sherd"}},"exposed_chiseled_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_chiseled_copper"}},"exposed_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_copper"}},"exposed_copper_bulb":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_copper_bulb"}},"exposed_copper_door":{"model":{"type":"minecraft:model","model":"minecraft:item/exposed_copper_door"}},"exposed_copper_grate":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_copper_grate"}},"exposed_copper_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_copper_trapdoor_bottom"}},"exposed_cut_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_cut_copper"}},"exposed_cut_copper_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_cut_copper_slab"}},"exposed_cut_copper_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_cut_copper_stairs"}},"eye_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/eye_armor_trim_smithing_template"}},"farmland":{"model":{"type":"minecraft:model","model":"minecraft:block/farmland"}},"feather":{"model":{"type":"minecraft:model","model":"minecraft:item/feather"}},"fermented_spider_eye":{"model":{"type":"minecraft:model","model":"minecraft:item/fermented_spider_eye"}},"fern":{"model":{"type":"minecraft:model","model":"minecraft:item/fern","tints":[{"type":"minecraft:grass","downfall":1.0,"temperature":0.5}]}},"field_masoned_banner_pattern":{"model":{"type":"minecraft:model","model":"minecraft:item/field_masoned_banner_pattern"}},"filled_map":{"model":{"type":"minecraft:model","model":"minecraft:item/filled_map","tints":[{"type":"minecraft:constant","value":-1},{"type":"minecraft:map_color","default":4603950}]}},"fire_charge":{"model":{"type":"minecraft:model","model":"minecraft:item/fire_charge"}},"fire_coral":{"model":{"type":"minecraft:model","model":"minecraft:item/fire_coral"}},"fire_coral_block":{"model":{"type":"minecraft:model","model":"minecraft:block/fire_coral_block"}},"fire_coral_fan":{"model":{"type":"minecraft:model","model":"minecraft:item/fire_coral_fan"}},"firefly_bush":{"model":{"type":"minecraft:model","model":"minecraft:item/firefly_bush"}},"firework_rocket":{"model":{"type":"minecraft:model","model":"minecraft:item/firework_rocket"}},"firework_star":{"model":{"type":"minecraft:model","model":"minecraft:item/firework_star","tints":[{"type":"minecraft:constant","value":-1},{"type":"minecraft:firework","default":-7697782}]}},"fishing_rod":{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/fishing_rod"},"on_true":{"type":"minecraft:model","model":"minecraft:item/fishing_rod_cast"},"property":"minecraft:fishing_rod/cast"}},"fletching_table":{"model":{"type":"minecraft:model","model":"minecraft:block/fletching_table"}},"flint":{"model":{"type":"minecraft:model","model":"minecraft:item/flint"}},"flint_and_steel":{"model":{"type":"minecraft:model","model":"minecraft:item/flint_and_steel"}},"flow_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/flow_armor_trim_smithing_template"}},"flow_banner_pattern":{"model":{"type":"minecraft:model","model":"minecraft:item/flow_banner_pattern"}},"flow_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/flow_pottery_sherd"}},"flower_banner_pattern":{"model":{"type":"minecraft:model","model":"minecraft:item/flower_banner_pattern"}},"flower_pot":{"model":{"type":"minecraft:model","model":"minecraft:item/flower_pot"}},"flowering_azalea":{"model":{"type":"minecraft:model","model":"minecraft:block/flowering_azalea"}},"flowering_azalea_leaves":{"model":{"type":"minecraft:model","model":"minecraft:block/flowering_azalea_leaves"}},"fox_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/fox_spawn_egg"}},"friend_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/friend_pottery_sherd"}},"frog_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/frog_spawn_egg"}},"frogspawn":{"model":{"type":"minecraft:model","model":"minecraft:item/frogspawn"}},"furnace":{"model":{"type":"minecraft:model","model":"minecraft:block/furnace"}},"furnace_minecart":{"model":{"type":"minecraft:model","model":"minecraft:item/furnace_minecart"}},"ghast_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/ghast_spawn_egg"}},"ghast_tear":{"model":{"type":"minecraft:model","model":"minecraft:item/ghast_tear"}},"gilded_blackstone":{"model":{"type":"minecraft:model","model":"minecraft:block/gilded_blackstone"}},"glass":{"model":{"type":"minecraft:model","model":"minecraft:block/glass"}},"glass_bottle":{"model":{"type":"minecraft:model","model":"minecraft:item/glass_bottle"}},"glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/glass_pane"}},"glistering_melon_slice":{"model":{"type":"minecraft:model","model":"minecraft:item/glistering_melon_slice"}},"globe_banner_pattern":{"model":{"type":"minecraft:model","model":"minecraft:item/globe_banner_pattern"}},"glow_berries":{"model":{"type":"minecraft:model","model":"minecraft:item/glow_berries"}},"glow_ink_sac":{"model":{"type":"minecraft:model","model":"minecraft:item/glow_ink_sac"}},"glow_item_frame":{"model":{"type":"minecraft:model","model":"minecraft:item/glow_item_frame"}},"glow_lichen":{"model":{"type":"minecraft:model","model":"minecraft:item/glow_lichen"}},"glow_squid_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/glow_squid_spawn_egg"}},"glowstone":{"model":{"type":"minecraft:model","model":"minecraft:block/glowstone"}},"glowstone_dust":{"model":{"type":"minecraft:model","model":"minecraft:item/glowstone_dust"}},"goat_horn":{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/goat_horn"},"on_true":{"type":"minecraft:model","model":"minecraft:item/tooting_goat_horn"},"property":"minecraft:using_item"}},"goat_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/goat_spawn_egg"}},"gold_block":{"model":{"type":"minecraft:model","model":"minecraft:block/gold_block"}},"gold_ingot":{"model":{"type":"minecraft:model","model":"minecraft:item/gold_ingot"}},"gold_nugget":{"model":{"type":"minecraft:model","model":"minecraft:item/gold_nugget"}},"gold_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/gold_ore"}},"golden_apple":{"model":{"type":"minecraft:model","model":"minecraft:item/golden_apple"}},"golden_axe":{"model":{"type":"minecraft:model","model":"minecraft:item/golden_axe"}},"golden_boots":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/golden_boots_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_boots_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_boots_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_boots_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_boots_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_boots_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_boots_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_boots_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_boots_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_boots_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_boots_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/golden_boots"},"property":"minecraft:trim_material"}},"golden_carrot":{"model":{"type":"minecraft:model","model":"minecraft:item/golden_carrot"}},"golden_chestplate":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/golden_chestplate_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_chestplate_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_chestplate_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_chestplate_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_chestplate_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_chestplate_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_chestplate_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_chestplate_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_chestplate_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_chestplate_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_chestplate_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/golden_chestplate"},"property":"minecraft:trim_material"}},"golden_helmet":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/golden_helmet_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_helmet_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_helmet_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_helmet_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_helmet_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_helmet_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_helmet_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_helmet_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_helmet_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_helmet_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_helmet_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/golden_helmet"},"property":"minecraft:trim_material"}},"golden_hoe":{"model":{"type":"minecraft:model","model":"minecraft:item/golden_hoe"}},"golden_horse_armor":{"model":{"type":"minecraft:model","model":"minecraft:item/golden_horse_armor"}},"golden_leggings":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/golden_leggings_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_leggings_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_leggings_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_leggings_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_leggings_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_leggings_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_leggings_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_leggings_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_leggings_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_leggings_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_leggings_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/golden_leggings"},"property":"minecraft:trim_material"}},"golden_pickaxe":{"model":{"type":"minecraft:model","model":"minecraft:item/golden_pickaxe"}},"golden_shovel":{"model":{"type":"minecraft:model","model":"minecraft:item/golden_shovel"}},"golden_sword":{"model":{"type":"minecraft:model","model":"minecraft:item/golden_sword"}},"granite":{"model":{"type":"minecraft:model","model":"minecraft:block/granite"}},"granite_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/granite_slab"}},"granite_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/granite_stairs"}},"granite_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/granite_wall_inventory"}},"grass_block":{"model":{"type":"minecraft:model","model":"minecraft:block/grass_block","tints":[{"type":"minecraft:grass","downfall":1.0,"temperature":0.5}]}},"gravel":{"model":{"type":"minecraft:model","model":"minecraft:block/gravel"}},"gray_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"gray"}}},"gray_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/gray_bed","model":{"type":"minecraft:bed","texture":"minecraft:gray"}}},"gray_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/gray_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/gray_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/gray_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/gray_bundle"},"property":"minecraft:display_context"}},"gray_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/gray_candle"}},"gray_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/gray_carpet"}},"gray_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/gray_concrete"}},"gray_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/gray_concrete_powder"}},"gray_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/gray_dye"}},"gray_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/gray_glazed_terracotta"}},"gray_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/gray_harness"}},"gray_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/gray_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_gray"}}},"gray_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/gray_stained_glass"}},"gray_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/gray_stained_glass_pane"}},"gray_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/gray_terracotta"}},"gray_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/gray_wool"}},"green_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"green"}}},"green_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/green_bed","model":{"type":"minecraft:bed","texture":"minecraft:green"}}},"green_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/green_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/green_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/green_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/green_bundle"},"property":"minecraft:display_context"}},"green_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/green_candle"}},"green_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/green_carpet"}},"green_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/green_concrete"}},"green_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/green_concrete_powder"}},"green_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/green_dye"}},"green_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/green_glazed_terracotta"}},"green_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/green_harness"}},"green_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/green_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_green"}}},"green_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/green_stained_glass"}},"green_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/green_stained_glass_pane"}},"green_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/green_terracotta"}},"green_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/green_wool"}},"grindstone":{"model":{"type":"minecraft:model","model":"minecraft:block/grindstone"}},"guardian_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/guardian_spawn_egg"}},"gunpowder":{"model":{"type":"minecraft:model","model":"minecraft:item/gunpowder"}},"guster_banner_pattern":{"model":{"type":"minecraft:model","model":"minecraft:item/guster_banner_pattern"}},"guster_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/guster_pottery_sherd"}},"hanging_roots":{"model":{"type":"minecraft:model","model":"minecraft:item/hanging_roots"}},"happy_ghast_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/happy_ghast_spawn_egg"}},"hay_block":{"model":{"type":"minecraft:model","model":"minecraft:block/hay_block"}},"heart_of_the_sea":{"model":{"type":"minecraft:model","model":"minecraft:item/heart_of_the_sea"}},"heart_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/heart_pottery_sherd"}},"heartbreak_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/heartbreak_pottery_sherd"}},"heavy_core":{"model":{"type":"minecraft:model","model":"minecraft:block/heavy_core"}},"heavy_weighted_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/heavy_weighted_pressure_plate"}},"hoglin_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/hoglin_spawn_egg"}},"honey_block":{"model":{"type":"minecraft:model","model":"minecraft:block/honey_block"}},"honey_bottle":{"model":{"type":"minecraft:model","model":"minecraft:item/honey_bottle"}},"honeycomb":{"model":{"type":"minecraft:model","model":"minecraft:item/honeycomb"}},"honeycomb_block":{"model":{"type":"minecraft:model","model":"minecraft:block/honeycomb_block"}},"hopper":{"model":{"type":"minecraft:model","model":"minecraft:item/hopper"}},"hopper_minecart":{"model":{"type":"minecraft:model","model":"minecraft:item/hopper_minecart"}},"horn_coral":{"model":{"type":"minecraft:model","model":"minecraft:item/horn_coral"}},"horn_coral_block":{"model":{"type":"minecraft:model","model":"minecraft:block/horn_coral_block"}},"horn_coral_fan":{"model":{"type":"minecraft:model","model":"minecraft:item/horn_coral_fan"}},"horse_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/horse_spawn_egg"}},"host_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/host_armor_trim_smithing_template"}},"howl_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/howl_pottery_sherd"}},"husk_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/husk_spawn_egg"}},"ice":{"model":{"type":"minecraft:model","model":"minecraft:block/ice"}},"infested_chiseled_stone_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_stone_bricks"}},"infested_cobblestone":{"model":{"type":"minecraft:model","model":"minecraft:block/cobblestone"}},"infested_cracked_stone_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/cracked_stone_bricks"}},"infested_deepslate":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate"}},"infested_mossy_stone_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/mossy_stone_bricks"}},"infested_stone":{"model":{"type":"minecraft:model","model":"minecraft:block/stone"}},"infested_stone_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/stone_bricks"}},"ink_sac":{"model":{"type":"minecraft:model","model":"minecraft:item/ink_sac"}},"iron_axe":{"model":{"type":"minecraft:model","model":"minecraft:item/iron_axe"}},"iron_bars":{"model":{"type":"minecraft:model","model":"minecraft:item/iron_bars"}},"iron_block":{"model":{"type":"minecraft:model","model":"minecraft:block/iron_block"}},"iron_boots":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/iron_boots_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_boots_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_boots_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_boots_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_boots_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_boots_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_boots_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_boots_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_boots_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_boots_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_boots_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/iron_boots"},"property":"minecraft:trim_material"}},"iron_chestplate":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/iron_chestplate_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_chestplate_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_chestplate_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_chestplate_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_chestplate_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_chestplate_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_chestplate_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_chestplate_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_chestplate_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_chestplate_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_chestplate_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/iron_chestplate"},"property":"minecraft:trim_material"}},"iron_door":{"model":{"type":"minecraft:model","model":"minecraft:item/iron_door"}},"iron_golem_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/iron_golem_spawn_egg"}},"iron_helmet":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/iron_helmet_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_helmet_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_helmet_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_helmet_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_helmet_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_helmet_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_helmet_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_helmet_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_helmet_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_helmet_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_helmet_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/iron_helmet"},"property":"minecraft:trim_material"}},"iron_hoe":{"model":{"type":"minecraft:model","model":"minecraft:item/iron_hoe"}},"iron_horse_armor":{"model":{"type":"minecraft:model","model":"minecraft:item/iron_horse_armor"}},"iron_ingot":{"model":{"type":"minecraft:model","model":"minecraft:item/iron_ingot"}},"iron_leggings":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/iron_leggings_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_leggings_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_leggings_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_leggings_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_leggings_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_leggings_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_leggings_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_leggings_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_leggings_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_leggings_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_leggings_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/iron_leggings"},"property":"minecraft:trim_material"}},"iron_nugget":{"model":{"type":"minecraft:model","model":"minecraft:item/iron_nugget"}},"iron_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/iron_ore"}},"iron_pickaxe":{"model":{"type":"minecraft:model","model":"minecraft:item/iron_pickaxe"}},"iron_shovel":{"model":{"type":"minecraft:model","model":"minecraft:item/iron_shovel"}},"iron_sword":{"model":{"type":"minecraft:model","model":"minecraft:item/iron_sword"}},"iron_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/iron_trapdoor_bottom"}},"item_frame":{"model":{"type":"minecraft:model","model":"minecraft:item/item_frame"}},"jack_o_lantern":{"model":{"type":"minecraft:model","model":"minecraft:block/jack_o_lantern"}},"jigsaw":{"model":{"type":"minecraft:model","model":"minecraft:block/jigsaw"}},"jukebox":{"model":{"type":"minecraft:model","model":"minecraft:block/jukebox"}},"jungle_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/jungle_boat"}},"jungle_button":{"model":{"type":"minecraft:model","model":"minecraft:block/jungle_button_inventory"}},"jungle_chest_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/jungle_chest_boat"}},"jungle_door":{"model":{"type":"minecraft:model","model":"minecraft:item/jungle_door"}},"jungle_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/jungle_fence_inventory"}},"jungle_fence_gate":{"model":{"type":"minecraft:model","model":"minecraft:block/jungle_fence_gate"}},"jungle_hanging_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/jungle_hanging_sign"}},"jungle_leaves":{"model":{"type":"minecraft:model","model":"minecraft:block/jungle_leaves","tints":[{"type":"minecraft:constant","value":-12012264}]}},"jungle_log":{"model":{"type":"minecraft:model","model":"minecraft:block/jungle_log"}},"jungle_planks":{"model":{"type":"minecraft:model","model":"minecraft:block/jungle_planks"}},"jungle_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/jungle_pressure_plate"}},"jungle_sapling":{"model":{"type":"minecraft:model","model":"minecraft:item/jungle_sapling"}},"jungle_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/jungle_sign"}},"jungle_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/jungle_slab"}},"jungle_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/jungle_stairs"}},"jungle_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/jungle_trapdoor_bottom"}},"jungle_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/jungle_wood"}},"kelp":{"model":{"type":"minecraft:model","model":"minecraft:item/kelp"}},"knowledge_book":{"model":{"type":"minecraft:model","model":"minecraft:item/knowledge_book"}},"ladder":{"model":{"type":"minecraft:model","model":"minecraft:item/ladder"}},"lantern":{"model":{"type":"minecraft:model","model":"minecraft:item/lantern"}},"lapis_block":{"model":{"type":"minecraft:model","model":"minecraft:block/lapis_block"}},"lapis_lazuli":{"model":{"type":"minecraft:model","model":"minecraft:item/lapis_lazuli"}},"lapis_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/lapis_ore"}},"large_amethyst_bud":{"model":{"type":"minecraft:model","model":"minecraft:item/large_amethyst_bud"}},"large_fern":{"model":{"type":"minecraft:model","model":"minecraft:item/large_fern","tints":[{"type":"minecraft:grass","downfall":1.0,"temperature":0.5}]}},"lava_bucket":{"model":{"type":"minecraft:model","model":"minecraft:item/lava_bucket"}},"lead":{"model":{"type":"minecraft:model","model":"minecraft:item/lead"}},"leaf_litter":{"model":{"type":"minecraft:model","model":"minecraft:item/leaf_litter"}},"leather":{"model":{"type":"minecraft:model","model":"minecraft:item/leather"}},"leather_boots":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/leather_boots_quartz_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_boots_iron_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_boots_netherite_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_boots_redstone_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_boots_copper_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_boots_gold_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_boots_emerald_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_boots_diamond_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_boots_lapis_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_boots_amethyst_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_boots_resin_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/leather_boots","tints":[{"type":"minecraft:dye","default":-6265536}]},"property":"minecraft:trim_material"}},"leather_chestplate":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/leather_chestplate_quartz_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_chestplate_iron_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_chestplate_netherite_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_chestplate_redstone_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_chestplate_copper_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_chestplate_gold_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_chestplate_emerald_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_chestplate_diamond_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_chestplate_lapis_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_chestplate_amethyst_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_chestplate_resin_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/leather_chestplate","tints":[{"type":"minecraft:dye","default":-6265536}]},"property":"minecraft:trim_material"}},"leather_helmet":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/leather_helmet_quartz_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_helmet_iron_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_helmet_netherite_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_helmet_redstone_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_helmet_copper_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_helmet_gold_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_helmet_emerald_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_helmet_diamond_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_helmet_lapis_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_helmet_amethyst_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_helmet_resin_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/leather_helmet","tints":[{"type":"minecraft:dye","default":-6265536}]},"property":"minecraft:trim_material"}},"leather_horse_armor":{"model":{"type":"minecraft:model","model":"minecraft:item/leather_horse_armor","tints":[{"type":"minecraft:dye","default":-6265536}]}},"leather_leggings":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/leather_leggings_quartz_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_leggings_iron_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_leggings_netherite_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_leggings_redstone_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_leggings_copper_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_leggings_gold_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_leggings_emerald_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_leggings_diamond_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_leggings_lapis_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_leggings_amethyst_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_leggings_resin_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/leather_leggings","tints":[{"type":"minecraft:dye","default":-6265536}]},"property":"minecraft:trim_material"}},"lectern":{"model":{"type":"minecraft:model","model":"minecraft:block/lectern"}},"lever":{"model":{"type":"minecraft:model","model":"minecraft:item/lever"}},"light":{"model":{"type":"minecraft:select","block_state_property":"level","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/light_00"},"when":"0"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_01"},"when":"1"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_02"},"when":"2"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_03"},"when":"3"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_04"},"when":"4"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_05"},"when":"5"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_06"},"when":"6"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_07"},"when":"7"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_08"},"when":"8"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_09"},"when":"9"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_10"},"when":"10"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_11"},"when":"11"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_12"},"when":"12"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_13"},"when":"13"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_14"},"when":"14"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_15"},"when":"15"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/light"},"property":"minecraft:block_state"}},"light_blue_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"light_blue"}}},"light_blue_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/light_blue_bed","model":{"type":"minecraft:bed","texture":"minecraft:light_blue"}}},"light_blue_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/light_blue_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/light_blue_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/light_blue_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/light_blue_bundle"},"property":"minecraft:display_context"}},"light_blue_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/light_blue_candle"}},"light_blue_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/light_blue_carpet"}},"light_blue_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/light_blue_concrete"}},"light_blue_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/light_blue_concrete_powder"}},"light_blue_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/light_blue_dye"}},"light_blue_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/light_blue_glazed_terracotta"}},"light_blue_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/light_blue_harness"}},"light_blue_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/light_blue_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_light_blue"}}},"light_blue_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/light_blue_stained_glass"}},"light_blue_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/light_blue_stained_glass_pane"}},"light_blue_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/light_blue_terracotta"}},"light_blue_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/light_blue_wool"}},"light_gray_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"light_gray"}}},"light_gray_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/light_gray_bed","model":{"type":"minecraft:bed","texture":"minecraft:light_gray"}}},"light_gray_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/light_gray_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/light_gray_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/light_gray_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/light_gray_bundle"},"property":"minecraft:display_context"}},"light_gray_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/light_gray_candle"}},"light_gray_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/light_gray_carpet"}},"light_gray_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/light_gray_concrete"}},"light_gray_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/light_gray_concrete_powder"}},"light_gray_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/light_gray_dye"}},"light_gray_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/light_gray_glazed_terracotta"}},"light_gray_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/light_gray_harness"}},"light_gray_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/light_gray_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_light_gray"}}},"light_gray_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/light_gray_stained_glass"}},"light_gray_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/light_gray_stained_glass_pane"}},"light_gray_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/light_gray_terracotta"}},"light_gray_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/light_gray_wool"}},"light_weighted_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/light_weighted_pressure_plate"}},"lightning_rod":{"model":{"type":"minecraft:model","model":"minecraft:block/lightning_rod"}},"lilac":{"model":{"type":"minecraft:model","model":"minecraft:item/lilac"}},"lily_of_the_valley":{"model":{"type":"minecraft:model","model":"minecraft:item/lily_of_the_valley"}},"lily_pad":{"model":{"type":"minecraft:model","model":"minecraft:item/lily_pad","tints":[{"type":"minecraft:constant","value":-9321636}]}},"lime_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"lime"}}},"lime_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/lime_bed","model":{"type":"minecraft:bed","texture":"minecraft:lime"}}},"lime_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/lime_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/lime_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/lime_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/lime_bundle"},"property":"minecraft:display_context"}},"lime_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/lime_candle"}},"lime_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/lime_carpet"}},"lime_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/lime_concrete"}},"lime_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/lime_concrete_powder"}},"lime_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/lime_dye"}},"lime_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/lime_glazed_terracotta"}},"lime_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/lime_harness"}},"lime_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/lime_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_lime"}}},"lime_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/lime_stained_glass"}},"lime_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/lime_stained_glass_pane"}},"lime_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/lime_terracotta"}},"lime_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/lime_wool"}},"lingering_potion":{"model":{"type":"minecraft:model","model":"minecraft:item/lingering_potion","tints":[{"type":"minecraft:potion","default":-13083194}]}},"llama_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/llama_spawn_egg"}},"lodestone":{"model":{"type":"minecraft:model","model":"minecraft:block/lodestone"}},"loom":{"model":{"type":"minecraft:model","model":"minecraft:block/loom"}},"mace":{"model":{"type":"minecraft:model","model":"minecraft:item/mace"}},"magenta_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"magenta"}}},"magenta_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/magenta_bed","model":{"type":"minecraft:bed","texture":"minecraft:magenta"}}},"magenta_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/magenta_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/magenta_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/magenta_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/magenta_bundle"},"property":"minecraft:display_context"}},"magenta_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/magenta_candle"}},"magenta_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/magenta_carpet"}},"magenta_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/magenta_concrete"}},"magenta_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/magenta_concrete_powder"}},"magenta_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/magenta_dye"}},"magenta_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/magenta_glazed_terracotta"}},"magenta_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/magenta_harness"}},"magenta_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/magenta_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_magenta"}}},"magenta_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/magenta_stained_glass"}},"magenta_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/magenta_stained_glass_pane"}},"magenta_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/magenta_terracotta"}},"magenta_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/magenta_wool"}},"magma_block":{"model":{"type":"minecraft:model","model":"minecraft:block/magma_block"}},"magma_cream":{"model":{"type":"minecraft:model","model":"minecraft:item/magma_cream"}},"magma_cube_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/magma_cube_spawn_egg"}},"mangrove_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/mangrove_boat"}},"mangrove_button":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_button_inventory"}},"mangrove_chest_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/mangrove_chest_boat"}},"mangrove_door":{"model":{"type":"minecraft:model","model":"minecraft:item/mangrove_door"}},"mangrove_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_fence_inventory"}},"mangrove_fence_gate":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_fence_gate"}},"mangrove_hanging_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/mangrove_hanging_sign"}},"mangrove_leaves":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_leaves","tints":[{"type":"minecraft:constant","value":-7158200}]}},"mangrove_log":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_log"}},"mangrove_planks":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_planks"}},"mangrove_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_pressure_plate"}},"mangrove_propagule":{"model":{"type":"minecraft:model","model":"minecraft:item/mangrove_propagule"}},"mangrove_roots":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_roots"}},"mangrove_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/mangrove_sign"}},"mangrove_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_slab"}},"mangrove_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_stairs"}},"mangrove_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_trapdoor_bottom"}},"mangrove_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_wood"}},"map":{"model":{"type":"minecraft:model","model":"minecraft:item/map"}},"medium_amethyst_bud":{"model":{"type":"minecraft:model","model":"minecraft:item/medium_amethyst_bud"}},"melon":{"model":{"type":"minecraft:model","model":"minecraft:block/melon"}},"melon_seeds":{"model":{"type":"minecraft:model","model":"minecraft:item/melon_seeds"}},"melon_slice":{"model":{"type":"minecraft:model","model":"minecraft:item/melon_slice"}},"milk_bucket":{"model":{"type":"minecraft:model","model":"minecraft:item/milk_bucket"}},"minecart":{"model":{"type":"minecraft:model","model":"minecraft:item/minecart"}},"miner_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/miner_pottery_sherd"}},"mojang_banner_pattern":{"model":{"type":"minecraft:model","model":"minecraft:item/mojang_banner_pattern"}},"mooshroom_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/mooshroom_spawn_egg"}},"moss_block":{"model":{"type":"minecraft:model","model":"minecraft:block/moss_block"}},"moss_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/moss_carpet"}},"mossy_cobblestone":{"model":{"type":"minecraft:model","model":"minecraft:block/mossy_cobblestone"}},"mossy_cobblestone_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/mossy_cobblestone_slab"}},"mossy_cobblestone_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/mossy_cobblestone_stairs"}},"mossy_cobblestone_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/mossy_cobblestone_wall_inventory"}},"mossy_stone_brick_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/mossy_stone_brick_slab"}},"mossy_stone_brick_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/mossy_stone_brick_stairs"}},"mossy_stone_brick_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/mossy_stone_brick_wall_inventory"}},"mossy_stone_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/mossy_stone_bricks"}},"mourner_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/mourner_pottery_sherd"}},"mud":{"model":{"type":"minecraft:model","model":"minecraft:block/mud"}},"mud_brick_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/mud_brick_slab"}},"mud_brick_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/mud_brick_stairs"}},"mud_brick_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/mud_brick_wall_inventory"}},"mud_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/mud_bricks"}},"muddy_mangrove_roots":{"model":{"type":"minecraft:model","model":"minecraft:block/muddy_mangrove_roots"}},"mule_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/mule_spawn_egg"}},"mushroom_stem":{"model":{"type":"minecraft:model","model":"minecraft:block/mushroom_stem_inventory"}},"mushroom_stew":{"model":{"type":"minecraft:model","model":"minecraft:item/mushroom_stew"}},"music_disc_11":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_11"}},"music_disc_13":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_13"}},"music_disc_5":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_5"}},"music_disc_blocks":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_blocks"}},"music_disc_cat":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_cat"}},"music_disc_chirp":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_chirp"}},"music_disc_creator":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_creator"}},"music_disc_creator_music_box":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_creator_music_box"}},"music_disc_far":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_far"}},"music_disc_mall":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_mall"}},"music_disc_mellohi":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_mellohi"}},"music_disc_otherside":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_otherside"}},"music_disc_pigstep":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_pigstep"}},"music_disc_precipice":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_precipice"}},"music_disc_relic":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_relic"}},"music_disc_stal":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_stal"}},"music_disc_strad":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_strad"}},"music_disc_tears":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_tears"}},"music_disc_wait":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_wait"}},"music_disc_ward":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_ward"}},"mutton":{"model":{"type":"minecraft:model","model":"minecraft:item/mutton"}},"mycelium":{"model":{"type":"minecraft:model","model":"minecraft:block/mycelium"}},"name_tag":{"model":{"type":"minecraft:model","model":"minecraft:item/name_tag"}},"nautilus_shell":{"model":{"type":"minecraft:model","model":"minecraft:item/nautilus_shell"}},"nether_brick":{"model":{"type":"minecraft:model","model":"minecraft:item/nether_brick"}},"nether_brick_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/nether_brick_fence_inventory"}},"nether_brick_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/nether_brick_slab"}},"nether_brick_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/nether_brick_stairs"}},"nether_brick_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/nether_brick_wall_inventory"}},"nether_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/nether_bricks"}},"nether_gold_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/nether_gold_ore"}},"nether_quartz_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/nether_quartz_ore"}},"nether_sprouts":{"model":{"type":"minecraft:model","model":"minecraft:item/nether_sprouts"}},"nether_star":{"model":{"type":"minecraft:model","model":"minecraft:item/nether_star"}},"nether_wart":{"model":{"type":"minecraft:model","model":"minecraft:item/nether_wart"}},"nether_wart_block":{"model":{"type":"minecraft:model","model":"minecraft:block/nether_wart_block"}},"netherite_axe":{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_axe"}},"netherite_block":{"model":{"type":"minecraft:model","model":"minecraft:block/netherite_block"}},"netherite_boots":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_boots_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_boots_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_boots_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_boots_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_boots_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_boots_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_boots_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_boots_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_boots_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_boots_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_boots_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/netherite_boots"},"property":"minecraft:trim_material"}},"netherite_chestplate":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_chestplate_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_chestplate_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_chestplate_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_chestplate_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_chestplate_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_chestplate_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_chestplate_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_chestplate_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_chestplate_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_chestplate_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_chestplate_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/netherite_chestplate"},"property":"minecraft:trim_material"}},"netherite_helmet":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_helmet_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_helmet_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_helmet_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_helmet_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_helmet_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_helmet_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_helmet_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_helmet_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_helmet_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_helmet_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_helmet_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/netherite_helmet"},"property":"minecraft:trim_material"}},"netherite_hoe":{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_hoe"}},"netherite_ingot":{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_ingot"}},"netherite_leggings":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_leggings_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_leggings_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_leggings_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_leggings_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_leggings_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_leggings_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_leggings_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_leggings_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_leggings_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_leggings_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_leggings_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/netherite_leggings"},"property":"minecraft:trim_material"}},"netherite_pickaxe":{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_pickaxe"}},"netherite_scrap":{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_scrap"}},"netherite_shovel":{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_shovel"}},"netherite_sword":{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_sword"}},"netherite_upgrade_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_upgrade_smithing_template"}},"netherrack":{"model":{"type":"minecraft:model","model":"minecraft:block/netherrack"}},"note_block":{"model":{"type":"minecraft:model","model":"minecraft:block/note_block"}},"oak_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/oak_boat"}},"oak_button":{"model":{"type":"minecraft:model","model":"minecraft:block/oak_button_inventory"}},"oak_chest_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/oak_chest_boat"}},"oak_door":{"model":{"type":"minecraft:model","model":"minecraft:item/oak_door"}},"oak_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/oak_fence_inventory"}},"oak_fence_gate":{"model":{"type":"minecraft:model","model":"minecraft:block/oak_fence_gate"}},"oak_hanging_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/oak_hanging_sign"}},"oak_leaves":{"model":{"type":"minecraft:model","model":"minecraft:block/oak_leaves","tints":[{"type":"minecraft:constant","value":-12012264}]}},"oak_log":{"model":{"type":"minecraft:model","model":"minecraft:block/oak_log"}},"oak_planks":{"model":{"type":"minecraft:model","model":"minecraft:block/oak_planks"}},"oak_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/oak_pressure_plate"}},"oak_sapling":{"model":{"type":"minecraft:model","model":"minecraft:item/oak_sapling"}},"oak_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/oak_sign"}},"oak_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/oak_slab"}},"oak_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/oak_stairs"}},"oak_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/oak_trapdoor_bottom"}},"oak_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/oak_wood"}},"observer":{"model":{"type":"minecraft:model","model":"minecraft:block/observer"}},"obsidian":{"model":{"type":"minecraft:model","model":"minecraft:block/obsidian"}},"ocelot_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/ocelot_spawn_egg"}},"ochre_froglight":{"model":{"type":"minecraft:model","model":"minecraft:block/ochre_froglight"}},"ominous_bottle":{"model":{"type":"minecraft:model","model":"minecraft:item/ominous_bottle"}},"ominous_trial_key":{"model":{"type":"minecraft:model","model":"minecraft:item/ominous_trial_key"}},"open_eyeblossom":{"model":{"type":"minecraft:model","model":"minecraft:item/open_eyeblossom"}},"orange_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"orange"}}},"orange_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/orange_bed","model":{"type":"minecraft:bed","texture":"minecraft:orange"}}},"orange_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/orange_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/orange_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/orange_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/orange_bundle"},"property":"minecraft:display_context"}},"orange_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/orange_candle"}},"orange_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/orange_carpet"}},"orange_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/orange_concrete"}},"orange_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/orange_concrete_powder"}},"orange_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/orange_dye"}},"orange_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/orange_glazed_terracotta"}},"orange_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/orange_harness"}},"orange_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/orange_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_orange"}}},"orange_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/orange_stained_glass"}},"orange_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/orange_stained_glass_pane"}},"orange_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/orange_terracotta"}},"orange_tulip":{"model":{"type":"minecraft:model","model":"minecraft:item/orange_tulip"}},"orange_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/orange_wool"}},"oxeye_daisy":{"model":{"type":"minecraft:model","model":"minecraft:item/oxeye_daisy"}},"oxidized_chiseled_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_chiseled_copper"}},"oxidized_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_copper"}},"oxidized_copper_bulb":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_copper_bulb"}},"oxidized_copper_door":{"model":{"type":"minecraft:model","model":"minecraft:item/oxidized_copper_door"}},"oxidized_copper_grate":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_copper_grate"}},"oxidized_copper_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_copper_trapdoor_bottom"}},"oxidized_cut_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_cut_copper"}},"oxidized_cut_copper_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_cut_copper_slab"}},"oxidized_cut_copper_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_cut_copper_stairs"}},"packed_ice":{"model":{"type":"minecraft:model","model":"minecraft:block/packed_ice"}},"packed_mud":{"model":{"type":"minecraft:model","model":"minecraft:block/packed_mud"}},"painting":{"model":{"type":"minecraft:model","model":"minecraft:item/painting"}},"pale_hanging_moss":{"model":{"type":"minecraft:model","model":"minecraft:item/pale_hanging_moss"}},"pale_moss_block":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_moss_block"}},"pale_moss_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_moss_carpet"}},"pale_oak_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/pale_oak_boat"}},"pale_oak_button":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_oak_button_inventory"}},"pale_oak_chest_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/pale_oak_chest_boat"}},"pale_oak_door":{"model":{"type":"minecraft:model","model":"minecraft:item/pale_oak_door"}},"pale_oak_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_oak_fence_inventory"}},"pale_oak_fence_gate":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_oak_fence_gate"}},"pale_oak_hanging_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/pale_oak_hanging_sign"}},"pale_oak_leaves":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_oak_leaves"}},"pale_oak_log":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_oak_log"}},"pale_oak_planks":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_oak_planks"}},"pale_oak_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_oak_pressure_plate"}},"pale_oak_sapling":{"model":{"type":"minecraft:model","model":"minecraft:item/pale_oak_sapling"}},"pale_oak_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/pale_oak_sign"}},"pale_oak_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_oak_slab"}},"pale_oak_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_oak_stairs"}},"pale_oak_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_oak_trapdoor_bottom"}},"pale_oak_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_oak_wood"}},"panda_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/panda_spawn_egg"}},"paper":{"model":{"type":"minecraft:model","model":"minecraft:item/paper"}},"parrot_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/parrot_spawn_egg"}},"pearlescent_froglight":{"model":{"type":"minecraft:model","model":"minecraft:block/pearlescent_froglight"}},"peony":{"model":{"type":"minecraft:model","model":"minecraft:item/peony"}},"petrified_oak_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/petrified_oak_slab"}},"phantom_membrane":{"model":{"type":"minecraft:model","model":"minecraft:item/phantom_membrane"}},"phantom_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/phantom_spawn_egg"}},"pig_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/pig_spawn_egg"}},"piglin_banner_pattern":{"model":{"type":"minecraft:model","model":"minecraft:item/piglin_banner_pattern"}},"piglin_brute_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/piglin_brute_spawn_egg"}},"piglin_head":{"model":{"type":"minecraft:special","base":"minecraft:item/template_skull","model":{"type":"minecraft:head","kind":"piglin"}}},"piglin_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/piglin_spawn_egg"}},"pillager_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/pillager_spawn_egg"}},"pink_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"pink"}}},"pink_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/pink_bed","model":{"type":"minecraft:bed","texture":"minecraft:pink"}}},"pink_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/pink_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/pink_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/pink_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/pink_bundle"},"property":"minecraft:display_context"}},"pink_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/pink_candle"}},"pink_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/pink_carpet"}},"pink_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/pink_concrete"}},"pink_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/pink_concrete_powder"}},"pink_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/pink_dye"}},"pink_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/pink_glazed_terracotta"}},"pink_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/pink_harness"}},"pink_petals":{"model":{"type":"minecraft:model","model":"minecraft:item/pink_petals"}},"pink_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/pink_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_pink"}}},"pink_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/pink_stained_glass"}},"pink_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/pink_stained_glass_pane"}},"pink_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/pink_terracotta"}},"pink_tulip":{"model":{"type":"minecraft:model","model":"minecraft:item/pink_tulip"}},"pink_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/pink_wool"}},"piston":{"model":{"type":"minecraft:model","model":"minecraft:block/piston_inventory"}},"pitcher_plant":{"model":{"type":"minecraft:model","model":"minecraft:item/pitcher_plant"}},"pitcher_pod":{"model":{"type":"minecraft:model","model":"minecraft:item/pitcher_pod"}},"player_head":{"model":{"type":"minecraft:special","base":"minecraft:item/template_skull","model":{"type":"minecraft:player_head"}}},"plenty_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/plenty_pottery_sherd"}},"podzol":{"model":{"type":"minecraft:model","model":"minecraft:block/podzol"}},"pointed_dripstone":{"model":{"type":"minecraft:model","model":"minecraft:item/pointed_dripstone"}},"poisonous_potato":{"model":{"type":"minecraft:model","model":"minecraft:item/poisonous_potato"}},"polar_bear_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/polar_bear_spawn_egg"}},"polished_andesite":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_andesite"}},"polished_andesite_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_andesite_slab"}},"polished_andesite_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_andesite_stairs"}},"polished_basalt":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_basalt"}},"polished_blackstone":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_blackstone"}},"polished_blackstone_brick_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_blackstone_brick_slab"}},"polished_blackstone_brick_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_blackstone_brick_stairs"}},"polished_blackstone_brick_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_blackstone_brick_wall_inventory"}},"polished_blackstone_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_blackstone_bricks"}},"polished_blackstone_button":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_blackstone_button_inventory"}},"polished_blackstone_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_blackstone_pressure_plate"}},"polished_blackstone_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_blackstone_slab"}},"polished_blackstone_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_blackstone_stairs"}},"polished_blackstone_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_blackstone_wall_inventory"}},"polished_deepslate":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_deepslate"}},"polished_deepslate_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_deepslate_slab"}},"polished_deepslate_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_deepslate_stairs"}},"polished_deepslate_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_deepslate_wall_inventory"}},"polished_diorite":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_diorite"}},"polished_diorite_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_diorite_slab"}},"polished_diorite_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_diorite_stairs"}},"polished_granite":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_granite"}},"polished_granite_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_granite_slab"}},"polished_granite_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_granite_stairs"}},"polished_tuff":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_tuff"}},"polished_tuff_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_tuff_slab"}},"polished_tuff_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_tuff_stairs"}},"polished_tuff_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_tuff_wall_inventory"}},"popped_chorus_fruit":{"model":{"type":"minecraft:model","model":"minecraft:item/popped_chorus_fruit"}},"poppy":{"model":{"type":"minecraft:model","model":"minecraft:item/poppy"}},"porkchop":{"model":{"type":"minecraft:model","model":"minecraft:item/porkchop"}},"potato":{"model":{"type":"minecraft:model","model":"minecraft:item/potato"}},"potion":{"model":{"type":"minecraft:model","model":"minecraft:item/potion","tints":[{"type":"minecraft:potion","default":-13083194}]}},"powder_snow_bucket":{"model":{"type":"minecraft:model","model":"minecraft:item/powder_snow_bucket"}},"powered_rail":{"model":{"type":"minecraft:model","model":"minecraft:item/powered_rail"}},"prismarine":{"model":{"type":"minecraft:model","model":"minecraft:block/prismarine"}},"prismarine_brick_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/prismarine_brick_slab"}},"prismarine_brick_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/prismarine_brick_stairs"}},"prismarine_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/prismarine_bricks"}},"prismarine_crystals":{"model":{"type":"minecraft:model","model":"minecraft:item/prismarine_crystals"}},"prismarine_shard":{"model":{"type":"minecraft:model","model":"minecraft:item/prismarine_shard"}},"prismarine_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/prismarine_slab"}},"prismarine_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/prismarine_stairs"}},"prismarine_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/prismarine_wall_inventory"}},"prize_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/prize_pottery_sherd"}},"pufferfish":{"model":{"type":"minecraft:model","model":"minecraft:item/pufferfish"}},"pufferfish_bucket":{"model":{"type":"minecraft:model","model":"minecraft:item/pufferfish_bucket"}},"pufferfish_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/pufferfish_spawn_egg"}},"pumpkin":{"model":{"type":"minecraft:model","model":"minecraft:block/pumpkin"}},"pumpkin_pie":{"model":{"type":"minecraft:model","model":"minecraft:item/pumpkin_pie"}},"pumpkin_seeds":{"model":{"type":"minecraft:model","model":"minecraft:item/pumpkin_seeds"}},"purple_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"purple"}}},"purple_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/purple_bed","model":{"type":"minecraft:bed","texture":"minecraft:purple"}}},"purple_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/purple_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/purple_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/purple_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/purple_bundle"},"property":"minecraft:display_context"}},"purple_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/purple_candle"}},"purple_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/purple_carpet"}},"purple_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/purple_concrete"}},"purple_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/purple_concrete_powder"}},"purple_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/purple_dye"}},"purple_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/purple_glazed_terracotta"}},"purple_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/purple_harness"}},"purple_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/purple_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_purple"}}},"purple_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/purple_stained_glass"}},"purple_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/purple_stained_glass_pane"}},"purple_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/purple_terracotta"}},"purple_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/purple_wool"}},"purpur_block":{"model":{"type":"minecraft:model","model":"minecraft:block/purpur_block"}},"purpur_pillar":{"model":{"type":"minecraft:model","model":"minecraft:block/purpur_pillar"}},"purpur_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/purpur_slab"}},"purpur_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/purpur_stairs"}},"quartz":{"model":{"type":"minecraft:model","model":"minecraft:item/quartz"}},"quartz_block":{"model":{"type":"minecraft:model","model":"minecraft:block/quartz_block"}},"quartz_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/quartz_bricks"}},"quartz_pillar":{"model":{"type":"minecraft:model","model":"minecraft:block/quartz_pillar"}},"quartz_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/quartz_slab"}},"quartz_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/quartz_stairs"}},"rabbit":{"model":{"type":"minecraft:model","model":"minecraft:item/rabbit"}},"rabbit_foot":{"model":{"type":"minecraft:model","model":"minecraft:item/rabbit_foot"}},"rabbit_hide":{"model":{"type":"minecraft:model","model":"minecraft:item/rabbit_hide"}},"rabbit_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/rabbit_spawn_egg"}},"rabbit_stew":{"model":{"type":"minecraft:model","model":"minecraft:item/rabbit_stew"}},"rail":{"model":{"type":"minecraft:model","model":"minecraft:item/rail"}},"raiser_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/raiser_armor_trim_smithing_template"}},"ravager_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/ravager_spawn_egg"}},"raw_copper":{"model":{"type":"minecraft:model","model":"minecraft:item/raw_copper"}},"raw_copper_block":{"model":{"type":"minecraft:model","model":"minecraft:block/raw_copper_block"}},"raw_gold":{"model":{"type":"minecraft:model","model":"minecraft:item/raw_gold"}},"raw_gold_block":{"model":{"type":"minecraft:model","model":"minecraft:block/raw_gold_block"}},"raw_iron":{"model":{"type":"minecraft:model","model":"minecraft:item/raw_iron"}},"raw_iron_block":{"model":{"type":"minecraft:model","model":"minecraft:block/raw_iron_block"}},"recovery_compass":{"model":{"type":"minecraft:range_dispatch","entries":[{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_16"},"threshold":0.0},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_17"},"threshold":0.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_18"},"threshold":1.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_19"},"threshold":2.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_20"},"threshold":3.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_21"},"threshold":4.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_22"},"threshold":5.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_23"},"threshold":6.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_24"},"threshold":7.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_25"},"threshold":8.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_26"},"threshold":9.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_27"},"threshold":10.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_28"},"threshold":11.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_29"},"threshold":12.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_30"},"threshold":13.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_31"},"threshold":14.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_00"},"threshold":15.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_01"},"threshold":16.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_02"},"threshold":17.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_03"},"threshold":18.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_04"},"threshold":19.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_05"},"threshold":20.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_06"},"threshold":21.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_07"},"threshold":22.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_08"},"threshold":23.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_09"},"threshold":24.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_10"},"threshold":25.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_11"},"threshold":26.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_12"},"threshold":27.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_13"},"threshold":28.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_14"},"threshold":29.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_15"},"threshold":30.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_16"},"threshold":31.5}],"property":"minecraft:compass","scale":32.0,"target":"recovery"}},"red_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"red"}}},"red_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/red_bed","model":{"type":"minecraft:bed","texture":"minecraft:red"}}},"red_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/red_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/red_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/red_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/red_bundle"},"property":"minecraft:display_context"}},"red_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/red_candle"}},"red_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/red_carpet"}},"red_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/red_concrete"}},"red_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/red_concrete_powder"}},"red_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/red_dye"}},"red_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/red_glazed_terracotta"}},"red_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/red_harness"}},"red_mushroom":{"model":{"type":"minecraft:model","model":"minecraft:item/red_mushroom"}},"red_mushroom_block":{"model":{"type":"minecraft:model","model":"minecraft:block/red_mushroom_block_inventory"}},"red_nether_brick_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/red_nether_brick_slab"}},"red_nether_brick_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/red_nether_brick_stairs"}},"red_nether_brick_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/red_nether_brick_wall_inventory"}},"red_nether_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/red_nether_bricks"}},"red_sand":{"model":{"type":"minecraft:model","model":"minecraft:block/red_sand"}},"red_sandstone":{"model":{"type":"minecraft:model","model":"minecraft:block/red_sandstone"}},"red_sandstone_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/red_sandstone_slab"}},"red_sandstone_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/red_sandstone_stairs"}},"red_sandstone_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/red_sandstone_wall_inventory"}},"red_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/red_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_red"}}},"red_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/red_stained_glass"}},"red_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/red_stained_glass_pane"}},"red_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/red_terracotta"}},"red_tulip":{"model":{"type":"minecraft:model","model":"minecraft:item/red_tulip"}},"red_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/red_wool"}},"redstone":{"model":{"type":"minecraft:model","model":"minecraft:item/redstone"}},"redstone_block":{"model":{"type":"minecraft:model","model":"minecraft:block/redstone_block"}},"redstone_lamp":{"model":{"type":"minecraft:model","model":"minecraft:block/redstone_lamp"}},"redstone_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/redstone_ore"}},"redstone_torch":{"model":{"type":"minecraft:model","model":"minecraft:item/redstone_torch"}},"reinforced_deepslate":{"model":{"type":"minecraft:model","model":"minecraft:block/reinforced_deepslate"}},"repeater":{"model":{"type":"minecraft:model","model":"minecraft:item/repeater"}},"repeating_command_block":{"model":{"type":"minecraft:model","model":"minecraft:block/repeating_command_block"}},"resin_block":{"model":{"type":"minecraft:model","model":"minecraft:block/resin_block"}},"resin_brick":{"model":{"type":"minecraft:model","model":"minecraft:item/resin_brick"}},"resin_brick_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/resin_brick_slab"}},"resin_brick_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/resin_brick_stairs"}},"resin_brick_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/resin_brick_wall_inventory"}},"resin_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/resin_bricks"}},"resin_clump":{"model":{"type":"minecraft:model","model":"minecraft:item/resin_clump"}},"respawn_anchor":{"model":{"type":"minecraft:model","model":"minecraft:block/respawn_anchor_0"}},"rib_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/rib_armor_trim_smithing_template"}},"rooted_dirt":{"model":{"type":"minecraft:model","model":"minecraft:block/rooted_dirt"}},"rose_bush":{"model":{"type":"minecraft:model","model":"minecraft:item/rose_bush"}},"rotten_flesh":{"model":{"type":"minecraft:model","model":"minecraft:item/rotten_flesh"}},"saddle":{"model":{"type":"minecraft:model","model":"minecraft:item/saddle"}},"salmon":{"model":{"type":"minecraft:model","model":"minecraft:item/salmon"}},"salmon_bucket":{"model":{"type":"minecraft:model","model":"minecraft:item/salmon_bucket"}},"salmon_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/salmon_spawn_egg"}},"sand":{"model":{"type":"minecraft:model","model":"minecraft:block/sand"}},"sandstone":{"model":{"type":"minecraft:model","model":"minecraft:block/sandstone"}},"sandstone_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/sandstone_slab"}},"sandstone_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/sandstone_stairs"}},"sandstone_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/sandstone_wall_inventory"}},"scaffolding":{"model":{"type":"minecraft:model","model":"minecraft:block/scaffolding_stable"}},"scrape_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/scrape_pottery_sherd"}},"sculk":{"model":{"type":"minecraft:model","model":"minecraft:block/sculk"}},"sculk_catalyst":{"model":{"type":"minecraft:model","model":"minecraft:block/sculk_catalyst"}},"sculk_sensor":{"model":{"type":"minecraft:model","model":"minecraft:block/sculk_sensor_inactive"}},"sculk_shrieker":{"model":{"type":"minecraft:model","model":"minecraft:block/sculk_shrieker"}},"sculk_vein":{"model":{"type":"minecraft:model","model":"minecraft:item/sculk_vein"}},"sea_lantern":{"model":{"type":"minecraft:model","model":"minecraft:block/sea_lantern"}},"sea_pickle":{"model":{"type":"minecraft:model","model":"minecraft:item/sea_pickle"}},"seagrass":{"model":{"type":"minecraft:model","model":"minecraft:item/seagrass"}},"sentry_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/sentry_armor_trim_smithing_template"}},"shaper_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/shaper_armor_trim_smithing_template"}},"sheaf_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/sheaf_pottery_sherd"}},"shears":{"model":{"type":"minecraft:model","model":"minecraft:item/shears"}},"sheep_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/sheep_spawn_egg"}},"shelter_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/shelter_pottery_sherd"}},"shield":{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:special","base":"minecraft:item/shield","model":{"type":"minecraft:shield"}},"on_true":{"type":"minecraft:special","base":"minecraft:item/shield_blocking","model":{"type":"minecraft:shield"}},"property":"minecraft:using_item"}},"short_dry_grass":{"model":{"type":"minecraft:model","model":"minecraft:item/short_dry_grass"}},"short_grass":{"model":{"type":"minecraft:model","model":"minecraft:item/short_grass","tints":[{"type":"minecraft:grass","downfall":1.0,"temperature":0.5}]}},"shroomlight":{"model":{"type":"minecraft:model","model":"minecraft:block/shroomlight"}},"shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker"}}},"shulker_shell":{"model":{"type":"minecraft:model","model":"minecraft:item/shulker_shell"}},"shulker_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/shulker_spawn_egg"}},"silence_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/silence_armor_trim_smithing_template"}},"silverfish_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/silverfish_spawn_egg"}},"skeleton_horse_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/skeleton_horse_spawn_egg"}},"skeleton_skull":{"model":{"type":"minecraft:special","base":"minecraft:item/template_skull","model":{"type":"minecraft:head","kind":"skeleton"}}},"skeleton_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/skeleton_spawn_egg"}},"skull_banner_pattern":{"model":{"type":"minecraft:model","model":"minecraft:item/skull_banner_pattern"}},"skull_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/skull_pottery_sherd"}},"slime_ball":{"model":{"type":"minecraft:model","model":"minecraft:item/slime_ball"}},"slime_block":{"model":{"type":"minecraft:model","model":"minecraft:block/slime_block"}},"slime_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/slime_spawn_egg"}},"small_amethyst_bud":{"model":{"type":"minecraft:model","model":"minecraft:item/small_amethyst_bud"}},"small_dripleaf":{"model":{"type":"minecraft:model","model":"minecraft:item/small_dripleaf"}},"smithing_table":{"model":{"type":"minecraft:model","model":"minecraft:block/smithing_table"}},"smoker":{"model":{"type":"minecraft:model","model":"minecraft:block/smoker"}},"smooth_basalt":{"model":{"type":"minecraft:model","model":"minecraft:block/smooth_basalt"}},"smooth_quartz":{"model":{"type":"minecraft:model","model":"minecraft:block/smooth_quartz"}},"smooth_quartz_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/smooth_quartz_slab"}},"smooth_quartz_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/smooth_quartz_stairs"}},"smooth_red_sandstone":{"model":{"type":"minecraft:model","model":"minecraft:block/smooth_red_sandstone"}},"smooth_red_sandstone_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/smooth_red_sandstone_slab"}},"smooth_red_sandstone_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/smooth_red_sandstone_stairs"}},"smooth_sandstone":{"model":{"type":"minecraft:model","model":"minecraft:block/smooth_sandstone"}},"smooth_sandstone_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/smooth_sandstone_slab"}},"smooth_sandstone_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/smooth_sandstone_stairs"}},"smooth_stone":{"model":{"type":"minecraft:model","model":"minecraft:block/smooth_stone"}},"smooth_stone_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/smooth_stone_slab"}},"sniffer_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/sniffer_egg"}},"sniffer_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/sniffer_spawn_egg"}},"snort_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/snort_pottery_sherd"}},"snout_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/snout_armor_trim_smithing_template"}},"snow":{"model":{"type":"minecraft:model","model":"minecraft:block/snow_height2"}},"snow_block":{"model":{"type":"minecraft:model","model":"minecraft:block/snow_block"}},"snow_golem_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/snow_golem_spawn_egg"}},"snowball":{"model":{"type":"minecraft:model","model":"minecraft:item/snowball"}},"soul_campfire":{"model":{"type":"minecraft:model","model":"minecraft:item/soul_campfire"}},"soul_lantern":{"model":{"type":"minecraft:model","model":"minecraft:item/soul_lantern"}},"soul_sand":{"model":{"type":"minecraft:model","model":"minecraft:block/soul_sand"}},"soul_soil":{"model":{"type":"minecraft:model","model":"minecraft:block/soul_soil"}},"soul_torch":{"model":{"type":"minecraft:model","model":"minecraft:item/soul_torch"}},"spawner":{"model":{"type":"minecraft:model","model":"minecraft:block/spawner"}},"spectral_arrow":{"model":{"type":"minecraft:model","model":"minecraft:item/spectral_arrow"}},"spider_eye":{"model":{"type":"minecraft:model","model":"minecraft:item/spider_eye"}},"spider_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/spider_spawn_egg"}},"spire_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/spire_armor_trim_smithing_template"}},"splash_potion":{"model":{"type":"minecraft:model","model":"minecraft:item/splash_potion","tints":[{"type":"minecraft:potion","default":-13083194}]}},"sponge":{"model":{"type":"minecraft:model","model":"minecraft:block/sponge"}},"spore_blossom":{"model":{"type":"minecraft:model","model":"minecraft:block/spore_blossom"}},"spruce_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/spruce_boat"}},"spruce_button":{"model":{"type":"minecraft:model","model":"minecraft:block/spruce_button_inventory"}},"spruce_chest_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/spruce_chest_boat"}},"spruce_door":{"model":{"type":"minecraft:model","model":"minecraft:item/spruce_door"}},"spruce_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/spruce_fence_inventory"}},"spruce_fence_gate":{"model":{"type":"minecraft:model","model":"minecraft:block/spruce_fence_gate"}},"spruce_hanging_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/spruce_hanging_sign"}},"spruce_leaves":{"model":{"type":"minecraft:model","model":"minecraft:block/spruce_leaves","tints":[{"type":"minecraft:constant","value":-10380959}]}},"spruce_log":{"model":{"type":"minecraft:model","model":"minecraft:block/spruce_log"}},"spruce_planks":{"model":{"type":"minecraft:model","model":"minecraft:block/spruce_planks"}},"spruce_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/spruce_pressure_plate"}},"spruce_sapling":{"model":{"type":"minecraft:model","model":"minecraft:item/spruce_sapling"}},"spruce_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/spruce_sign"}},"spruce_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/spruce_slab"}},"spruce_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/spruce_stairs"}},"spruce_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/spruce_trapdoor_bottom"}},"spruce_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/spruce_wood"}},"spyglass":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/spyglass"},"when":["gui","ground","fixed"]}],"fallback":{"type":"minecraft:model","model":"minecraft:item/spyglass_in_hand"},"property":"minecraft:display_context"}},"squid_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/squid_spawn_egg"}},"stick":{"model":{"type":"minecraft:model","model":"minecraft:item/stick"}},"sticky_piston":{"model":{"type":"minecraft:model","model":"minecraft:block/sticky_piston_inventory"}},"stone":{"model":{"type":"minecraft:model","model":"minecraft:block/stone"}},"stone_axe":{"model":{"type":"minecraft:model","model":"minecraft:item/stone_axe"}},"stone_brick_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/stone_brick_slab"}},"stone_brick_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/stone_brick_stairs"}},"stone_brick_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/stone_brick_wall_inventory"}},"stone_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/stone_bricks"}},"stone_button":{"model":{"type":"minecraft:model","model":"minecraft:block/stone_button_inventory"}},"stone_hoe":{"model":{"type":"minecraft:model","model":"minecraft:item/stone_hoe"}},"stone_pickaxe":{"model":{"type":"minecraft:model","model":"minecraft:item/stone_pickaxe"}},"stone_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/stone_pressure_plate"}},"stone_shovel":{"model":{"type":"minecraft:model","model":"minecraft:item/stone_shovel"}},"stone_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/stone_slab"}},"stone_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/stone_stairs"}},"stone_sword":{"model":{"type":"minecraft:model","model":"minecraft:item/stone_sword"}},"stonecutter":{"model":{"type":"minecraft:model","model":"minecraft:block/stonecutter"}},"stray_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/stray_spawn_egg"}},"strider_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/strider_spawn_egg"}},"string":{"model":{"type":"minecraft:model","model":"minecraft:item/string"}},"stripped_acacia_log":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_acacia_log"}},"stripped_acacia_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_acacia_wood"}},"stripped_bamboo_block":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_bamboo_block"}},"stripped_birch_log":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_birch_log"}},"stripped_birch_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_birch_wood"}},"stripped_cherry_log":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_cherry_log"}},"stripped_cherry_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_cherry_wood"}},"stripped_crimson_hyphae":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_crimson_hyphae"}},"stripped_crimson_stem":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_crimson_stem"}},"stripped_dark_oak_log":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_dark_oak_log"}},"stripped_dark_oak_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_dark_oak_wood"}},"stripped_jungle_log":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_jungle_log"}},"stripped_jungle_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_jungle_wood"}},"stripped_mangrove_log":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_mangrove_log"}},"stripped_mangrove_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_mangrove_wood"}},"stripped_oak_log":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_oak_log"}},"stripped_oak_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_oak_wood"}},"stripped_pale_oak_log":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_pale_oak_log"}},"stripped_pale_oak_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_pale_oak_wood"}},"stripped_spruce_log":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_spruce_log"}},"stripped_spruce_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_spruce_wood"}},"stripped_warped_hyphae":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_warped_hyphae"}},"stripped_warped_stem":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_warped_stem"}},"structure_block":{"model":{"type":"minecraft:model","model":"minecraft:block/structure_block"}},"structure_void":{"model":{"type":"minecraft:model","model":"minecraft:item/structure_void"}},"sugar":{"model":{"type":"minecraft:model","model":"minecraft:item/sugar"}},"sugar_cane":{"model":{"type":"minecraft:model","model":"minecraft:item/sugar_cane"}},"sunflower":{"model":{"type":"minecraft:model","model":"minecraft:item/sunflower"}},"suspicious_gravel":{"model":{"type":"minecraft:model","model":"minecraft:block/suspicious_gravel_0"}},"suspicious_sand":{"model":{"type":"minecraft:model","model":"minecraft:block/suspicious_sand_0"}},"suspicious_stew":{"model":{"type":"minecraft:model","model":"minecraft:item/suspicious_stew"}},"sweet_berries":{"model":{"type":"minecraft:model","model":"minecraft:item/sweet_berries"}},"tadpole_bucket":{"model":{"type":"minecraft:model","model":"minecraft:item/tadpole_bucket"}},"tadpole_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/tadpole_spawn_egg"}},"tall_dry_grass":{"model":{"type":"minecraft:model","model":"minecraft:item/tall_dry_grass"}},"tall_grass":{"model":{"type":"minecraft:model","model":"minecraft:item/tall_grass","tints":[{"type":"minecraft:grass","downfall":1.0,"temperature":0.5}]}},"target":{"model":{"type":"minecraft:model","model":"minecraft:block/target"}},"terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/terracotta"}},"test_block":{"model":{"type":"minecraft:select","block_state_property":"mode","cases":[{"model":{"type":"minecraft:model","model":"minecraft:block/test_block_log"},"when":"log"},{"model":{"type":"minecraft:model","model":"minecraft:block/test_block_fail"},"when":"fail"},{"model":{"type":"minecraft:model","model":"minecraft:block/test_block_accept"},"when":"accept"}],"fallback":{"type":"minecraft:model","model":"minecraft:block/test_block_start"},"property":"minecraft:block_state"}},"test_instance_block":{"model":{"type":"minecraft:model","model":"minecraft:block/test_instance_block"}},"tide_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/tide_armor_trim_smithing_template"}},"tinted_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/tinted_glass"}},"tipped_arrow":{"model":{"type":"minecraft:model","model":"minecraft:item/tipped_arrow","tints":[{"type":"minecraft:potion","default":-13083194}]}},"tnt":{"model":{"type":"minecraft:model","model":"minecraft:block/tnt"}},"tnt_minecart":{"model":{"type":"minecraft:model","model":"minecraft:item/tnt_minecart"}},"torch":{"model":{"type":"minecraft:model","model":"minecraft:item/torch"}},"torchflower":{"model":{"type":"minecraft:model","model":"minecraft:item/torchflower"}},"torchflower_seeds":{"model":{"type":"minecraft:model","model":"minecraft:item/torchflower_seeds"}},"totem_of_undying":{"model":{"type":"minecraft:model","model":"minecraft:item/totem_of_undying"}},"trader_llama_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/trader_llama_spawn_egg"}},"trapped_chest":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:special","base":"minecraft:item/trapped_chest","model":{"type":"minecraft:chest","texture":"minecraft:christmas"}},"when":["12-24","12-25","12-26"]}],"fallback":{"type":"minecraft:special","base":"minecraft:item/trapped_chest","model":{"type":"minecraft:chest","texture":"minecraft:trapped"}},"pattern":"MM-dd","property":"minecraft:local_time"}},"trial_key":{"model":{"type":"minecraft:model","model":"minecraft:item/trial_key"}},"trial_spawner":{"model":{"type":"minecraft:model","model":"minecraft:block/trial_spawner"}},"trident":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/trident"},"when":["gui","ground","fixed"]}],"fallback":{"type":"minecraft:condition","on_false":{"type":"minecraft:special","base":"minecraft:item/trident_in_hand","model":{"type":"minecraft:trident"}},"on_true":{"type":"minecraft:special","base":"minecraft:item/trident_throwing","model":{"type":"minecraft:trident"}},"property":"minecraft:using_item"},"property":"minecraft:display_context"}},"tripwire_hook":{"model":{"type":"minecraft:model","model":"minecraft:item/tripwire_hook"}},"tropical_fish":{"model":{"type":"minecraft:model","model":"minecraft:item/tropical_fish"}},"tropical_fish_bucket":{"model":{"type":"minecraft:model","model":"minecraft:item/tropical_fish_bucket"}},"tropical_fish_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/tropical_fish_spawn_egg"}},"tube_coral":{"model":{"type":"minecraft:model","model":"minecraft:item/tube_coral"}},"tube_coral_block":{"model":{"type":"minecraft:model","model":"minecraft:block/tube_coral_block"}},"tube_coral_fan":{"model":{"type":"minecraft:model","model":"minecraft:item/tube_coral_fan"}},"tuff":{"model":{"type":"minecraft:model","model":"minecraft:block/tuff"}},"tuff_brick_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/tuff_brick_slab"}},"tuff_brick_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/tuff_brick_stairs"}},"tuff_brick_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/tuff_brick_wall_inventory"}},"tuff_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/tuff_bricks"}},"tuff_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/tuff_slab"}},"tuff_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/tuff_stairs"}},"tuff_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/tuff_wall_inventory"}},"turtle_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_egg"}},"turtle_helmet":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_helmet_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_helmet_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_helmet_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_helmet_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_helmet_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_helmet_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_helmet_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_helmet_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_helmet_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_helmet_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_helmet_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/turtle_helmet"},"property":"minecraft:trim_material"}},"turtle_scute":{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_scute"}},"turtle_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_spawn_egg"}},"twisting_vines":{"model":{"type":"minecraft:model","model":"minecraft:item/twisting_vines"}},"vault":{"model":{"type":"minecraft:model","model":"minecraft:block/vault"}},"verdant_froglight":{"model":{"type":"minecraft:model","model":"minecraft:block/verdant_froglight"}},"vex_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/vex_armor_trim_smithing_template"}},"vex_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/vex_spawn_egg"}},"villager_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/villager_spawn_egg"}},"vindicator_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/vindicator_spawn_egg"}},"vine":{"model":{"type":"minecraft:model","model":"minecraft:item/vine","tints":[{"type":"minecraft:constant","value":-12012264}]}},"wandering_trader_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/wandering_trader_spawn_egg"}},"ward_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/ward_armor_trim_smithing_template"}},"warden_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/warden_spawn_egg"}},"warped_button":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_button_inventory"}},"warped_door":{"model":{"type":"minecraft:model","model":"minecraft:item/warped_door"}},"warped_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_fence_inventory"}},"warped_fence_gate":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_fence_gate"}},"warped_fungus":{"model":{"type":"minecraft:model","model":"minecraft:item/warped_fungus"}},"warped_fungus_on_a_stick":{"model":{"type":"minecraft:model","model":"minecraft:item/warped_fungus_on_a_stick"}},"warped_hanging_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/warped_hanging_sign"}},"warped_hyphae":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_hyphae"}},"warped_nylium":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_nylium"}},"warped_planks":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_planks"}},"warped_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_pressure_plate"}},"warped_roots":{"model":{"type":"minecraft:model","model":"minecraft:item/warped_roots"}},"warped_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/warped_sign"}},"warped_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_slab"}},"warped_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_stairs"}},"warped_stem":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_stem"}},"warped_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_trapdoor_bottom"}},"warped_wart_block":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_wart_block"}},"water_bucket":{"model":{"type":"minecraft:model","model":"minecraft:item/water_bucket"}},"waxed_chiseled_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_copper"}},"waxed_copper_block":{"model":{"type":"minecraft:model","model":"minecraft:block/copper_block"}},"waxed_copper_bulb":{"model":{"type":"minecraft:model","model":"minecraft:block/copper_bulb"}},"waxed_copper_door":{"model":{"type":"minecraft:model","model":"minecraft:item/copper_door"}},"waxed_copper_grate":{"model":{"type":"minecraft:model","model":"minecraft:block/copper_grate"}},"waxed_copper_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/copper_trapdoor_bottom"}},"waxed_cut_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/cut_copper"}},"waxed_cut_copper_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/cut_copper_slab"}},"waxed_cut_copper_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/cut_copper_stairs"}},"waxed_exposed_chiseled_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_chiseled_copper"}},"waxed_exposed_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_copper"}},"waxed_exposed_copper_bulb":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_copper_bulb"}},"waxed_exposed_copper_door":{"model":{"type":"minecraft:model","model":"minecraft:item/exposed_copper_door"}},"waxed_exposed_copper_grate":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_copper_grate"}},"waxed_exposed_copper_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_copper_trapdoor_bottom"}},"waxed_exposed_cut_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_cut_copper"}},"waxed_exposed_cut_copper_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_cut_copper_slab"}},"waxed_exposed_cut_copper_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_cut_copper_stairs"}},"waxed_oxidized_chiseled_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_chiseled_copper"}},"waxed_oxidized_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_copper"}},"waxed_oxidized_copper_bulb":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_copper_bulb"}},"waxed_oxidized_copper_door":{"model":{"type":"minecraft:model","model":"minecraft:item/oxidized_copper_door"}},"waxed_oxidized_copper_grate":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_copper_grate"}},"waxed_oxidized_copper_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_copper_trapdoor_bottom"}},"waxed_oxidized_cut_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_cut_copper"}},"waxed_oxidized_cut_copper_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_cut_copper_slab"}},"waxed_oxidized_cut_copper_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_cut_copper_stairs"}},"waxed_weathered_chiseled_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_chiseled_copper"}},"waxed_weathered_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_copper"}},"waxed_weathered_copper_bulb":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_copper_bulb"}},"waxed_weathered_copper_door":{"model":{"type":"minecraft:model","model":"minecraft:item/weathered_copper_door"}},"waxed_weathered_copper_grate":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_copper_grate"}},"waxed_weathered_copper_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_copper_trapdoor_bottom"}},"waxed_weathered_cut_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_cut_copper"}},"waxed_weathered_cut_copper_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_cut_copper_slab"}},"waxed_weathered_cut_copper_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_cut_copper_stairs"}},"wayfinder_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/wayfinder_armor_trim_smithing_template"}},"weathered_chiseled_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_chiseled_copper"}},"weathered_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_copper"}},"weathered_copper_bulb":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_copper_bulb"}},"weathered_copper_door":{"model":{"type":"minecraft:model","model":"minecraft:item/weathered_copper_door"}},"weathered_copper_grate":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_copper_grate"}},"weathered_copper_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_copper_trapdoor_bottom"}},"weathered_cut_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_cut_copper"}},"weathered_cut_copper_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_cut_copper_slab"}},"weathered_cut_copper_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_cut_copper_stairs"}},"weeping_vines":{"model":{"type":"minecraft:model","model":"minecraft:item/weeping_vines"}},"wet_sponge":{"model":{"type":"minecraft:model","model":"minecraft:block/wet_sponge"}},"wheat":{"model":{"type":"minecraft:model","model":"minecraft:item/wheat"}},"wheat_seeds":{"model":{"type":"minecraft:model","model":"minecraft:item/wheat_seeds"}},"white_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"white"}}},"white_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/white_bed","model":{"type":"minecraft:bed","texture":"minecraft:white"}}},"white_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/white_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/white_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/white_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/white_bundle"},"property":"minecraft:display_context"}},"white_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/white_candle"}},"white_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/white_carpet"}},"white_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/white_concrete"}},"white_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/white_concrete_powder"}},"white_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/white_dye"}},"white_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/white_glazed_terracotta"}},"white_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/white_harness"}},"white_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/white_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_white"}}},"white_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/white_stained_glass"}},"white_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/white_stained_glass_pane"}},"white_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/white_terracotta"}},"white_tulip":{"model":{"type":"minecraft:model","model":"minecraft:item/white_tulip"}},"white_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/white_wool"}},"wild_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/wild_armor_trim_smithing_template"}},"wildflowers":{"model":{"type":"minecraft:model","model":"minecraft:item/wildflowers"}},"wind_charge":{"model":{"type":"minecraft:model","model":"minecraft:item/wind_charge"}},"witch_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/witch_spawn_egg"}},"wither_rose":{"model":{"type":"minecraft:model","model":"minecraft:item/wither_rose"}},"wither_skeleton_skull":{"model":{"type":"minecraft:special","base":"minecraft:item/template_skull","model":{"type":"minecraft:head","kind":"wither_skeleton"}}},"wither_skeleton_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/wither_skeleton_spawn_egg"}},"wither_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/wither_spawn_egg"}},"wolf_armor":{"model":{"type":"minecraft:condition","component":"minecraft:dyed_color","on_false":{"type":"minecraft:model","model":"minecraft:item/wolf_armor"},"on_true":{"type":"minecraft:model","model":"minecraft:item/wolf_armor_dyed","tints":[{"type":"minecraft:constant","value":-1},{"type":"minecraft:dye","default":0}]},"property":"minecraft:has_component"}},"wolf_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/wolf_spawn_egg"}},"wooden_axe":{"model":{"type":"minecraft:model","model":"minecraft:item/wooden_axe"}},"wooden_hoe":{"model":{"type":"minecraft:model","model":"minecraft:item/wooden_hoe"}},"wooden_pickaxe":{"model":{"type":"minecraft:model","model":"minecraft:item/wooden_pickaxe"}},"wooden_shovel":{"model":{"type":"minecraft:model","model":"minecraft:item/wooden_shovel"}},"wooden_sword":{"model":{"type":"minecraft:model","model":"minecraft:item/wooden_sword"}},"writable_book":{"model":{"type":"minecraft:model","model":"minecraft:item/writable_book"}},"written_book":{"model":{"type":"minecraft:model","model":"minecraft:item/written_book"}},"yellow_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"yellow"}}},"yellow_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/yellow_bed","model":{"type":"minecraft:bed","texture":"minecraft:yellow"}}},"yellow_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/yellow_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/yellow_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/yellow_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/yellow_bundle"},"property":"minecraft:display_context"}},"yellow_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/yellow_candle"}},"yellow_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/yellow_carpet"}},"yellow_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/yellow_concrete"}},"yellow_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/yellow_concrete_powder"}},"yellow_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/yellow_dye"}},"yellow_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/yellow_glazed_terracotta"}},"yellow_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/yellow_harness"}},"yellow_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/yellow_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_yellow"}}},"yellow_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/yellow_stained_glass"}},"yellow_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/yellow_stained_glass_pane"}},"yellow_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/yellow_terracotta"}},"yellow_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/yellow_wool"}},"zoglin_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/zoglin_spawn_egg"}},"zombie_head":{"model":{"type":"minecraft:special","base":"minecraft:item/template_skull","model":{"type":"minecraft:head","kind":"zombie"}}},"zombie_horse_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/zombie_horse_spawn_egg"}},"zombie_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/zombie_spawn_egg"}},"zombie_villager_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/zombie_villager_spawn_egg"}},"zombified_piglin_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/zombified_piglin_spawn_egg"}}} \ No newline at end of file +{"acacia_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/acacia_boat"}},"acacia_button":{"model":{"type":"minecraft:model","model":"minecraft:block/acacia_button_inventory"}},"acacia_chest_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/acacia_chest_boat"}},"acacia_door":{"model":{"type":"minecraft:model","model":"minecraft:item/acacia_door"}},"acacia_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/acacia_fence_inventory"}},"acacia_fence_gate":{"model":{"type":"minecraft:model","model":"minecraft:block/acacia_fence_gate"}},"acacia_hanging_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/acacia_hanging_sign"}},"acacia_leaves":{"model":{"type":"minecraft:model","model":"minecraft:block/acacia_leaves","tints":[{"type":"minecraft:constant","value":-12012264}]}},"acacia_log":{"model":{"type":"minecraft:model","model":"minecraft:block/acacia_log"}},"acacia_planks":{"model":{"type":"minecraft:model","model":"minecraft:block/acacia_planks"}},"acacia_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/acacia_pressure_plate"}},"acacia_sapling":{"model":{"type":"minecraft:model","model":"minecraft:item/acacia_sapling"}},"acacia_shelf":{"model":{"type":"minecraft:model","model":"minecraft:block/acacia_shelf_inventory"}},"acacia_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/acacia_sign"}},"acacia_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/acacia_slab"}},"acacia_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/acacia_stairs"}},"acacia_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/acacia_trapdoor_bottom"}},"acacia_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/acacia_wood"}},"activator_rail":{"model":{"type":"minecraft:model","model":"minecraft:item/activator_rail"}},"air":{"model":{"type":"minecraft:model","model":"minecraft:item/air"}},"allay_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/allay_spawn_egg"}},"allium":{"model":{"type":"minecraft:model","model":"minecraft:item/allium"}},"amethyst_block":{"model":{"type":"minecraft:model","model":"minecraft:block/amethyst_block"}},"amethyst_cluster":{"model":{"type":"minecraft:model","model":"minecraft:item/amethyst_cluster"}},"amethyst_shard":{"model":{"type":"minecraft:model","model":"minecraft:item/amethyst_shard"}},"ancient_debris":{"model":{"type":"minecraft:model","model":"minecraft:block/ancient_debris"}},"andesite":{"model":{"type":"minecraft:model","model":"minecraft:block/andesite"}},"andesite_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/andesite_slab"}},"andesite_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/andesite_stairs"}},"andesite_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/andesite_wall_inventory"}},"angler_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/angler_pottery_sherd"}},"anvil":{"model":{"type":"minecraft:model","model":"minecraft:block/anvil"}},"apple":{"model":{"type":"minecraft:model","model":"minecraft:item/apple"}},"archer_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/archer_pottery_sherd"}},"armadillo_scute":{"model":{"type":"minecraft:model","model":"minecraft:item/armadillo_scute"}},"armadillo_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/armadillo_spawn_egg"}},"armor_stand":{"model":{"type":"minecraft:model","model":"minecraft:item/armor_stand"}},"arms_up_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/arms_up_pottery_sherd"}},"arrow":{"model":{"type":"minecraft:model","model":"minecraft:item/arrow"}},"axolotl_bucket":{"model":{"type":"minecraft:model","model":"minecraft:item/axolotl_bucket"}},"axolotl_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/axolotl_spawn_egg"}},"azalea":{"model":{"type":"minecraft:model","model":"minecraft:block/azalea"}},"azalea_leaves":{"model":{"type":"minecraft:model","model":"minecraft:block/azalea_leaves"}},"azure_bluet":{"model":{"type":"minecraft:model","model":"minecraft:item/azure_bluet"}},"baked_potato":{"model":{"type":"minecraft:model","model":"minecraft:item/baked_potato"}},"bamboo":{"model":{"type":"minecraft:model","model":"minecraft:item/bamboo"}},"bamboo_block":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_block"}},"bamboo_button":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_button_inventory"}},"bamboo_chest_raft":{"model":{"type":"minecraft:model","model":"minecraft:item/bamboo_chest_raft"}},"bamboo_door":{"model":{"type":"minecraft:model","model":"minecraft:item/bamboo_door"}},"bamboo_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_fence_inventory"}},"bamboo_fence_gate":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_fence_gate"}},"bamboo_hanging_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/bamboo_hanging_sign"}},"bamboo_mosaic":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_mosaic"}},"bamboo_mosaic_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_mosaic_slab"}},"bamboo_mosaic_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_mosaic_stairs"}},"bamboo_planks":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_planks"}},"bamboo_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_pressure_plate"}},"bamboo_raft":{"model":{"type":"minecraft:model","model":"minecraft:item/bamboo_raft"}},"bamboo_shelf":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_shelf_inventory"}},"bamboo_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/bamboo_sign"}},"bamboo_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_slab"}},"bamboo_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_stairs"}},"bamboo_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/bamboo_trapdoor_bottom"}},"barrel":{"model":{"type":"minecraft:model","model":"minecraft:block/barrel"}},"barrier":{"model":{"type":"minecraft:model","model":"minecraft:item/barrier"}},"basalt":{"model":{"type":"minecraft:model","model":"minecraft:block/basalt"}},"bat_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/bat_spawn_egg"}},"beacon":{"model":{"type":"minecraft:model","model":"minecraft:block/beacon"}},"bedrock":{"model":{"type":"minecraft:model","model":"minecraft:block/bedrock"}},"bee_nest":{"model":{"type":"minecraft:select","block_state_property":"honey_level","cases":[{"model":{"type":"minecraft:model","model":"minecraft:block/bee_nest_honey"},"when":"5"}],"fallback":{"type":"minecraft:model","model":"minecraft:block/bee_nest_empty"},"property":"minecraft:block_state"}},"bee_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/bee_spawn_egg"}},"beef":{"model":{"type":"minecraft:model","model":"minecraft:item/beef"}},"beehive":{"model":{"type":"minecraft:select","block_state_property":"honey_level","cases":[{"model":{"type":"minecraft:model","model":"minecraft:block/beehive_honey"},"when":"5"}],"fallback":{"type":"minecraft:model","model":"minecraft:block/beehive_empty"},"property":"minecraft:block_state"}},"beetroot":{"model":{"type":"minecraft:model","model":"minecraft:item/beetroot"}},"beetroot_seeds":{"model":{"type":"minecraft:model","model":"minecraft:item/beetroot_seeds"}},"beetroot_soup":{"model":{"type":"minecraft:model","model":"minecraft:item/beetroot_soup"}},"bell":{"model":{"type":"minecraft:model","model":"minecraft:item/bell"}},"big_dripleaf":{"model":{"type":"minecraft:model","model":"minecraft:item/big_dripleaf"}},"birch_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/birch_boat"}},"birch_button":{"model":{"type":"minecraft:model","model":"minecraft:block/birch_button_inventory"}},"birch_chest_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/birch_chest_boat"}},"birch_door":{"model":{"type":"minecraft:model","model":"minecraft:item/birch_door"}},"birch_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/birch_fence_inventory"}},"birch_fence_gate":{"model":{"type":"minecraft:model","model":"minecraft:block/birch_fence_gate"}},"birch_hanging_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/birch_hanging_sign"}},"birch_leaves":{"model":{"type":"minecraft:model","model":"minecraft:block/birch_leaves","tints":[{"type":"minecraft:constant","value":-8345771}]}},"birch_log":{"model":{"type":"minecraft:model","model":"minecraft:block/birch_log"}},"birch_planks":{"model":{"type":"minecraft:model","model":"minecraft:block/birch_planks"}},"birch_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/birch_pressure_plate"}},"birch_sapling":{"model":{"type":"minecraft:model","model":"minecraft:item/birch_sapling"}},"birch_shelf":{"model":{"type":"minecraft:model","model":"minecraft:block/birch_shelf_inventory"}},"birch_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/birch_sign"}},"birch_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/birch_slab"}},"birch_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/birch_stairs"}},"birch_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/birch_trapdoor_bottom"}},"birch_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/birch_wood"}},"black_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"black"}}},"black_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/black_bed","model":{"type":"minecraft:bed","texture":"minecraft:black"}}},"black_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/black_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/black_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/black_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/black_bundle"},"property":"minecraft:display_context"}},"black_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/black_candle"}},"black_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/black_carpet"}},"black_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/black_concrete"}},"black_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/black_concrete_powder"}},"black_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/black_dye"}},"black_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/black_glazed_terracotta"}},"black_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/black_harness"}},"black_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/black_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_black"}}},"black_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/black_stained_glass"}},"black_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/black_stained_glass_pane"}},"black_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/black_terracotta"}},"black_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/black_wool"}},"blackstone":{"model":{"type":"minecraft:model","model":"minecraft:block/blackstone"}},"blackstone_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/blackstone_slab"}},"blackstone_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/blackstone_stairs"}},"blackstone_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/blackstone_wall_inventory"}},"blade_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/blade_pottery_sherd"}},"blast_furnace":{"model":{"type":"minecraft:model","model":"minecraft:block/blast_furnace"}},"blaze_powder":{"model":{"type":"minecraft:model","model":"minecraft:item/blaze_powder"}},"blaze_rod":{"model":{"type":"minecraft:model","model":"minecraft:item/blaze_rod"}},"blaze_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/blaze_spawn_egg"}},"blue_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"blue"}}},"blue_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/blue_bed","model":{"type":"minecraft:bed","texture":"minecraft:blue"}}},"blue_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/blue_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/blue_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/blue_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/blue_bundle"},"property":"minecraft:display_context"}},"blue_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/blue_candle"}},"blue_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/blue_carpet"}},"blue_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/blue_concrete"}},"blue_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/blue_concrete_powder"}},"blue_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/blue_dye"}},"blue_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/blue_egg"}},"blue_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/blue_glazed_terracotta"}},"blue_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/blue_harness"}},"blue_ice":{"model":{"type":"minecraft:model","model":"minecraft:block/blue_ice"}},"blue_orchid":{"model":{"type":"minecraft:model","model":"minecraft:item/blue_orchid"}},"blue_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/blue_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_blue"}}},"blue_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/blue_stained_glass"}},"blue_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/blue_stained_glass_pane"}},"blue_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/blue_terracotta"}},"blue_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/blue_wool"}},"bogged_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/bogged_spawn_egg"}},"bolt_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/bolt_armor_trim_smithing_template"}},"bone":{"model":{"type":"minecraft:model","model":"minecraft:item/bone"}},"bone_block":{"model":{"type":"minecraft:model","model":"minecraft:block/bone_block"}},"bone_meal":{"model":{"type":"minecraft:model","model":"minecraft:item/bone_meal"}},"book":{"model":{"type":"minecraft:model","model":"minecraft:item/book"}},"bookshelf":{"model":{"type":"minecraft:model","model":"minecraft:block/bookshelf"}},"bordure_indented_banner_pattern":{"model":{"type":"minecraft:model","model":"minecraft:item/bordure_indented_banner_pattern"}},"bow":{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/bow"},"on_true":{"type":"minecraft:range_dispatch","entries":[{"model":{"type":"minecraft:model","model":"minecraft:item/bow_pulling_1"},"threshold":0.65},{"model":{"type":"minecraft:model","model":"minecraft:item/bow_pulling_2"},"threshold":0.9}],"fallback":{"type":"minecraft:model","model":"minecraft:item/bow_pulling_0"},"property":"minecraft:use_duration","scale":0.05},"property":"minecraft:using_item"}},"bowl":{"model":{"type":"minecraft:model","model":"minecraft:item/bowl"}},"brain_coral":{"model":{"type":"minecraft:model","model":"minecraft:item/brain_coral"}},"brain_coral_block":{"model":{"type":"minecraft:model","model":"minecraft:block/brain_coral_block"}},"brain_coral_fan":{"model":{"type":"minecraft:model","model":"minecraft:item/brain_coral_fan"}},"bread":{"model":{"type":"minecraft:model","model":"minecraft:item/bread"}},"breeze_rod":{"model":{"type":"minecraft:model","model":"minecraft:item/breeze_rod"}},"breeze_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/breeze_spawn_egg"}},"brewer_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/brewer_pottery_sherd"}},"brewing_stand":{"model":{"type":"minecraft:model","model":"minecraft:item/brewing_stand"}},"brick":{"model":{"type":"minecraft:model","model":"minecraft:item/brick"}},"brick_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/brick_slab"}},"brick_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/brick_stairs"}},"brick_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/brick_wall_inventory"}},"bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/bricks"}},"brown_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"brown"}}},"brown_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/brown_bed","model":{"type":"minecraft:bed","texture":"minecraft:brown"}}},"brown_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/brown_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/brown_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/brown_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/brown_bundle"},"property":"minecraft:display_context"}},"brown_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/brown_candle"}},"brown_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/brown_carpet"}},"brown_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/brown_concrete"}},"brown_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/brown_concrete_powder"}},"brown_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/brown_dye"}},"brown_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/brown_egg"}},"brown_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/brown_glazed_terracotta"}},"brown_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/brown_harness"}},"brown_mushroom":{"model":{"type":"minecraft:model","model":"minecraft:item/brown_mushroom"}},"brown_mushroom_block":{"model":{"type":"minecraft:model","model":"minecraft:block/brown_mushroom_block_inventory"}},"brown_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/brown_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_brown"}}},"brown_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/brown_stained_glass"}},"brown_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/brown_stained_glass_pane"}},"brown_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/brown_terracotta"}},"brown_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/brown_wool"}},"brush":{"model":{"type":"minecraft:range_dispatch","entries":[{"model":{"type":"minecraft:model","model":"minecraft:item/brush_brushing_0"},"threshold":0.25},{"model":{"type":"minecraft:model","model":"minecraft:item/brush_brushing_1"},"threshold":0.5},{"model":{"type":"minecraft:model","model":"minecraft:item/brush_brushing_2"},"threshold":0.75}],"fallback":{"type":"minecraft:model","model":"minecraft:item/brush"},"period":10.0,"property":"minecraft:use_cycle","scale":0.1}},"bubble_coral":{"model":{"type":"minecraft:model","model":"minecraft:item/bubble_coral"}},"bubble_coral_block":{"model":{"type":"minecraft:model","model":"minecraft:block/bubble_coral_block"}},"bubble_coral_fan":{"model":{"type":"minecraft:model","model":"minecraft:item/bubble_coral_fan"}},"bucket":{"model":{"type":"minecraft:model","model":"minecraft:item/bucket"}},"budding_amethyst":{"model":{"type":"minecraft:model","model":"minecraft:block/budding_amethyst"}},"bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/bundle"},"property":"minecraft:display_context"}},"burn_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/burn_pottery_sherd"}},"bush":{"model":{"type":"minecraft:model","model":"minecraft:item/bush","tints":[{"type":"minecraft:grass","downfall":1.0,"temperature":0.5}]}},"cactus":{"model":{"type":"minecraft:model","model":"minecraft:block/cactus"}},"cactus_flower":{"model":{"type":"minecraft:model","model":"minecraft:item/cactus_flower"}},"cake":{"model":{"type":"minecraft:model","model":"minecraft:item/cake"}},"calcite":{"model":{"type":"minecraft:model","model":"minecraft:block/calcite"}},"calibrated_sculk_sensor":{"model":{"type":"minecraft:model","model":"minecraft:block/calibrated_sculk_sensor_inactive"}},"camel_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/camel_spawn_egg"}},"campfire":{"model":{"type":"minecraft:model","model":"minecraft:item/campfire"}},"candle":{"model":{"type":"minecraft:model","model":"minecraft:item/candle"}},"carrot":{"model":{"type":"minecraft:model","model":"minecraft:item/carrot"}},"carrot_on_a_stick":{"model":{"type":"minecraft:model","model":"minecraft:item/carrot_on_a_stick"}},"cartography_table":{"model":{"type":"minecraft:model","model":"minecraft:block/cartography_table"}},"carved_pumpkin":{"model":{"type":"minecraft:model","model":"minecraft:block/carved_pumpkin"}},"cat_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/cat_spawn_egg"}},"cauldron":{"model":{"type":"minecraft:model","model":"minecraft:item/cauldron"}},"cave_spider_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/cave_spider_spawn_egg"}},"chain_command_block":{"model":{"type":"minecraft:model","model":"minecraft:block/chain_command_block"}},"chainmail_boots":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_boots_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_boots_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_boots_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_boots_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_boots_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_boots_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_boots_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_boots_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_boots_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_boots_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_boots_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/chainmail_boots"},"property":"minecraft:trim_material"}},"chainmail_chestplate":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_chestplate_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_chestplate_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_chestplate_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_chestplate_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_chestplate_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_chestplate_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_chestplate_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_chestplate_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_chestplate_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_chestplate_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_chestplate_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/chainmail_chestplate"},"property":"minecraft:trim_material"}},"chainmail_helmet":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_helmet_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_helmet_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_helmet_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_helmet_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_helmet_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_helmet_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_helmet_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_helmet_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_helmet_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_helmet_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_helmet_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/chainmail_helmet"},"property":"minecraft:trim_material"}},"chainmail_leggings":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_leggings_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_leggings_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_leggings_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_leggings_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_leggings_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_leggings_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_leggings_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_leggings_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_leggings_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_leggings_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/chainmail_leggings_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/chainmail_leggings"},"property":"minecraft:trim_material"}},"charcoal":{"model":{"type":"minecraft:model","model":"minecraft:item/charcoal"}},"cherry_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/cherry_boat"}},"cherry_button":{"model":{"type":"minecraft:model","model":"minecraft:block/cherry_button_inventory"}},"cherry_chest_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/cherry_chest_boat"}},"cherry_door":{"model":{"type":"minecraft:model","model":"minecraft:item/cherry_door"}},"cherry_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/cherry_fence_inventory"}},"cherry_fence_gate":{"model":{"type":"minecraft:model","model":"minecraft:block/cherry_fence_gate"}},"cherry_hanging_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/cherry_hanging_sign"}},"cherry_leaves":{"model":{"type":"minecraft:model","model":"minecraft:block/cherry_leaves"}},"cherry_log":{"model":{"type":"minecraft:model","model":"minecraft:block/cherry_log"}},"cherry_planks":{"model":{"type":"minecraft:model","model":"minecraft:block/cherry_planks"}},"cherry_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/cherry_pressure_plate"}},"cherry_sapling":{"model":{"type":"minecraft:model","model":"minecraft:item/cherry_sapling"}},"cherry_shelf":{"model":{"type":"minecraft:model","model":"minecraft:block/cherry_shelf_inventory"}},"cherry_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/cherry_sign"}},"cherry_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/cherry_slab"}},"cherry_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/cherry_stairs"}},"cherry_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/cherry_trapdoor_bottom"}},"cherry_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/cherry_wood"}},"chest":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:special","base":"minecraft:item/chest","model":{"type":"minecraft:chest","texture":"minecraft:christmas"}},"when":["12-24","12-25","12-26"]}],"fallback":{"type":"minecraft:special","base":"minecraft:item/chest","model":{"type":"minecraft:chest","texture":"minecraft:normal"}},"pattern":"MM-dd","property":"minecraft:local_time"}},"chest_minecart":{"model":{"type":"minecraft:model","model":"minecraft:item/chest_minecart"}},"chicken":{"model":{"type":"minecraft:model","model":"minecraft:item/chicken"}},"chicken_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/chicken_spawn_egg"}},"chipped_anvil":{"model":{"type":"minecraft:model","model":"minecraft:block/chipped_anvil"}},"chiseled_bookshelf":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_bookshelf_inventory"}},"chiseled_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_copper"}},"chiseled_deepslate":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_deepslate"}},"chiseled_nether_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_nether_bricks"}},"chiseled_polished_blackstone":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_polished_blackstone"}},"chiseled_quartz_block":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_quartz_block"}},"chiseled_red_sandstone":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_red_sandstone"}},"chiseled_resin_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_resin_bricks"}},"chiseled_sandstone":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_sandstone"}},"chiseled_stone_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_stone_bricks"}},"chiseled_tuff":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_tuff"}},"chiseled_tuff_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_tuff_bricks"}},"chorus_flower":{"model":{"type":"minecraft:model","model":"minecraft:block/chorus_flower"}},"chorus_fruit":{"model":{"type":"minecraft:model","model":"minecraft:item/chorus_fruit"}},"chorus_plant":{"model":{"type":"minecraft:model","model":"minecraft:block/chorus_plant"}},"clay":{"model":{"type":"minecraft:model","model":"minecraft:block/clay"}},"clay_ball":{"model":{"type":"minecraft:model","model":"minecraft:item/clay_ball"}},"clock":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:range_dispatch","entries":[{"model":{"type":"minecraft:model","model":"minecraft:item/clock_00"},"threshold":0.0},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_01"},"threshold":0.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_02"},"threshold":1.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_03"},"threshold":2.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_04"},"threshold":3.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_05"},"threshold":4.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_06"},"threshold":5.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_07"},"threshold":6.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_08"},"threshold":7.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_09"},"threshold":8.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_10"},"threshold":9.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_11"},"threshold":10.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_12"},"threshold":11.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_13"},"threshold":12.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_14"},"threshold":13.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_15"},"threshold":14.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_16"},"threshold":15.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_17"},"threshold":16.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_18"},"threshold":17.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_19"},"threshold":18.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_20"},"threshold":19.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_21"},"threshold":20.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_22"},"threshold":21.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_23"},"threshold":22.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_24"},"threshold":23.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_25"},"threshold":24.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_26"},"threshold":25.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_27"},"threshold":26.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_28"},"threshold":27.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_29"},"threshold":28.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_30"},"threshold":29.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_31"},"threshold":30.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_32"},"threshold":31.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_33"},"threshold":32.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_34"},"threshold":33.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_35"},"threshold":34.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_36"},"threshold":35.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_37"},"threshold":36.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_38"},"threshold":37.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_39"},"threshold":38.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_40"},"threshold":39.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_41"},"threshold":40.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_42"},"threshold":41.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_43"},"threshold":42.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_44"},"threshold":43.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_45"},"threshold":44.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_46"},"threshold":45.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_47"},"threshold":46.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_48"},"threshold":47.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_49"},"threshold":48.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_50"},"threshold":49.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_51"},"threshold":50.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_52"},"threshold":51.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_53"},"threshold":52.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_54"},"threshold":53.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_55"},"threshold":54.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_56"},"threshold":55.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_57"},"threshold":56.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_58"},"threshold":57.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_59"},"threshold":58.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_60"},"threshold":59.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_61"},"threshold":60.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_62"},"threshold":61.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_63"},"threshold":62.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_00"},"threshold":63.5}],"property":"minecraft:time","scale":64.0,"source":"daytime"},"when":"minecraft:overworld"}],"fallback":{"type":"minecraft:range_dispatch","entries":[{"model":{"type":"minecraft:model","model":"minecraft:item/clock_00"},"threshold":0.0},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_01"},"threshold":0.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_02"},"threshold":1.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_03"},"threshold":2.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_04"},"threshold":3.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_05"},"threshold":4.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_06"},"threshold":5.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_07"},"threshold":6.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_08"},"threshold":7.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_09"},"threshold":8.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_10"},"threshold":9.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_11"},"threshold":10.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_12"},"threshold":11.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_13"},"threshold":12.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_14"},"threshold":13.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_15"},"threshold":14.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_16"},"threshold":15.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_17"},"threshold":16.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_18"},"threshold":17.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_19"},"threshold":18.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_20"},"threshold":19.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_21"},"threshold":20.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_22"},"threshold":21.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_23"},"threshold":22.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_24"},"threshold":23.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_25"},"threshold":24.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_26"},"threshold":25.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_27"},"threshold":26.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_28"},"threshold":27.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_29"},"threshold":28.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_30"},"threshold":29.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_31"},"threshold":30.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_32"},"threshold":31.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_33"},"threshold":32.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_34"},"threshold":33.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_35"},"threshold":34.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_36"},"threshold":35.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_37"},"threshold":36.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_38"},"threshold":37.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_39"},"threshold":38.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_40"},"threshold":39.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_41"},"threshold":40.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_42"},"threshold":41.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_43"},"threshold":42.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_44"},"threshold":43.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_45"},"threshold":44.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_46"},"threshold":45.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_47"},"threshold":46.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_48"},"threshold":47.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_49"},"threshold":48.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_50"},"threshold":49.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_51"},"threshold":50.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_52"},"threshold":51.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_53"},"threshold":52.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_54"},"threshold":53.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_55"},"threshold":54.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_56"},"threshold":55.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_57"},"threshold":56.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_58"},"threshold":57.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_59"},"threshold":58.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_60"},"threshold":59.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_61"},"threshold":60.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_62"},"threshold":61.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_63"},"threshold":62.5},{"model":{"type":"minecraft:model","model":"minecraft:item/clock_00"},"threshold":63.5}],"property":"minecraft:time","scale":64.0,"source":"random"},"property":"minecraft:context_dimension"}},"closed_eyeblossom":{"model":{"type":"minecraft:model","model":"minecraft:item/closed_eyeblossom"}},"coal":{"model":{"type":"minecraft:model","model":"minecraft:item/coal"}},"coal_block":{"model":{"type":"minecraft:model","model":"minecraft:block/coal_block"}},"coal_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/coal_ore"}},"coarse_dirt":{"model":{"type":"minecraft:model","model":"minecraft:block/coarse_dirt"}},"coast_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/coast_armor_trim_smithing_template"}},"cobbled_deepslate":{"model":{"type":"minecraft:model","model":"minecraft:block/cobbled_deepslate"}},"cobbled_deepslate_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/cobbled_deepslate_slab"}},"cobbled_deepslate_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/cobbled_deepslate_stairs"}},"cobbled_deepslate_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/cobbled_deepslate_wall_inventory"}},"cobblestone":{"model":{"type":"minecraft:model","model":"minecraft:block/cobblestone"}},"cobblestone_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/cobblestone_slab"}},"cobblestone_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/cobblestone_stairs"}},"cobblestone_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/cobblestone_wall_inventory"}},"cobweb":{"model":{"type":"minecraft:model","model":"minecraft:item/cobweb"}},"cocoa_beans":{"model":{"type":"minecraft:model","model":"minecraft:item/cocoa_beans"}},"cod":{"model":{"type":"minecraft:model","model":"minecraft:item/cod"}},"cod_bucket":{"model":{"type":"minecraft:model","model":"minecraft:item/cod_bucket"}},"cod_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/cod_spawn_egg"}},"command_block":{"model":{"type":"minecraft:model","model":"minecraft:block/command_block"}},"command_block_minecart":{"model":{"type":"minecraft:model","model":"minecraft:item/command_block_minecart"}},"comparator":{"model":{"type":"minecraft:model","model":"minecraft:item/comparator"}},"compass":{"model":{"type":"minecraft:condition","component":"minecraft:lodestone_tracker","on_false":{"type":"minecraft:range_dispatch","entries":[{"model":{"type":"minecraft:model","model":"minecraft:item/compass_16"},"threshold":0.0},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_17"},"threshold":0.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_18"},"threshold":1.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_19"},"threshold":2.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_20"},"threshold":3.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_21"},"threshold":4.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_22"},"threshold":5.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_23"},"threshold":6.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_24"},"threshold":7.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_25"},"threshold":8.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_26"},"threshold":9.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_27"},"threshold":10.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_28"},"threshold":11.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_29"},"threshold":12.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_30"},"threshold":13.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_31"},"threshold":14.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_00"},"threshold":15.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_01"},"threshold":16.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_02"},"threshold":17.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_03"},"threshold":18.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_04"},"threshold":19.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_05"},"threshold":20.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_06"},"threshold":21.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_07"},"threshold":22.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_08"},"threshold":23.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_09"},"threshold":24.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_10"},"threshold":25.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_11"},"threshold":26.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_12"},"threshold":27.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_13"},"threshold":28.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_14"},"threshold":29.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_15"},"threshold":30.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_16"},"threshold":31.5}],"property":"minecraft:compass","scale":32.0,"target":"spawn"},"on_true":{"type":"minecraft:range_dispatch","entries":[{"model":{"type":"minecraft:model","model":"minecraft:item/compass_16"},"threshold":0.0},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_17"},"threshold":0.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_18"},"threshold":1.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_19"},"threshold":2.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_20"},"threshold":3.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_21"},"threshold":4.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_22"},"threshold":5.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_23"},"threshold":6.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_24"},"threshold":7.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_25"},"threshold":8.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_26"},"threshold":9.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_27"},"threshold":10.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_28"},"threshold":11.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_29"},"threshold":12.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_30"},"threshold":13.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_31"},"threshold":14.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_00"},"threshold":15.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_01"},"threshold":16.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_02"},"threshold":17.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_03"},"threshold":18.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_04"},"threshold":19.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_05"},"threshold":20.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_06"},"threshold":21.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_07"},"threshold":22.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_08"},"threshold":23.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_09"},"threshold":24.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_10"},"threshold":25.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_11"},"threshold":26.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_12"},"threshold":27.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_13"},"threshold":28.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_14"},"threshold":29.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_15"},"threshold":30.5},{"model":{"type":"minecraft:model","model":"minecraft:item/compass_16"},"threshold":31.5}],"property":"minecraft:compass","scale":32.0,"target":"lodestone"},"property":"minecraft:has_component"}},"composter":{"model":{"type":"minecraft:model","model":"minecraft:block/composter"}},"conduit":{"model":{"type":"minecraft:special","base":"minecraft:item/conduit","model":{"type":"minecraft:conduit"}}},"cooked_beef":{"model":{"type":"minecraft:model","model":"minecraft:item/cooked_beef"}},"cooked_chicken":{"model":{"type":"minecraft:model","model":"minecraft:item/cooked_chicken"}},"cooked_cod":{"model":{"type":"minecraft:model","model":"minecraft:item/cooked_cod"}},"cooked_mutton":{"model":{"type":"minecraft:model","model":"minecraft:item/cooked_mutton"}},"cooked_porkchop":{"model":{"type":"minecraft:model","model":"minecraft:item/cooked_porkchop"}},"cooked_rabbit":{"model":{"type":"minecraft:model","model":"minecraft:item/cooked_rabbit"}},"cooked_salmon":{"model":{"type":"minecraft:model","model":"minecraft:item/cooked_salmon"}},"cookie":{"model":{"type":"minecraft:model","model":"minecraft:item/cookie"}},"copper_axe":{"model":{"type":"minecraft:model","model":"minecraft:item/copper_axe"}},"copper_bars":{"model":{"type":"minecraft:model","model":"minecraft:item/copper_bars"}},"copper_block":{"model":{"type":"minecraft:model","model":"minecraft:block/copper_block"}},"copper_boots":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/copper_boots_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_boots_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_boots_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_boots_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_boots_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_boots_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_boots_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_boots_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_boots_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_boots_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_boots_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/copper_boots"},"property":"minecraft:trim_material"}},"copper_bulb":{"model":{"type":"minecraft:model","model":"minecraft:block/copper_bulb"}},"copper_chain":{"model":{"type":"minecraft:model","model":"minecraft:item/copper_chain"}},"copper_chest":{"model":{"type":"minecraft:special","base":"minecraft:item/copper_chest","model":{"type":"minecraft:chest","texture":"minecraft:copper"}}},"copper_chestplate":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/copper_chestplate_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_chestplate_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_chestplate_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_chestplate_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_chestplate_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_chestplate_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_chestplate_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_chestplate_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_chestplate_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_chestplate_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_chestplate_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/copper_chestplate"},"property":"minecraft:trim_material"}},"copper_door":{"model":{"type":"minecraft:model","model":"minecraft:item/copper_door"}},"copper_golem_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/copper_golem_spawn_egg"}},"copper_golem_statue":{"model":{"type":"minecraft:select","block_state_property":"copper_golem_pose","cases":[{"model":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"sitting","texture":"minecraft:textures/entity/copper_golem/copper_golem.png"}},"when":"sitting"},{"model":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"running","texture":"minecraft:textures/entity/copper_golem/copper_golem.png"}},"when":"running"},{"model":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"star","texture":"minecraft:textures/entity/copper_golem/copper_golem.png"}},"when":"star"}],"fallback":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"standing","texture":"minecraft:textures/entity/copper_golem/copper_golem.png"}},"property":"minecraft:block_state"}},"copper_grate":{"model":{"type":"minecraft:model","model":"minecraft:block/copper_grate"}},"copper_helmet":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/copper_helmet_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_helmet_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_helmet_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_helmet_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_helmet_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_helmet_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_helmet_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_helmet_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_helmet_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_helmet_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_helmet_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/copper_helmet"},"property":"minecraft:trim_material"}},"copper_hoe":{"model":{"type":"minecraft:model","model":"minecraft:item/copper_hoe"}},"copper_horse_armor":{"model":{"type":"minecraft:model","model":"minecraft:item/copper_horse_armor"}},"copper_ingot":{"model":{"type":"minecraft:model","model":"minecraft:item/copper_ingot"}},"copper_lantern":{"model":{"type":"minecraft:model","model":"minecraft:item/copper_lantern"}},"copper_leggings":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/copper_leggings_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_leggings_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_leggings_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_leggings_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_leggings_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_leggings_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_leggings_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_leggings_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_leggings_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_leggings_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/copper_leggings_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/copper_leggings"},"property":"minecraft:trim_material"}},"copper_nugget":{"model":{"type":"minecraft:model","model":"minecraft:item/copper_nugget"}},"copper_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/copper_ore"}},"copper_pickaxe":{"model":{"type":"minecraft:model","model":"minecraft:item/copper_pickaxe"}},"copper_shovel":{"model":{"type":"minecraft:model","model":"minecraft:item/copper_shovel"}},"copper_sword":{"model":{"type":"minecraft:model","model":"minecraft:item/copper_sword"}},"copper_torch":{"model":{"type":"minecraft:model","model":"minecraft:item/copper_torch"}},"copper_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/copper_trapdoor_bottom"}},"cornflower":{"model":{"type":"minecraft:model","model":"minecraft:item/cornflower"}},"cow_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/cow_spawn_egg"}},"cracked_deepslate_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/cracked_deepslate_bricks"}},"cracked_deepslate_tiles":{"model":{"type":"minecraft:model","model":"minecraft:block/cracked_deepslate_tiles"}},"cracked_nether_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/cracked_nether_bricks"}},"cracked_polished_blackstone_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/cracked_polished_blackstone_bricks"}},"cracked_stone_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/cracked_stone_bricks"}},"crafter":{"model":{"type":"minecraft:model","model":"minecraft:block/crafter"}},"crafting_table":{"model":{"type":"minecraft:model","model":"minecraft:block/crafting_table"}},"creaking_heart":{"model":{"type":"minecraft:model","model":"minecraft:block/creaking_heart"}},"creaking_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/creaking_spawn_egg"}},"creeper_banner_pattern":{"model":{"type":"minecraft:model","model":"minecraft:item/creeper_banner_pattern"}},"creeper_head":{"model":{"type":"minecraft:special","base":"minecraft:item/template_skull","model":{"type":"minecraft:head","kind":"creeper"}}},"creeper_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/creeper_spawn_egg"}},"crimson_button":{"model":{"type":"minecraft:model","model":"minecraft:block/crimson_button_inventory"}},"crimson_door":{"model":{"type":"minecraft:model","model":"minecraft:item/crimson_door"}},"crimson_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/crimson_fence_inventory"}},"crimson_fence_gate":{"model":{"type":"minecraft:model","model":"minecraft:block/crimson_fence_gate"}},"crimson_fungus":{"model":{"type":"minecraft:model","model":"minecraft:item/crimson_fungus"}},"crimson_hanging_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/crimson_hanging_sign"}},"crimson_hyphae":{"model":{"type":"minecraft:model","model":"minecraft:block/crimson_hyphae"}},"crimson_nylium":{"model":{"type":"minecraft:model","model":"minecraft:block/crimson_nylium"}},"crimson_planks":{"model":{"type":"minecraft:model","model":"minecraft:block/crimson_planks"}},"crimson_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/crimson_pressure_plate"}},"crimson_roots":{"model":{"type":"minecraft:model","model":"minecraft:item/crimson_roots"}},"crimson_shelf":{"model":{"type":"minecraft:model","model":"minecraft:block/crimson_shelf_inventory"}},"crimson_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/crimson_sign"}},"crimson_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/crimson_slab"}},"crimson_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/crimson_stairs"}},"crimson_stem":{"model":{"type":"minecraft:model","model":"minecraft:block/crimson_stem"}},"crimson_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/crimson_trapdoor_bottom"}},"crossbow":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/crossbow_arrow"},"when":"arrow"},{"model":{"type":"minecraft:model","model":"minecraft:item/crossbow_firework"},"when":"rocket"}],"fallback":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/crossbow"},"on_true":{"type":"minecraft:range_dispatch","entries":[{"model":{"type":"minecraft:model","model":"minecraft:item/crossbow_pulling_1"},"threshold":0.58},{"model":{"type":"minecraft:model","model":"minecraft:item/crossbow_pulling_2"},"threshold":1.0}],"fallback":{"type":"minecraft:model","model":"minecraft:item/crossbow_pulling_0"},"property":"minecraft:crossbow/pull"},"property":"minecraft:using_item"},"property":"minecraft:charge_type"}},"crying_obsidian":{"model":{"type":"minecraft:model","model":"minecraft:block/crying_obsidian"}},"cut_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/cut_copper"}},"cut_copper_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/cut_copper_slab"}},"cut_copper_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/cut_copper_stairs"}},"cut_red_sandstone":{"model":{"type":"minecraft:model","model":"minecraft:block/cut_red_sandstone"}},"cut_red_sandstone_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/cut_red_sandstone_slab"}},"cut_sandstone":{"model":{"type":"minecraft:model","model":"minecraft:block/cut_sandstone"}},"cut_sandstone_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/cut_sandstone_slab"}},"cyan_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"cyan"}}},"cyan_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/cyan_bed","model":{"type":"minecraft:bed","texture":"minecraft:cyan"}}},"cyan_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/cyan_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/cyan_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/cyan_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/cyan_bundle"},"property":"minecraft:display_context"}},"cyan_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/cyan_candle"}},"cyan_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/cyan_carpet"}},"cyan_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/cyan_concrete"}},"cyan_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/cyan_concrete_powder"}},"cyan_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/cyan_dye"}},"cyan_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/cyan_glazed_terracotta"}},"cyan_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/cyan_harness"}},"cyan_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/cyan_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_cyan"}}},"cyan_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/cyan_stained_glass"}},"cyan_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/cyan_stained_glass_pane"}},"cyan_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/cyan_terracotta"}},"cyan_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/cyan_wool"}},"damaged_anvil":{"model":{"type":"minecraft:model","model":"minecraft:block/damaged_anvil"}},"dandelion":{"model":{"type":"minecraft:model","model":"minecraft:item/dandelion"}},"danger_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/danger_pottery_sherd"}},"dark_oak_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/dark_oak_boat"}},"dark_oak_button":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_oak_button_inventory"}},"dark_oak_chest_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/dark_oak_chest_boat"}},"dark_oak_door":{"model":{"type":"minecraft:model","model":"minecraft:item/dark_oak_door"}},"dark_oak_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_oak_fence_inventory"}},"dark_oak_fence_gate":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_oak_fence_gate"}},"dark_oak_hanging_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/dark_oak_hanging_sign"}},"dark_oak_leaves":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_oak_leaves","tints":[{"type":"minecraft:constant","value":-12012264}]}},"dark_oak_log":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_oak_log"}},"dark_oak_planks":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_oak_planks"}},"dark_oak_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_oak_pressure_plate"}},"dark_oak_sapling":{"model":{"type":"minecraft:model","model":"minecraft:item/dark_oak_sapling"}},"dark_oak_shelf":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_oak_shelf_inventory"}},"dark_oak_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/dark_oak_sign"}},"dark_oak_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_oak_slab"}},"dark_oak_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_oak_stairs"}},"dark_oak_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_oak_trapdoor_bottom"}},"dark_oak_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_oak_wood"}},"dark_prismarine":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_prismarine"}},"dark_prismarine_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_prismarine_slab"}},"dark_prismarine_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/dark_prismarine_stairs"}},"daylight_detector":{"model":{"type":"minecraft:model","model":"minecraft:block/daylight_detector"}},"dead_brain_coral":{"model":{"type":"minecraft:model","model":"minecraft:item/dead_brain_coral"}},"dead_brain_coral_block":{"model":{"type":"minecraft:model","model":"minecraft:block/dead_brain_coral_block"}},"dead_brain_coral_fan":{"model":{"type":"minecraft:model","model":"minecraft:item/dead_brain_coral_fan"}},"dead_bubble_coral":{"model":{"type":"minecraft:model","model":"minecraft:item/dead_bubble_coral"}},"dead_bubble_coral_block":{"model":{"type":"minecraft:model","model":"minecraft:block/dead_bubble_coral_block"}},"dead_bubble_coral_fan":{"model":{"type":"minecraft:model","model":"minecraft:item/dead_bubble_coral_fan"}},"dead_bush":{"model":{"type":"minecraft:model","model":"minecraft:item/dead_bush"}},"dead_fire_coral":{"model":{"type":"minecraft:model","model":"minecraft:item/dead_fire_coral"}},"dead_fire_coral_block":{"model":{"type":"minecraft:model","model":"minecraft:block/dead_fire_coral_block"}},"dead_fire_coral_fan":{"model":{"type":"minecraft:model","model":"minecraft:item/dead_fire_coral_fan"}},"dead_horn_coral":{"model":{"type":"minecraft:model","model":"minecraft:item/dead_horn_coral"}},"dead_horn_coral_block":{"model":{"type":"minecraft:model","model":"minecraft:block/dead_horn_coral_block"}},"dead_horn_coral_fan":{"model":{"type":"minecraft:model","model":"minecraft:item/dead_horn_coral_fan"}},"dead_tube_coral":{"model":{"type":"minecraft:model","model":"minecraft:item/dead_tube_coral"}},"dead_tube_coral_block":{"model":{"type":"minecraft:model","model":"minecraft:block/dead_tube_coral_block"}},"dead_tube_coral_fan":{"model":{"type":"minecraft:model","model":"minecraft:item/dead_tube_coral_fan"}},"debug_stick":{"model":{"type":"minecraft:model","model":"minecraft:item/debug_stick"}},"decorated_pot":{"model":{"type":"minecraft:special","base":"minecraft:item/decorated_pot","model":{"type":"minecraft:decorated_pot"}}},"deepslate":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate"}},"deepslate_brick_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_brick_slab"}},"deepslate_brick_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_brick_stairs"}},"deepslate_brick_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_brick_wall_inventory"}},"deepslate_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_bricks"}},"deepslate_coal_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_coal_ore"}},"deepslate_copper_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_copper_ore"}},"deepslate_diamond_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_diamond_ore"}},"deepslate_emerald_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_emerald_ore"}},"deepslate_gold_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_gold_ore"}},"deepslate_iron_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_iron_ore"}},"deepslate_lapis_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_lapis_ore"}},"deepslate_redstone_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_redstone_ore"}},"deepslate_tile_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_tile_slab"}},"deepslate_tile_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_tile_stairs"}},"deepslate_tile_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_tile_wall_inventory"}},"deepslate_tiles":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate_tiles"}},"detector_rail":{"model":{"type":"minecraft:model","model":"minecraft:item/detector_rail"}},"diamond":{"model":{"type":"minecraft:model","model":"minecraft:item/diamond"}},"diamond_axe":{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_axe"}},"diamond_block":{"model":{"type":"minecraft:model","model":"minecraft:block/diamond_block"}},"diamond_boots":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_boots_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_boots_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_boots_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_boots_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_boots_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_boots_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_boots_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_boots_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_boots_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_boots_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_boots_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/diamond_boots"},"property":"minecraft:trim_material"}},"diamond_chestplate":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_chestplate_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_chestplate_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_chestplate_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_chestplate_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_chestplate_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_chestplate_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_chestplate_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_chestplate_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_chestplate_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_chestplate_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_chestplate_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/diamond_chestplate"},"property":"minecraft:trim_material"}},"diamond_helmet":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_helmet_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_helmet_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_helmet_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_helmet_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_helmet_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_helmet_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_helmet_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_helmet_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_helmet_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_helmet_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_helmet_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/diamond_helmet"},"property":"minecraft:trim_material"}},"diamond_hoe":{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_hoe"}},"diamond_horse_armor":{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_horse_armor"}},"diamond_leggings":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_leggings_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_leggings_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_leggings_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_leggings_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_leggings_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_leggings_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_leggings_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_leggings_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_leggings_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_leggings_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_leggings_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/diamond_leggings"},"property":"minecraft:trim_material"}},"diamond_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/diamond_ore"}},"diamond_pickaxe":{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_pickaxe"}},"diamond_shovel":{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_shovel"}},"diamond_sword":{"model":{"type":"minecraft:model","model":"minecraft:item/diamond_sword"}},"diorite":{"model":{"type":"minecraft:model","model":"minecraft:block/diorite"}},"diorite_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/diorite_slab"}},"diorite_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/diorite_stairs"}},"diorite_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/diorite_wall_inventory"}},"dirt":{"model":{"type":"minecraft:model","model":"minecraft:block/dirt"}},"dirt_path":{"model":{"type":"minecraft:model","model":"minecraft:block/dirt_path"}},"disc_fragment_5":{"model":{"type":"minecraft:model","model":"minecraft:item/disc_fragment_5"}},"dispenser":{"model":{"type":"minecraft:model","model":"minecraft:block/dispenser"}},"dolphin_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/dolphin_spawn_egg"}},"donkey_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/donkey_spawn_egg"}},"dragon_breath":{"model":{"type":"minecraft:model","model":"minecraft:item/dragon_breath"}},"dragon_egg":{"model":{"type":"minecraft:model","model":"minecraft:block/dragon_egg"}},"dragon_head":{"model":{"type":"minecraft:special","base":"minecraft:item/dragon_head","model":{"type":"minecraft:head","kind":"dragon"}}},"dried_ghast":{"model":{"type":"minecraft:model","model":"minecraft:block/dried_ghast_hydration_0"}},"dried_kelp":{"model":{"type":"minecraft:model","model":"minecraft:item/dried_kelp"}},"dried_kelp_block":{"model":{"type":"minecraft:model","model":"minecraft:block/dried_kelp_block"}},"dripstone_block":{"model":{"type":"minecraft:model","model":"minecraft:block/dripstone_block"}},"dropper":{"model":{"type":"minecraft:model","model":"minecraft:block/dropper"}},"drowned_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/drowned_spawn_egg"}},"dune_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/dune_armor_trim_smithing_template"}},"echo_shard":{"model":{"type":"minecraft:model","model":"minecraft:item/echo_shard"}},"egg":{"model":{"type":"minecraft:model","model":"minecraft:item/egg"}},"elder_guardian_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/elder_guardian_spawn_egg"}},"elytra":{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/elytra"},"on_true":{"type":"minecraft:model","model":"minecraft:item/elytra_broken"},"property":"minecraft:broken"}},"emerald":{"model":{"type":"minecraft:model","model":"minecraft:item/emerald"}},"emerald_block":{"model":{"type":"minecraft:model","model":"minecraft:block/emerald_block"}},"emerald_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/emerald_ore"}},"enchanted_book":{"model":{"type":"minecraft:model","model":"minecraft:item/enchanted_book"}},"enchanted_golden_apple":{"model":{"type":"minecraft:model","model":"minecraft:item/enchanted_golden_apple"}},"enchanting_table":{"model":{"type":"minecraft:model","model":"minecraft:block/enchanting_table"}},"end_crystal":{"model":{"type":"minecraft:model","model":"minecraft:item/end_crystal"}},"end_portal_frame":{"model":{"type":"minecraft:model","model":"minecraft:block/end_portal_frame"}},"end_rod":{"model":{"type":"minecraft:model","model":"minecraft:block/end_rod"}},"end_stone":{"model":{"type":"minecraft:model","model":"minecraft:block/end_stone"}},"end_stone_brick_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/end_stone_brick_slab"}},"end_stone_brick_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/end_stone_brick_stairs"}},"end_stone_brick_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/end_stone_brick_wall_inventory"}},"end_stone_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/end_stone_bricks"}},"ender_chest":{"model":{"type":"minecraft:special","base":"minecraft:item/ender_chest","model":{"type":"minecraft:chest","texture":"minecraft:ender"}}},"ender_dragon_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/ender_dragon_spawn_egg"}},"ender_eye":{"model":{"type":"minecraft:model","model":"minecraft:item/ender_eye"}},"ender_pearl":{"model":{"type":"minecraft:model","model":"minecraft:item/ender_pearl"}},"enderman_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/enderman_spawn_egg"}},"endermite_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/endermite_spawn_egg"}},"evoker_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/evoker_spawn_egg"}},"experience_bottle":{"model":{"type":"minecraft:model","model":"minecraft:item/experience_bottle"}},"explorer_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/explorer_pottery_sherd"}},"exposed_chiseled_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_chiseled_copper"}},"exposed_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_copper"}},"exposed_copper_bars":{"model":{"type":"minecraft:model","model":"minecraft:item/exposed_copper_bars"}},"exposed_copper_bulb":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_copper_bulb"}},"exposed_copper_chain":{"model":{"type":"minecraft:model","model":"minecraft:item/exposed_copper_chain"}},"exposed_copper_chest":{"model":{"type":"minecraft:special","base":"minecraft:item/exposed_copper_chest","model":{"type":"minecraft:chest","texture":"minecraft:copper_exposed"}}},"exposed_copper_door":{"model":{"type":"minecraft:model","model":"minecraft:item/exposed_copper_door"}},"exposed_copper_golem_statue":{"model":{"type":"minecraft:select","block_state_property":"copper_golem_pose","cases":[{"model":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"sitting","texture":"minecraft:textures/entity/copper_golem/exposed_copper_golem.png"}},"when":"sitting"},{"model":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"running","texture":"minecraft:textures/entity/copper_golem/exposed_copper_golem.png"}},"when":"running"},{"model":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"star","texture":"minecraft:textures/entity/copper_golem/exposed_copper_golem.png"}},"when":"star"}],"fallback":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"standing","texture":"minecraft:textures/entity/copper_golem/exposed_copper_golem.png"}},"property":"minecraft:block_state"}},"exposed_copper_grate":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_copper_grate"}},"exposed_copper_lantern":{"model":{"type":"minecraft:model","model":"minecraft:item/exposed_copper_lantern"}},"exposed_copper_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_copper_trapdoor_bottom"}},"exposed_cut_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_cut_copper"}},"exposed_cut_copper_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_cut_copper_slab"}},"exposed_cut_copper_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_cut_copper_stairs"}},"exposed_lightning_rod":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_lightning_rod"}},"eye_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/eye_armor_trim_smithing_template"}},"farmland":{"model":{"type":"minecraft:model","model":"minecraft:block/farmland"}},"feather":{"model":{"type":"minecraft:model","model":"minecraft:item/feather"}},"fermented_spider_eye":{"model":{"type":"minecraft:model","model":"minecraft:item/fermented_spider_eye"}},"fern":{"model":{"type":"minecraft:model","model":"minecraft:item/fern","tints":[{"type":"minecraft:grass","downfall":1.0,"temperature":0.5}]}},"field_masoned_banner_pattern":{"model":{"type":"minecraft:model","model":"minecraft:item/field_masoned_banner_pattern"}},"filled_map":{"model":{"type":"minecraft:model","model":"minecraft:item/filled_map","tints":[{"type":"minecraft:constant","value":-1},{"type":"minecraft:map_color","default":4603950}]}},"fire_charge":{"model":{"type":"minecraft:model","model":"minecraft:item/fire_charge"}},"fire_coral":{"model":{"type":"minecraft:model","model":"minecraft:item/fire_coral"}},"fire_coral_block":{"model":{"type":"minecraft:model","model":"minecraft:block/fire_coral_block"}},"fire_coral_fan":{"model":{"type":"minecraft:model","model":"minecraft:item/fire_coral_fan"}},"firefly_bush":{"model":{"type":"minecraft:model","model":"minecraft:item/firefly_bush"}},"firework_rocket":{"model":{"type":"minecraft:model","model":"minecraft:item/firework_rocket"}},"firework_star":{"model":{"type":"minecraft:model","model":"minecraft:item/firework_star","tints":[{"type":"minecraft:constant","value":-1},{"type":"minecraft:firework","default":-7697782}]}},"fishing_rod":{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/fishing_rod"},"on_true":{"type":"minecraft:model","model":"minecraft:item/fishing_rod_cast"},"property":"minecraft:fishing_rod/cast"}},"fletching_table":{"model":{"type":"minecraft:model","model":"minecraft:block/fletching_table"}},"flint":{"model":{"type":"minecraft:model","model":"minecraft:item/flint"}},"flint_and_steel":{"model":{"type":"minecraft:model","model":"minecraft:item/flint_and_steel"}},"flow_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/flow_armor_trim_smithing_template"}},"flow_banner_pattern":{"model":{"type":"minecraft:model","model":"minecraft:item/flow_banner_pattern"}},"flow_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/flow_pottery_sherd"}},"flower_banner_pattern":{"model":{"type":"minecraft:model","model":"minecraft:item/flower_banner_pattern"}},"flower_pot":{"model":{"type":"minecraft:model","model":"minecraft:item/flower_pot"}},"flowering_azalea":{"model":{"type":"minecraft:model","model":"minecraft:block/flowering_azalea"}},"flowering_azalea_leaves":{"model":{"type":"minecraft:model","model":"minecraft:block/flowering_azalea_leaves"}},"fox_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/fox_spawn_egg"}},"friend_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/friend_pottery_sherd"}},"frog_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/frog_spawn_egg"}},"frogspawn":{"model":{"type":"minecraft:model","model":"minecraft:item/frogspawn"}},"furnace":{"model":{"type":"minecraft:model","model":"minecraft:block/furnace"}},"furnace_minecart":{"model":{"type":"minecraft:model","model":"minecraft:item/furnace_minecart"}},"ghast_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/ghast_spawn_egg"}},"ghast_tear":{"model":{"type":"minecraft:model","model":"minecraft:item/ghast_tear"}},"gilded_blackstone":{"model":{"type":"minecraft:model","model":"minecraft:block/gilded_blackstone"}},"glass":{"model":{"type":"minecraft:model","model":"minecraft:block/glass"}},"glass_bottle":{"model":{"type":"minecraft:model","model":"minecraft:item/glass_bottle"}},"glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/glass_pane"}},"glistering_melon_slice":{"model":{"type":"minecraft:model","model":"minecraft:item/glistering_melon_slice"}},"globe_banner_pattern":{"model":{"type":"minecraft:model","model":"minecraft:item/globe_banner_pattern"}},"glow_berries":{"model":{"type":"minecraft:model","model":"minecraft:item/glow_berries"}},"glow_ink_sac":{"model":{"type":"minecraft:model","model":"minecraft:item/glow_ink_sac"}},"glow_item_frame":{"model":{"type":"minecraft:model","model":"minecraft:item/glow_item_frame"}},"glow_lichen":{"model":{"type":"minecraft:model","model":"minecraft:item/glow_lichen"}},"glow_squid_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/glow_squid_spawn_egg"}},"glowstone":{"model":{"type":"minecraft:model","model":"minecraft:block/glowstone"}},"glowstone_dust":{"model":{"type":"minecraft:model","model":"minecraft:item/glowstone_dust"}},"goat_horn":{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/goat_horn"},"on_true":{"type":"minecraft:model","model":"minecraft:item/tooting_goat_horn"},"property":"minecraft:using_item"}},"goat_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/goat_spawn_egg"}},"gold_block":{"model":{"type":"minecraft:model","model":"minecraft:block/gold_block"}},"gold_ingot":{"model":{"type":"minecraft:model","model":"minecraft:item/gold_ingot"}},"gold_nugget":{"model":{"type":"minecraft:model","model":"minecraft:item/gold_nugget"}},"gold_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/gold_ore"}},"golden_apple":{"model":{"type":"minecraft:model","model":"minecraft:item/golden_apple"}},"golden_axe":{"model":{"type":"minecraft:model","model":"minecraft:item/golden_axe"}},"golden_boots":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/golden_boots_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_boots_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_boots_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_boots_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_boots_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_boots_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_boots_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_boots_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_boots_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_boots_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_boots_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/golden_boots"},"property":"minecraft:trim_material"}},"golden_carrot":{"model":{"type":"minecraft:model","model":"minecraft:item/golden_carrot"}},"golden_chestplate":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/golden_chestplate_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_chestplate_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_chestplate_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_chestplate_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_chestplate_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_chestplate_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_chestplate_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_chestplate_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_chestplate_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_chestplate_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_chestplate_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/golden_chestplate"},"property":"minecraft:trim_material"}},"golden_helmet":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/golden_helmet_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_helmet_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_helmet_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_helmet_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_helmet_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_helmet_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_helmet_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_helmet_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_helmet_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_helmet_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_helmet_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/golden_helmet"},"property":"minecraft:trim_material"}},"golden_hoe":{"model":{"type":"minecraft:model","model":"minecraft:item/golden_hoe"}},"golden_horse_armor":{"model":{"type":"minecraft:model","model":"minecraft:item/golden_horse_armor"}},"golden_leggings":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/golden_leggings_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_leggings_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_leggings_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_leggings_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_leggings_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_leggings_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_leggings_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_leggings_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_leggings_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_leggings_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/golden_leggings_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/golden_leggings"},"property":"minecraft:trim_material"}},"golden_pickaxe":{"model":{"type":"minecraft:model","model":"minecraft:item/golden_pickaxe"}},"golden_shovel":{"model":{"type":"minecraft:model","model":"minecraft:item/golden_shovel"}},"golden_sword":{"model":{"type":"minecraft:model","model":"minecraft:item/golden_sword"}},"granite":{"model":{"type":"minecraft:model","model":"minecraft:block/granite"}},"granite_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/granite_slab"}},"granite_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/granite_stairs"}},"granite_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/granite_wall_inventory"}},"grass_block":{"model":{"type":"minecraft:model","model":"minecraft:block/grass_block","tints":[{"type":"minecraft:grass","downfall":1.0,"temperature":0.5}]}},"gravel":{"model":{"type":"minecraft:model","model":"minecraft:block/gravel"}},"gray_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"gray"}}},"gray_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/gray_bed","model":{"type":"minecraft:bed","texture":"minecraft:gray"}}},"gray_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/gray_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/gray_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/gray_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/gray_bundle"},"property":"minecraft:display_context"}},"gray_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/gray_candle"}},"gray_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/gray_carpet"}},"gray_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/gray_concrete"}},"gray_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/gray_concrete_powder"}},"gray_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/gray_dye"}},"gray_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/gray_glazed_terracotta"}},"gray_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/gray_harness"}},"gray_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/gray_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_gray"}}},"gray_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/gray_stained_glass"}},"gray_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/gray_stained_glass_pane"}},"gray_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/gray_terracotta"}},"gray_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/gray_wool"}},"green_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"green"}}},"green_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/green_bed","model":{"type":"minecraft:bed","texture":"minecraft:green"}}},"green_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/green_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/green_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/green_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/green_bundle"},"property":"minecraft:display_context"}},"green_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/green_candle"}},"green_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/green_carpet"}},"green_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/green_concrete"}},"green_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/green_concrete_powder"}},"green_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/green_dye"}},"green_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/green_glazed_terracotta"}},"green_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/green_harness"}},"green_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/green_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_green"}}},"green_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/green_stained_glass"}},"green_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/green_stained_glass_pane"}},"green_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/green_terracotta"}},"green_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/green_wool"}},"grindstone":{"model":{"type":"minecraft:model","model":"minecraft:block/grindstone"}},"guardian_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/guardian_spawn_egg"}},"gunpowder":{"model":{"type":"minecraft:model","model":"minecraft:item/gunpowder"}},"guster_banner_pattern":{"model":{"type":"minecraft:model","model":"minecraft:item/guster_banner_pattern"}},"guster_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/guster_pottery_sherd"}},"hanging_roots":{"model":{"type":"minecraft:model","model":"minecraft:item/hanging_roots"}},"happy_ghast_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/happy_ghast_spawn_egg"}},"hay_block":{"model":{"type":"minecraft:model","model":"minecraft:block/hay_block"}},"heart_of_the_sea":{"model":{"type":"minecraft:model","model":"minecraft:item/heart_of_the_sea"}},"heart_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/heart_pottery_sherd"}},"heartbreak_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/heartbreak_pottery_sherd"}},"heavy_core":{"model":{"type":"minecraft:model","model":"minecraft:block/heavy_core"}},"heavy_weighted_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/heavy_weighted_pressure_plate"}},"hoglin_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/hoglin_spawn_egg"}},"honey_block":{"model":{"type":"minecraft:model","model":"minecraft:block/honey_block"}},"honey_bottle":{"model":{"type":"minecraft:model","model":"minecraft:item/honey_bottle"}},"honeycomb":{"model":{"type":"minecraft:model","model":"minecraft:item/honeycomb"}},"honeycomb_block":{"model":{"type":"minecraft:model","model":"minecraft:block/honeycomb_block"}},"hopper":{"model":{"type":"minecraft:model","model":"minecraft:item/hopper"}},"hopper_minecart":{"model":{"type":"minecraft:model","model":"minecraft:item/hopper_minecart"}},"horn_coral":{"model":{"type":"minecraft:model","model":"minecraft:item/horn_coral"}},"horn_coral_block":{"model":{"type":"minecraft:model","model":"minecraft:block/horn_coral_block"}},"horn_coral_fan":{"model":{"type":"minecraft:model","model":"minecraft:item/horn_coral_fan"}},"horse_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/horse_spawn_egg"}},"host_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/host_armor_trim_smithing_template"}},"howl_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/howl_pottery_sherd"}},"husk_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/husk_spawn_egg"}},"ice":{"model":{"type":"minecraft:model","model":"minecraft:block/ice"}},"infested_chiseled_stone_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_stone_bricks"}},"infested_cobblestone":{"model":{"type":"minecraft:model","model":"minecraft:block/cobblestone"}},"infested_cracked_stone_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/cracked_stone_bricks"}},"infested_deepslate":{"model":{"type":"minecraft:model","model":"minecraft:block/deepslate"}},"infested_mossy_stone_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/mossy_stone_bricks"}},"infested_stone":{"model":{"type":"minecraft:model","model":"minecraft:block/stone"}},"infested_stone_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/stone_bricks"}},"ink_sac":{"model":{"type":"minecraft:model","model":"minecraft:item/ink_sac"}},"iron_axe":{"model":{"type":"minecraft:model","model":"minecraft:item/iron_axe"}},"iron_bars":{"model":{"type":"minecraft:model","model":"minecraft:item/iron_bars"}},"iron_block":{"model":{"type":"minecraft:model","model":"minecraft:block/iron_block"}},"iron_boots":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/iron_boots_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_boots_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_boots_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_boots_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_boots_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_boots_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_boots_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_boots_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_boots_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_boots_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_boots_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/iron_boots"},"property":"minecraft:trim_material"}},"iron_chain":{"model":{"type":"minecraft:model","model":"minecraft:item/iron_chain"}},"iron_chestplate":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/iron_chestplate_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_chestplate_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_chestplate_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_chestplate_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_chestplate_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_chestplate_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_chestplate_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_chestplate_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_chestplate_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_chestplate_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_chestplate_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/iron_chestplate"},"property":"minecraft:trim_material"}},"iron_door":{"model":{"type":"minecraft:model","model":"minecraft:item/iron_door"}},"iron_golem_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/iron_golem_spawn_egg"}},"iron_helmet":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/iron_helmet_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_helmet_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_helmet_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_helmet_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_helmet_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_helmet_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_helmet_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_helmet_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_helmet_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_helmet_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_helmet_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/iron_helmet"},"property":"minecraft:trim_material"}},"iron_hoe":{"model":{"type":"minecraft:model","model":"minecraft:item/iron_hoe"}},"iron_horse_armor":{"model":{"type":"minecraft:model","model":"minecraft:item/iron_horse_armor"}},"iron_ingot":{"model":{"type":"minecraft:model","model":"minecraft:item/iron_ingot"}},"iron_leggings":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/iron_leggings_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_leggings_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_leggings_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_leggings_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_leggings_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_leggings_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_leggings_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_leggings_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_leggings_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_leggings_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/iron_leggings_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/iron_leggings"},"property":"minecraft:trim_material"}},"iron_nugget":{"model":{"type":"minecraft:model","model":"minecraft:item/iron_nugget"}},"iron_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/iron_ore"}},"iron_pickaxe":{"model":{"type":"minecraft:model","model":"minecraft:item/iron_pickaxe"}},"iron_shovel":{"model":{"type":"minecraft:model","model":"minecraft:item/iron_shovel"}},"iron_sword":{"model":{"type":"minecraft:model","model":"minecraft:item/iron_sword"}},"iron_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/iron_trapdoor_bottom"}},"item_frame":{"model":{"type":"minecraft:model","model":"minecraft:item/item_frame"}},"jack_o_lantern":{"model":{"type":"minecraft:model","model":"minecraft:block/jack_o_lantern"}},"jigsaw":{"model":{"type":"minecraft:model","model":"minecraft:block/jigsaw"}},"jukebox":{"model":{"type":"minecraft:model","model":"minecraft:block/jukebox"}},"jungle_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/jungle_boat"}},"jungle_button":{"model":{"type":"minecraft:model","model":"minecraft:block/jungle_button_inventory"}},"jungle_chest_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/jungle_chest_boat"}},"jungle_door":{"model":{"type":"minecraft:model","model":"minecraft:item/jungle_door"}},"jungle_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/jungle_fence_inventory"}},"jungle_fence_gate":{"model":{"type":"minecraft:model","model":"minecraft:block/jungle_fence_gate"}},"jungle_hanging_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/jungle_hanging_sign"}},"jungle_leaves":{"model":{"type":"minecraft:model","model":"minecraft:block/jungle_leaves","tints":[{"type":"minecraft:constant","value":-12012264}]}},"jungle_log":{"model":{"type":"minecraft:model","model":"minecraft:block/jungle_log"}},"jungle_planks":{"model":{"type":"minecraft:model","model":"minecraft:block/jungle_planks"}},"jungle_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/jungle_pressure_plate"}},"jungle_sapling":{"model":{"type":"minecraft:model","model":"minecraft:item/jungle_sapling"}},"jungle_shelf":{"model":{"type":"minecraft:model","model":"minecraft:block/jungle_shelf_inventory"}},"jungle_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/jungle_sign"}},"jungle_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/jungle_slab"}},"jungle_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/jungle_stairs"}},"jungle_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/jungle_trapdoor_bottom"}},"jungle_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/jungle_wood"}},"kelp":{"model":{"type":"minecraft:model","model":"minecraft:item/kelp"}},"knowledge_book":{"model":{"type":"minecraft:model","model":"minecraft:item/knowledge_book"}},"ladder":{"model":{"type":"minecraft:model","model":"minecraft:item/ladder"}},"lantern":{"model":{"type":"minecraft:model","model":"minecraft:item/lantern"}},"lapis_block":{"model":{"type":"minecraft:model","model":"minecraft:block/lapis_block"}},"lapis_lazuli":{"model":{"type":"minecraft:model","model":"minecraft:item/lapis_lazuli"}},"lapis_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/lapis_ore"}},"large_amethyst_bud":{"model":{"type":"minecraft:model","model":"minecraft:item/large_amethyst_bud"}},"large_fern":{"model":{"type":"minecraft:model","model":"minecraft:item/large_fern","tints":[{"type":"minecraft:grass","downfall":1.0,"temperature":0.5}]}},"lava_bucket":{"model":{"type":"minecraft:model","model":"minecraft:item/lava_bucket"}},"lead":{"model":{"type":"minecraft:model","model":"minecraft:item/lead"}},"leaf_litter":{"model":{"type":"minecraft:model","model":"minecraft:item/leaf_litter"}},"leather":{"model":{"type":"minecraft:model","model":"minecraft:item/leather"}},"leather_boots":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/leather_boots_quartz_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_boots_iron_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_boots_netherite_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_boots_redstone_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_boots_copper_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_boots_gold_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_boots_emerald_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_boots_diamond_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_boots_lapis_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_boots_amethyst_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_boots_resin_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/leather_boots","tints":[{"type":"minecraft:dye","default":-6265536}]},"property":"minecraft:trim_material"}},"leather_chestplate":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/leather_chestplate_quartz_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_chestplate_iron_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_chestplate_netherite_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_chestplate_redstone_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_chestplate_copper_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_chestplate_gold_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_chestplate_emerald_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_chestplate_diamond_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_chestplate_lapis_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_chestplate_amethyst_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_chestplate_resin_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/leather_chestplate","tints":[{"type":"minecraft:dye","default":-6265536}]},"property":"minecraft:trim_material"}},"leather_helmet":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/leather_helmet_quartz_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_helmet_iron_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_helmet_netherite_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_helmet_redstone_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_helmet_copper_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_helmet_gold_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_helmet_emerald_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_helmet_diamond_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_helmet_lapis_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_helmet_amethyst_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_helmet_resin_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/leather_helmet","tints":[{"type":"minecraft:dye","default":-6265536}]},"property":"minecraft:trim_material"}},"leather_horse_armor":{"model":{"type":"minecraft:model","model":"minecraft:item/leather_horse_armor","tints":[{"type":"minecraft:dye","default":-6265536}]}},"leather_leggings":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/leather_leggings_quartz_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_leggings_iron_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_leggings_netherite_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_leggings_redstone_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_leggings_copper_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_leggings_gold_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_leggings_emerald_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_leggings_diamond_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_leggings_lapis_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_leggings_amethyst_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/leather_leggings_resin_trim","tints":[{"type":"minecraft:dye","default":-6265536}]},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/leather_leggings","tints":[{"type":"minecraft:dye","default":-6265536}]},"property":"minecraft:trim_material"}},"lectern":{"model":{"type":"minecraft:model","model":"minecraft:block/lectern"}},"lever":{"model":{"type":"minecraft:model","model":"minecraft:item/lever"}},"light":{"model":{"type":"minecraft:select","block_state_property":"level","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/light_00"},"when":"0"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_01"},"when":"1"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_02"},"when":"2"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_03"},"when":"3"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_04"},"when":"4"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_05"},"when":"5"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_06"},"when":"6"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_07"},"when":"7"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_08"},"when":"8"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_09"},"when":"9"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_10"},"when":"10"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_11"},"when":"11"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_12"},"when":"12"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_13"},"when":"13"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_14"},"when":"14"},{"model":{"type":"minecraft:model","model":"minecraft:item/light_15"},"when":"15"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/light"},"property":"minecraft:block_state"}},"light_blue_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"light_blue"}}},"light_blue_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/light_blue_bed","model":{"type":"minecraft:bed","texture":"minecraft:light_blue"}}},"light_blue_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/light_blue_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/light_blue_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/light_blue_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/light_blue_bundle"},"property":"minecraft:display_context"}},"light_blue_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/light_blue_candle"}},"light_blue_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/light_blue_carpet"}},"light_blue_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/light_blue_concrete"}},"light_blue_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/light_blue_concrete_powder"}},"light_blue_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/light_blue_dye"}},"light_blue_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/light_blue_glazed_terracotta"}},"light_blue_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/light_blue_harness"}},"light_blue_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/light_blue_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_light_blue"}}},"light_blue_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/light_blue_stained_glass"}},"light_blue_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/light_blue_stained_glass_pane"}},"light_blue_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/light_blue_terracotta"}},"light_blue_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/light_blue_wool"}},"light_gray_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"light_gray"}}},"light_gray_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/light_gray_bed","model":{"type":"minecraft:bed","texture":"minecraft:light_gray"}}},"light_gray_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/light_gray_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/light_gray_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/light_gray_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/light_gray_bundle"},"property":"minecraft:display_context"}},"light_gray_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/light_gray_candle"}},"light_gray_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/light_gray_carpet"}},"light_gray_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/light_gray_concrete"}},"light_gray_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/light_gray_concrete_powder"}},"light_gray_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/light_gray_dye"}},"light_gray_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/light_gray_glazed_terracotta"}},"light_gray_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/light_gray_harness"}},"light_gray_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/light_gray_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_light_gray"}}},"light_gray_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/light_gray_stained_glass"}},"light_gray_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/light_gray_stained_glass_pane"}},"light_gray_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/light_gray_terracotta"}},"light_gray_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/light_gray_wool"}},"light_weighted_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/light_weighted_pressure_plate"}},"lightning_rod":{"model":{"type":"minecraft:model","model":"minecraft:block/lightning_rod"}},"lilac":{"model":{"type":"minecraft:model","model":"minecraft:item/lilac"}},"lily_of_the_valley":{"model":{"type":"minecraft:model","model":"minecraft:item/lily_of_the_valley"}},"lily_pad":{"model":{"type":"minecraft:model","model":"minecraft:item/lily_pad","tints":[{"type":"minecraft:constant","value":-9321636}]}},"lime_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"lime"}}},"lime_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/lime_bed","model":{"type":"minecraft:bed","texture":"minecraft:lime"}}},"lime_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/lime_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/lime_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/lime_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/lime_bundle"},"property":"minecraft:display_context"}},"lime_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/lime_candle"}},"lime_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/lime_carpet"}},"lime_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/lime_concrete"}},"lime_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/lime_concrete_powder"}},"lime_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/lime_dye"}},"lime_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/lime_glazed_terracotta"}},"lime_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/lime_harness"}},"lime_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/lime_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_lime"}}},"lime_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/lime_stained_glass"}},"lime_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/lime_stained_glass_pane"}},"lime_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/lime_terracotta"}},"lime_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/lime_wool"}},"lingering_potion":{"model":{"type":"minecraft:model","model":"minecraft:item/lingering_potion","tints":[{"type":"minecraft:potion","default":-13083194}]}},"llama_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/llama_spawn_egg"}},"lodestone":{"model":{"type":"minecraft:model","model":"minecraft:block/lodestone"}},"loom":{"model":{"type":"minecraft:model","model":"minecraft:block/loom"}},"mace":{"model":{"type":"minecraft:model","model":"minecraft:item/mace"}},"magenta_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"magenta"}}},"magenta_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/magenta_bed","model":{"type":"minecraft:bed","texture":"minecraft:magenta"}}},"magenta_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/magenta_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/magenta_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/magenta_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/magenta_bundle"},"property":"minecraft:display_context"}},"magenta_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/magenta_candle"}},"magenta_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/magenta_carpet"}},"magenta_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/magenta_concrete"}},"magenta_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/magenta_concrete_powder"}},"magenta_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/magenta_dye"}},"magenta_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/magenta_glazed_terracotta"}},"magenta_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/magenta_harness"}},"magenta_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/magenta_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_magenta"}}},"magenta_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/magenta_stained_glass"}},"magenta_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/magenta_stained_glass_pane"}},"magenta_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/magenta_terracotta"}},"magenta_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/magenta_wool"}},"magma_block":{"model":{"type":"minecraft:model","model":"minecraft:block/magma_block"}},"magma_cream":{"model":{"type":"minecraft:model","model":"minecraft:item/magma_cream"}},"magma_cube_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/magma_cube_spawn_egg"}},"mangrove_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/mangrove_boat"}},"mangrove_button":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_button_inventory"}},"mangrove_chest_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/mangrove_chest_boat"}},"mangrove_door":{"model":{"type":"minecraft:model","model":"minecraft:item/mangrove_door"}},"mangrove_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_fence_inventory"}},"mangrove_fence_gate":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_fence_gate"}},"mangrove_hanging_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/mangrove_hanging_sign"}},"mangrove_leaves":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_leaves","tints":[{"type":"minecraft:constant","value":-7158200}]}},"mangrove_log":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_log"}},"mangrove_planks":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_planks"}},"mangrove_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_pressure_plate"}},"mangrove_propagule":{"model":{"type":"minecraft:model","model":"minecraft:item/mangrove_propagule"}},"mangrove_roots":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_roots"}},"mangrove_shelf":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_shelf_inventory"}},"mangrove_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/mangrove_sign"}},"mangrove_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_slab"}},"mangrove_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_stairs"}},"mangrove_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_trapdoor_bottom"}},"mangrove_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/mangrove_wood"}},"map":{"model":{"type":"minecraft:model","model":"minecraft:item/map"}},"medium_amethyst_bud":{"model":{"type":"minecraft:model","model":"minecraft:item/medium_amethyst_bud"}},"melon":{"model":{"type":"minecraft:model","model":"minecraft:block/melon"}},"melon_seeds":{"model":{"type":"minecraft:model","model":"minecraft:item/melon_seeds"}},"melon_slice":{"model":{"type":"minecraft:model","model":"minecraft:item/melon_slice"}},"milk_bucket":{"model":{"type":"minecraft:model","model":"minecraft:item/milk_bucket"}},"minecart":{"model":{"type":"minecraft:model","model":"minecraft:item/minecart"}},"miner_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/miner_pottery_sherd"}},"mojang_banner_pattern":{"model":{"type":"minecraft:model","model":"minecraft:item/mojang_banner_pattern"}},"mooshroom_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/mooshroom_spawn_egg"}},"moss_block":{"model":{"type":"minecraft:model","model":"minecraft:block/moss_block"}},"moss_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/moss_carpet"}},"mossy_cobblestone":{"model":{"type":"minecraft:model","model":"minecraft:block/mossy_cobblestone"}},"mossy_cobblestone_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/mossy_cobblestone_slab"}},"mossy_cobblestone_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/mossy_cobblestone_stairs"}},"mossy_cobblestone_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/mossy_cobblestone_wall_inventory"}},"mossy_stone_brick_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/mossy_stone_brick_slab"}},"mossy_stone_brick_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/mossy_stone_brick_stairs"}},"mossy_stone_brick_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/mossy_stone_brick_wall_inventory"}},"mossy_stone_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/mossy_stone_bricks"}},"mourner_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/mourner_pottery_sherd"}},"mud":{"model":{"type":"minecraft:model","model":"minecraft:block/mud"}},"mud_brick_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/mud_brick_slab"}},"mud_brick_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/mud_brick_stairs"}},"mud_brick_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/mud_brick_wall_inventory"}},"mud_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/mud_bricks"}},"muddy_mangrove_roots":{"model":{"type":"minecraft:model","model":"minecraft:block/muddy_mangrove_roots"}},"mule_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/mule_spawn_egg"}},"mushroom_stem":{"model":{"type":"minecraft:model","model":"minecraft:block/mushroom_stem_inventory"}},"mushroom_stew":{"model":{"type":"minecraft:model","model":"minecraft:item/mushroom_stew"}},"music_disc_11":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_11"}},"music_disc_13":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_13"}},"music_disc_5":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_5"}},"music_disc_blocks":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_blocks"}},"music_disc_cat":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_cat"}},"music_disc_chirp":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_chirp"}},"music_disc_creator":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_creator"}},"music_disc_creator_music_box":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_creator_music_box"}},"music_disc_far":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_far"}},"music_disc_lava_chicken":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_lava_chicken"}},"music_disc_mall":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_mall"}},"music_disc_mellohi":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_mellohi"}},"music_disc_otherside":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_otherside"}},"music_disc_pigstep":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_pigstep"}},"music_disc_precipice":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_precipice"}},"music_disc_relic":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_relic"}},"music_disc_stal":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_stal"}},"music_disc_strad":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_strad"}},"music_disc_tears":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_tears"}},"music_disc_wait":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_wait"}},"music_disc_ward":{"model":{"type":"minecraft:model","model":"minecraft:item/music_disc_ward"}},"mutton":{"model":{"type":"minecraft:model","model":"minecraft:item/mutton"}},"mycelium":{"model":{"type":"minecraft:model","model":"minecraft:block/mycelium"}},"name_tag":{"model":{"type":"minecraft:model","model":"minecraft:item/name_tag"}},"nautilus_shell":{"model":{"type":"minecraft:model","model":"minecraft:item/nautilus_shell"}},"nether_brick":{"model":{"type":"minecraft:model","model":"minecraft:item/nether_brick"}},"nether_brick_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/nether_brick_fence_inventory"}},"nether_brick_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/nether_brick_slab"}},"nether_brick_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/nether_brick_stairs"}},"nether_brick_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/nether_brick_wall_inventory"}},"nether_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/nether_bricks"}},"nether_gold_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/nether_gold_ore"}},"nether_quartz_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/nether_quartz_ore"}},"nether_sprouts":{"model":{"type":"minecraft:model","model":"minecraft:item/nether_sprouts"}},"nether_star":{"model":{"type":"minecraft:model","model":"minecraft:item/nether_star"}},"nether_wart":{"model":{"type":"minecraft:model","model":"minecraft:item/nether_wart"}},"nether_wart_block":{"model":{"type":"minecraft:model","model":"minecraft:block/nether_wart_block"}},"netherite_axe":{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_axe"}},"netherite_block":{"model":{"type":"minecraft:model","model":"minecraft:block/netherite_block"}},"netherite_boots":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_boots_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_boots_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_boots_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_boots_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_boots_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_boots_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_boots_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_boots_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_boots_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_boots_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_boots_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/netherite_boots"},"property":"minecraft:trim_material"}},"netherite_chestplate":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_chestplate_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_chestplate_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_chestplate_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_chestplate_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_chestplate_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_chestplate_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_chestplate_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_chestplate_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_chestplate_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_chestplate_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_chestplate_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/netherite_chestplate"},"property":"minecraft:trim_material"}},"netherite_helmet":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_helmet_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_helmet_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_helmet_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_helmet_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_helmet_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_helmet_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_helmet_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_helmet_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_helmet_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_helmet_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_helmet_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/netherite_helmet"},"property":"minecraft:trim_material"}},"netherite_hoe":{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_hoe"}},"netherite_ingot":{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_ingot"}},"netherite_leggings":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_leggings_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_leggings_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_leggings_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_leggings_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_leggings_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_leggings_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_leggings_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_leggings_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_leggings_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_leggings_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_leggings_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/netherite_leggings"},"property":"minecraft:trim_material"}},"netherite_pickaxe":{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_pickaxe"}},"netherite_scrap":{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_scrap"}},"netherite_shovel":{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_shovel"}},"netherite_sword":{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_sword"}},"netherite_upgrade_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/netherite_upgrade_smithing_template"}},"netherrack":{"model":{"type":"minecraft:model","model":"minecraft:block/netherrack"}},"note_block":{"model":{"type":"minecraft:model","model":"minecraft:block/note_block"}},"oak_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/oak_boat"}},"oak_button":{"model":{"type":"minecraft:model","model":"minecraft:block/oak_button_inventory"}},"oak_chest_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/oak_chest_boat"}},"oak_door":{"model":{"type":"minecraft:model","model":"minecraft:item/oak_door"}},"oak_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/oak_fence_inventory"}},"oak_fence_gate":{"model":{"type":"minecraft:model","model":"minecraft:block/oak_fence_gate"}},"oak_hanging_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/oak_hanging_sign"}},"oak_leaves":{"model":{"type":"minecraft:model","model":"minecraft:block/oak_leaves","tints":[{"type":"minecraft:constant","value":-12012264}]}},"oak_log":{"model":{"type":"minecraft:model","model":"minecraft:block/oak_log"}},"oak_planks":{"model":{"type":"minecraft:model","model":"minecraft:block/oak_planks"}},"oak_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/oak_pressure_plate"}},"oak_sapling":{"model":{"type":"minecraft:model","model":"minecraft:item/oak_sapling"}},"oak_shelf":{"model":{"type":"minecraft:model","model":"minecraft:block/oak_shelf_inventory"}},"oak_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/oak_sign"}},"oak_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/oak_slab"}},"oak_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/oak_stairs"}},"oak_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/oak_trapdoor_bottom"}},"oak_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/oak_wood"}},"observer":{"model":{"type":"minecraft:model","model":"minecraft:block/observer"}},"obsidian":{"model":{"type":"minecraft:model","model":"minecraft:block/obsidian"}},"ocelot_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/ocelot_spawn_egg"}},"ochre_froglight":{"model":{"type":"minecraft:model","model":"minecraft:block/ochre_froglight"}},"ominous_bottle":{"model":{"type":"minecraft:model","model":"minecraft:item/ominous_bottle"}},"ominous_trial_key":{"model":{"type":"minecraft:model","model":"minecraft:item/ominous_trial_key"}},"open_eyeblossom":{"model":{"type":"minecraft:model","model":"minecraft:item/open_eyeblossom"}},"orange_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"orange"}}},"orange_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/orange_bed","model":{"type":"minecraft:bed","texture":"minecraft:orange"}}},"orange_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/orange_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/orange_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/orange_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/orange_bundle"},"property":"minecraft:display_context"}},"orange_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/orange_candle"}},"orange_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/orange_carpet"}},"orange_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/orange_concrete"}},"orange_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/orange_concrete_powder"}},"orange_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/orange_dye"}},"orange_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/orange_glazed_terracotta"}},"orange_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/orange_harness"}},"orange_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/orange_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_orange"}}},"orange_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/orange_stained_glass"}},"orange_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/orange_stained_glass_pane"}},"orange_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/orange_terracotta"}},"orange_tulip":{"model":{"type":"minecraft:model","model":"minecraft:item/orange_tulip"}},"orange_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/orange_wool"}},"oxeye_daisy":{"model":{"type":"minecraft:model","model":"minecraft:item/oxeye_daisy"}},"oxidized_chiseled_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_chiseled_copper"}},"oxidized_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_copper"}},"oxidized_copper_bars":{"model":{"type":"minecraft:model","model":"minecraft:item/oxidized_copper_bars"}},"oxidized_copper_bulb":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_copper_bulb"}},"oxidized_copper_chain":{"model":{"type":"minecraft:model","model":"minecraft:item/oxidized_copper_chain"}},"oxidized_copper_chest":{"model":{"type":"minecraft:special","base":"minecraft:item/oxidized_copper_chest","model":{"type":"minecraft:chest","texture":"minecraft:copper_oxidized"}}},"oxidized_copper_door":{"model":{"type":"minecraft:model","model":"minecraft:item/oxidized_copper_door"}},"oxidized_copper_golem_statue":{"model":{"type":"minecraft:select","block_state_property":"copper_golem_pose","cases":[{"model":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"sitting","texture":"minecraft:textures/entity/copper_golem/oxidized_copper_golem.png"}},"when":"sitting"},{"model":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"running","texture":"minecraft:textures/entity/copper_golem/oxidized_copper_golem.png"}},"when":"running"},{"model":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"star","texture":"minecraft:textures/entity/copper_golem/oxidized_copper_golem.png"}},"when":"star"}],"fallback":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"standing","texture":"minecraft:textures/entity/copper_golem/oxidized_copper_golem.png"}},"property":"minecraft:block_state"}},"oxidized_copper_grate":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_copper_grate"}},"oxidized_copper_lantern":{"model":{"type":"minecraft:model","model":"minecraft:item/oxidized_copper_lantern"}},"oxidized_copper_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_copper_trapdoor_bottom"}},"oxidized_cut_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_cut_copper"}},"oxidized_cut_copper_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_cut_copper_slab"}},"oxidized_cut_copper_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_cut_copper_stairs"}},"oxidized_lightning_rod":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_lightning_rod"}},"packed_ice":{"model":{"type":"minecraft:model","model":"minecraft:block/packed_ice"}},"packed_mud":{"model":{"type":"minecraft:model","model":"minecraft:block/packed_mud"}},"painting":{"model":{"type":"minecraft:model","model":"minecraft:item/painting"}},"pale_hanging_moss":{"model":{"type":"minecraft:model","model":"minecraft:item/pale_hanging_moss"}},"pale_moss_block":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_moss_block"}},"pale_moss_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_moss_carpet"}},"pale_oak_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/pale_oak_boat"}},"pale_oak_button":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_oak_button_inventory"}},"pale_oak_chest_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/pale_oak_chest_boat"}},"pale_oak_door":{"model":{"type":"minecraft:model","model":"minecraft:item/pale_oak_door"}},"pale_oak_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_oak_fence_inventory"}},"pale_oak_fence_gate":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_oak_fence_gate"}},"pale_oak_hanging_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/pale_oak_hanging_sign"}},"pale_oak_leaves":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_oak_leaves"}},"pale_oak_log":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_oak_log"}},"pale_oak_planks":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_oak_planks"}},"pale_oak_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_oak_pressure_plate"}},"pale_oak_sapling":{"model":{"type":"minecraft:model","model":"minecraft:item/pale_oak_sapling"}},"pale_oak_shelf":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_oak_shelf_inventory"}},"pale_oak_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/pale_oak_sign"}},"pale_oak_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_oak_slab"}},"pale_oak_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_oak_stairs"}},"pale_oak_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_oak_trapdoor_bottom"}},"pale_oak_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/pale_oak_wood"}},"panda_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/panda_spawn_egg"}},"paper":{"model":{"type":"minecraft:model","model":"minecraft:item/paper"}},"parrot_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/parrot_spawn_egg"}},"pearlescent_froglight":{"model":{"type":"minecraft:model","model":"minecraft:block/pearlescent_froglight"}},"peony":{"model":{"type":"minecraft:model","model":"minecraft:item/peony"}},"petrified_oak_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/petrified_oak_slab"}},"phantom_membrane":{"model":{"type":"minecraft:model","model":"minecraft:item/phantom_membrane"}},"phantom_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/phantom_spawn_egg"}},"pig_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/pig_spawn_egg"}},"piglin_banner_pattern":{"model":{"type":"minecraft:model","model":"minecraft:item/piglin_banner_pattern"}},"piglin_brute_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/piglin_brute_spawn_egg"}},"piglin_head":{"model":{"type":"minecraft:special","base":"minecraft:item/template_skull","model":{"type":"minecraft:head","kind":"piglin"}}},"piglin_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/piglin_spawn_egg"}},"pillager_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/pillager_spawn_egg"}},"pink_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"pink"}}},"pink_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/pink_bed","model":{"type":"minecraft:bed","texture":"minecraft:pink"}}},"pink_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/pink_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/pink_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/pink_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/pink_bundle"},"property":"minecraft:display_context"}},"pink_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/pink_candle"}},"pink_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/pink_carpet"}},"pink_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/pink_concrete"}},"pink_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/pink_concrete_powder"}},"pink_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/pink_dye"}},"pink_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/pink_glazed_terracotta"}},"pink_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/pink_harness"}},"pink_petals":{"model":{"type":"minecraft:model","model":"minecraft:item/pink_petals"}},"pink_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/pink_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_pink"}}},"pink_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/pink_stained_glass"}},"pink_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/pink_stained_glass_pane"}},"pink_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/pink_terracotta"}},"pink_tulip":{"model":{"type":"minecraft:model","model":"minecraft:item/pink_tulip"}},"pink_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/pink_wool"}},"piston":{"model":{"type":"minecraft:model","model":"minecraft:block/piston_inventory"}},"pitcher_plant":{"model":{"type":"minecraft:model","model":"minecraft:item/pitcher_plant"}},"pitcher_pod":{"model":{"type":"minecraft:model","model":"minecraft:item/pitcher_pod"}},"player_head":{"model":{"type":"minecraft:special","base":"minecraft:item/template_skull","model":{"type":"minecraft:player_head"}}},"plenty_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/plenty_pottery_sherd"}},"podzol":{"model":{"type":"minecraft:model","model":"minecraft:block/podzol"}},"pointed_dripstone":{"model":{"type":"minecraft:model","model":"minecraft:item/pointed_dripstone"}},"poisonous_potato":{"model":{"type":"minecraft:model","model":"minecraft:item/poisonous_potato"}},"polar_bear_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/polar_bear_spawn_egg"}},"polished_andesite":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_andesite"}},"polished_andesite_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_andesite_slab"}},"polished_andesite_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_andesite_stairs"}},"polished_basalt":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_basalt"}},"polished_blackstone":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_blackstone"}},"polished_blackstone_brick_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_blackstone_brick_slab"}},"polished_blackstone_brick_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_blackstone_brick_stairs"}},"polished_blackstone_brick_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_blackstone_brick_wall_inventory"}},"polished_blackstone_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_blackstone_bricks"}},"polished_blackstone_button":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_blackstone_button_inventory"}},"polished_blackstone_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_blackstone_pressure_plate"}},"polished_blackstone_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_blackstone_slab"}},"polished_blackstone_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_blackstone_stairs"}},"polished_blackstone_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_blackstone_wall_inventory"}},"polished_deepslate":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_deepslate"}},"polished_deepslate_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_deepslate_slab"}},"polished_deepslate_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_deepslate_stairs"}},"polished_deepslate_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_deepslate_wall_inventory"}},"polished_diorite":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_diorite"}},"polished_diorite_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_diorite_slab"}},"polished_diorite_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_diorite_stairs"}},"polished_granite":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_granite"}},"polished_granite_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_granite_slab"}},"polished_granite_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_granite_stairs"}},"polished_tuff":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_tuff"}},"polished_tuff_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_tuff_slab"}},"polished_tuff_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_tuff_stairs"}},"polished_tuff_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/polished_tuff_wall_inventory"}},"popped_chorus_fruit":{"model":{"type":"minecraft:model","model":"minecraft:item/popped_chorus_fruit"}},"poppy":{"model":{"type":"minecraft:model","model":"minecraft:item/poppy"}},"porkchop":{"model":{"type":"minecraft:model","model":"minecraft:item/porkchop"}},"potato":{"model":{"type":"minecraft:model","model":"minecraft:item/potato"}},"potion":{"model":{"type":"minecraft:model","model":"minecraft:item/potion","tints":[{"type":"minecraft:potion","default":-13083194}]}},"powder_snow_bucket":{"model":{"type":"minecraft:model","model":"minecraft:item/powder_snow_bucket"}},"powered_rail":{"model":{"type":"minecraft:model","model":"minecraft:item/powered_rail"}},"prismarine":{"model":{"type":"minecraft:model","model":"minecraft:block/prismarine"}},"prismarine_brick_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/prismarine_brick_slab"}},"prismarine_brick_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/prismarine_brick_stairs"}},"prismarine_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/prismarine_bricks"}},"prismarine_crystals":{"model":{"type":"minecraft:model","model":"minecraft:item/prismarine_crystals"}},"prismarine_shard":{"model":{"type":"minecraft:model","model":"minecraft:item/prismarine_shard"}},"prismarine_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/prismarine_slab"}},"prismarine_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/prismarine_stairs"}},"prismarine_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/prismarine_wall_inventory"}},"prize_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/prize_pottery_sherd"}},"pufferfish":{"model":{"type":"minecraft:model","model":"minecraft:item/pufferfish"}},"pufferfish_bucket":{"model":{"type":"minecraft:model","model":"minecraft:item/pufferfish_bucket"}},"pufferfish_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/pufferfish_spawn_egg"}},"pumpkin":{"model":{"type":"minecraft:model","model":"minecraft:block/pumpkin"}},"pumpkin_pie":{"model":{"type":"minecraft:model","model":"minecraft:item/pumpkin_pie"}},"pumpkin_seeds":{"model":{"type":"minecraft:model","model":"minecraft:item/pumpkin_seeds"}},"purple_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"purple"}}},"purple_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/purple_bed","model":{"type":"minecraft:bed","texture":"minecraft:purple"}}},"purple_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/purple_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/purple_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/purple_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/purple_bundle"},"property":"minecraft:display_context"}},"purple_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/purple_candle"}},"purple_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/purple_carpet"}},"purple_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/purple_concrete"}},"purple_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/purple_concrete_powder"}},"purple_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/purple_dye"}},"purple_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/purple_glazed_terracotta"}},"purple_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/purple_harness"}},"purple_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/purple_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_purple"}}},"purple_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/purple_stained_glass"}},"purple_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/purple_stained_glass_pane"}},"purple_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/purple_terracotta"}},"purple_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/purple_wool"}},"purpur_block":{"model":{"type":"minecraft:model","model":"minecraft:block/purpur_block"}},"purpur_pillar":{"model":{"type":"minecraft:model","model":"minecraft:block/purpur_pillar"}},"purpur_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/purpur_slab"}},"purpur_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/purpur_stairs"}},"quartz":{"model":{"type":"minecraft:model","model":"minecraft:item/quartz"}},"quartz_block":{"model":{"type":"minecraft:model","model":"minecraft:block/quartz_block"}},"quartz_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/quartz_bricks"}},"quartz_pillar":{"model":{"type":"minecraft:model","model":"minecraft:block/quartz_pillar"}},"quartz_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/quartz_slab"}},"quartz_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/quartz_stairs"}},"rabbit":{"model":{"type":"minecraft:model","model":"minecraft:item/rabbit"}},"rabbit_foot":{"model":{"type":"minecraft:model","model":"minecraft:item/rabbit_foot"}},"rabbit_hide":{"model":{"type":"minecraft:model","model":"minecraft:item/rabbit_hide"}},"rabbit_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/rabbit_spawn_egg"}},"rabbit_stew":{"model":{"type":"minecraft:model","model":"minecraft:item/rabbit_stew"}},"rail":{"model":{"type":"minecraft:model","model":"minecraft:item/rail"}},"raiser_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/raiser_armor_trim_smithing_template"}},"ravager_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/ravager_spawn_egg"}},"raw_copper":{"model":{"type":"minecraft:model","model":"minecraft:item/raw_copper"}},"raw_copper_block":{"model":{"type":"minecraft:model","model":"minecraft:block/raw_copper_block"}},"raw_gold":{"model":{"type":"minecraft:model","model":"minecraft:item/raw_gold"}},"raw_gold_block":{"model":{"type":"minecraft:model","model":"minecraft:block/raw_gold_block"}},"raw_iron":{"model":{"type":"minecraft:model","model":"minecraft:item/raw_iron"}},"raw_iron_block":{"model":{"type":"minecraft:model","model":"minecraft:block/raw_iron_block"}},"recovery_compass":{"model":{"type":"minecraft:range_dispatch","entries":[{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_16"},"threshold":0.0},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_17"},"threshold":0.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_18"},"threshold":1.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_19"},"threshold":2.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_20"},"threshold":3.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_21"},"threshold":4.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_22"},"threshold":5.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_23"},"threshold":6.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_24"},"threshold":7.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_25"},"threshold":8.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_26"},"threshold":9.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_27"},"threshold":10.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_28"},"threshold":11.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_29"},"threshold":12.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_30"},"threshold":13.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_31"},"threshold":14.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_00"},"threshold":15.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_01"},"threshold":16.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_02"},"threshold":17.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_03"},"threshold":18.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_04"},"threshold":19.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_05"},"threshold":20.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_06"},"threshold":21.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_07"},"threshold":22.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_08"},"threshold":23.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_09"},"threshold":24.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_10"},"threshold":25.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_11"},"threshold":26.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_12"},"threshold":27.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_13"},"threshold":28.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_14"},"threshold":29.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_15"},"threshold":30.5},{"model":{"type":"minecraft:model","model":"minecraft:item/recovery_compass_16"},"threshold":31.5}],"property":"minecraft:compass","scale":32.0,"target":"recovery"}},"red_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"red"}}},"red_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/red_bed","model":{"type":"minecraft:bed","texture":"minecraft:red"}}},"red_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/red_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/red_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/red_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/red_bundle"},"property":"minecraft:display_context"}},"red_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/red_candle"}},"red_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/red_carpet"}},"red_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/red_concrete"}},"red_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/red_concrete_powder"}},"red_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/red_dye"}},"red_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/red_glazed_terracotta"}},"red_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/red_harness"}},"red_mushroom":{"model":{"type":"minecraft:model","model":"minecraft:item/red_mushroom"}},"red_mushroom_block":{"model":{"type":"minecraft:model","model":"minecraft:block/red_mushroom_block_inventory"}},"red_nether_brick_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/red_nether_brick_slab"}},"red_nether_brick_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/red_nether_brick_stairs"}},"red_nether_brick_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/red_nether_brick_wall_inventory"}},"red_nether_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/red_nether_bricks"}},"red_sand":{"model":{"type":"minecraft:model","model":"minecraft:block/red_sand"}},"red_sandstone":{"model":{"type":"minecraft:model","model":"minecraft:block/red_sandstone"}},"red_sandstone_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/red_sandstone_slab"}},"red_sandstone_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/red_sandstone_stairs"}},"red_sandstone_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/red_sandstone_wall_inventory"}},"red_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/red_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_red"}}},"red_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/red_stained_glass"}},"red_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/red_stained_glass_pane"}},"red_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/red_terracotta"}},"red_tulip":{"model":{"type":"minecraft:model","model":"minecraft:item/red_tulip"}},"red_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/red_wool"}},"redstone":{"model":{"type":"minecraft:model","model":"minecraft:item/redstone"}},"redstone_block":{"model":{"type":"minecraft:model","model":"minecraft:block/redstone_block"}},"redstone_lamp":{"model":{"type":"minecraft:model","model":"minecraft:block/redstone_lamp"}},"redstone_ore":{"model":{"type":"minecraft:model","model":"minecraft:block/redstone_ore"}},"redstone_torch":{"model":{"type":"minecraft:model","model":"minecraft:item/redstone_torch"}},"reinforced_deepslate":{"model":{"type":"minecraft:model","model":"minecraft:block/reinforced_deepslate"}},"repeater":{"model":{"type":"minecraft:model","model":"minecraft:item/repeater"}},"repeating_command_block":{"model":{"type":"minecraft:model","model":"minecraft:block/repeating_command_block"}},"resin_block":{"model":{"type":"minecraft:model","model":"minecraft:block/resin_block"}},"resin_brick":{"model":{"type":"minecraft:model","model":"minecraft:item/resin_brick"}},"resin_brick_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/resin_brick_slab"}},"resin_brick_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/resin_brick_stairs"}},"resin_brick_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/resin_brick_wall_inventory"}},"resin_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/resin_bricks"}},"resin_clump":{"model":{"type":"minecraft:model","model":"minecraft:item/resin_clump"}},"respawn_anchor":{"model":{"type":"minecraft:model","model":"minecraft:block/respawn_anchor_0"}},"rib_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/rib_armor_trim_smithing_template"}},"rooted_dirt":{"model":{"type":"minecraft:model","model":"minecraft:block/rooted_dirt"}},"rose_bush":{"model":{"type":"minecraft:model","model":"minecraft:item/rose_bush"}},"rotten_flesh":{"model":{"type":"minecraft:model","model":"minecraft:item/rotten_flesh"}},"saddle":{"model":{"type":"minecraft:model","model":"minecraft:item/saddle"}},"salmon":{"model":{"type":"minecraft:model","model":"minecraft:item/salmon"}},"salmon_bucket":{"model":{"type":"minecraft:model","model":"minecraft:item/salmon_bucket"}},"salmon_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/salmon_spawn_egg"}},"sand":{"model":{"type":"minecraft:model","model":"minecraft:block/sand"}},"sandstone":{"model":{"type":"minecraft:model","model":"minecraft:block/sandstone"}},"sandstone_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/sandstone_slab"}},"sandstone_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/sandstone_stairs"}},"sandstone_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/sandstone_wall_inventory"}},"scaffolding":{"model":{"type":"minecraft:model","model":"minecraft:block/scaffolding_stable"}},"scrape_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/scrape_pottery_sherd"}},"sculk":{"model":{"type":"minecraft:model","model":"minecraft:block/sculk"}},"sculk_catalyst":{"model":{"type":"minecraft:model","model":"minecraft:block/sculk_catalyst"}},"sculk_sensor":{"model":{"type":"minecraft:model","model":"minecraft:block/sculk_sensor_inactive"}},"sculk_shrieker":{"model":{"type":"minecraft:model","model":"minecraft:block/sculk_shrieker"}},"sculk_vein":{"model":{"type":"minecraft:model","model":"minecraft:item/sculk_vein"}},"sea_lantern":{"model":{"type":"minecraft:model","model":"minecraft:block/sea_lantern"}},"sea_pickle":{"model":{"type":"minecraft:model","model":"minecraft:item/sea_pickle"}},"seagrass":{"model":{"type":"minecraft:model","model":"minecraft:item/seagrass"}},"sentry_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/sentry_armor_trim_smithing_template"}},"shaper_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/shaper_armor_trim_smithing_template"}},"sheaf_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/sheaf_pottery_sherd"}},"shears":{"model":{"type":"minecraft:model","model":"minecraft:item/shears"}},"sheep_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/sheep_spawn_egg"}},"shelter_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/shelter_pottery_sherd"}},"shield":{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:special","base":"minecraft:item/shield","model":{"type":"minecraft:shield"}},"on_true":{"type":"minecraft:special","base":"minecraft:item/shield_blocking","model":{"type":"minecraft:shield"}},"property":"minecraft:using_item"}},"short_dry_grass":{"model":{"type":"minecraft:model","model":"minecraft:item/short_dry_grass"}},"short_grass":{"model":{"type":"minecraft:model","model":"minecraft:item/short_grass","tints":[{"type":"minecraft:grass","downfall":1.0,"temperature":0.5}]}},"shroomlight":{"model":{"type":"minecraft:model","model":"minecraft:block/shroomlight"}},"shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker"}}},"shulker_shell":{"model":{"type":"minecraft:model","model":"minecraft:item/shulker_shell"}},"shulker_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/shulker_spawn_egg"}},"silence_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/silence_armor_trim_smithing_template"}},"silverfish_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/silverfish_spawn_egg"}},"skeleton_horse_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/skeleton_horse_spawn_egg"}},"skeleton_skull":{"model":{"type":"minecraft:special","base":"minecraft:item/template_skull","model":{"type":"minecraft:head","kind":"skeleton"}}},"skeleton_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/skeleton_spawn_egg"}},"skull_banner_pattern":{"model":{"type":"minecraft:model","model":"minecraft:item/skull_banner_pattern"}},"skull_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/skull_pottery_sherd"}},"slime_ball":{"model":{"type":"minecraft:model","model":"minecraft:item/slime_ball"}},"slime_block":{"model":{"type":"minecraft:model","model":"minecraft:block/slime_block"}},"slime_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/slime_spawn_egg"}},"small_amethyst_bud":{"model":{"type":"minecraft:model","model":"minecraft:item/small_amethyst_bud"}},"small_dripleaf":{"model":{"type":"minecraft:model","model":"minecraft:item/small_dripleaf"}},"smithing_table":{"model":{"type":"minecraft:model","model":"minecraft:block/smithing_table"}},"smoker":{"model":{"type":"minecraft:model","model":"minecraft:block/smoker"}},"smooth_basalt":{"model":{"type":"minecraft:model","model":"minecraft:block/smooth_basalt"}},"smooth_quartz":{"model":{"type":"minecraft:model","model":"minecraft:block/smooth_quartz"}},"smooth_quartz_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/smooth_quartz_slab"}},"smooth_quartz_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/smooth_quartz_stairs"}},"smooth_red_sandstone":{"model":{"type":"minecraft:model","model":"minecraft:block/smooth_red_sandstone"}},"smooth_red_sandstone_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/smooth_red_sandstone_slab"}},"smooth_red_sandstone_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/smooth_red_sandstone_stairs"}},"smooth_sandstone":{"model":{"type":"minecraft:model","model":"minecraft:block/smooth_sandstone"}},"smooth_sandstone_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/smooth_sandstone_slab"}},"smooth_sandstone_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/smooth_sandstone_stairs"}},"smooth_stone":{"model":{"type":"minecraft:model","model":"minecraft:block/smooth_stone"}},"smooth_stone_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/smooth_stone_slab"}},"sniffer_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/sniffer_egg"}},"sniffer_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/sniffer_spawn_egg"}},"snort_pottery_sherd":{"model":{"type":"minecraft:model","model":"minecraft:item/snort_pottery_sherd"}},"snout_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/snout_armor_trim_smithing_template"}},"snow":{"model":{"type":"minecraft:model","model":"minecraft:block/snow_height2"}},"snow_block":{"model":{"type":"minecraft:model","model":"minecraft:block/snow_block"}},"snow_golem_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/snow_golem_spawn_egg"}},"snowball":{"model":{"type":"minecraft:model","model":"minecraft:item/snowball"}},"soul_campfire":{"model":{"type":"minecraft:model","model":"minecraft:item/soul_campfire"}},"soul_lantern":{"model":{"type":"minecraft:model","model":"minecraft:item/soul_lantern"}},"soul_sand":{"model":{"type":"minecraft:model","model":"minecraft:block/soul_sand"}},"soul_soil":{"model":{"type":"minecraft:model","model":"minecraft:block/soul_soil"}},"soul_torch":{"model":{"type":"minecraft:model","model":"minecraft:item/soul_torch"}},"spawner":{"model":{"type":"minecraft:model","model":"minecraft:block/spawner"}},"spectral_arrow":{"model":{"type":"minecraft:model","model":"minecraft:item/spectral_arrow"}},"spider_eye":{"model":{"type":"minecraft:model","model":"minecraft:item/spider_eye"}},"spider_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/spider_spawn_egg"}},"spire_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/spire_armor_trim_smithing_template"}},"splash_potion":{"model":{"type":"minecraft:model","model":"minecraft:item/splash_potion","tints":[{"type":"minecraft:potion","default":-13083194}]}},"sponge":{"model":{"type":"minecraft:model","model":"minecraft:block/sponge"}},"spore_blossom":{"model":{"type":"minecraft:model","model":"minecraft:block/spore_blossom"}},"spruce_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/spruce_boat"}},"spruce_button":{"model":{"type":"minecraft:model","model":"minecraft:block/spruce_button_inventory"}},"spruce_chest_boat":{"model":{"type":"minecraft:model","model":"minecraft:item/spruce_chest_boat"}},"spruce_door":{"model":{"type":"minecraft:model","model":"minecraft:item/spruce_door"}},"spruce_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/spruce_fence_inventory"}},"spruce_fence_gate":{"model":{"type":"minecraft:model","model":"minecraft:block/spruce_fence_gate"}},"spruce_hanging_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/spruce_hanging_sign"}},"spruce_leaves":{"model":{"type":"minecraft:model","model":"minecraft:block/spruce_leaves","tints":[{"type":"minecraft:constant","value":-10380959}]}},"spruce_log":{"model":{"type":"minecraft:model","model":"minecraft:block/spruce_log"}},"spruce_planks":{"model":{"type":"minecraft:model","model":"minecraft:block/spruce_planks"}},"spruce_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/spruce_pressure_plate"}},"spruce_sapling":{"model":{"type":"minecraft:model","model":"minecraft:item/spruce_sapling"}},"spruce_shelf":{"model":{"type":"minecraft:model","model":"minecraft:block/spruce_shelf_inventory"}},"spruce_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/spruce_sign"}},"spruce_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/spruce_slab"}},"spruce_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/spruce_stairs"}},"spruce_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/spruce_trapdoor_bottom"}},"spruce_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/spruce_wood"}},"spyglass":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/spyglass"},"when":["gui","ground","fixed","on_shelf"]}],"fallback":{"type":"minecraft:model","model":"minecraft:item/spyglass_in_hand"},"property":"minecraft:display_context"}},"squid_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/squid_spawn_egg"}},"stick":{"model":{"type":"minecraft:model","model":"minecraft:item/stick"}},"sticky_piston":{"model":{"type":"minecraft:model","model":"minecraft:block/sticky_piston_inventory"}},"stone":{"model":{"type":"minecraft:model","model":"minecraft:block/stone"}},"stone_axe":{"model":{"type":"minecraft:model","model":"minecraft:item/stone_axe"}},"stone_brick_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/stone_brick_slab"}},"stone_brick_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/stone_brick_stairs"}},"stone_brick_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/stone_brick_wall_inventory"}},"stone_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/stone_bricks"}},"stone_button":{"model":{"type":"minecraft:model","model":"minecraft:block/stone_button_inventory"}},"stone_hoe":{"model":{"type":"minecraft:model","model":"minecraft:item/stone_hoe"}},"stone_pickaxe":{"model":{"type":"minecraft:model","model":"minecraft:item/stone_pickaxe"}},"stone_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/stone_pressure_plate"}},"stone_shovel":{"model":{"type":"minecraft:model","model":"minecraft:item/stone_shovel"}},"stone_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/stone_slab"}},"stone_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/stone_stairs"}},"stone_sword":{"model":{"type":"minecraft:model","model":"minecraft:item/stone_sword"}},"stonecutter":{"model":{"type":"minecraft:model","model":"minecraft:block/stonecutter"}},"stray_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/stray_spawn_egg"}},"strider_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/strider_spawn_egg"}},"string":{"model":{"type":"minecraft:model","model":"minecraft:item/string"}},"stripped_acacia_log":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_acacia_log"}},"stripped_acacia_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_acacia_wood"}},"stripped_bamboo_block":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_bamboo_block"}},"stripped_birch_log":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_birch_log"}},"stripped_birch_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_birch_wood"}},"stripped_cherry_log":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_cherry_log"}},"stripped_cherry_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_cherry_wood"}},"stripped_crimson_hyphae":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_crimson_hyphae"}},"stripped_crimson_stem":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_crimson_stem"}},"stripped_dark_oak_log":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_dark_oak_log"}},"stripped_dark_oak_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_dark_oak_wood"}},"stripped_jungle_log":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_jungle_log"}},"stripped_jungle_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_jungle_wood"}},"stripped_mangrove_log":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_mangrove_log"}},"stripped_mangrove_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_mangrove_wood"}},"stripped_oak_log":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_oak_log"}},"stripped_oak_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_oak_wood"}},"stripped_pale_oak_log":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_pale_oak_log"}},"stripped_pale_oak_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_pale_oak_wood"}},"stripped_spruce_log":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_spruce_log"}},"stripped_spruce_wood":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_spruce_wood"}},"stripped_warped_hyphae":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_warped_hyphae"}},"stripped_warped_stem":{"model":{"type":"minecraft:model","model":"minecraft:block/stripped_warped_stem"}},"structure_block":{"model":{"type":"minecraft:model","model":"minecraft:block/structure_block"}},"structure_void":{"model":{"type":"minecraft:model","model":"minecraft:item/structure_void"}},"sugar":{"model":{"type":"minecraft:model","model":"minecraft:item/sugar"}},"sugar_cane":{"model":{"type":"minecraft:model","model":"minecraft:item/sugar_cane"}},"sunflower":{"model":{"type":"minecraft:model","model":"minecraft:item/sunflower"}},"suspicious_gravel":{"model":{"type":"minecraft:model","model":"minecraft:block/suspicious_gravel_0"}},"suspicious_sand":{"model":{"type":"minecraft:model","model":"minecraft:block/suspicious_sand_0"}},"suspicious_stew":{"model":{"type":"minecraft:model","model":"minecraft:item/suspicious_stew"}},"sweet_berries":{"model":{"type":"minecraft:model","model":"minecraft:item/sweet_berries"}},"tadpole_bucket":{"model":{"type":"minecraft:model","model":"minecraft:item/tadpole_bucket"}},"tadpole_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/tadpole_spawn_egg"}},"tall_dry_grass":{"model":{"type":"minecraft:model","model":"minecraft:item/tall_dry_grass"}},"tall_grass":{"model":{"type":"minecraft:model","model":"minecraft:item/tall_grass","tints":[{"type":"minecraft:grass","downfall":1.0,"temperature":0.5}]}},"target":{"model":{"type":"minecraft:model","model":"minecraft:block/target"}},"terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/terracotta"}},"test_block":{"model":{"type":"minecraft:select","block_state_property":"mode","cases":[{"model":{"type":"minecraft:model","model":"minecraft:block/test_block_log"},"when":"log"},{"model":{"type":"minecraft:model","model":"minecraft:block/test_block_fail"},"when":"fail"},{"model":{"type":"minecraft:model","model":"minecraft:block/test_block_accept"},"when":"accept"}],"fallback":{"type":"minecraft:model","model":"minecraft:block/test_block_start"},"property":"minecraft:block_state"}},"test_instance_block":{"model":{"type":"minecraft:model","model":"minecraft:block/test_instance_block"}},"tide_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/tide_armor_trim_smithing_template"}},"tinted_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/tinted_glass"}},"tipped_arrow":{"model":{"type":"minecraft:model","model":"minecraft:item/tipped_arrow","tints":[{"type":"minecraft:potion","default":-13083194}]}},"tnt":{"model":{"type":"minecraft:model","model":"minecraft:block/tnt"}},"tnt_minecart":{"model":{"type":"minecraft:model","model":"minecraft:item/tnt_minecart"}},"torch":{"model":{"type":"minecraft:model","model":"minecraft:item/torch"}},"torchflower":{"model":{"type":"minecraft:model","model":"minecraft:item/torchflower"}},"torchflower_seeds":{"model":{"type":"minecraft:model","model":"minecraft:item/torchflower_seeds"}},"totem_of_undying":{"model":{"type":"minecraft:model","model":"minecraft:item/totem_of_undying"}},"trader_llama_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/trader_llama_spawn_egg"}},"trapped_chest":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:special","base":"minecraft:item/trapped_chest","model":{"type":"minecraft:chest","texture":"minecraft:christmas"}},"when":["12-24","12-25","12-26"]}],"fallback":{"type":"minecraft:special","base":"minecraft:item/trapped_chest","model":{"type":"minecraft:chest","texture":"minecraft:trapped"}},"pattern":"MM-dd","property":"minecraft:local_time"}},"trial_key":{"model":{"type":"minecraft:model","model":"minecraft:item/trial_key"}},"trial_spawner":{"model":{"type":"minecraft:model","model":"minecraft:block/trial_spawner"}},"trident":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/trident"},"when":["gui","ground","fixed","on_shelf"]}],"fallback":{"type":"minecraft:condition","on_false":{"type":"minecraft:special","base":"minecraft:item/trident_in_hand","model":{"type":"minecraft:trident"}},"on_true":{"type":"minecraft:special","base":"minecraft:item/trident_throwing","model":{"type":"minecraft:trident"}},"property":"minecraft:using_item"},"property":"minecraft:display_context"}},"tripwire_hook":{"model":{"type":"minecraft:model","model":"minecraft:item/tripwire_hook"}},"tropical_fish":{"model":{"type":"minecraft:model","model":"minecraft:item/tropical_fish"}},"tropical_fish_bucket":{"model":{"type":"minecraft:model","model":"minecraft:item/tropical_fish_bucket"}},"tropical_fish_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/tropical_fish_spawn_egg"}},"tube_coral":{"model":{"type":"minecraft:model","model":"minecraft:item/tube_coral"}},"tube_coral_block":{"model":{"type":"minecraft:model","model":"minecraft:block/tube_coral_block"}},"tube_coral_fan":{"model":{"type":"minecraft:model","model":"minecraft:item/tube_coral_fan"}},"tuff":{"model":{"type":"minecraft:model","model":"minecraft:block/tuff"}},"tuff_brick_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/tuff_brick_slab"}},"tuff_brick_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/tuff_brick_stairs"}},"tuff_brick_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/tuff_brick_wall_inventory"}},"tuff_bricks":{"model":{"type":"minecraft:model","model":"minecraft:block/tuff_bricks"}},"tuff_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/tuff_slab"}},"tuff_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/tuff_stairs"}},"tuff_wall":{"model":{"type":"minecraft:model","model":"minecraft:block/tuff_wall_inventory"}},"turtle_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_egg"}},"turtle_helmet":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_helmet_quartz_trim"},"when":"minecraft:quartz"},{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_helmet_iron_trim"},"when":"minecraft:iron"},{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_helmet_netherite_trim"},"when":"minecraft:netherite"},{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_helmet_redstone_trim"},"when":"minecraft:redstone"},{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_helmet_copper_trim"},"when":"minecraft:copper"},{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_helmet_gold_trim"},"when":"minecraft:gold"},{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_helmet_emerald_trim"},"when":"minecraft:emerald"},{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_helmet_diamond_trim"},"when":"minecraft:diamond"},{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_helmet_lapis_trim"},"when":"minecraft:lapis"},{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_helmet_amethyst_trim"},"when":"minecraft:amethyst"},{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_helmet_resin_trim"},"when":"minecraft:resin"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/turtle_helmet"},"property":"minecraft:trim_material"}},"turtle_scute":{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_scute"}},"turtle_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/turtle_spawn_egg"}},"twisting_vines":{"model":{"type":"minecraft:model","model":"minecraft:item/twisting_vines"}},"vault":{"model":{"type":"minecraft:model","model":"minecraft:block/vault"}},"verdant_froglight":{"model":{"type":"minecraft:model","model":"minecraft:block/verdant_froglight"}},"vex_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/vex_armor_trim_smithing_template"}},"vex_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/vex_spawn_egg"}},"villager_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/villager_spawn_egg"}},"vindicator_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/vindicator_spawn_egg"}},"vine":{"model":{"type":"minecraft:model","model":"minecraft:item/vine","tints":[{"type":"minecraft:constant","value":-12012264}]}},"wandering_trader_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/wandering_trader_spawn_egg"}},"ward_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/ward_armor_trim_smithing_template"}},"warden_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/warden_spawn_egg"}},"warped_button":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_button_inventory"}},"warped_door":{"model":{"type":"minecraft:model","model":"minecraft:item/warped_door"}},"warped_fence":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_fence_inventory"}},"warped_fence_gate":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_fence_gate"}},"warped_fungus":{"model":{"type":"minecraft:model","model":"minecraft:item/warped_fungus"}},"warped_fungus_on_a_stick":{"model":{"type":"minecraft:model","model":"minecraft:item/warped_fungus_on_a_stick"}},"warped_hanging_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/warped_hanging_sign"}},"warped_hyphae":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_hyphae"}},"warped_nylium":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_nylium"}},"warped_planks":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_planks"}},"warped_pressure_plate":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_pressure_plate"}},"warped_roots":{"model":{"type":"minecraft:model","model":"minecraft:item/warped_roots"}},"warped_shelf":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_shelf_inventory"}},"warped_sign":{"model":{"type":"minecraft:model","model":"minecraft:item/warped_sign"}},"warped_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_slab"}},"warped_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_stairs"}},"warped_stem":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_stem"}},"warped_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_trapdoor_bottom"}},"warped_wart_block":{"model":{"type":"minecraft:model","model":"minecraft:block/warped_wart_block"}},"water_bucket":{"model":{"type":"minecraft:model","model":"minecraft:item/water_bucket"}},"waxed_chiseled_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/chiseled_copper"}},"waxed_copper_bars":{"model":{"type":"minecraft:model","model":"minecraft:item/copper_bars"}},"waxed_copper_block":{"model":{"type":"minecraft:model","model":"minecraft:block/copper_block"}},"waxed_copper_bulb":{"model":{"type":"minecraft:model","model":"minecraft:block/copper_bulb"}},"waxed_copper_chain":{"model":{"type":"minecraft:model","model":"minecraft:item/copper_chain"}},"waxed_copper_chest":{"model":{"type":"minecraft:special","base":"minecraft:item/copper_chest","model":{"type":"minecraft:chest","texture":"minecraft:copper"}}},"waxed_copper_door":{"model":{"type":"minecraft:model","model":"minecraft:item/copper_door"}},"waxed_copper_golem_statue":{"model":{"type":"minecraft:select","block_state_property":"copper_golem_pose","cases":[{"model":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"sitting","texture":"minecraft:textures/entity/copper_golem/copper_golem.png"}},"when":"sitting"},{"model":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"running","texture":"minecraft:textures/entity/copper_golem/copper_golem.png"}},"when":"running"},{"model":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"star","texture":"minecraft:textures/entity/copper_golem/copper_golem.png"}},"when":"star"}],"fallback":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"standing","texture":"minecraft:textures/entity/copper_golem/copper_golem.png"}},"property":"minecraft:block_state"}},"waxed_copper_grate":{"model":{"type":"minecraft:model","model":"minecraft:block/copper_grate"}},"waxed_copper_lantern":{"model":{"type":"minecraft:model","model":"minecraft:item/copper_lantern"}},"waxed_copper_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/copper_trapdoor_bottom"}},"waxed_cut_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/cut_copper"}},"waxed_cut_copper_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/cut_copper_slab"}},"waxed_cut_copper_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/cut_copper_stairs"}},"waxed_exposed_chiseled_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_chiseled_copper"}},"waxed_exposed_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_copper"}},"waxed_exposed_copper_bars":{"model":{"type":"minecraft:model","model":"minecraft:item/exposed_copper_bars"}},"waxed_exposed_copper_bulb":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_copper_bulb"}},"waxed_exposed_copper_chain":{"model":{"type":"minecraft:model","model":"minecraft:item/exposed_copper_chain"}},"waxed_exposed_copper_chest":{"model":{"type":"minecraft:special","base":"minecraft:item/exposed_copper_chest","model":{"type":"minecraft:chest","texture":"minecraft:copper_exposed"}}},"waxed_exposed_copper_door":{"model":{"type":"minecraft:model","model":"minecraft:item/exposed_copper_door"}},"waxed_exposed_copper_golem_statue":{"model":{"type":"minecraft:select","block_state_property":"copper_golem_pose","cases":[{"model":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"sitting","texture":"minecraft:textures/entity/copper_golem/exposed_copper_golem.png"}},"when":"sitting"},{"model":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"running","texture":"minecraft:textures/entity/copper_golem/exposed_copper_golem.png"}},"when":"running"},{"model":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"star","texture":"minecraft:textures/entity/copper_golem/exposed_copper_golem.png"}},"when":"star"}],"fallback":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"standing","texture":"minecraft:textures/entity/copper_golem/exposed_copper_golem.png"}},"property":"minecraft:block_state"}},"waxed_exposed_copper_grate":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_copper_grate"}},"waxed_exposed_copper_lantern":{"model":{"type":"minecraft:model","model":"minecraft:item/exposed_copper_lantern"}},"waxed_exposed_copper_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_copper_trapdoor_bottom"}},"waxed_exposed_cut_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_cut_copper"}},"waxed_exposed_cut_copper_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_cut_copper_slab"}},"waxed_exposed_cut_copper_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_cut_copper_stairs"}},"waxed_exposed_lightning_rod":{"model":{"type":"minecraft:model","model":"minecraft:block/exposed_lightning_rod"}},"waxed_lightning_rod":{"model":{"type":"minecraft:model","model":"minecraft:block/lightning_rod"}},"waxed_oxidized_chiseled_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_chiseled_copper"}},"waxed_oxidized_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_copper"}},"waxed_oxidized_copper_bars":{"model":{"type":"minecraft:model","model":"minecraft:item/oxidized_copper_bars"}},"waxed_oxidized_copper_bulb":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_copper_bulb"}},"waxed_oxidized_copper_chain":{"model":{"type":"minecraft:model","model":"minecraft:item/oxidized_copper_chain"}},"waxed_oxidized_copper_chest":{"model":{"type":"minecraft:special","base":"minecraft:item/oxidized_copper_chest","model":{"type":"minecraft:chest","texture":"minecraft:copper_oxidized"}}},"waxed_oxidized_copper_door":{"model":{"type":"minecraft:model","model":"minecraft:item/oxidized_copper_door"}},"waxed_oxidized_copper_golem_statue":{"model":{"type":"minecraft:select","block_state_property":"copper_golem_pose","cases":[{"model":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"sitting","texture":"minecraft:textures/entity/copper_golem/oxidized_copper_golem.png"}},"when":"sitting"},{"model":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"running","texture":"minecraft:textures/entity/copper_golem/oxidized_copper_golem.png"}},"when":"running"},{"model":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"star","texture":"minecraft:textures/entity/copper_golem/oxidized_copper_golem.png"}},"when":"star"}],"fallback":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"standing","texture":"minecraft:textures/entity/copper_golem/oxidized_copper_golem.png"}},"property":"minecraft:block_state"}},"waxed_oxidized_copper_grate":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_copper_grate"}},"waxed_oxidized_copper_lantern":{"model":{"type":"minecraft:model","model":"minecraft:item/oxidized_copper_lantern"}},"waxed_oxidized_copper_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_copper_trapdoor_bottom"}},"waxed_oxidized_cut_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_cut_copper"}},"waxed_oxidized_cut_copper_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_cut_copper_slab"}},"waxed_oxidized_cut_copper_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_cut_copper_stairs"}},"waxed_oxidized_lightning_rod":{"model":{"type":"minecraft:model","model":"minecraft:block/oxidized_lightning_rod"}},"waxed_weathered_chiseled_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_chiseled_copper"}},"waxed_weathered_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_copper"}},"waxed_weathered_copper_bars":{"model":{"type":"minecraft:model","model":"minecraft:item/weathered_copper_bars"}},"waxed_weathered_copper_bulb":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_copper_bulb"}},"waxed_weathered_copper_chain":{"model":{"type":"minecraft:model","model":"minecraft:item/weathered_copper_chain"}},"waxed_weathered_copper_chest":{"model":{"type":"minecraft:special","base":"minecraft:item/weathered_copper_chest","model":{"type":"minecraft:chest","texture":"minecraft:copper_weathered"}}},"waxed_weathered_copper_door":{"model":{"type":"minecraft:model","model":"minecraft:item/weathered_copper_door"}},"waxed_weathered_copper_golem_statue":{"model":{"type":"minecraft:select","block_state_property":"copper_golem_pose","cases":[{"model":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"sitting","texture":"minecraft:textures/entity/copper_golem/weathered_copper_golem.png"}},"when":"sitting"},{"model":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"running","texture":"minecraft:textures/entity/copper_golem/weathered_copper_golem.png"}},"when":"running"},{"model":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"star","texture":"minecraft:textures/entity/copper_golem/weathered_copper_golem.png"}},"when":"star"}],"fallback":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"standing","texture":"minecraft:textures/entity/copper_golem/weathered_copper_golem.png"}},"property":"minecraft:block_state"}},"waxed_weathered_copper_grate":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_copper_grate"}},"waxed_weathered_copper_lantern":{"model":{"type":"minecraft:model","model":"minecraft:item/weathered_copper_lantern"}},"waxed_weathered_copper_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_copper_trapdoor_bottom"}},"waxed_weathered_cut_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_cut_copper"}},"waxed_weathered_cut_copper_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_cut_copper_slab"}},"waxed_weathered_cut_copper_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_cut_copper_stairs"}},"waxed_weathered_lightning_rod":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_lightning_rod"}},"wayfinder_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/wayfinder_armor_trim_smithing_template"}},"weathered_chiseled_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_chiseled_copper"}},"weathered_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_copper"}},"weathered_copper_bars":{"model":{"type":"minecraft:model","model":"minecraft:item/weathered_copper_bars"}},"weathered_copper_bulb":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_copper_bulb"}},"weathered_copper_chain":{"model":{"type":"minecraft:model","model":"minecraft:item/weathered_copper_chain"}},"weathered_copper_chest":{"model":{"type":"minecraft:special","base":"minecraft:item/weathered_copper_chest","model":{"type":"minecraft:chest","texture":"minecraft:copper_weathered"}}},"weathered_copper_door":{"model":{"type":"minecraft:model","model":"minecraft:item/weathered_copper_door"}},"weathered_copper_golem_statue":{"model":{"type":"minecraft:select","block_state_property":"copper_golem_pose","cases":[{"model":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"sitting","texture":"minecraft:textures/entity/copper_golem/weathered_copper_golem.png"}},"when":"sitting"},{"model":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"running","texture":"minecraft:textures/entity/copper_golem/weathered_copper_golem.png"}},"when":"running"},{"model":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"star","texture":"minecraft:textures/entity/copper_golem/weathered_copper_golem.png"}},"when":"star"}],"fallback":{"type":"minecraft:special","base":"minecraft:item/template_copper_golem_statue","model":{"type":"minecraft:copper_golem_statue","pose":"standing","texture":"minecraft:textures/entity/copper_golem/weathered_copper_golem.png"}},"property":"minecraft:block_state"}},"weathered_copper_grate":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_copper_grate"}},"weathered_copper_lantern":{"model":{"type":"minecraft:model","model":"minecraft:item/weathered_copper_lantern"}},"weathered_copper_trapdoor":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_copper_trapdoor_bottom"}},"weathered_cut_copper":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_cut_copper"}},"weathered_cut_copper_slab":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_cut_copper_slab"}},"weathered_cut_copper_stairs":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_cut_copper_stairs"}},"weathered_lightning_rod":{"model":{"type":"minecraft:model","model":"minecraft:block/weathered_lightning_rod"}},"weeping_vines":{"model":{"type":"minecraft:model","model":"minecraft:item/weeping_vines"}},"wet_sponge":{"model":{"type":"minecraft:model","model":"minecraft:block/wet_sponge"}},"wheat":{"model":{"type":"minecraft:model","model":"minecraft:item/wheat"}},"wheat_seeds":{"model":{"type":"minecraft:model","model":"minecraft:item/wheat_seeds"}},"white_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"white"}}},"white_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/white_bed","model":{"type":"minecraft:bed","texture":"minecraft:white"}}},"white_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/white_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/white_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/white_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/white_bundle"},"property":"minecraft:display_context"}},"white_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/white_candle"}},"white_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/white_carpet"}},"white_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/white_concrete"}},"white_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/white_concrete_powder"}},"white_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/white_dye"}},"white_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/white_glazed_terracotta"}},"white_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/white_harness"}},"white_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/white_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_white"}}},"white_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/white_stained_glass"}},"white_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/white_stained_glass_pane"}},"white_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/white_terracotta"}},"white_tulip":{"model":{"type":"minecraft:model","model":"minecraft:item/white_tulip"}},"white_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/white_wool"}},"wild_armor_trim_smithing_template":{"model":{"type":"minecraft:model","model":"minecraft:item/wild_armor_trim_smithing_template"}},"wildflowers":{"model":{"type":"minecraft:model","model":"minecraft:item/wildflowers"}},"wind_charge":{"model":{"type":"minecraft:model","model":"minecraft:item/wind_charge"}},"witch_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/witch_spawn_egg"}},"wither_rose":{"model":{"type":"minecraft:model","model":"minecraft:item/wither_rose"}},"wither_skeleton_skull":{"model":{"type":"minecraft:special","base":"minecraft:item/template_skull","model":{"type":"minecraft:head","kind":"wither_skeleton"}}},"wither_skeleton_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/wither_skeleton_spawn_egg"}},"wither_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/wither_spawn_egg"}},"wolf_armor":{"model":{"type":"minecraft:condition","component":"minecraft:dyed_color","on_false":{"type":"minecraft:model","model":"minecraft:item/wolf_armor"},"on_true":{"type":"minecraft:model","model":"minecraft:item/wolf_armor_dyed","tints":[{"type":"minecraft:constant","value":-1},{"type":"minecraft:dye","default":0}]},"property":"minecraft:has_component"}},"wolf_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/wolf_spawn_egg"}},"wooden_axe":{"model":{"type":"minecraft:model","model":"minecraft:item/wooden_axe"}},"wooden_hoe":{"model":{"type":"minecraft:model","model":"minecraft:item/wooden_hoe"}},"wooden_pickaxe":{"model":{"type":"minecraft:model","model":"minecraft:item/wooden_pickaxe"}},"wooden_shovel":{"model":{"type":"minecraft:model","model":"minecraft:item/wooden_shovel"}},"wooden_sword":{"model":{"type":"minecraft:model","model":"minecraft:item/wooden_sword"}},"writable_book":{"model":{"type":"minecraft:model","model":"minecraft:item/writable_book"}},"written_book":{"model":{"type":"minecraft:model","model":"minecraft:item/written_book"}},"yellow_banner":{"model":{"type":"minecraft:special","base":"minecraft:item/template_banner","model":{"type":"minecraft:banner","color":"yellow"}}},"yellow_bed":{"model":{"type":"minecraft:special","base":"minecraft:item/yellow_bed","model":{"type":"minecraft:bed","texture":"minecraft:yellow"}}},"yellow_bundle":{"model":{"type":"minecraft:select","cases":[{"model":{"type":"minecraft:condition","on_false":{"type":"minecraft:model","model":"minecraft:item/yellow_bundle"},"on_true":{"type":"minecraft:composite","models":[{"type":"minecraft:model","model":"minecraft:item/yellow_bundle_open_back"},{"type":"minecraft:bundle/selected_item"},{"type":"minecraft:model","model":"minecraft:item/yellow_bundle_open_front"}]},"property":"minecraft:bundle/has_selected_item"},"when":"gui"}],"fallback":{"type":"minecraft:model","model":"minecraft:item/yellow_bundle"},"property":"minecraft:display_context"}},"yellow_candle":{"model":{"type":"minecraft:model","model":"minecraft:item/yellow_candle"}},"yellow_carpet":{"model":{"type":"minecraft:model","model":"minecraft:block/yellow_carpet"}},"yellow_concrete":{"model":{"type":"minecraft:model","model":"minecraft:block/yellow_concrete"}},"yellow_concrete_powder":{"model":{"type":"minecraft:model","model":"minecraft:block/yellow_concrete_powder"}},"yellow_dye":{"model":{"type":"minecraft:model","model":"minecraft:item/yellow_dye"}},"yellow_glazed_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/yellow_glazed_terracotta"}},"yellow_harness":{"model":{"type":"minecraft:model","model":"minecraft:item/yellow_harness"}},"yellow_shulker_box":{"model":{"type":"minecraft:special","base":"minecraft:item/yellow_shulker_box","model":{"type":"minecraft:shulker_box","texture":"minecraft:shulker_yellow"}}},"yellow_stained_glass":{"model":{"type":"minecraft:model","model":"minecraft:block/yellow_stained_glass"}},"yellow_stained_glass_pane":{"model":{"type":"minecraft:model","model":"minecraft:item/yellow_stained_glass_pane"}},"yellow_terracotta":{"model":{"type":"minecraft:model","model":"minecraft:block/yellow_terracotta"}},"yellow_wool":{"model":{"type":"minecraft:model","model":"minecraft:block/yellow_wool"}},"zoglin_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/zoglin_spawn_egg"}},"zombie_head":{"model":{"type":"minecraft:special","base":"minecraft:item/template_skull","model":{"type":"minecraft:head","kind":"zombie"}}},"zombie_horse_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/zombie_horse_spawn_egg"}},"zombie_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/zombie_spawn_egg"}},"zombie_villager_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/zombie_villager_spawn_egg"}},"zombified_piglin_spawn_egg":{"model":{"type":"minecraft:model","model":"minecraft:item/zombified_piglin_spawn_egg"}}} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/items/_list.json b/common-files/src/main/resources/internal/items/_list.json deleted file mode 100644 index c213a35d8..000000000 --- a/common-files/src/main/resources/internal/items/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["acacia_boat.json","acacia_button.json","acacia_chest_boat.json","acacia_door.json","acacia_fence.json","acacia_fence_gate.json","acacia_hanging_sign.json","acacia_leaves.json","acacia_log.json","acacia_planks.json","acacia_pressure_plate.json","acacia_sapling.json","acacia_sign.json","acacia_slab.json","acacia_stairs.json","acacia_trapdoor.json","acacia_wood.json","activator_rail.json","air.json","allay_spawn_egg.json","allium.json","amethyst_block.json","amethyst_cluster.json","amethyst_shard.json","ancient_debris.json","andesite.json","andesite_slab.json","andesite_stairs.json","andesite_wall.json","angler_pottery_sherd.json","anvil.json","apple.json","archer_pottery_sherd.json","armadillo_scute.json","armadillo_spawn_egg.json","armor_stand.json","arms_up_pottery_sherd.json","arrow.json","axolotl_bucket.json","axolotl_spawn_egg.json","azalea.json","azalea_leaves.json","azure_bluet.json","baked_potato.json","bamboo.json","bamboo_block.json","bamboo_button.json","bamboo_chest_raft.json","bamboo_door.json","bamboo_fence.json","bamboo_fence_gate.json","bamboo_hanging_sign.json","bamboo_mosaic.json","bamboo_mosaic_slab.json","bamboo_mosaic_stairs.json","bamboo_planks.json","bamboo_pressure_plate.json","bamboo_raft.json","bamboo_sign.json","bamboo_slab.json","bamboo_stairs.json","bamboo_trapdoor.json","barrel.json","barrier.json","basalt.json","bat_spawn_egg.json","beacon.json","bedrock.json","bee_nest.json","bee_spawn_egg.json","beef.json","beehive.json","beetroot.json","beetroot_seeds.json","beetroot_soup.json","bell.json","big_dripleaf.json","birch_boat.json","birch_button.json","birch_chest_boat.json","birch_door.json","birch_fence.json","birch_fence_gate.json","birch_hanging_sign.json","birch_leaves.json","birch_log.json","birch_planks.json","birch_pressure_plate.json","birch_sapling.json","birch_sign.json","birch_slab.json","birch_stairs.json","birch_trapdoor.json","birch_wood.json","black_banner.json","black_bed.json","black_bundle.json","black_candle.json","black_carpet.json","black_concrete.json","black_concrete_powder.json","black_dye.json","black_glazed_terracotta.json","black_harness.json","black_shulker_box.json","black_stained_glass.json","black_stained_glass_pane.json","black_terracotta.json","black_wool.json","blackstone.json","blackstone_slab.json","blackstone_stairs.json","blackstone_wall.json","blade_pottery_sherd.json","blast_furnace.json","blaze_powder.json","blaze_rod.json","blaze_spawn_egg.json","blue_banner.json","blue_bed.json","blue_bundle.json","blue_candle.json","blue_carpet.json","blue_concrete.json","blue_concrete_powder.json","blue_dye.json","blue_egg.json","blue_glazed_terracotta.json","blue_harness.json","blue_ice.json","blue_orchid.json","blue_shulker_box.json","blue_stained_glass.json","blue_stained_glass_pane.json","blue_terracotta.json","blue_wool.json","bogged_spawn_egg.json","bolt_armor_trim_smithing_template.json","bone.json","bone_block.json","bone_meal.json","book.json","bookshelf.json","bordure_indented_banner_pattern.json","bow.json","bowl.json","brain_coral.json","brain_coral_block.json","brain_coral_fan.json","bread.json","breeze_rod.json","breeze_spawn_egg.json","brewer_pottery_sherd.json","brewing_stand.json","brick.json","brick_slab.json","brick_stairs.json","brick_wall.json","bricks.json","brown_banner.json","brown_bed.json","brown_bundle.json","brown_candle.json","brown_carpet.json","brown_concrete.json","brown_concrete_powder.json","brown_dye.json","brown_egg.json","brown_glazed_terracotta.json","brown_harness.json","brown_mushroom.json","brown_mushroom_block.json","brown_shulker_box.json","brown_stained_glass.json","brown_stained_glass_pane.json","brown_terracotta.json","brown_wool.json","brush.json","bubble_coral.json","bubble_coral_block.json","bubble_coral_fan.json","bucket.json","budding_amethyst.json","bundle.json","burn_pottery_sherd.json","bush.json","cactus.json","cactus_flower.json","cake.json","calcite.json","calibrated_sculk_sensor.json","camel_spawn_egg.json","campfire.json","candle.json","carrot.json","carrot_on_a_stick.json","cartography_table.json","carved_pumpkin.json","cat_spawn_egg.json","cauldron.json","cave_spider_spawn_egg.json","chain.json","chain_command_block.json","chainmail_boots.json","chainmail_chestplate.json","chainmail_helmet.json","chainmail_leggings.json","charcoal.json","cherry_boat.json","cherry_button.json","cherry_chest_boat.json","cherry_door.json","cherry_fence.json","cherry_fence_gate.json","cherry_hanging_sign.json","cherry_leaves.json","cherry_log.json","cherry_planks.json","cherry_pressure_plate.json","cherry_sapling.json","cherry_sign.json","cherry_slab.json","cherry_stairs.json","cherry_trapdoor.json","cherry_wood.json","chest.json","chest_minecart.json","chicken.json","chicken_spawn_egg.json","chipped_anvil.json","chiseled_bookshelf.json","chiseled_copper.json","chiseled_deepslate.json","chiseled_nether_bricks.json","chiseled_polished_blackstone.json","chiseled_quartz_block.json","chiseled_red_sandstone.json","chiseled_resin_bricks.json","chiseled_sandstone.json","chiseled_stone_bricks.json","chiseled_tuff.json","chiseled_tuff_bricks.json","chorus_flower.json","chorus_fruit.json","chorus_plant.json","clay.json","clay_ball.json","clock.json","closed_eyeblossom.json","coal.json","coal_block.json","coal_ore.json","coarse_dirt.json","coast_armor_trim_smithing_template.json","cobbled_deepslate.json","cobbled_deepslate_slab.json","cobbled_deepslate_stairs.json","cobbled_deepslate_wall.json","cobblestone.json","cobblestone_slab.json","cobblestone_stairs.json","cobblestone_wall.json","cobweb.json","cocoa_beans.json","cod.json","cod_bucket.json","cod_spawn_egg.json","command_block.json","command_block_minecart.json","comparator.json","compass.json","composter.json","conduit.json","cooked_beef.json","cooked_chicken.json","cooked_cod.json","cooked_mutton.json","cooked_porkchop.json","cooked_rabbit.json","cooked_salmon.json","cookie.json","copper_block.json","copper_bulb.json","copper_door.json","copper_grate.json","copper_ingot.json","copper_ore.json","copper_trapdoor.json","cornflower.json","cow_spawn_egg.json","cracked_deepslate_bricks.json","cracked_deepslate_tiles.json","cracked_nether_bricks.json","cracked_polished_blackstone_bricks.json","cracked_stone_bricks.json","crafter.json","crafting_table.json","creaking_heart.json","creaking_spawn_egg.json","creeper_banner_pattern.json","creeper_head.json","creeper_spawn_egg.json","crimson_button.json","crimson_door.json","crimson_fence.json","crimson_fence_gate.json","crimson_fungus.json","crimson_hanging_sign.json","crimson_hyphae.json","crimson_nylium.json","crimson_planks.json","crimson_pressure_plate.json","crimson_roots.json","crimson_sign.json","crimson_slab.json","crimson_stairs.json","crimson_stem.json","crimson_trapdoor.json","crossbow.json","crying_obsidian.json","cut_copper.json","cut_copper_slab.json","cut_copper_stairs.json","cut_red_sandstone.json","cut_red_sandstone_slab.json","cut_sandstone.json","cut_sandstone_slab.json","cyan_banner.json","cyan_bed.json","cyan_bundle.json","cyan_candle.json","cyan_carpet.json","cyan_concrete.json","cyan_concrete_powder.json","cyan_dye.json","cyan_glazed_terracotta.json","cyan_harness.json","cyan_shulker_box.json","cyan_stained_glass.json","cyan_stained_glass_pane.json","cyan_terracotta.json","cyan_wool.json","damaged_anvil.json","dandelion.json","danger_pottery_sherd.json","dark_oak_boat.json","dark_oak_button.json","dark_oak_chest_boat.json","dark_oak_door.json","dark_oak_fence.json","dark_oak_fence_gate.json","dark_oak_hanging_sign.json","dark_oak_leaves.json","dark_oak_log.json","dark_oak_planks.json","dark_oak_pressure_plate.json","dark_oak_sapling.json","dark_oak_sign.json","dark_oak_slab.json","dark_oak_stairs.json","dark_oak_trapdoor.json","dark_oak_wood.json","dark_prismarine.json","dark_prismarine_slab.json","dark_prismarine_stairs.json","daylight_detector.json","dead_brain_coral.json","dead_brain_coral_block.json","dead_brain_coral_fan.json","dead_bubble_coral.json","dead_bubble_coral_block.json","dead_bubble_coral_fan.json","dead_bush.json","dead_fire_coral.json","dead_fire_coral_block.json","dead_fire_coral_fan.json","dead_horn_coral.json","dead_horn_coral_block.json","dead_horn_coral_fan.json","dead_tube_coral.json","dead_tube_coral_block.json","dead_tube_coral_fan.json","debug_stick.json","decorated_pot.json","deepslate.json","deepslate_brick_slab.json","deepslate_brick_stairs.json","deepslate_brick_wall.json","deepslate_bricks.json","deepslate_coal_ore.json","deepslate_copper_ore.json","deepslate_diamond_ore.json","deepslate_emerald_ore.json","deepslate_gold_ore.json","deepslate_iron_ore.json","deepslate_lapis_ore.json","deepslate_redstone_ore.json","deepslate_tile_slab.json","deepslate_tile_stairs.json","deepslate_tile_wall.json","deepslate_tiles.json","detector_rail.json","diamond.json","diamond_axe.json","diamond_block.json","diamond_boots.json","diamond_chestplate.json","diamond_helmet.json","diamond_hoe.json","diamond_horse_armor.json","diamond_leggings.json","diamond_ore.json","diamond_pickaxe.json","diamond_shovel.json","diamond_sword.json","diorite.json","diorite_slab.json","diorite_stairs.json","diorite_wall.json","dirt.json","dirt_path.json","disc_fragment_5.json","dispenser.json","dolphin_spawn_egg.json","donkey_spawn_egg.json","dragon_breath.json","dragon_egg.json","dragon_head.json","dried_ghast.json","dried_kelp.json","dried_kelp_block.json","dripstone_block.json","dropper.json","drowned_spawn_egg.json","dune_armor_trim_smithing_template.json","echo_shard.json","egg.json","elder_guardian_spawn_egg.json","elytra.json","emerald.json","emerald_block.json","emerald_ore.json","enchanted_book.json","enchanted_golden_apple.json","enchanting_table.json","end_crystal.json","end_portal_frame.json","end_rod.json","end_stone.json","end_stone_brick_slab.json","end_stone_brick_stairs.json","end_stone_brick_wall.json","end_stone_bricks.json","ender_chest.json","ender_dragon_spawn_egg.json","ender_eye.json","ender_pearl.json","enderman_spawn_egg.json","endermite_spawn_egg.json","evoker_spawn_egg.json","experience_bottle.json","explorer_pottery_sherd.json","exposed_chiseled_copper.json","exposed_copper.json","exposed_copper_bulb.json","exposed_copper_door.json","exposed_copper_grate.json","exposed_copper_trapdoor.json","exposed_cut_copper.json","exposed_cut_copper_slab.json","exposed_cut_copper_stairs.json","eye_armor_trim_smithing_template.json","farmland.json","feather.json","fermented_spider_eye.json","fern.json","field_masoned_banner_pattern.json","filled_map.json","fire_charge.json","fire_coral.json","fire_coral_block.json","fire_coral_fan.json","firefly_bush.json","firework_rocket.json","firework_star.json","fishing_rod.json","fletching_table.json","flint.json","flint_and_steel.json","flow_armor_trim_smithing_template.json","flow_banner_pattern.json","flow_pottery_sherd.json","flower_banner_pattern.json","flower_pot.json","flowering_azalea.json","flowering_azalea_leaves.json","fox_spawn_egg.json","friend_pottery_sherd.json","frog_spawn_egg.json","frogspawn.json","furnace.json","furnace_minecart.json","ghast_spawn_egg.json","ghast_tear.json","gilded_blackstone.json","glass.json","glass_bottle.json","glass_pane.json","glistering_melon_slice.json","globe_banner_pattern.json","glow_berries.json","glow_ink_sac.json","glow_item_frame.json","glow_lichen.json","glow_squid_spawn_egg.json","glowstone.json","glowstone_dust.json","goat_horn.json","goat_spawn_egg.json","gold_block.json","gold_ingot.json","gold_nugget.json","gold_ore.json","golden_apple.json","golden_axe.json","golden_boots.json","golden_carrot.json","golden_chestplate.json","golden_helmet.json","golden_hoe.json","golden_horse_armor.json","golden_leggings.json","golden_pickaxe.json","golden_shovel.json","golden_sword.json","granite.json","granite_slab.json","granite_stairs.json","granite_wall.json","grass_block.json","gravel.json","gray_banner.json","gray_bed.json","gray_bundle.json","gray_candle.json","gray_carpet.json","gray_concrete.json","gray_concrete_powder.json","gray_dye.json","gray_glazed_terracotta.json","gray_harness.json","gray_shulker_box.json","gray_stained_glass.json","gray_stained_glass_pane.json","gray_terracotta.json","gray_wool.json","green_banner.json","green_bed.json","green_bundle.json","green_candle.json","green_carpet.json","green_concrete.json","green_concrete_powder.json","green_dye.json","green_glazed_terracotta.json","green_harness.json","green_shulker_box.json","green_stained_glass.json","green_stained_glass_pane.json","green_terracotta.json","green_wool.json","grindstone.json","guardian_spawn_egg.json","gunpowder.json","guster_banner_pattern.json","guster_pottery_sherd.json","hanging_roots.json","happy_ghast_spawn_egg.json","hay_block.json","heart_of_the_sea.json","heart_pottery_sherd.json","heartbreak_pottery_sherd.json","heavy_core.json","heavy_weighted_pressure_plate.json","hoglin_spawn_egg.json","honey_block.json","honey_bottle.json","honeycomb.json","honeycomb_block.json","hopper.json","hopper_minecart.json","horn_coral.json","horn_coral_block.json","horn_coral_fan.json","horse_spawn_egg.json","host_armor_trim_smithing_template.json","howl_pottery_sherd.json","husk_spawn_egg.json","ice.json","infested_chiseled_stone_bricks.json","infested_cobblestone.json","infested_cracked_stone_bricks.json","infested_deepslate.json","infested_mossy_stone_bricks.json","infested_stone.json","infested_stone_bricks.json","ink_sac.json","iron_axe.json","iron_bars.json","iron_block.json","iron_boots.json","iron_chestplate.json","iron_door.json","iron_golem_spawn_egg.json","iron_helmet.json","iron_hoe.json","iron_horse_armor.json","iron_ingot.json","iron_leggings.json","iron_nugget.json","iron_ore.json","iron_pickaxe.json","iron_shovel.json","iron_sword.json","iron_trapdoor.json","item_frame.json","jack_o_lantern.json","jigsaw.json","jukebox.json","jungle_boat.json","jungle_button.json","jungle_chest_boat.json","jungle_door.json","jungle_fence.json","jungle_fence_gate.json","jungle_hanging_sign.json","jungle_leaves.json","jungle_log.json","jungle_planks.json","jungle_pressure_plate.json","jungle_sapling.json","jungle_sign.json","jungle_slab.json","jungle_stairs.json","jungle_trapdoor.json","jungle_wood.json","kelp.json","knowledge_book.json","ladder.json","lantern.json","lapis_block.json","lapis_lazuli.json","lapis_ore.json","large_amethyst_bud.json","large_fern.json","lava_bucket.json","lead.json","leaf_litter.json","leather.json","leather_boots.json","leather_chestplate.json","leather_helmet.json","leather_horse_armor.json","leather_leggings.json","lectern.json","lever.json","light.json","light_blue_banner.json","light_blue_bed.json","light_blue_bundle.json","light_blue_candle.json","light_blue_carpet.json","light_blue_concrete.json","light_blue_concrete_powder.json","light_blue_dye.json","light_blue_glazed_terracotta.json","light_blue_harness.json","light_blue_shulker_box.json","light_blue_stained_glass.json","light_blue_stained_glass_pane.json","light_blue_terracotta.json","light_blue_wool.json","light_gray_banner.json","light_gray_bed.json","light_gray_bundle.json","light_gray_candle.json","light_gray_carpet.json","light_gray_concrete.json","light_gray_concrete_powder.json","light_gray_dye.json","light_gray_glazed_terracotta.json","light_gray_harness.json","light_gray_shulker_box.json","light_gray_stained_glass.json","light_gray_stained_glass_pane.json","light_gray_terracotta.json","light_gray_wool.json","light_weighted_pressure_plate.json","lightning_rod.json","lilac.json","lily_of_the_valley.json","lily_pad.json","lime_banner.json","lime_bed.json","lime_bundle.json","lime_candle.json","lime_carpet.json","lime_concrete.json","lime_concrete_powder.json","lime_dye.json","lime_glazed_terracotta.json","lime_harness.json","lime_shulker_box.json","lime_stained_glass.json","lime_stained_glass_pane.json","lime_terracotta.json","lime_wool.json","lingering_potion.json","llama_spawn_egg.json","lodestone.json","loom.json","mace.json","magenta_banner.json","magenta_bed.json","magenta_bundle.json","magenta_candle.json","magenta_carpet.json","magenta_concrete.json","magenta_concrete_powder.json","magenta_dye.json","magenta_glazed_terracotta.json","magenta_harness.json","magenta_shulker_box.json","magenta_stained_glass.json","magenta_stained_glass_pane.json","magenta_terracotta.json","magenta_wool.json","magma_block.json","magma_cream.json","magma_cube_spawn_egg.json","mangrove_boat.json","mangrove_button.json","mangrove_chest_boat.json","mangrove_door.json","mangrove_fence.json","mangrove_fence_gate.json","mangrove_hanging_sign.json","mangrove_leaves.json","mangrove_log.json","mangrove_planks.json","mangrove_pressure_plate.json","mangrove_propagule.json","mangrove_roots.json","mangrove_sign.json","mangrove_slab.json","mangrove_stairs.json","mangrove_trapdoor.json","mangrove_wood.json","map.json","medium_amethyst_bud.json","melon.json","melon_seeds.json","melon_slice.json","milk_bucket.json","minecart.json","miner_pottery_sherd.json","mojang_banner_pattern.json","mooshroom_spawn_egg.json","moss_block.json","moss_carpet.json","mossy_cobblestone.json","mossy_cobblestone_slab.json","mossy_cobblestone_stairs.json","mossy_cobblestone_wall.json","mossy_stone_brick_slab.json","mossy_stone_brick_stairs.json","mossy_stone_brick_wall.json","mossy_stone_bricks.json","mourner_pottery_sherd.json","mud.json","mud_brick_slab.json","mud_brick_stairs.json","mud_brick_wall.json","mud_bricks.json","muddy_mangrove_roots.json","mule_spawn_egg.json","mushroom_stem.json","mushroom_stew.json","music_disc_11.json","music_disc_13.json","music_disc_5.json","music_disc_blocks.json","music_disc_cat.json","music_disc_chirp.json","music_disc_creator.json","music_disc_creator_music_box.json","music_disc_far.json","music_disc_mall.json","music_disc_mellohi.json","music_disc_otherside.json","music_disc_pigstep.json","music_disc_precipice.json","music_disc_relic.json","music_disc_stal.json","music_disc_strad.json","music_disc_tears.json","music_disc_wait.json","music_disc_ward.json","mutton.json","mycelium.json","name_tag.json","nautilus_shell.json","nether_brick.json","nether_brick_fence.json","nether_brick_slab.json","nether_brick_stairs.json","nether_brick_wall.json","nether_bricks.json","nether_gold_ore.json","nether_quartz_ore.json","nether_sprouts.json","nether_star.json","nether_wart.json","nether_wart_block.json","netherite_axe.json","netherite_block.json","netherite_boots.json","netherite_chestplate.json","netherite_helmet.json","netherite_hoe.json","netherite_ingot.json","netherite_leggings.json","netherite_pickaxe.json","netherite_scrap.json","netherite_shovel.json","netherite_sword.json","netherite_upgrade_smithing_template.json","netherrack.json","note_block.json","oak_boat.json","oak_button.json","oak_chest_boat.json","oak_door.json","oak_fence.json","oak_fence_gate.json","oak_hanging_sign.json","oak_leaves.json","oak_log.json","oak_planks.json","oak_pressure_plate.json","oak_sapling.json","oak_sign.json","oak_slab.json","oak_stairs.json","oak_trapdoor.json","oak_wood.json","observer.json","obsidian.json","ocelot_spawn_egg.json","ochre_froglight.json","ominous_bottle.json","ominous_trial_key.json","open_eyeblossom.json","orange_banner.json","orange_bed.json","orange_bundle.json","orange_candle.json","orange_carpet.json","orange_concrete.json","orange_concrete_powder.json","orange_dye.json","orange_glazed_terracotta.json","orange_harness.json","orange_shulker_box.json","orange_stained_glass.json","orange_stained_glass_pane.json","orange_terracotta.json","orange_tulip.json","orange_wool.json","oxeye_daisy.json","oxidized_chiseled_copper.json","oxidized_copper.json","oxidized_copper_bulb.json","oxidized_copper_door.json","oxidized_copper_grate.json","oxidized_copper_trapdoor.json","oxidized_cut_copper.json","oxidized_cut_copper_slab.json","oxidized_cut_copper_stairs.json","packed_ice.json","packed_mud.json","painting.json","pale_hanging_moss.json","pale_moss_block.json","pale_moss_carpet.json","pale_oak_boat.json","pale_oak_button.json","pale_oak_chest_boat.json","pale_oak_door.json","pale_oak_fence.json","pale_oak_fence_gate.json","pale_oak_hanging_sign.json","pale_oak_leaves.json","pale_oak_log.json","pale_oak_planks.json","pale_oak_pressure_plate.json","pale_oak_sapling.json","pale_oak_sign.json","pale_oak_slab.json","pale_oak_stairs.json","pale_oak_trapdoor.json","pale_oak_wood.json","panda_spawn_egg.json","paper.json","parrot_spawn_egg.json","pearlescent_froglight.json","peony.json","petrified_oak_slab.json","phantom_membrane.json","phantom_spawn_egg.json","pig_spawn_egg.json","piglin_banner_pattern.json","piglin_brute_spawn_egg.json","piglin_head.json","piglin_spawn_egg.json","pillager_spawn_egg.json","pink_banner.json","pink_bed.json","pink_bundle.json","pink_candle.json","pink_carpet.json","pink_concrete.json","pink_concrete_powder.json","pink_dye.json","pink_glazed_terracotta.json","pink_harness.json","pink_petals.json","pink_shulker_box.json","pink_stained_glass.json","pink_stained_glass_pane.json","pink_terracotta.json","pink_tulip.json","pink_wool.json","piston.json","pitcher_plant.json","pitcher_pod.json","player_head.json","plenty_pottery_sherd.json","podzol.json","pointed_dripstone.json","poisonous_potato.json","polar_bear_spawn_egg.json","polished_andesite.json","polished_andesite_slab.json","polished_andesite_stairs.json","polished_basalt.json","polished_blackstone.json","polished_blackstone_brick_slab.json","polished_blackstone_brick_stairs.json","polished_blackstone_brick_wall.json","polished_blackstone_bricks.json","polished_blackstone_button.json","polished_blackstone_pressure_plate.json","polished_blackstone_slab.json","polished_blackstone_stairs.json","polished_blackstone_wall.json","polished_deepslate.json","polished_deepslate_slab.json","polished_deepslate_stairs.json","polished_deepslate_wall.json","polished_diorite.json","polished_diorite_slab.json","polished_diorite_stairs.json","polished_granite.json","polished_granite_slab.json","polished_granite_stairs.json","polished_tuff.json","polished_tuff_slab.json","polished_tuff_stairs.json","polished_tuff_wall.json","popped_chorus_fruit.json","poppy.json","porkchop.json","potato.json","potion.json","powder_snow_bucket.json","powered_rail.json","prismarine.json","prismarine_brick_slab.json","prismarine_brick_stairs.json","prismarine_bricks.json","prismarine_crystals.json","prismarine_shard.json","prismarine_slab.json","prismarine_stairs.json","prismarine_wall.json","prize_pottery_sherd.json","pufferfish.json","pufferfish_bucket.json","pufferfish_spawn_egg.json","pumpkin.json","pumpkin_pie.json","pumpkin_seeds.json","purple_banner.json","purple_bed.json","purple_bundle.json","purple_candle.json","purple_carpet.json","purple_concrete.json","purple_concrete_powder.json","purple_dye.json","purple_glazed_terracotta.json","purple_harness.json","purple_shulker_box.json","purple_stained_glass.json","purple_stained_glass_pane.json","purple_terracotta.json","purple_wool.json","purpur_block.json","purpur_pillar.json","purpur_slab.json","purpur_stairs.json","quartz.json","quartz_block.json","quartz_bricks.json","quartz_pillar.json","quartz_slab.json","quartz_stairs.json","rabbit.json","rabbit_foot.json","rabbit_hide.json","rabbit_spawn_egg.json","rabbit_stew.json","rail.json","raiser_armor_trim_smithing_template.json","ravager_spawn_egg.json","raw_copper.json","raw_copper_block.json","raw_gold.json","raw_gold_block.json","raw_iron.json","raw_iron_block.json","recovery_compass.json","red_banner.json","red_bed.json","red_bundle.json","red_candle.json","red_carpet.json","red_concrete.json","red_concrete_powder.json","red_dye.json","red_glazed_terracotta.json","red_harness.json","red_mushroom.json","red_mushroom_block.json","red_nether_brick_slab.json","red_nether_brick_stairs.json","red_nether_brick_wall.json","red_nether_bricks.json","red_sand.json","red_sandstone.json","red_sandstone_slab.json","red_sandstone_stairs.json","red_sandstone_wall.json","red_shulker_box.json","red_stained_glass.json","red_stained_glass_pane.json","red_terracotta.json","red_tulip.json","red_wool.json","redstone.json","redstone_block.json","redstone_lamp.json","redstone_ore.json","redstone_torch.json","reinforced_deepslate.json","repeater.json","repeating_command_block.json","resin_block.json","resin_brick.json","resin_brick_slab.json","resin_brick_stairs.json","resin_brick_wall.json","resin_bricks.json","resin_clump.json","respawn_anchor.json","rib_armor_trim_smithing_template.json","rooted_dirt.json","rose_bush.json","rotten_flesh.json","saddle.json","salmon.json","salmon_bucket.json","salmon_spawn_egg.json","sand.json","sandstone.json","sandstone_slab.json","sandstone_stairs.json","sandstone_wall.json","scaffolding.json","scrape_pottery_sherd.json","sculk.json","sculk_catalyst.json","sculk_sensor.json","sculk_shrieker.json","sculk_vein.json","sea_lantern.json","sea_pickle.json","seagrass.json","sentry_armor_trim_smithing_template.json","shaper_armor_trim_smithing_template.json","sheaf_pottery_sherd.json","shears.json","sheep_spawn_egg.json","shelter_pottery_sherd.json","shield.json","short_dry_grass.json","short_grass.json","shroomlight.json","shulker_box.json","shulker_shell.json","shulker_spawn_egg.json","silence_armor_trim_smithing_template.json","silverfish_spawn_egg.json","skeleton_horse_spawn_egg.json","skeleton_skull.json","skeleton_spawn_egg.json","skull_banner_pattern.json","skull_pottery_sherd.json","slime_ball.json","slime_block.json","slime_spawn_egg.json","small_amethyst_bud.json","small_dripleaf.json","smithing_table.json","smoker.json","smooth_basalt.json","smooth_quartz.json","smooth_quartz_slab.json","smooth_quartz_stairs.json","smooth_red_sandstone.json","smooth_red_sandstone_slab.json","smooth_red_sandstone_stairs.json","smooth_sandstone.json","smooth_sandstone_slab.json","smooth_sandstone_stairs.json","smooth_stone.json","smooth_stone_slab.json","sniffer_egg.json","sniffer_spawn_egg.json","snort_pottery_sherd.json","snout_armor_trim_smithing_template.json","snow.json","snow_block.json","snow_golem_spawn_egg.json","snowball.json","soul_campfire.json","soul_lantern.json","soul_sand.json","soul_soil.json","soul_torch.json","spawner.json","spectral_arrow.json","spider_eye.json","spider_spawn_egg.json","spire_armor_trim_smithing_template.json","splash_potion.json","sponge.json","spore_blossom.json","spruce_boat.json","spruce_button.json","spruce_chest_boat.json","spruce_door.json","spruce_fence.json","spruce_fence_gate.json","spruce_hanging_sign.json","spruce_leaves.json","spruce_log.json","spruce_planks.json","spruce_pressure_plate.json","spruce_sapling.json","spruce_sign.json","spruce_slab.json","spruce_stairs.json","spruce_trapdoor.json","spruce_wood.json","spyglass.json","squid_spawn_egg.json","stick.json","sticky_piston.json","stone.json","stone_axe.json","stone_brick_slab.json","stone_brick_stairs.json","stone_brick_wall.json","stone_bricks.json","stone_button.json","stone_hoe.json","stone_pickaxe.json","stone_pressure_plate.json","stone_shovel.json","stone_slab.json","stone_stairs.json","stone_sword.json","stonecutter.json","stray_spawn_egg.json","strider_spawn_egg.json","string.json","stripped_acacia_log.json","stripped_acacia_wood.json","stripped_bamboo_block.json","stripped_birch_log.json","stripped_birch_wood.json","stripped_cherry_log.json","stripped_cherry_wood.json","stripped_crimson_hyphae.json","stripped_crimson_stem.json","stripped_dark_oak_log.json","stripped_dark_oak_wood.json","stripped_jungle_log.json","stripped_jungle_wood.json","stripped_mangrove_log.json","stripped_mangrove_wood.json","stripped_oak_log.json","stripped_oak_wood.json","stripped_pale_oak_log.json","stripped_pale_oak_wood.json","stripped_spruce_log.json","stripped_spruce_wood.json","stripped_warped_hyphae.json","stripped_warped_stem.json","structure_block.json","structure_void.json","sugar.json","sugar_cane.json","sunflower.json","suspicious_gravel.json","suspicious_sand.json","suspicious_stew.json","sweet_berries.json","tadpole_bucket.json","tadpole_spawn_egg.json","tall_dry_grass.json","tall_grass.json","target.json","terracotta.json","test_block.json","test_instance_block.json","tide_armor_trim_smithing_template.json","tinted_glass.json","tipped_arrow.json","tnt.json","tnt_minecart.json","torch.json","torchflower.json","torchflower_seeds.json","totem_of_undying.json","trader_llama_spawn_egg.json","trapped_chest.json","trial_key.json","trial_spawner.json","trident.json","tripwire_hook.json","tropical_fish.json","tropical_fish_bucket.json","tropical_fish_spawn_egg.json","tube_coral.json","tube_coral_block.json","tube_coral_fan.json","tuff.json","tuff_brick_slab.json","tuff_brick_stairs.json","tuff_brick_wall.json","tuff_bricks.json","tuff_slab.json","tuff_stairs.json","tuff_wall.json","turtle_egg.json","turtle_helmet.json","turtle_scute.json","turtle_spawn_egg.json","twisting_vines.json","vault.json","verdant_froglight.json","vex_armor_trim_smithing_template.json","vex_spawn_egg.json","villager_spawn_egg.json","vindicator_spawn_egg.json","vine.json","wandering_trader_spawn_egg.json","ward_armor_trim_smithing_template.json","warden_spawn_egg.json","warped_button.json","warped_door.json","warped_fence.json","warped_fence_gate.json","warped_fungus.json","warped_fungus_on_a_stick.json","warped_hanging_sign.json","warped_hyphae.json","warped_nylium.json","warped_planks.json","warped_pressure_plate.json","warped_roots.json","warped_sign.json","warped_slab.json","warped_stairs.json","warped_stem.json","warped_trapdoor.json","warped_wart_block.json","water_bucket.json","waxed_chiseled_copper.json","waxed_copper_block.json","waxed_copper_bulb.json","waxed_copper_door.json","waxed_copper_grate.json","waxed_copper_trapdoor.json","waxed_cut_copper.json","waxed_cut_copper_slab.json","waxed_cut_copper_stairs.json","waxed_exposed_chiseled_copper.json","waxed_exposed_copper.json","waxed_exposed_copper_bulb.json","waxed_exposed_copper_door.json","waxed_exposed_copper_grate.json","waxed_exposed_copper_trapdoor.json","waxed_exposed_cut_copper.json","waxed_exposed_cut_copper_slab.json","waxed_exposed_cut_copper_stairs.json","waxed_oxidized_chiseled_copper.json","waxed_oxidized_copper.json","waxed_oxidized_copper_bulb.json","waxed_oxidized_copper_door.json","waxed_oxidized_copper_grate.json","waxed_oxidized_copper_trapdoor.json","waxed_oxidized_cut_copper.json","waxed_oxidized_cut_copper_slab.json","waxed_oxidized_cut_copper_stairs.json","waxed_weathered_chiseled_copper.json","waxed_weathered_copper.json","waxed_weathered_copper_bulb.json","waxed_weathered_copper_door.json","waxed_weathered_copper_grate.json","waxed_weathered_copper_trapdoor.json","waxed_weathered_cut_copper.json","waxed_weathered_cut_copper_slab.json","waxed_weathered_cut_copper_stairs.json","wayfinder_armor_trim_smithing_template.json","weathered_chiseled_copper.json","weathered_copper.json","weathered_copper_bulb.json","weathered_copper_door.json","weathered_copper_grate.json","weathered_copper_trapdoor.json","weathered_cut_copper.json","weathered_cut_copper_slab.json","weathered_cut_copper_stairs.json","weeping_vines.json","wet_sponge.json","wheat.json","wheat_seeds.json","white_banner.json","white_bed.json","white_bundle.json","white_candle.json","white_carpet.json","white_concrete.json","white_concrete_powder.json","white_dye.json","white_glazed_terracotta.json","white_harness.json","white_shulker_box.json","white_stained_glass.json","white_stained_glass_pane.json","white_terracotta.json","white_tulip.json","white_wool.json","wild_armor_trim_smithing_template.json","wildflowers.json","wind_charge.json","witch_spawn_egg.json","wither_rose.json","wither_skeleton_skull.json","wither_skeleton_spawn_egg.json","wither_spawn_egg.json","wolf_armor.json","wolf_spawn_egg.json","wooden_axe.json","wooden_hoe.json","wooden_pickaxe.json","wooden_shovel.json","wooden_sword.json","writable_book.json","written_book.json","yellow_banner.json","yellow_bed.json","yellow_bundle.json","yellow_candle.json","yellow_carpet.json","yellow_concrete.json","yellow_concrete_powder.json","yellow_dye.json","yellow_glazed_terracotta.json","yellow_harness.json","yellow_shulker_box.json","yellow_stained_glass.json","yellow_stained_glass_pane.json","yellow_terracotta.json","yellow_wool.json","zoglin_spawn_egg.json","zombie_head.json","zombie_horse_spawn_egg.json","zombie_spawn_egg.json","zombie_villager_spawn_egg.json","zombified_piglin_spawn_egg.json"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/models/block/_all.json b/common-files/src/main/resources/internal/models/block/_all.json index 29221a6f3..1e3cbb1dc 100644 --- a/common-files/src/main/resources/internal/models/block/_all.json +++ b/common-files/src/main/resources/internal/models/block/_all.json @@ -1 +1 @@ -{"acacia_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/acacia_planks"}},"acacia_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/acacia_planks"}},"acacia_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/acacia_planks"}},"acacia_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/acacia_door_bottom","top":"minecraft:block/acacia_door_top"}},"acacia_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/acacia_door_bottom","top":"minecraft:block/acacia_door_top"}},"acacia_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/acacia_door_bottom","top":"minecraft:block/acacia_door_top"}},"acacia_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/acacia_door_bottom","top":"minecraft:block/acacia_door_top"}},"acacia_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/acacia_door_bottom","top":"minecraft:block/acacia_door_top"}},"acacia_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/acacia_door_bottom","top":"minecraft:block/acacia_door_top"}},"acacia_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/acacia_door_bottom","top":"minecraft:block/acacia_door_top"}},"acacia_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/acacia_door_bottom","top":"minecraft:block/acacia_door_top"}},"acacia_fence_gate":{"parent":"minecraft:block/template_fence_gate","textures":{"texture":"minecraft:block/acacia_planks"}},"acacia_fence_gate_open":{"parent":"minecraft:block/template_fence_gate_open","textures":{"texture":"minecraft:block/acacia_planks"}},"acacia_fence_gate_wall":{"parent":"minecraft:block/template_fence_gate_wall","textures":{"texture":"minecraft:block/acacia_planks"}},"acacia_fence_gate_wall_open":{"parent":"minecraft:block/template_fence_gate_wall_open","textures":{"texture":"minecraft:block/acacia_planks"}},"acacia_fence_inventory":{"parent":"minecraft:block/fence_inventory","textures":{"texture":"minecraft:block/acacia_planks"}},"acacia_fence_post":{"parent":"minecraft:block/fence_post","textures":{"texture":"minecraft:block/acacia_planks"}},"acacia_fence_side":{"parent":"minecraft:block/fence_side","textures":{"texture":"minecraft:block/acacia_planks"}},"acacia_hanging_sign":{"textures":{"particle":"minecraft:block/stripped_acacia_log"}},"acacia_leaves":{"parent":"minecraft:block/leaves","textures":{"all":"minecraft:block/acacia_leaves"}},"acacia_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/acacia_log_top","side":"minecraft:block/acacia_log"}},"acacia_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/acacia_log_top","side":"minecraft:block/acacia_log"}},"acacia_planks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/acacia_planks"}},"acacia_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/acacia_planks"}},"acacia_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/acacia_planks"}},"acacia_sapling":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/acacia_sapling"}},"acacia_sign":{"textures":{"particle":"minecraft:block/acacia_planks"}},"acacia_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/acacia_planks","side":"minecraft:block/acacia_planks","top":"minecraft:block/acacia_planks"}},"acacia_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/acacia_planks","side":"minecraft:block/acacia_planks","top":"minecraft:block/acacia_planks"}},"acacia_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/acacia_planks","side":"minecraft:block/acacia_planks","top":"minecraft:block/acacia_planks"}},"acacia_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/acacia_planks","side":"minecraft:block/acacia_planks","top":"minecraft:block/acacia_planks"}},"acacia_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/acacia_planks","side":"minecraft:block/acacia_planks","top":"minecraft:block/acacia_planks"}},"acacia_trapdoor_bottom":{"parent":"minecraft:block/template_orientable_trapdoor_bottom","textures":{"texture":"minecraft:block/acacia_trapdoor"}},"acacia_trapdoor_open":{"parent":"minecraft:block/template_orientable_trapdoor_open","textures":{"texture":"minecraft:block/acacia_trapdoor"}},"acacia_trapdoor_top":{"parent":"minecraft:block/template_orientable_trapdoor_top","textures":{"texture":"minecraft:block/acacia_trapdoor"}},"acacia_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/acacia_log","side":"minecraft:block/acacia_log"}},"activator_rail":{"parent":"minecraft:block/rail_flat","textures":{"rail":"minecraft:block/activator_rail"}},"activator_rail_on":{"parent":"minecraft:block/rail_flat","textures":{"rail":"minecraft:block/activator_rail_on"}},"activator_rail_on_raised_ne":{"parent":"minecraft:block/template_rail_raised_ne","textures":{"rail":"minecraft:block/activator_rail_on"}},"activator_rail_on_raised_sw":{"parent":"minecraft:block/template_rail_raised_sw","textures":{"rail":"minecraft:block/activator_rail_on"}},"activator_rail_raised_ne":{"parent":"minecraft:block/template_rail_raised_ne","textures":{"rail":"minecraft:block/activator_rail"}},"activator_rail_raised_sw":{"parent":"minecraft:block/template_rail_raised_sw","textures":{"rail":"minecraft:block/activator_rail"}},"air":{"textures":{"particle":"minecraft:missingno"}},"allium":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/allium"}},"amethyst_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/amethyst_block"}},"amethyst_cluster":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/amethyst_cluster"}},"ancient_debris":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/ancient_debris_top","side":"minecraft:block/ancient_debris_side"}},"andesite":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/andesite"}},"andesite_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/andesite","side":"minecraft:block/andesite","top":"minecraft:block/andesite"}},"andesite_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/andesite","side":"minecraft:block/andesite","top":"minecraft:block/andesite"}},"andesite_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/andesite","side":"minecraft:block/andesite","top":"minecraft:block/andesite"}},"andesite_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/andesite","side":"minecraft:block/andesite","top":"minecraft:block/andesite"}},"andesite_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/andesite","side":"minecraft:block/andesite","top":"minecraft:block/andesite"}},"andesite_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/andesite"}},"andesite_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/andesite"}},"andesite_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/andesite"}},"andesite_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/andesite"}},"anvil":{"parent":"minecraft:block/template_anvil","textures":{"top":"minecraft:block/anvil_top"}},"attached_melon_stem":{"parent":"minecraft:block/stem_fruit","textures":{"stem":"minecraft:block/melon_stem","upperstem":"minecraft:block/attached_melon_stem"}},"attached_pumpkin_stem":{"parent":"minecraft:block/stem_fruit","textures":{"stem":"minecraft:block/pumpkin_stem","upperstem":"minecraft:block/attached_pumpkin_stem"}},"azalea":{"parent":"minecraft:block/template_azalea","textures":{"side":"minecraft:block/azalea_side","top":"minecraft:block/azalea_top"}},"azalea_leaves":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/azalea_leaves"}},"azure_bluet":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/azure_bluet"}},"bamboo1_age0":{"textures":{"all":"block/bamboo_stalk","particle":"block/bamboo_stalk"},"elements":[{"from":[7,0,7],"to":[9,16,9],"faces":{"down":{"uv":[13,4,15,6],"texture":"#all","cullface":"down"},"up":{"uv":[13,0,15,2],"texture":"#all","cullface":"up"},"north":{"uv":[0,0,2,16],"texture":"#all"},"south":{"uv":[0,0,2,16],"texture":"#all"},"west":{"uv":[0,0,2,16],"texture":"#all"},"east":{"uv":[0,0,2,16],"texture":"#all"}}}]},"bamboo1_age1":{"textures":{"all":"block/bamboo_stalk","particle":"block/bamboo_stalk"},"elements":[{"from":[6.5,0,6.5],"to":[9.5,16,9.5],"faces":{"down":{"uv":[13,4,16,7],"texture":"#all","cullface":"down"},"up":{"uv":[13,0,16,3],"texture":"#all","cullface":"up"},"north":{"uv":[0,0,3,16],"texture":"#all"},"south":{"uv":[0,0,3,16],"texture":"#all"},"west":{"uv":[0,0,3,16],"texture":"#all"},"east":{"uv":[0,0,3,16],"texture":"#all"}}}]},"bamboo2_age0":{"textures":{"all":"block/bamboo_stalk","particle":"block/bamboo_stalk"},"elements":[{"from":[7,0,7],"to":[9,16,9],"faces":{"down":{"uv":[13,4,15,6],"texture":"#all","cullface":"down"},"up":{"uv":[13,0,15,2],"texture":"#all","cullface":"up"},"north":{"uv":[3,0,5,16],"texture":"#all"},"south":{"uv":[3,0,5,16],"texture":"#all"},"west":{"uv":[3,0,5,16],"texture":"#all"},"east":{"uv":[3,0,5,16],"texture":"#all"}}}]},"bamboo2_age1":{"textures":{"all":"block/bamboo_stalk","particle":"block/bamboo_stalk"},"elements":[{"from":[6.5,0,6.5],"to":[9.5,16,9.5],"faces":{"down":{"uv":[13,4,16,7],"texture":"#all","cullface":"down"},"up":{"uv":[13,0,16,3],"texture":"#all","cullface":"up"},"north":{"uv":[3,0,6,16],"texture":"#all"},"south":{"uv":[3,0,6,16],"texture":"#all"},"west":{"uv":[3,0,6,16],"texture":"#all"},"east":{"uv":[3,0,6,16],"texture":"#all"}}}]},"bamboo3_age0":{"textures":{"all":"block/bamboo_stalk","particle":"block/bamboo_stalk"},"elements":[{"from":[7,0,7],"to":[9,16,9],"faces":{"down":{"uv":[13,4,15,6],"texture":"#all","cullface":"down"},"up":{"uv":[13,0,15,2],"texture":"#all","cullface":"up"},"north":{"uv":[6,0,8,16],"texture":"#all"},"south":{"uv":[6,0,8,16],"texture":"#all"},"west":{"uv":[6,0,8,16],"texture":"#all"},"east":{"uv":[6,0,8,16],"texture":"#all"}}}]},"bamboo3_age1":{"textures":{"all":"block/bamboo_stalk","particle":"block/bamboo_stalk"},"elements":[{"from":[6.5,0,6.5],"to":[9.5,16,9.5],"faces":{"down":{"uv":[13,4,16,7],"texture":"#all","cullface":"down"},"up":{"uv":[13,0,16,3],"texture":"#all","cullface":"up"},"north":{"uv":[6,0,9,16],"texture":"#all"},"south":{"uv":[6,0,9,16],"texture":"#all"},"west":{"uv":[6,0,9,16],"texture":"#all"},"east":{"uv":[6,0,9,16],"texture":"#all"}}}]},"bamboo4_age0":{"textures":{"all":"block/bamboo_stalk","particle":"block/bamboo_stalk"},"elements":[{"from":[7,0,7],"to":[9,16,9],"faces":{"down":{"uv":[13,4,15,6],"texture":"#all","cullface":"down"},"up":{"uv":[13,0,15,2],"texture":"#all","cullface":"up"},"north":{"uv":[9,0,11,16],"texture":"#all"},"south":{"uv":[9,0,11,16],"texture":"#all"},"west":{"uv":[9,0,11,16],"texture":"#all"},"east":{"uv":[9,0,11,16],"texture":"#all"}}}]},"bamboo4_age1":{"textures":{"all":"block/bamboo_stalk","particle":"block/bamboo_stalk"},"elements":[{"from":[6.5,0,6.5],"to":[9.5,16,9.5],"faces":{"down":{"uv":[13,4,16,7],"texture":"#all","cullface":"down"},"up":{"uv":[13,0,16,3],"texture":"#all","cullface":"up"},"north":{"uv":[9,0,12,16],"texture":"#all"},"south":{"uv":[9,0,12,16],"texture":"#all"},"west":{"uv":[9,0,12,16],"texture":"#all"},"east":{"uv":[9,0,12,16],"texture":"#all"}}}]},"bamboo_block":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/bamboo_block_top","side":"minecraft:block/bamboo_block"}},"bamboo_block_x":{"parent":"minecraft:block/cube_column_uv_locked_x","textures":{"end":"minecraft:block/bamboo_block_top","side":"minecraft:block/bamboo_block"}},"bamboo_block_y":{"parent":"minecraft:block/cube_column_uv_locked_y","textures":{"end":"minecraft:block/bamboo_block_top","side":"minecraft:block/bamboo_block"}},"bamboo_block_z":{"parent":"minecraft:block/cube_column_uv_locked_z","textures":{"end":"minecraft:block/bamboo_block_top","side":"minecraft:block/bamboo_block"}},"bamboo_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/bamboo_planks"}},"bamboo_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/bamboo_planks"}},"bamboo_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/bamboo_planks"}},"bamboo_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/bamboo_door_bottom","top":"minecraft:block/bamboo_door_top"}},"bamboo_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/bamboo_door_bottom","top":"minecraft:block/bamboo_door_top"}},"bamboo_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/bamboo_door_bottom","top":"minecraft:block/bamboo_door_top"}},"bamboo_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/bamboo_door_bottom","top":"minecraft:block/bamboo_door_top"}},"bamboo_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/bamboo_door_bottom","top":"minecraft:block/bamboo_door_top"}},"bamboo_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/bamboo_door_bottom","top":"minecraft:block/bamboo_door_top"}},"bamboo_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/bamboo_door_bottom","top":"minecraft:block/bamboo_door_top"}},"bamboo_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/bamboo_door_bottom","top":"minecraft:block/bamboo_door_top"}},"bamboo_fence_gate":{"parent":"minecraft:block/template_custom_fence_gate","textures":{"particle":"minecraft:block/bamboo_fence_gate_particle","texture":"minecraft:block/bamboo_fence_gate"}},"bamboo_fence_gate_open":{"parent":"minecraft:block/template_custom_fence_gate_open","textures":{"particle":"minecraft:block/bamboo_fence_gate_particle","texture":"minecraft:block/bamboo_fence_gate"}},"bamboo_fence_gate_wall":{"parent":"minecraft:block/template_custom_fence_gate_wall","textures":{"particle":"minecraft:block/bamboo_fence_gate_particle","texture":"minecraft:block/bamboo_fence_gate"}},"bamboo_fence_gate_wall_open":{"parent":"minecraft:block/template_custom_fence_gate_wall_open","textures":{"particle":"minecraft:block/bamboo_fence_gate_particle","texture":"minecraft:block/bamboo_fence_gate"}},"bamboo_fence_inventory":{"parent":"minecraft:block/custom_fence_inventory","textures":{"texture":"minecraft:block/bamboo_fence"}},"bamboo_fence_post":{"parent":"minecraft:block/custom_fence_post","textures":{"particle":"minecraft:block/bamboo_fence_particle","texture":"minecraft:block/bamboo_fence"}},"bamboo_fence_side_east":{"parent":"minecraft:block/custom_fence_side_east","textures":{"texture":"minecraft:block/bamboo_fence"}},"bamboo_fence_side_north":{"parent":"minecraft:block/custom_fence_side_north","textures":{"texture":"minecraft:block/bamboo_fence"}},"bamboo_fence_side_south":{"parent":"minecraft:block/custom_fence_side_south","textures":{"texture":"minecraft:block/bamboo_fence"}},"bamboo_fence_side_west":{"parent":"minecraft:block/custom_fence_side_west","textures":{"texture":"minecraft:block/bamboo_fence"}},"bamboo_hanging_sign":{"textures":{"particle":"minecraft:block/bamboo_planks"}},"bamboo_large_leaves":{"ambientocclusion":false,"textures":{"texture":"block/bamboo_large_leaves","particle":"block/bamboo_large_leaves"},"elements":[{"from":[0.8,0,8],"to":[15.2,16,8],"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#texture","tintindex":0},"south":{"uv":[0,0,16,16],"texture":"#texture","tintindex":0}}},{"from":[8,0,0.8],"to":[8,16,15.2],"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#texture","tintindex":0},"east":{"uv":[0,0,16,16],"texture":"#texture","tintindex":0}}}]},"bamboo_mosaic":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/bamboo_mosaic"}},"bamboo_mosaic_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/bamboo_mosaic","side":"minecraft:block/bamboo_mosaic","top":"minecraft:block/bamboo_mosaic"}},"bamboo_mosaic_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/bamboo_mosaic","side":"minecraft:block/bamboo_mosaic","top":"minecraft:block/bamboo_mosaic"}},"bamboo_mosaic_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/bamboo_mosaic","side":"minecraft:block/bamboo_mosaic","top":"minecraft:block/bamboo_mosaic"}},"bamboo_mosaic_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/bamboo_mosaic","side":"minecraft:block/bamboo_mosaic","top":"minecraft:block/bamboo_mosaic"}},"bamboo_mosaic_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/bamboo_mosaic","side":"minecraft:block/bamboo_mosaic","top":"minecraft:block/bamboo_mosaic"}},"bamboo_planks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/bamboo_planks"}},"bamboo_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/bamboo_planks"}},"bamboo_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/bamboo_planks"}},"bamboo_sapling":{"parent":"minecraft:block/tinted_cross","textures":{"cross":"minecraft:block/bamboo_stage0"}},"bamboo_sign":{"textures":{"particle":"minecraft:block/bamboo_planks"}},"bamboo_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/bamboo_planks","side":"minecraft:block/bamboo_planks","top":"minecraft:block/bamboo_planks"}},"bamboo_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/bamboo_planks","side":"minecraft:block/bamboo_planks","top":"minecraft:block/bamboo_planks"}},"bamboo_small_leaves":{"ambientocclusion":false,"textures":{"texture":"block/bamboo_small_leaves","particle":"block/bamboo_small_leaves"},"elements":[{"from":[0.8,0,8],"to":[15.2,16,8],"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#texture","tintindex":0},"south":{"uv":[0,0,16,16],"texture":"#texture","tintindex":0}}},{"from":[8,0,0.8],"to":[8,16,15.2],"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#texture","tintindex":0},"east":{"uv":[0,0,16,16],"texture":"#texture","tintindex":0}}}]},"bamboo_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/bamboo_planks","side":"minecraft:block/bamboo_planks","top":"minecraft:block/bamboo_planks"}},"bamboo_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/bamboo_planks","side":"minecraft:block/bamboo_planks","top":"minecraft:block/bamboo_planks"}},"bamboo_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/bamboo_planks","side":"minecraft:block/bamboo_planks","top":"minecraft:block/bamboo_planks"}},"bamboo_trapdoor_bottom":{"parent":"minecraft:block/template_orientable_trapdoor_bottom","textures":{"texture":"minecraft:block/bamboo_trapdoor"}},"bamboo_trapdoor_open":{"parent":"minecraft:block/template_orientable_trapdoor_open","textures":{"texture":"minecraft:block/bamboo_trapdoor"}},"bamboo_trapdoor_top":{"parent":"minecraft:block/template_orientable_trapdoor_top","textures":{"texture":"minecraft:block/bamboo_trapdoor"}},"banner":{"textures":{"particle":"minecraft:block/oak_planks"}},"barrel":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/barrel_bottom","side":"minecraft:block/barrel_side","top":"minecraft:block/barrel_top"}},"barrel_open":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/barrel_bottom","side":"minecraft:block/barrel_side","top":"minecraft:block/barrel_top_open"}},"barrier":{"textures":{"particle":"minecraft:item/barrier"}},"basalt":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/basalt_top","side":"minecraft:block/basalt_side"}},"beacon":{"parent":"block/block","textures":{"particle":"block/glass","glass":"block/glass","obsidian":"block/obsidian","beacon":"block/beacon"},"elements":[{"__comment":"Glass shell","from":[0,0,0],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#glass"},"up":{"uv":[0,0,16,16],"texture":"#glass"},"north":{"uv":[0,0,16,16],"texture":"#glass"},"south":{"uv":[0,0,16,16],"texture":"#glass"},"west":{"uv":[0,0,16,16],"texture":"#glass"},"east":{"uv":[0,0,16,16],"texture":"#glass"}}},{"__comment":"Obsidian base","from":[2,0.1,2],"to":[14,3,14],"faces":{"down":{"uv":[2,2,14,14],"texture":"#obsidian"},"up":{"uv":[2,2,14,14],"texture":"#obsidian"},"north":{"uv":[2,13,14,16],"texture":"#obsidian"},"south":{"uv":[2,13,14,16],"texture":"#obsidian"},"west":{"uv":[2,13,14,16],"texture":"#obsidian"},"east":{"uv":[2,13,14,16],"texture":"#obsidian"}}},{"__comment":"Inner beacon texture","from":[3,3,3],"to":[13,14,13],"faces":{"down":{"uv":[3,3,13,13],"texture":"#beacon"},"up":{"uv":[3,3,13,13],"texture":"#beacon"},"north":{"uv":[3,2,13,13],"texture":"#beacon"},"south":{"uv":[3,2,13,13],"texture":"#beacon"},"west":{"uv":[3,2,13,13],"texture":"#beacon"},"east":{"uv":[3,2,13,13],"texture":"#beacon"}}}]},"bed":{"textures":{"particle":"minecraft:block/oak_planks"}},"bedrock":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/bedrock"}},"bedrock_mirrored":{"parent":"minecraft:block/cube_mirrored_all","textures":{"all":"minecraft:block/bedrock"}},"bee_nest_empty":{"parent":"minecraft:block/orientable_with_bottom","textures":{"bottom":"minecraft:block/bee_nest_bottom","front":"minecraft:block/bee_nest_front","particle":"minecraft:block/bee_nest_side","side":"minecraft:block/bee_nest_side","top":"minecraft:block/bee_nest_top"}},"bee_nest_honey":{"parent":"minecraft:block/orientable_with_bottom","textures":{"bottom":"minecraft:block/bee_nest_bottom","front":"minecraft:block/bee_nest_front_honey","particle":"minecraft:block/bee_nest_side","side":"minecraft:block/bee_nest_side","top":"minecraft:block/bee_nest_top"}},"beehive_empty":{"parent":"minecraft:block/orientable_with_bottom","textures":{"bottom":"minecraft:block/beehive_end","front":"minecraft:block/beehive_front","particle":"minecraft:block/beehive_side","side":"minecraft:block/beehive_side","top":"minecraft:block/beehive_end"}},"beehive_honey":{"parent":"minecraft:block/orientable_with_bottom","textures":{"bottom":"minecraft:block/beehive_end","front":"minecraft:block/beehive_front_honey","particle":"minecraft:block/beehive_side","side":"minecraft:block/beehive_side","top":"minecraft:block/beehive_end"}},"beetroots_stage0":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/beetroots_stage0"}},"beetroots_stage1":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/beetroots_stage1"}},"beetroots_stage2":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/beetroots_stage2"}},"beetroots_stage3":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/beetroots_stage3"}},"bell_between_walls":{"textures":{"particle":"block/bell_bottom","bar":"block/dark_oak_planks"},"elements":[{"from":[0,13,7],"to":[16,15,9],"faces":{"north":{"uv":[2,2,14,4],"texture":"#bar"},"east":{"uv":[5,4,7,6],"texture":"#bar","cullface":"east"},"south":{"uv":[2,3,14,5],"texture":"#bar"},"west":{"uv":[5,4,7,6],"texture":"#bar","cullface":"west"},"up":{"uv":[2,3,14,5],"texture":"#bar"},"down":{"uv":[2,3,14,5],"texture":"#bar"}}}]},"bell_ceiling":{"textures":{"particle":"block/bell_bottom","bar":"block/dark_oak_planks"},"elements":[{"from":[7,13,7],"to":[9,16,9],"faces":{"north":{"uv":[7,2,9,5],"texture":"#bar"},"east":{"uv":[1,2,3,5],"texture":"#bar"},"south":{"uv":[6,2,8,5],"texture":"#bar"},"west":{"uv":[4,2,6,5],"texture":"#bar"},"up":{"uv":[1,3,3,5],"texture":"#bar","cullface":"up"}}}]},"bell_floor":{"textures":{"particle":"block/bell_bottom","bar":"block/dark_oak_planks","post":"block/stone"},"elements":[{"from":[2,13,7],"to":[14,15,9],"faces":{"north":{"uv":[2,2,14,4],"texture":"#bar"},"south":{"uv":[2,3,14,5],"texture":"#bar"},"up":{"uv":[2,3,14,5],"texture":"#bar"},"down":{"uv":[2,3,14,5],"texture":"#bar"}}},{"from":[14,0,6],"to":[16,16,10],"faces":{"north":{"uv":[0,1,2,16],"texture":"#post"},"east":{"uv":[0,1,4,16],"texture":"#post"},"south":{"uv":[0,1,2,16],"texture":"#post"},"west":{"uv":[0,1,4,16],"texture":"#post"},"up":{"uv":[0,0,2,4],"texture":"#post","cullface":"up"},"down":{"uv":[0,0,2,4],"texture":"#post","cullface":"down"}}},{"from":[0,0,6],"to":[2,16,10],"faces":{"north":{"uv":[0,1,2,16],"texture":"#post"},"east":{"uv":[0,1,4,16],"texture":"#post"},"south":{"uv":[0,1,2,16],"texture":"#post"},"west":{"uv":[0,1,4,16],"texture":"#post"},"up":{"uv":[0,0,2,4],"texture":"#post","cullface":"up"},"down":{"uv":[0,0,2,4],"texture":"#post","cullface":"down"}}}]},"bell_wall":{"textures":{"particle":"block/bell_bottom","bar":"block/dark_oak_planks"},"elements":[{"from":[3,13,7],"to":[16,15,9],"faces":{"north":{"uv":[2,2,14,4],"texture":"#bar"},"east":{"uv":[5,4,7,6],"texture":"#bar","cullface":"east"},"south":{"uv":[2,3,14,5],"texture":"#bar"},"west":{"uv":[5,4,7,6],"texture":"#bar"},"up":{"uv":[2,3,14,5],"texture":"#bar"},"down":{"uv":[2,3,14,5],"texture":"#bar"}}}]},"big_dripleaf":{"parent":"block/block","textures":{"top":"minecraft:block/big_dripleaf_top","stem":"minecraft:block/big_dripleaf_stem","side":"minecraft:block/big_dripleaf_side","tip":"minecraft:block/big_dripleaf_tip","particle":"block/big_dripleaf_top"},"elements":[{"from":[0,15,0],"to":[16,15,16],"shade":false,"faces":{"down":{"uv":[0,16,16,0],"texture":"#top"},"up":{"uv":[0,0,16,16],"texture":"#top"}}},{"from":[0,11,0],"to":[16,15,0.002],"shade":false,"faces":{"north":{"uv":[0,0,16,4],"texture":"#tip","cullface":"north"},"south":{"uv":[16,0,0,4],"texture":"#tip"}}},{"from":[0,11,0],"to":[0.002,15,16],"shade":false,"faces":{"east":{"uv":[16,0,0,4],"texture":"#side"},"west":{"uv":[0,0,16,4],"texture":"#side","cullface":"west"}}},{"from":[15.998,11,0],"to":[16,15,16],"shade":false,"faces":{"east":{"uv":[16,0,0,4],"texture":"#side","cullface":"east"},"west":{"uv":[0,0,16,4],"texture":"#side"}}},{"from":[5,0,12],"to":[11,15,12],"rotation":{"origin":[8,8,12],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[3,0,14,16],"texture":"#stem"},"south":{"uv":[3,0,14,16],"texture":"#stem"}}},{"from":[5,0,12],"to":[11,15,12],"rotation":{"origin":[8,8,12],"axis":"y","angle":-45,"rescale":true},"shade":false,"faces":{"north":{"uv":[3,0,14,16],"texture":"#stem"},"south":{"uv":[3,0,14,16],"texture":"#stem"}}}]},"big_dripleaf_full_tilt":{"parent":"block/block","textures":{"top":"minecraft:block/big_dripleaf_top","stem":"minecraft:block/big_dripleaf_stem","side":"minecraft:block/big_dripleaf_side","tip":"minecraft:block/big_dripleaf_tip","particle":"block/big_dripleaf_top"},"elements":[{"from":[0,15,0],"to":[16,15,16],"rotation":{"origin":[8,15,16],"axis":"x","angle":-45},"shade":false,"faces":{"down":{"uv":[16,16,0,0],"texture":"#top"},"up":{"uv":[0,0,16,16],"texture":"#top"}}},{"from":[0,11,0],"to":[16,15,0],"rotation":{"origin":[8,15,16],"axis":"x","angle":-45},"shade":false,"faces":{"north":{"uv":[0,0,16,4],"texture":"#tip"},"south":{"uv":[0,0,16,4],"texture":"#tip"}}},{"from":[0,11,0],"to":[0.002,15,16],"rotation":{"origin":[8,15,16],"axis":"x","angle":-45},"shade":false,"faces":{"east":{"uv":[16,0,0,4],"texture":"#side"},"west":{"uv":[0,0,16,4],"texture":"#side","cullface":"west"}}},{"from":[15.998,11,0],"to":[16,15,16],"rotation":{"origin":[8,15,16],"axis":"x","angle":-45},"shade":false,"faces":{"east":{"uv":[16,0,0,4],"texture":"#side","cullface":"east"},"west":{"uv":[0,0,16,4],"texture":"#side"}}},{"from":[5,0,12],"to":[11,15,12],"rotation":{"origin":[8,8,12],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[3,0,14,16],"texture":"#stem"},"south":{"uv":[3,0,14,16],"texture":"#stem"}}},{"from":[5,0,12],"to":[11,15,12],"rotation":{"origin":[8,8,12],"axis":"y","angle":-45,"rescale":true},"shade":false,"faces":{"north":{"uv":[3,0,14,16],"texture":"#stem"},"south":{"uv":[3,0,14,16],"texture":"#stem"}}}]},"big_dripleaf_partial_tilt":{"parent":"block/block","textures":{"top":"minecraft:block/big_dripleaf_top","stem":"minecraft:block/big_dripleaf_stem","side":"minecraft:block/big_dripleaf_side","tip":"minecraft:block/big_dripleaf_tip","particle":"block/big_dripleaf_top"},"elements":[{"from":[0,15,0],"to":[16,15,16],"rotation":{"origin":[8,15,16],"axis":"x","angle":-22.5},"shade":false,"faces":{"down":{"uv":[16,16,0,0],"texture":"#top"},"up":{"uv":[0,0,16,16],"texture":"#top"}}},{"from":[0,11,0],"to":[16,15,0],"rotation":{"origin":[8,15,16],"axis":"x","angle":-22.5},"shade":false,"faces":{"north":{"uv":[0,0,16,4],"texture":"#tip"},"south":{"uv":[0,0,16,4],"texture":"#tip"}}},{"from":[0,11,0],"to":[0.002,15,16],"rotation":{"origin":[8,15,16],"axis":"x","angle":-22.5},"shade":false,"faces":{"east":{"uv":[16,0,0,4],"texture":"#side"},"west":{"uv":[0,0,16,4],"texture":"#side","cullface":"west"}}},{"from":[15.998,11,0],"to":[16,15,16],"rotation":{"origin":[8,15,16],"axis":"x","angle":-22.5},"shade":false,"faces":{"east":{"uv":[16,0,0,4],"texture":"#side","cullface":"east"},"west":{"uv":[0,0,16,4],"texture":"#side"}}},{"from":[5,0,12],"to":[11,15,12],"rotation":{"origin":[8,8,12],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[3,0,14,16],"texture":"#stem"},"south":{"uv":[3,0,14,16],"texture":"#stem"}}},{"from":[5,0,12],"to":[11,15,12],"rotation":{"origin":[8,8,12],"axis":"y","angle":-45,"rescale":true},"shade":false,"faces":{"north":{"uv":[3,0,14,16],"texture":"#stem"},"south":{"uv":[3,0,14,16],"texture":"#stem"}}}]},"big_dripleaf_stem":{"parent":"block/block","textures":{"stem":"block/big_dripleaf_stem","particle":"block/big_dripleaf_stem"},"elements":[{"from":[5,0,12],"to":[11,16,12],"rotation":{"origin":[8,8,12],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[3,0,14,16],"texture":"#stem"},"south":{"uv":[3,0,14,16],"texture":"#stem"}}},{"from":[5,0,12],"to":[11,16,12],"rotation":{"origin":[8,8,12],"axis":"y","angle":-45,"rescale":true},"shade":false,"faces":{"north":{"uv":[3,0,14,16],"texture":"#stem"},"south":{"uv":[3,0,14,16],"texture":"#stem"}}}]},"birch_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/birch_planks"}},"birch_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/birch_planks"}},"birch_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/birch_planks"}},"birch_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/birch_door_bottom","top":"minecraft:block/birch_door_top"}},"birch_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/birch_door_bottom","top":"minecraft:block/birch_door_top"}},"birch_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/birch_door_bottom","top":"minecraft:block/birch_door_top"}},"birch_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/birch_door_bottom","top":"minecraft:block/birch_door_top"}},"birch_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/birch_door_bottom","top":"minecraft:block/birch_door_top"}},"birch_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/birch_door_bottom","top":"minecraft:block/birch_door_top"}},"birch_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/birch_door_bottom","top":"minecraft:block/birch_door_top"}},"birch_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/birch_door_bottom","top":"minecraft:block/birch_door_top"}},"birch_fence_gate":{"parent":"minecraft:block/template_fence_gate","textures":{"texture":"minecraft:block/birch_planks"}},"birch_fence_gate_open":{"parent":"minecraft:block/template_fence_gate_open","textures":{"texture":"minecraft:block/birch_planks"}},"birch_fence_gate_wall":{"parent":"minecraft:block/template_fence_gate_wall","textures":{"texture":"minecraft:block/birch_planks"}},"birch_fence_gate_wall_open":{"parent":"minecraft:block/template_fence_gate_wall_open","textures":{"texture":"minecraft:block/birch_planks"}},"birch_fence_inventory":{"parent":"minecraft:block/fence_inventory","textures":{"texture":"minecraft:block/birch_planks"}},"birch_fence_post":{"parent":"minecraft:block/fence_post","textures":{"texture":"minecraft:block/birch_planks"}},"birch_fence_side":{"parent":"minecraft:block/fence_side","textures":{"texture":"minecraft:block/birch_planks"}},"birch_hanging_sign":{"textures":{"particle":"minecraft:block/stripped_birch_log"}},"birch_leaves":{"parent":"minecraft:block/leaves","textures":{"all":"minecraft:block/birch_leaves"}},"birch_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/birch_log_top","side":"minecraft:block/birch_log"}},"birch_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/birch_log_top","side":"minecraft:block/birch_log"}},"birch_planks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/birch_planks"}},"birch_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/birch_planks"}},"birch_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/birch_planks"}},"birch_sapling":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/birch_sapling"}},"birch_sign":{"textures":{"particle":"minecraft:block/birch_planks"}},"birch_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/birch_planks","side":"minecraft:block/birch_planks","top":"minecraft:block/birch_planks"}},"birch_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/birch_planks","side":"minecraft:block/birch_planks","top":"minecraft:block/birch_planks"}},"birch_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/birch_planks","side":"minecraft:block/birch_planks","top":"minecraft:block/birch_planks"}},"birch_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/birch_planks","side":"minecraft:block/birch_planks","top":"minecraft:block/birch_planks"}},"birch_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/birch_planks","side":"minecraft:block/birch_planks","top":"minecraft:block/birch_planks"}},"birch_trapdoor_bottom":{"parent":"minecraft:block/template_orientable_trapdoor_bottom","textures":{"texture":"minecraft:block/birch_trapdoor"}},"birch_trapdoor_open":{"parent":"minecraft:block/template_orientable_trapdoor_open","textures":{"texture":"minecraft:block/birch_trapdoor"}},"birch_trapdoor_top":{"parent":"minecraft:block/template_orientable_trapdoor_top","textures":{"texture":"minecraft:block/birch_trapdoor"}},"birch_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/birch_log","side":"minecraft:block/birch_log"}},"black_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/black_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"black_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/black_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"black_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/black_candle","particle":"minecraft:block/black_candle"}},"black_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/black_candle_lit","particle":"minecraft:block/black_candle_lit"}},"black_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/black_candle","particle":"minecraft:block/black_candle"}},"black_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/black_candle_lit","particle":"minecraft:block/black_candle_lit"}},"black_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/black_candle","particle":"minecraft:block/black_candle"}},"black_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/black_candle_lit","particle":"minecraft:block/black_candle_lit"}},"black_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/black_candle","particle":"minecraft:block/black_candle"}},"black_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/black_candle_lit","particle":"minecraft:block/black_candle_lit"}},"black_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/black_wool"}},"black_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/black_concrete"}},"black_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/black_concrete_powder"}},"black_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/black_glazed_terracotta"}},"black_shulker_box":{"textures":{"particle":"minecraft:block/black_shulker_box"}},"black_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/black_stained_glass"}},"black_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/black_stained_glass"}},"black_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/black_stained_glass"}},"black_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/black_stained_glass_pane_top","pane":"minecraft:block/black_stained_glass"}},"black_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/black_stained_glass_pane_top","pane":"minecraft:block/black_stained_glass"}},"black_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/black_stained_glass_pane_top","pane":"minecraft:block/black_stained_glass"}},"black_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/black_terracotta"}},"black_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/black_wool"}},"blackstone":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/blackstone_top","side":"minecraft:block/blackstone"}},"blackstone_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/blackstone_top","side":"minecraft:block/blackstone","top":"minecraft:block/blackstone_top"}},"blackstone_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/blackstone_top","side":"minecraft:block/blackstone","top":"minecraft:block/blackstone_top"}},"blackstone_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/blackstone_top","side":"minecraft:block/blackstone","top":"minecraft:block/blackstone_top"}},"blackstone_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/blackstone_top","side":"minecraft:block/blackstone","top":"minecraft:block/blackstone_top"}},"blackstone_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/blackstone_top","side":"minecraft:block/blackstone","top":"minecraft:block/blackstone_top"}},"blackstone_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/blackstone"}},"blackstone_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/blackstone"}},"blackstone_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/blackstone"}},"blackstone_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/blackstone"}},"blast_furnace":{"parent":"minecraft:block/orientable","textures":{"front":"minecraft:block/blast_furnace_front","side":"minecraft:block/blast_furnace_side","top":"minecraft:block/blast_furnace_top"}},"blast_furnace_on":{"parent":"minecraft:block/orientable","textures":{"front":"minecraft:block/blast_furnace_front_on","side":"minecraft:block/blast_furnace_side","top":"minecraft:block/blast_furnace_top"}},"block":{"gui_light":"side","display":{"gui":{"rotation":[30,225,0],"translation":[0,0,0],"scale":[0.625,0.625,0.625]},"ground":{"rotation":[0,0,0],"translation":[0,3,0],"scale":[0.25,0.25,0.25]},"fixed":{"rotation":[0,0,0],"translation":[0,0,0],"scale":[0.5,0.5,0.5]},"thirdperson_righthand":{"rotation":[75,45,0],"translation":[0,2.5,0],"scale":[0.375,0.375,0.375]},"firstperson_righthand":{"rotation":[0,45,0],"translation":[0,0,0],"scale":[0.40,0.40,0.40]},"firstperson_lefthand":{"rotation":[0,225,0],"translation":[0,0,0],"scale":[0.40,0.40,0.40]}}},"blue_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/blue_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"blue_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/blue_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"blue_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/blue_candle","particle":"minecraft:block/blue_candle"}},"blue_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/blue_candle_lit","particle":"minecraft:block/blue_candle_lit"}},"blue_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/blue_candle","particle":"minecraft:block/blue_candle"}},"blue_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/blue_candle_lit","particle":"minecraft:block/blue_candle_lit"}},"blue_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/blue_candle","particle":"minecraft:block/blue_candle"}},"blue_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/blue_candle_lit","particle":"minecraft:block/blue_candle_lit"}},"blue_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/blue_candle","particle":"minecraft:block/blue_candle"}},"blue_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/blue_candle_lit","particle":"minecraft:block/blue_candle_lit"}},"blue_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/blue_wool"}},"blue_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/blue_concrete"}},"blue_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/blue_concrete_powder"}},"blue_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/blue_glazed_terracotta"}},"blue_ice":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/blue_ice"}},"blue_orchid":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/blue_orchid"}},"blue_shulker_box":{"textures":{"particle":"minecraft:block/blue_shulker_box"}},"blue_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/blue_stained_glass"}},"blue_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/blue_stained_glass"}},"blue_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/blue_stained_glass"}},"blue_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/blue_stained_glass_pane_top","pane":"minecraft:block/blue_stained_glass"}},"blue_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/blue_stained_glass_pane_top","pane":"minecraft:block/blue_stained_glass"}},"blue_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/blue_stained_glass_pane_top","pane":"minecraft:block/blue_stained_glass"}},"blue_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/blue_terracotta"}},"blue_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/blue_wool"}},"bone_block":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/bone_block_top","side":"minecraft:block/bone_block_side"}},"bookshelf":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/oak_planks","side":"minecraft:block/bookshelf"}},"brain_coral":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/brain_coral"}},"brain_coral_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/brain_coral_block"}},"brain_coral_fan":{"parent":"minecraft:block/coral_fan","textures":{"fan":"minecraft:block/brain_coral_fan"}},"brain_coral_wall_fan":{"parent":"minecraft:block/coral_wall_fan","textures":{"fan":"minecraft:block/brain_coral_fan"}},"brewing_stand":{"textures":{"particle":"block/brewing_stand","base":"block/brewing_stand_base","stand":"block/brewing_stand"},"elements":[{"from":[7,0,7],"to":[9,14,9],"faces":{"down":{"uv":[7,7,9,9],"texture":"#stand"},"up":{"uv":[7,7,9,9],"texture":"#stand"},"north":{"uv":[7,2,9,16],"texture":"#stand"},"south":{"uv":[7,2,9,16],"texture":"#stand"},"west":{"uv":[7,2,9,16],"texture":"#stand"},"east":{"uv":[7,2,9,16],"texture":"#stand"}}},{"from":[9,0,5],"to":[15,2,11],"faces":{"down":{"uv":[9,5,15,11],"texture":"#base","cullface":"down"},"up":{"uv":[9,5,15,11],"texture":"#base"},"north":{"uv":[9,14,15,16],"texture":"#base"},"south":{"uv":[9,14,15,16],"texture":"#base"},"west":{"uv":[5,14,11,16],"texture":"#base"},"east":{"uv":[5,14,11,16],"texture":"#base"}}},{"from":[1,0,1],"to":[7,2,7],"faces":{"down":{"uv":[1,1,7,7],"texture":"#base","cullface":"down"},"up":{"uv":[1,1,7,7],"texture":"#base"},"north":{"uv":[1,14,7,16],"texture":"#base"},"south":{"uv":[1,14,7,16],"texture":"#base"},"west":{"uv":[1,14,7,16],"texture":"#base"},"east":{"uv":[1,14,7,16],"texture":"#base"}}},{"from":[1,0,9],"to":[7,2,15],"faces":{"down":{"uv":[1,9,7,15],"texture":"#base","cullface":"down"},"up":{"uv":[1,9,7,15],"texture":"#base"},"north":{"uv":[1,14,7,16],"texture":"#base"},"south":{"uv":[1,14,7,16],"texture":"#base"},"west":{"uv":[9,14,15,16],"texture":"#base"},"east":{"uv":[9,14,15,16],"texture":"#base"}}}]},"brewing_stand_bottle0":{"textures":{"particle":"block/brewing_stand","stand":"block/brewing_stand"},"elements":[{"from":[8,0,8],"to":[16,16,8],"faces":{"north":{"uv":[0,0,8,16],"texture":"#stand"},"south":{"uv":[8,0,0,16],"texture":"#stand"}}}]},"brewing_stand_bottle1":{"textures":{"particle":"block/brewing_stand","stand":"block/brewing_stand"},"elements":[{"from":[-0.41,0,8],"to":[7.59,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":-45},"faces":{"north":{"uv":[8,0,0,16],"texture":"#stand"},"south":{"uv":[0,0,8,16],"texture":"#stand"}}}]},"brewing_stand_bottle2":{"textures":{"particle":"block/brewing_stand","stand":"block/brewing_stand"},"elements":[{"from":[-0.41,0,8],"to":[7.59,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45},"faces":{"north":{"uv":[8,0,0,16],"texture":"#stand"},"south":{"uv":[0,0,8,16],"texture":"#stand"}}}]},"brewing_stand_empty0":{"textures":{"particle":"block/brewing_stand","stand":"block/brewing_stand"},"elements":[{"from":[8,0,8],"to":[16,16,8],"faces":{"north":{"uv":[16,0,8,16],"texture":"#stand"},"south":{"uv":[8,0,16,16],"texture":"#stand"}}}]},"brewing_stand_empty1":{"textures":{"particle":"block/brewing_stand","stand":"block/brewing_stand"},"elements":[{"from":[-0.41,0,8],"to":[7.59,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":-45},"faces":{"north":{"uv":[8,0,16,16],"texture":"#stand"},"south":{"uv":[16,0,8,16],"texture":"#stand"}}}]},"brewing_stand_empty2":{"textures":{"particle":"block/brewing_stand","stand":"block/brewing_stand"},"elements":[{"from":[-0.41,0,8],"to":[7.59,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45},"faces":{"north":{"uv":[8,0,16,16],"texture":"#stand"},"south":{"uv":[16,0,8,16],"texture":"#stand"}}}]},"brick_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/bricks","side":"minecraft:block/bricks","top":"minecraft:block/bricks"}},"brick_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/bricks","side":"minecraft:block/bricks","top":"minecraft:block/bricks"}},"brick_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/bricks","side":"minecraft:block/bricks","top":"minecraft:block/bricks"}},"brick_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/bricks","side":"minecraft:block/bricks","top":"minecraft:block/bricks"}},"brick_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/bricks","side":"minecraft:block/bricks","top":"minecraft:block/bricks"}},"brick_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/bricks"}},"brick_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/bricks"}},"brick_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/bricks"}},"brick_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/bricks"}},"bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/bricks"}},"brown_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/brown_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"brown_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/brown_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"brown_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/brown_candle","particle":"minecraft:block/brown_candle"}},"brown_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/brown_candle_lit","particle":"minecraft:block/brown_candle_lit"}},"brown_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/brown_candle","particle":"minecraft:block/brown_candle"}},"brown_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/brown_candle_lit","particle":"minecraft:block/brown_candle_lit"}},"brown_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/brown_candle","particle":"minecraft:block/brown_candle"}},"brown_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/brown_candle_lit","particle":"minecraft:block/brown_candle_lit"}},"brown_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/brown_candle","particle":"minecraft:block/brown_candle"}},"brown_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/brown_candle_lit","particle":"minecraft:block/brown_candle_lit"}},"brown_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/brown_wool"}},"brown_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/brown_concrete"}},"brown_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/brown_concrete_powder"}},"brown_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/brown_glazed_terracotta"}},"brown_mushroom":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/brown_mushroom"}},"brown_mushroom_block":{"parent":"minecraft:block/template_single_face","textures":{"texture":"minecraft:block/brown_mushroom_block"}},"brown_mushroom_block_inventory":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/brown_mushroom_block"}},"brown_shulker_box":{"textures":{"particle":"minecraft:block/brown_shulker_box"}},"brown_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/brown_stained_glass"}},"brown_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/brown_stained_glass"}},"brown_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/brown_stained_glass"}},"brown_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/brown_stained_glass_pane_top","pane":"minecraft:block/brown_stained_glass"}},"brown_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/brown_stained_glass_pane_top","pane":"minecraft:block/brown_stained_glass"}},"brown_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/brown_stained_glass_pane_top","pane":"minecraft:block/brown_stained_glass"}},"brown_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/brown_terracotta"}},"brown_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/brown_wool"}},"bubble_coral":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/bubble_coral"}},"bubble_coral_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/bubble_coral_block"}},"bubble_coral_fan":{"parent":"minecraft:block/coral_fan","textures":{"fan":"minecraft:block/bubble_coral_fan"}},"bubble_coral_wall_fan":{"parent":"minecraft:block/coral_wall_fan","textures":{"fan":"minecraft:block/bubble_coral_fan"}},"budding_amethyst":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/budding_amethyst"}},"bush":{"parent":"minecraft:block/tinted_cross","textures":{"cross":"minecraft:block/bush"}},"button":{"textures":{"particle":"#texture"},"elements":[{"from":[5,0,6],"to":[11,2,10],"faces":{"down":{"uv":[5,6,11,10],"texture":"#texture","cullface":"down"},"up":{"uv":[5,6,11,10],"texture":"#texture"},"north":{"uv":[5,14,11,16],"texture":"#texture"},"south":{"uv":[5,14,11,16],"texture":"#texture"},"west":{"uv":[6,14,10,16],"texture":"#texture"},"east":{"uv":[6,14,10,16],"texture":"#texture"}}}]},"button_inventory":{"parent":"block/block","textures":{"particle":"#texture"},"elements":[{"from":[5,6,6],"to":[11,10,10],"faces":{"down":{"uv":[5,6,11,10],"texture":"#texture"},"up":{"uv":[5,10,11,6],"texture":"#texture"},"north":{"uv":[5,12,11,16],"texture":"#texture"},"south":{"uv":[5,12,11,16],"texture":"#texture"},"west":{"uv":[6,12,10,16],"texture":"#texture"},"east":{"uv":[6,12,10,16],"texture":"#texture"}}}]},"button_pressed":{"textures":{"particle":"#texture"},"elements":[{"from":[5,0,6],"to":[11,1.02,10],"faces":{"down":{"uv":[5,6,11,10],"texture":"#texture","cullface":"down"},"up":{"uv":[5,6,11,10],"texture":"#texture"},"north":{"uv":[5,14,11,15],"texture":"#texture"},"south":{"uv":[5,14,11,15],"texture":"#texture"},"west":{"uv":[6,14,10,15],"texture":"#texture"},"east":{"uv":[6,14,10,15],"texture":"#texture"}}}]},"cactus":{"parent":"block/block","textures":{"particle":"block/cactus_side","bottom":"block/cactus_bottom","top":"block/cactus_top","side":"block/cactus_side"},"elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top","cullface":"up"}}},{"from":[0,0,1],"to":[16,16,15],"faces":{"north":{"uv":[0,0,16,16],"texture":"#side"},"south":{"uv":[0,0,16,16],"texture":"#side"}}},{"from":[1,0,0],"to":[15,16,16],"faces":{"west":{"uv":[0,0,16,16],"texture":"#side"},"east":{"uv":[0,0,16,16],"texture":"#side"}}}]},"cactus_flower":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/cactus_flower"}},"cake":{"textures":{"particle":"block/cake_side","bottom":"block/cake_bottom","top":"block/cake_top","side":"block/cake_side"},"elements":[{"from":[1,0,1],"to":[15,8,15],"faces":{"down":{"texture":"#bottom","cullface":"down"},"up":{"texture":"#top"},"north":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side"},"east":{"texture":"#side"}}}]},"cake_slice1":{"textures":{"particle":"block/cake_side","bottom":"block/cake_bottom","top":"block/cake_top","side":"block/cake_side","inside":"block/cake_inner"},"elements":[{"from":[3,0,1],"to":[15,8,15],"faces":{"down":{"texture":"#bottom","cullface":"down"},"up":{"texture":"#top"},"north":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#inside"},"east":{"texture":"#side"}}}]},"cake_slice2":{"textures":{"particle":"block/cake_side","bottom":"block/cake_bottom","top":"block/cake_top","side":"block/cake_side","inside":"block/cake_inner"},"elements":[{"from":[5,0,1],"to":[15,8,15],"faces":{"down":{"texture":"#bottom","cullface":"down"},"up":{"texture":"#top"},"north":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#inside"},"east":{"texture":"#side"}}}]},"cake_slice3":{"textures":{"particle":"block/cake_side","bottom":"block/cake_bottom","top":"block/cake_top","side":"block/cake_side","inside":"block/cake_inner"},"elements":[{"from":[7,0,1],"to":[15,8,15],"faces":{"down":{"texture":"#bottom","cullface":"down"},"up":{"texture":"#top"},"north":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#inside"},"east":{"texture":"#side"}}}]},"cake_slice4":{"textures":{"particle":"block/cake_side","bottom":"block/cake_bottom","top":"block/cake_top","side":"block/cake_side","inside":"block/cake_inner"},"elements":[{"from":[9,0,1],"to":[15,8,15],"faces":{"down":{"texture":"#bottom","cullface":"down"},"up":{"texture":"#top"},"north":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#inside"},"east":{"texture":"#side"}}}]},"cake_slice5":{"textures":{"particle":"block/cake_side","bottom":"block/cake_bottom","top":"block/cake_top","side":"block/cake_side","inside":"block/cake_inner"},"elements":[{"from":[11,0,1],"to":[15,8,15],"faces":{"down":{"texture":"#bottom","cullface":"down"},"up":{"texture":"#top"},"north":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#inside"},"east":{"texture":"#side"}}}]},"cake_slice6":{"textures":{"particle":"block/cake_side","bottom":"block/cake_bottom","top":"block/cake_top","side":"block/cake_side","inside":"block/cake_inner"},"elements":[{"from":[13,0,1],"to":[15,8,15],"faces":{"down":{"texture":"#bottom","cullface":"down"},"up":{"texture":"#top"},"north":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#inside"},"east":{"texture":"#side"}}}]},"calcite":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/calcite"}},"calibrated_sculk_sensor":{"parent":"block/block","gui_light":"front","display":{"gui":{"rotation":[30,45,0],"translation":[0,0,0],"scale":[0.625,0.625,0.625]},"head":{"rotation":[0,-180,0],"translation":[0,0,0],"scale":[1,1,1]},"thirdperson_lefthand":{"rotation":[75,-45,0],"translation":[0,2.5,0],"scale":[0.375,0.375,0.375]}},"textures":{"amethyst":"block/calibrated_sculk_sensor_amethyst","bottom":"block/sculk_sensor_bottom","side":"block/sculk_sensor_side","calibrated_side":"block/calibrated_sculk_sensor_input_side","tendrils":"block/sculk_sensor_tendril_inactive","top":"block/calibrated_sculk_sensor_top","particle":"block/sculk_sensor_bottom"},"elements":[{"from":[0,0,0],"to":[16,8,16],"faces":{"north":{"uv":[0,8,16,16],"texture":"#side","cullface":"north"},"east":{"uv":[0,8,16,16],"texture":"#side","cullface":"east"},"south":{"uv":[0,8,16,16],"texture":"#calibrated_side","cullface":"south"},"west":{"uv":[0,8,16,16],"texture":"#side","cullface":"west"},"up":{"uv":[0,0,16,16],"texture":"#top"},"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"}}},{"from":[-1,8,3],"to":[7,16,3],"rotation":{"angle":45,"axis":"y","origin":[3,12,3]},"faces":{"north":{"uv":[4,8,12,16],"texture":"#tendrils"},"south":{"uv":[12,8,4,16],"texture":"#tendrils"}}},{"from":[9,8,3],"to":[17,16,3],"rotation":{"angle":-45,"axis":"y","origin":[13,12,3]},"faces":{"north":{"uv":[12,8,4,16],"texture":"#tendrils"},"south":{"uv":[4,8,12,16],"texture":"#tendrils"}}},{"from":[9,8,13],"to":[17,16,13],"rotation":{"angle":45,"axis":"y","origin":[13,12,13]},"faces":{"north":{"uv":[12,8,4,16],"texture":"#tendrils"},"south":{"uv":[4,8,12,16],"texture":"#tendrils"}}},{"from":[-1,8,13],"to":[7,16,13],"rotation":{"angle":-45,"axis":"y","origin":[3,12,13]},"faces":{"north":{"uv":[4,8,12,16],"texture":"#tendrils"},"south":{"uv":[12,8,4,16],"texture":"#tendrils"}}},{"from":[8,8,0],"to":[8,20,16],"rotation":{"angle":45,"axis":"y","origin":[8,9,8],"rescale":true},"shade":false,"faces":{"east":{"uv":[0,4,16,16],"texture":"#amethyst"},"west":{"uv":[0,4,16,16],"texture":"#amethyst"}}},{"from":[0,8,8],"to":[16,20,8],"rotation":{"angle":45,"axis":"y","origin":[8,9,8],"rescale":true},"shade":false,"faces":{"north":{"uv":[0,4,16,16],"texture":"#amethyst"},"south":{"uv":[0,4,16,16],"texture":"#amethyst"}}}]},"calibrated_sculk_sensor_active":{"parent":"block/calibrated_sculk_sensor","textures":{"tendrils":"block/sculk_sensor_tendril_active"}},"calibrated_sculk_sensor_inactive":{"parent":"block/calibrated_sculk_sensor","textures":{"tendrils":"block/sculk_sensor_tendril_inactive"}},"campfire":{"parent":"minecraft:block/template_campfire","textures":{"fire":"minecraft:block/campfire_fire","lit_log":"minecraft:block/campfire_log_lit"}},"campfire_off":{"parent":"block/block","display":{"head":{"rotation":[0,0,0],"translation":[0,10.5,0],"scale":[1,1,1]}},"textures":{"particle":"block/campfire_log","log":"block/campfire_log"},"elements":[{"from":[1,0,0],"to":[5,4,16],"faces":{"north":{"uv":[0,4,4,8],"texture":"#log","cullface":"north"},"east":{"uv":[0,1,16,5],"texture":"#log"},"south":{"uv":[0,4,4,8],"texture":"#log","cullface":"south"},"west":{"uv":[16,0,0,4],"texture":"#log"},"up":{"uv":[0,0,16,4],"rotation":90,"texture":"#log"},"down":{"uv":[0,0,16,4],"rotation":90,"texture":"#log","cullface":"down"}}},{"from":[0,3,11],"to":[16,7,15],"faces":{"north":{"uv":[16,0,0,4],"texture":"#log"},"east":{"uv":[0,4,4,8],"texture":"#log","cullface":"east"},"south":{"uv":[0,0,16,4],"texture":"#log"},"west":{"uv":[0,4,4,8],"texture":"#log","cullface":"west"},"up":{"uv":[0,0,16,4],"rotation":180,"texture":"#log"},"down":{"uv":[0,0,16,4],"texture":"#log"}}},{"from":[11,0,0],"to":[15,4,16],"faces":{"north":{"uv":[0,4,4,8],"texture":"#log","cullface":"north"},"east":{"uv":[0,0,16,4],"texture":"#log"},"south":{"uv":[0,4,4,8],"texture":"#log","cullface":"south"},"west":{"uv":[16,1,0,5],"texture":"#log"},"up":{"uv":[0,0,16,4],"rotation":90,"texture":"#log"},"down":{"uv":[0,0,16,4],"rotation":90,"texture":"#log","cullface":"down"}}},{"from":[0,3,1],"to":[16,7,5],"faces":{"north":{"uv":[0,0,16,4],"texture":"#log"},"east":{"uv":[0,4,4,8],"texture":"#log","cullface":"east"},"south":{"uv":[16,0,0,4],"texture":"#log"},"west":{"uv":[0,4,4,8],"texture":"#log","cullface":"west"},"up":{"uv":[0,0,16,4],"rotation":180,"texture":"#log"},"down":{"uv":[0,0,16,4],"texture":"#log"}}},{"from":[5,0,0],"to":[11,1,16],"faces":{"north":{"uv":[0,15,6,16],"texture":"#log","cullface":"north"},"south":{"uv":[10,15,16,16],"texture":"#log","cullface":"south"},"up":{"uv":[0,8,16,14],"rotation":90,"texture":"#log"},"down":{"uv":[0,8,16,14],"rotation":90,"texture":"#log","cullface":"down"}}}]},"candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/candle","particle":"minecraft:block/candle"}},"candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/candle_lit","particle":"minecraft:block/candle_lit"}},"candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/candle","particle":"minecraft:block/candle"}},"candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/candle_lit","particle":"minecraft:block/candle_lit"}},"candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/candle","particle":"minecraft:block/candle"}},"candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/candle_lit","particle":"minecraft:block/candle_lit"}},"candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/candle","particle":"minecraft:block/candle"}},"candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/candle_lit","particle":"minecraft:block/candle_lit"}},"carpet":{"parent":"block/thin_block","textures":{"particle":"#wool"},"elements":[{"from":[0,0,0],"to":[16,1,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#wool","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#wool"},"north":{"uv":[0,15,16,16],"texture":"#wool","cullface":"north"},"south":{"uv":[0,15,16,16],"texture":"#wool","cullface":"south"},"west":{"uv":[0,15,16,16],"texture":"#wool","cullface":"west"},"east":{"uv":[0,15,16,16],"texture":"#wool","cullface":"east"}}}]},"carrots_stage0":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/carrots_stage0"}},"carrots_stage1":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/carrots_stage1"}},"carrots_stage2":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/carrots_stage2"}},"carrots_stage3":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/carrots_stage3"}},"cartography_table":{"parent":"minecraft:block/cube","textures":{"down":"minecraft:block/dark_oak_planks","east":"minecraft:block/cartography_table_side3","north":"minecraft:block/cartography_table_side3","particle":"minecraft:block/cartography_table_side3","south":"minecraft:block/cartography_table_side1","up":"minecraft:block/cartography_table_top","west":"minecraft:block/cartography_table_side2"}},"carved_pumpkin":{"parent":"minecraft:block/orientable","textures":{"front":"minecraft:block/carved_pumpkin","side":"minecraft:block/pumpkin_side","top":"minecraft:block/pumpkin_top"}},"cauldron":{"ambientocclusion":false,"textures":{"particle":"block/cauldron_side","top":"block/cauldron_top","bottom":"block/cauldron_bottom","side":"block/cauldron_side","inside":"block/cauldron_inner"},"elements":[{"from":[0,3,0],"to":[2,16,16],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[2,3,2],"to":[14,4,14],"faces":{"up":{"texture":"#inside"},"down":{"texture":"#inside"}}},{"from":[14,3,0],"to":[16,16,16],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[2,3,0],"to":[14,16,2],"faces":{"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[2,3,14],"to":[14,16,16],"faces":{"north":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[0,0,0],"to":[4,3,2],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,2],"to":[2,3,4],"faces":{"east":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[12,0,0],"to":[16,3,2],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,2],"to":[16,3,4],"faces":{"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,14],"to":[4,3,16],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,12],"to":[2,3,14],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[12,0,14],"to":[16,3,16],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,12],"to":[16,3,14],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side","cullface":"east"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}}]},"cave_vines":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/cave_vines"}},"cave_vines_lit":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/cave_vines_lit"}},"cave_vines_plant":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/cave_vines_plant"}},"cave_vines_plant_lit":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/cave_vines_plant_lit"}},"chain":{"parent":"block/block","textures":{"particle":"block/chain","all":"block/chain"},"elements":[{"from":[6.5,0,8],"to":[9.5,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45},"shade":false,"faces":{"north":{"uv":[3,0,0,16],"texture":"#all"},"south":{"uv":[0,0,3,16],"texture":"#all"}}},{"from":[8,0,6.5],"to":[8,16,9.5],"rotation":{"origin":[8,8,8],"axis":"y","angle":45},"shade":false,"faces":{"west":{"uv":[6,0,3,16],"texture":"#all"},"east":{"uv":[3,0,6,16],"texture":"#all"}}}]},"chain_command_block":{"parent":"minecraft:block/template_command_block","textures":{"back":"minecraft:block/chain_command_block_back","front":"minecraft:block/chain_command_block_front","side":"minecraft:block/chain_command_block_side"}},"chain_command_block_conditional":{"parent":"minecraft:block/template_command_block","textures":{"back":"minecraft:block/chain_command_block_back","front":"minecraft:block/chain_command_block_front","side":"minecraft:block/chain_command_block_conditional"}},"cherry_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/cherry_planks"}},"cherry_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/cherry_planks"}},"cherry_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/cherry_planks"}},"cherry_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/cherry_door_bottom","top":"minecraft:block/cherry_door_top"}},"cherry_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/cherry_door_bottom","top":"minecraft:block/cherry_door_top"}},"cherry_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/cherry_door_bottom","top":"minecraft:block/cherry_door_top"}},"cherry_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/cherry_door_bottom","top":"minecraft:block/cherry_door_top"}},"cherry_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/cherry_door_bottom","top":"minecraft:block/cherry_door_top"}},"cherry_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/cherry_door_bottom","top":"minecraft:block/cherry_door_top"}},"cherry_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/cherry_door_bottom","top":"minecraft:block/cherry_door_top"}},"cherry_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/cherry_door_bottom","top":"minecraft:block/cherry_door_top"}},"cherry_fence_gate":{"parent":"minecraft:block/template_fence_gate","textures":{"texture":"minecraft:block/cherry_planks"}},"cherry_fence_gate_open":{"parent":"minecraft:block/template_fence_gate_open","textures":{"texture":"minecraft:block/cherry_planks"}},"cherry_fence_gate_wall":{"parent":"minecraft:block/template_fence_gate_wall","textures":{"texture":"minecraft:block/cherry_planks"}},"cherry_fence_gate_wall_open":{"parent":"minecraft:block/template_fence_gate_wall_open","textures":{"texture":"minecraft:block/cherry_planks"}},"cherry_fence_inventory":{"parent":"minecraft:block/fence_inventory","textures":{"texture":"minecraft:block/cherry_planks"}},"cherry_fence_post":{"parent":"minecraft:block/fence_post","textures":{"texture":"minecraft:block/cherry_planks"}},"cherry_fence_side":{"parent":"minecraft:block/fence_side","textures":{"texture":"minecraft:block/cherry_planks"}},"cherry_hanging_sign":{"textures":{"particle":"minecraft:block/stripped_cherry_log"}},"cherry_leaves":{"parent":"minecraft:block/leaves","textures":{"all":"minecraft:block/cherry_leaves"}},"cherry_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/cherry_log_top","side":"minecraft:block/cherry_log"}},"cherry_log_x":{"parent":"minecraft:block/cube_column_uv_locked_x","textures":{"end":"minecraft:block/cherry_log_top","side":"minecraft:block/cherry_log"}},"cherry_log_y":{"parent":"minecraft:block/cube_column_uv_locked_y","textures":{"end":"minecraft:block/cherry_log_top","side":"minecraft:block/cherry_log"}},"cherry_log_z":{"parent":"minecraft:block/cube_column_uv_locked_z","textures":{"end":"minecraft:block/cherry_log_top","side":"minecraft:block/cherry_log"}},"cherry_planks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cherry_planks"}},"cherry_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/cherry_planks"}},"cherry_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/cherry_planks"}},"cherry_sapling":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/cherry_sapling"}},"cherry_sign":{"textures":{"particle":"minecraft:block/cherry_planks"}},"cherry_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/cherry_planks","side":"minecraft:block/cherry_planks","top":"minecraft:block/cherry_planks"}},"cherry_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/cherry_planks","side":"minecraft:block/cherry_planks","top":"minecraft:block/cherry_planks"}},"cherry_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/cherry_planks","side":"minecraft:block/cherry_planks","top":"minecraft:block/cherry_planks"}},"cherry_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/cherry_planks","side":"minecraft:block/cherry_planks","top":"minecraft:block/cherry_planks"}},"cherry_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/cherry_planks","side":"minecraft:block/cherry_planks","top":"minecraft:block/cherry_planks"}},"cherry_trapdoor_bottom":{"parent":"minecraft:block/template_orientable_trapdoor_bottom","textures":{"texture":"minecraft:block/cherry_trapdoor"}},"cherry_trapdoor_open":{"parent":"minecraft:block/template_orientable_trapdoor_open","textures":{"texture":"minecraft:block/cherry_trapdoor"}},"cherry_trapdoor_top":{"parent":"minecraft:block/template_orientable_trapdoor_top","textures":{"texture":"minecraft:block/cherry_trapdoor"}},"cherry_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/cherry_log","side":"minecraft:block/cherry_log"}},"chest":{"textures":{"particle":"minecraft:block/oak_planks"}},"chipped_anvil":{"parent":"minecraft:block/template_anvil","textures":{"top":"minecraft:block/chipped_anvil_top"}},"chiseled_bookshelf":{"parent":"block/block","textures":{"top":"block/chiseled_bookshelf_top","side":"block/chiseled_bookshelf_side","particle":"#top"},"elements":[{"name":"chiseled_bookshelf_body","from":[0,0,0],"to":[16,16,16],"faces":{"east":{"uv":[0,0,16,16],"texture":"#side","cullface":"east"},"south":{"uv":[0,0,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#side","cullface":"west"},"up":{"uv":[0,0,16,16],"texture":"#top","cullface":"up"},"down":{"uv":[0,0,16,16],"texture":"#top","cullface":"down"}}}]},"chiseled_bookshelf_empty_slot_bottom_left":{"parent":"minecraft:block/template_chiseled_bookshelf_slot_bottom_left","textures":{"texture":"minecraft:block/chiseled_bookshelf_empty"}},"chiseled_bookshelf_empty_slot_bottom_mid":{"parent":"minecraft:block/template_chiseled_bookshelf_slot_bottom_mid","textures":{"texture":"minecraft:block/chiseled_bookshelf_empty"}},"chiseled_bookshelf_empty_slot_bottom_right":{"parent":"minecraft:block/template_chiseled_bookshelf_slot_bottom_right","textures":{"texture":"minecraft:block/chiseled_bookshelf_empty"}},"chiseled_bookshelf_empty_slot_top_left":{"parent":"minecraft:block/template_chiseled_bookshelf_slot_top_left","textures":{"texture":"minecraft:block/chiseled_bookshelf_empty"}},"chiseled_bookshelf_empty_slot_top_mid":{"parent":"minecraft:block/template_chiseled_bookshelf_slot_top_mid","textures":{"texture":"minecraft:block/chiseled_bookshelf_empty"}},"chiseled_bookshelf_empty_slot_top_right":{"parent":"minecraft:block/template_chiseled_bookshelf_slot_top_right","textures":{"texture":"minecraft:block/chiseled_bookshelf_empty"}},"chiseled_bookshelf_inventory":{"parent":"block/block","textures":{"top":"block/chiseled_bookshelf_top","side":"block/chiseled_bookshelf_side","front":"block/chiseled_bookshelf_empty","particle":"#top"},"elements":[{"name":"chiseled_bookshelf_body","from":[0,0,0],"to":[16,16,16],"faces":{"north":{"uv":[0,0,16,16],"texture":"#front"},"east":{"uv":[0,0,16,16],"texture":"#side"},"south":{"uv":[0,0,16,16],"texture":"#side"},"west":{"uv":[0,0,16,16],"texture":"#side"},"up":{"uv":[0,0,16,16],"texture":"#top"},"down":{"uv":[0,0,16,16],"texture":"#top"}}}]},"chiseled_bookshelf_occupied_slot_bottom_left":{"parent":"minecraft:block/template_chiseled_bookshelf_slot_bottom_left","textures":{"texture":"minecraft:block/chiseled_bookshelf_occupied"}},"chiseled_bookshelf_occupied_slot_bottom_mid":{"parent":"minecraft:block/template_chiseled_bookshelf_slot_bottom_mid","textures":{"texture":"minecraft:block/chiseled_bookshelf_occupied"}},"chiseled_bookshelf_occupied_slot_bottom_right":{"parent":"minecraft:block/template_chiseled_bookshelf_slot_bottom_right","textures":{"texture":"minecraft:block/chiseled_bookshelf_occupied"}},"chiseled_bookshelf_occupied_slot_top_left":{"parent":"minecraft:block/template_chiseled_bookshelf_slot_top_left","textures":{"texture":"minecraft:block/chiseled_bookshelf_occupied"}},"chiseled_bookshelf_occupied_slot_top_mid":{"parent":"minecraft:block/template_chiseled_bookshelf_slot_top_mid","textures":{"texture":"minecraft:block/chiseled_bookshelf_occupied"}},"chiseled_bookshelf_occupied_slot_top_right":{"parent":"minecraft:block/template_chiseled_bookshelf_slot_top_right","textures":{"texture":"minecraft:block/chiseled_bookshelf_occupied"}},"chiseled_copper":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/chiseled_copper"}},"chiseled_deepslate":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/chiseled_deepslate"}},"chiseled_nether_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/chiseled_nether_bricks"}},"chiseled_polished_blackstone":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/chiseled_polished_blackstone"}},"chiseled_quartz_block":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/chiseled_quartz_block_top","side":"minecraft:block/chiseled_quartz_block"}},"chiseled_red_sandstone":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/red_sandstone_top","side":"minecraft:block/chiseled_red_sandstone"}},"chiseled_resin_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/chiseled_resin_bricks"}},"chiseled_sandstone":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/sandstone_top","side":"minecraft:block/chiseled_sandstone"}},"chiseled_stone_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/chiseled_stone_bricks"}},"chiseled_tuff":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/chiseled_tuff_top","side":"minecraft:block/chiseled_tuff"}},"chiseled_tuff_bricks":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/chiseled_tuff_bricks_top","side":"minecraft:block/chiseled_tuff_bricks"}},"chorus_flower":{"parent":"minecraft:block/template_chorus_flower","textures":{"texture":"minecraft:block/chorus_flower"}},"chorus_flower_dead":{"parent":"minecraft:block/template_chorus_flower","textures":{"texture":"minecraft:block/chorus_flower_dead"}},"chorus_plant":{"parent":"block/block","textures":{"texture":"block/chorus_plant","inside":"block/chorus_plant","particle":"block/chorus_plant"},"elements":[{"from":[2,14,2],"to":[14,16,14],"faces":{"up":{"uv":[2,2,14,14],"texture":"#texture","cullface":"up"},"north":{"uv":[2,0,14,2],"texture":"#texture","cullface":"up"},"south":{"uv":[2,0,14,2],"texture":"#texture","cullface":"up"},"west":{"uv":[2,0,14,2],"texture":"#texture","cullface":"up"},"east":{"uv":[2,0,14,2],"texture":"#texture","cullface":"up"}}},{"from":[0,2,2],"to":[2,14,14],"faces":{"down":{"uv":[16,14,14,2],"texture":"#texture","cullface":"west"},"up":{"uv":[0,2,2,14],"texture":"#texture","cullface":"west"},"north":{"uv":[14,2,16,14],"texture":"#texture","cullface":"west"},"south":{"uv":[0,2,2,14],"texture":"#texture","cullface":"west"},"west":{"uv":[2,2,14,14],"texture":"#texture","cullface":"west"}}},{"from":[2,2,0],"to":[14,14,2],"faces":{"down":{"uv":[14,2,2,0],"texture":"#texture","cullface":"north"},"up":{"uv":[2,0,14,2],"texture":"#texture","cullface":"north"},"north":{"uv":[2,2,14,14],"texture":"#texture","cullface":"north"},"west":{"uv":[0,2,2,14],"texture":"#texture","cullface":"north"},"east":{"uv":[14,2,16,14],"texture":"#texture","cullface":"north"}}},{"from":[2,2,14],"to":[14,14,16],"faces":{"down":{"uv":[14,16,2,14],"texture":"#texture","cullface":"south"},"up":{"uv":[2,14,14,16],"texture":"#texture","cullface":"south"},"south":{"uv":[2,2,14,14],"texture":"#texture","cullface":"south"},"west":{"uv":[14,2,16,14],"texture":"#texture","cullface":"south"},"east":{"uv":[0,2,2,14],"texture":"#texture","cullface":"south"}}},{"from":[14,2,2],"to":[16,14,14],"faces":{"down":{"uv":[2,14,0,2],"texture":"#texture","cullface":"east"},"up":{"uv":[14,2,16,14],"texture":"#texture","cullface":"east"},"north":{"uv":[0,2,2,14],"texture":"#texture","cullface":"east"},"south":{"uv":[14,2,16,14],"texture":"#texture","cullface":"east"},"east":{"uv":[2,2,14,14],"texture":"#texture","cullface":"east"}}},{"from":[2,0,2],"to":[14,2,14],"faces":{"down":{"uv":[14,14,2,2],"texture":"#texture","cullface":"down"},"north":{"uv":[2,14,14,16],"texture":"#texture","cullface":"down"},"south":{"uv":[2,14,14,16],"texture":"#texture","cullface":"down"},"west":{"uv":[2,14,14,16],"texture":"#texture","cullface":"down"},"east":{"uv":[2,14,14,16],"texture":"#texture","cullface":"down"}}},{"from":[2,2,2],"to":[14,14,14],"faces":{"down":{"uv":[14,14,2,2],"texture":"#inside"},"up":{"uv":[2,2,14,14],"texture":"#inside"},"north":{"uv":[2,2,14,14],"texture":"#inside"},"south":{"uv":[2,2,14,14],"texture":"#inside"},"west":{"uv":[2,2,14,14],"texture":"#inside"},"east":{"uv":[2,2,14,14],"texture":"#inside"}}}]},"chorus_plant_noside":{"ambientocclusion":false,"textures":{"texture":"block/chorus_plant","inside":"block/chorus_plant","particle":"block/chorus_plant"},"elements":[{"from":[4,4,4],"to":[12,12,12],"faces":{"north":{"texture":"#inside"}}}]},"chorus_plant_noside1":{"ambientocclusion":false,"textures":{"texture":"block/chorus_plant","inside":"block/chorus_plant","particle":"block/chorus_plant"},"elements":[{"from":[4,4,4],"to":[12,12,12],"faces":{"north":{"texture":"#inside"}}},{"from":[4,4,3],"to":[12,12,4],"faces":{"down":{"texture":"#texture"},"up":{"texture":"#texture"},"north":{"texture":"#texture"},"west":{"texture":"#texture"},"east":{"texture":"#texture"}}}]},"chorus_plant_noside2":{"ambientocclusion":false,"textures":{"texture":"block/chorus_plant","inside":"block/chorus_plant","particle":"block/chorus_plant"},"elements":[{"from":[4,4,4],"to":[12,12,12],"faces":{"north":{"texture":"#inside"}}},{"from":[5,5,2],"to":[11,11,4],"faces":{"down":{"texture":"#texture"},"up":{"texture":"#texture"},"north":{"texture":"#texture"},"west":{"texture":"#texture"},"east":{"texture":"#texture"}}}]},"chorus_plant_noside3":{"ambientocclusion":false,"textures":{"texture":"block/chorus_plant","inside":"block/chorus_plant","particle":"block/chorus_plant"},"elements":[{"from":[4,4,4],"to":[12,12,12],"faces":{"north":{"texture":"#inside"}}},{"from":[4,4,3],"to":[12,12,4],"faces":{"down":{"texture":"#texture"},"up":{"texture":"#texture"},"north":{"texture":"#texture"},"west":{"texture":"#texture"},"east":{"texture":"#texture"}}}]},"chorus_plant_side":{"ambientocclusion":false,"textures":{"texture":"block/chorus_plant","inside":"block/chorus_plant","particle":"block/chorus_plant"},"elements":[{"from":[4,4,0],"to":[12,12,4],"faces":{"down":{"texture":"#texture"},"up":{"texture":"#texture"},"north":{"texture":"#texture","cullface":"north"},"west":{"texture":"#texture"},"east":{"texture":"#texture"}}}]},"clay":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/clay"}},"closed_eyeblossom":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/closed_eyeblossom"}},"coal_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/coal_block"}},"coal_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/coal_ore"}},"coarse_dirt":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/coarse_dirt"}},"cobbled_deepslate":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cobbled_deepslate"}},"cobbled_deepslate_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/cobbled_deepslate","side":"minecraft:block/cobbled_deepslate","top":"minecraft:block/cobbled_deepslate"}},"cobbled_deepslate_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/cobbled_deepslate","side":"minecraft:block/cobbled_deepslate","top":"minecraft:block/cobbled_deepslate"}},"cobbled_deepslate_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/cobbled_deepslate","side":"minecraft:block/cobbled_deepslate","top":"minecraft:block/cobbled_deepslate"}},"cobbled_deepslate_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/cobbled_deepslate","side":"minecraft:block/cobbled_deepslate","top":"minecraft:block/cobbled_deepslate"}},"cobbled_deepslate_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/cobbled_deepslate","side":"minecraft:block/cobbled_deepslate","top":"minecraft:block/cobbled_deepslate"}},"cobbled_deepslate_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/cobbled_deepslate"}},"cobbled_deepslate_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/cobbled_deepslate"}},"cobbled_deepslate_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/cobbled_deepslate"}},"cobbled_deepslate_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/cobbled_deepslate"}},"cobblestone":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cobblestone"}},"cobblestone_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/cobblestone","side":"minecraft:block/cobblestone","top":"minecraft:block/cobblestone"}},"cobblestone_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/cobblestone","side":"minecraft:block/cobblestone","top":"minecraft:block/cobblestone"}},"cobblestone_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/cobblestone","side":"minecraft:block/cobblestone","top":"minecraft:block/cobblestone"}},"cobblestone_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/cobblestone","side":"minecraft:block/cobblestone","top":"minecraft:block/cobblestone"}},"cobblestone_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/cobblestone","side":"minecraft:block/cobblestone","top":"minecraft:block/cobblestone"}},"cobblestone_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/cobblestone"}},"cobblestone_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/cobblestone"}},"cobblestone_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/cobblestone"}},"cobblestone_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/cobblestone"}},"cobweb":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/cobweb"}},"cocoa_stage0":{"ambientocclusion":false,"textures":{"particle":"block/cocoa_stage0","cocoa":"block/cocoa_stage0"},"elements":[{"from":[6,7,11],"to":[10,12,15],"faces":{"down":{"uv":[0,0,4,4],"texture":"#cocoa"},"up":{"uv":[0,0,4,4],"texture":"#cocoa"},"north":{"uv":[11,4,15,9],"texture":"#cocoa"},"south":{"uv":[11,4,15,9],"texture":"#cocoa"},"west":{"uv":[11,4,15,9],"texture":"#cocoa"},"east":{"uv":[11,4,15,9],"texture":"#cocoa"}}},{"from":[8,12,12],"to":[8,16,16],"faces":{"west":{"uv":[12,0,16,4],"texture":"#cocoa"},"east":{"uv":[16,0,12,4],"texture":"#cocoa"}}}]},"cocoa_stage1":{"ambientocclusion":false,"textures":{"particle":"block/cocoa_stage1","cocoa":"block/cocoa_stage1"},"elements":[{"from":[5,5,9],"to":[11,12,15],"faces":{"down":{"uv":[0,0,6,6],"texture":"#cocoa"},"up":{"uv":[0,0,6,6],"texture":"#cocoa"},"north":{"uv":[9,4,15,11],"texture":"#cocoa"},"south":{"uv":[9,4,15,11],"texture":"#cocoa"},"west":{"uv":[9,4,15,11],"texture":"#cocoa"},"east":{"uv":[9,4,15,11],"texture":"#cocoa"}}},{"from":[8,12,12],"to":[8,16,16],"faces":{"west":{"uv":[12,0,16,4],"texture":"#cocoa"},"east":{"uv":[16,0,12,4],"texture":"#cocoa"}}}]},"cocoa_stage2":{"ambientocclusion":false,"textures":{"particle":"block/cocoa_stage2","cocoa":"block/cocoa_stage2"},"elements":[{"from":[4,3,7],"to":[12,12,15],"faces":{"up":{"uv":[0,0,8,8],"texture":"#cocoa"},"down":{"uv":[0,0,8,8],"texture":"#cocoa"},"north":{"uv":[8,4,16,13],"texture":"#cocoa"},"south":{"uv":[8,4,16,13],"texture":"#cocoa"},"west":{"uv":[8,4,16,13],"texture":"#cocoa"},"east":{"uv":[8,4,16,13],"texture":"#cocoa"}}},{"from":[8,12,12],"to":[8,16,16],"faces":{"east":{"uv":[16,0,12,4],"texture":"#cocoa"},"west":{"uv":[12,0,16,4],"texture":"#cocoa"}}}]},"command_block":{"parent":"minecraft:block/template_command_block","textures":{"back":"minecraft:block/command_block_back","front":"minecraft:block/command_block_front","side":"minecraft:block/command_block_side"}},"command_block_conditional":{"parent":"minecraft:block/template_command_block","textures":{"back":"minecraft:block/command_block_back","front":"minecraft:block/command_block_front","side":"minecraft:block/command_block_conditional"}},"comparator":{"ambientocclusion":false,"textures":{"particle":"block/comparator","slab":"block/smooth_stone","top":"block/comparator","unlit":"block/redstone_torch_off","lit":"block/redstone_torch"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[4,2,11],"to":[6,7,13],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}},{"from":[10,2,11],"to":[12,7,13],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}},{"from":[7,2,2],"to":[9,5,4],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,9],"texture":"#unlit"},"south":{"uv":[7,6,9,9],"texture":"#unlit"},"west":{"uv":[7,6,9,9],"texture":"#unlit"},"east":{"uv":[7,6,9,9],"texture":"#unlit"}}}]},"comparator_on":{"ambientocclusion":false,"textures":{"particle":"block/comparator_on","slab":"block/smooth_stone","top":"block/comparator_on","unlit":"block/redstone_torch_off","lit":"block/redstone_torch"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[4,2,11],"to":[6,7,13],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[7,2,2],"to":[9,5,4],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,9],"texture":"#unlit"},"south":{"uv":[7,6,9,9],"texture":"#unlit"},"west":{"uv":[7,6,9,9],"texture":"#unlit"},"east":{"uv":[7,6,9,9],"texture":"#unlit"}}},{"from":[10,2,11],"to":[12,7,13],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[3.5,1.5,10.5],"to":[6.5,4.5,13.5],"shade":false,"faces":{"up":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[3.5,7.5,10.5],"to":[6.5,10.5,13.5],"shade":false,"faces":{"down":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[3.5,4.5,7.5],"to":[6.5,7.5,10.5],"shade":false,"faces":{"south":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[3.5,4.5,13.5],"to":[6.5,7.5,16.5],"shade":false,"faces":{"north":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[0.5,4.5,10.5],"to":[3.5,7.5,13.5],"shade":false,"faces":{"east":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[6.5,4.5,10.5],"to":[9.5,7.5,13.5],"shade":false,"faces":{"west":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[9.5,1.5,10.5],"to":[12.5,4.5,13.5],"shade":false,"faces":{"up":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[9.5,7.5,10.5],"to":[12.5,10.5,13.5],"shade":false,"faces":{"down":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[9.5,4.5,7.5],"to":[12.5,7.5,10.5],"shade":false,"faces":{"south":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[9.5,4.5,13.5],"to":[12.5,7.5,16.5],"shade":false,"faces":{"north":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[6.5,4.5,10.5],"to":[9.5,7.5,13.5],"shade":false,"faces":{"east":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[12.5,4.5,10.5],"to":[15.5,7.5,13.5],"shade":false,"faces":{"west":{"uv":[6,5,7,6],"texture":"#lit"}}}]},"comparator_on_subtract":{"ambientocclusion":false,"textures":{"particle":"block/comparator_on","slab":"block/smooth_stone","top":"block/comparator_on","unlit":"block/redstone_torch_off","lit":"block/redstone_torch"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[7,2,2],"to":[9,5,4],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,9],"texture":"#lit"},"south":{"uv":[7,6,9,9],"texture":"#lit"},"west":{"uv":[7,6,9,9],"texture":"#lit"},"east":{"uv":[7,6,9,9],"texture":"#lit"}}},{"from":[4,2,11],"to":[6,7,13],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[10,2,11],"to":[12,7,13],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[3.5,1.5,10.5],"to":[6.5,4.5,13.5],"shade":false,"faces":{"up":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[3.5,7.5,10.5],"to":[6.5,10.5,13.5],"shade":false,"faces":{"down":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[3.5,4.5,7.5],"to":[6.5,7.5,10.5],"shade":false,"faces":{"south":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[3.5,4.5,13.5],"to":[6.5,7.5,16.5],"shade":false,"faces":{"north":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[0.5,4.5,10.5],"to":[3.5,7.5,13.5],"shade":false,"faces":{"east":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[6.5,4.5,10.5],"to":[9.5,7.5,13.5],"shade":false,"faces":{"west":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[9.5,1.5,10.5],"to":[12.5,4.5,13.5],"shade":false,"faces":{"up":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[9.5,7.5,10.5],"to":[12.5,10.5,13.5],"shade":false,"faces":{"down":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[9.5,4.5,7.5],"to":[12.5,7.5,10.5],"shade":false,"faces":{"south":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[9.5,4.5,13.5],"to":[12.5,7.5,16.5],"shade":false,"faces":{"north":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[6.5,4.5,10.5],"to":[9.5,7.5,13.5],"shade":false,"faces":{"east":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[12.5,4.5,10.5],"to":[15.5,7.5,13.5],"shade":false,"faces":{"west":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[6.5,-0.5,1.5],"to":[9.5,2.5,4.5],"shade":false,"faces":{"up":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[6.5,5.5,1.5],"to":[9.5,8.5,4.5],"shade":false,"faces":{"down":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[6.5,2.5,-1.5],"to":[9.5,5.5,1.5],"shade":false,"faces":{"south":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[6.5,2.5,4.5],"to":[9.5,5.5,7.5],"shade":false,"faces":{"north":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[3.5,2.5,1.5],"to":[6.5,5.5,4.5],"shade":false,"faces":{"east":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[9.5,2.5,1.5],"to":[12.5,5.5,4.5],"shade":false,"faces":{"west":{"uv":[6,5,7,6],"texture":"#lit"}}}]},"comparator_subtract":{"ambientocclusion":false,"textures":{"particle":"block/comparator","slab":"block/smooth_stone","top":"block/comparator","unlit":"block/redstone_torch_off","lit":"block/redstone_torch"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[4,2,11],"to":[6,7,13],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}},{"from":[10,2,11],"to":[12,7,13],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}},{"from":[7,2,2],"to":[9,5,4],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,9],"texture":"#lit"},"south":{"uv":[7,6,9,9],"texture":"#lit"},"west":{"uv":[7,6,9,9],"texture":"#lit"},"east":{"uv":[7,6,9,9],"texture":"#lit"}}},{"from":[6.5,-0.5,1.5],"to":[9.5,2.5,4.5],"shade":false,"faces":{"up":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[6.5,5.5,1.5],"to":[9.5,8.5,4.5],"shade":false,"faces":{"down":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[6.5,2.5,-1.5],"to":[9.5,5.5,1.5],"shade":false,"faces":{"south":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[6.5,2.5,4.5],"to":[9.5,5.5,7.5],"shade":false,"faces":{"north":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[3.5,2.5,1.5],"to":[6.5,5.5,4.5],"shade":false,"faces":{"east":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[9.5,2.5,1.5],"to":[12.5,5.5,4.5],"shade":false,"faces":{"west":{"uv":[6,5,7,6],"texture":"#lit"}}}]},"composter":{"parent":"block/block","textures":{"particle":"block/composter_side","top":"block/composter_top","bottom":"block/composter_bottom","side":"block/composter_side","inside":"block/composter_bottom"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"up":{"texture":"#inside"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,0],"to":[2,16,16],"faces":{"up":{"texture":"#top","cullface":"up"},"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"east":{"texture":"#side"}}},{"from":[14,0,0],"to":[16,16,16],"faces":{"up":{"texture":"#top","cullface":"up"},"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side"},"east":{"texture":"#side","cullface":"east"}}},{"from":[2,0,0],"to":[14,16,2],"faces":{"up":{"texture":"#top","cullface":"up"},"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side"}}},{"from":[2,0,14],"to":[14,16,16],"faces":{"up":{"texture":"#top","cullface":"up"},"north":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"}}}]},"composter_contents1":{"textures":{"particle":"block/composter_compost","inside":"block/composter_compost"},"elements":[{"from":[2,0,2],"to":[14,3,14],"faces":{"up":{"texture":"#inside"}}}]},"composter_contents2":{"textures":{"particle":"block/composter_compost","inside":"block/composter_compost"},"elements":[{"from":[2,0,2],"to":[14,5,14],"faces":{"up":{"texture":"#inside"}}}]},"composter_contents3":{"textures":{"particle":"block/composter_compost","inside":"block/composter_compost"},"elements":[{"from":[2,0,2],"to":[14,7,14],"faces":{"up":{"texture":"#inside"}}}]},"composter_contents4":{"textures":{"particle":"block/composter_compost","inside":"block/composter_compost"},"elements":[{"from":[2,0,2],"to":[14,9,14],"faces":{"up":{"texture":"#inside"}}}]},"composter_contents5":{"textures":{"particle":"block/composter_compost","inside":"block/composter_compost"},"elements":[{"from":[2,0,2],"to":[14,11,14],"faces":{"up":{"texture":"#inside"}}}]},"composter_contents6":{"textures":{"particle":"block/composter_compost","inside":"block/composter_compost"},"elements":[{"from":[2,0,2],"to":[14,13,14],"faces":{"up":{"texture":"#inside"}}}]},"composter_contents7":{"textures":{"particle":"block/composter_compost","inside":"block/composter_compost"},"elements":[{"from":[2,0,2],"to":[14,15,14],"faces":{"up":{"texture":"#inside"}}}]},"composter_contents_ready":{"textures":{"particle":"block/composter_compost","inside":"block/composter_ready"},"elements":[{"from":[2,0,2],"to":[14,15,14],"faces":{"up":{"texture":"#inside"}}}]},"conduit":{"textures":{"particle":"minecraft:block/conduit"}},"copper_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/copper_block"}},"copper_bulb":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/copper_bulb"}},"copper_bulb_lit":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/copper_bulb_lit"}},"copper_bulb_lit_powered":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/copper_bulb_lit_powered"}},"copper_bulb_powered":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/copper_bulb_powered"}},"copper_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/copper_door_bottom","top":"minecraft:block/copper_door_top"}},"copper_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/copper_door_bottom","top":"minecraft:block/copper_door_top"}},"copper_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/copper_door_bottom","top":"minecraft:block/copper_door_top"}},"copper_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/copper_door_bottom","top":"minecraft:block/copper_door_top"}},"copper_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/copper_door_bottom","top":"minecraft:block/copper_door_top"}},"copper_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/copper_door_bottom","top":"minecraft:block/copper_door_top"}},"copper_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/copper_door_bottom","top":"minecraft:block/copper_door_top"}},"copper_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/copper_door_bottom","top":"minecraft:block/copper_door_top"}},"copper_grate":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/copper_grate"}},"copper_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/copper_ore"}},"copper_trapdoor_bottom":{"parent":"minecraft:block/template_trapdoor_bottom","textures":{"texture":"minecraft:block/copper_trapdoor"}},"copper_trapdoor_open":{"parent":"minecraft:block/template_trapdoor_open","textures":{"texture":"minecraft:block/copper_trapdoor"}},"copper_trapdoor_top":{"parent":"minecraft:block/template_trapdoor_top","textures":{"texture":"minecraft:block/copper_trapdoor"}},"coral_fan":{"ambientocclusion":false,"textures":{"particle":"#fan"},"elements":[{"from":[8,0,0],"to":[24,0,16],"rotation":{"origin":[8,0,0],"axis":"z","angle":22.5,"rescale":false},"shade":false,"faces":{"up":{"uv":[0,0,16,16],"texture":"#fan","rotation":90},"down":{"uv":[0,16,16,0],"texture":"#fan","rotation":270}}},{"from":[-8,0,0],"to":[8,0,16],"rotation":{"origin":[8,0,0],"axis":"z","angle":-22.5,"rescale":false},"shade":false,"faces":{"up":{"uv":[0,0,16,16],"texture":"#fan","rotation":270},"down":{"uv":[0,16,16,0],"texture":"#fan","rotation":90}}},{"from":[0,0,8],"to":[16,0,24],"rotation":{"origin":[0,0,8],"axis":"x","angle":-22.5,"rescale":false},"shade":false,"faces":{"up":{"uv":[16,16,0,0],"texture":"#fan"},"down":{"uv":[16,0,0,16],"texture":"#fan"}}},{"from":[0,0,-8],"to":[16,0,8],"rotation":{"origin":[0,0,8],"axis":"x","angle":22.5,"rescale":false},"shade":false,"faces":{"up":{"uv":[0,0,16,16],"texture":"#fan"},"down":{"uv":[0,16,16,0],"texture":"#fan"}}}]},"coral_wall_fan":{"ambientocclusion":false,"textures":{"particle":"#fan"},"elements":[{"from":[0,8,0],"to":[16,8,16],"rotation":{"origin":[8,8,14],"axis":"x","angle":22.5,"rescale":true},"shade":false,"faces":{"up":{"uv":[0,0,16,16],"texture":"#fan"},"down":{"uv":[16,16,0,0],"texture":"#fan"}}},{"from":[0,8,0],"to":[16,8,16],"rotation":{"origin":[8,8,14],"axis":"x","angle":-22.5,"rescale":true},"shade":false,"faces":{"up":{"uv":[0,0,16,16],"texture":"#fan"},"down":{"uv":[16,16,0,0],"texture":"#fan"}}}]},"cornflower":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/cornflower"}},"cracked_deepslate_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cracked_deepslate_bricks"}},"cracked_deepslate_tiles":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cracked_deepslate_tiles"}},"cracked_nether_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cracked_nether_bricks"}},"cracked_polished_blackstone_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cracked_polished_blackstone_bricks"}},"cracked_stone_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cracked_stone_bricks"}},"crafter":{"parent":"block/block","textures":{"bottom":"block/crafter_bottom","top":"block/crafter_top","north":"block/crafter_north","south":"block/crafter_south","west":"block/crafter_west","east":"block/crafter_east","particle":"#north"},"elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"},"up":{"uv":[0,0,16,16],"rotation":180,"texture":"#top","cullface":"up"},"north":{"uv":[0,0,16,16],"texture":"#north","cullface":"north"},"south":{"uv":[0,0,16,16],"texture":"#south","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#west","cullface":"west"},"east":{"uv":[0,0,16,16],"texture":"#east","cullface":"east"}}}]},"crafter_crafting":{"parent":"block/crafter_triggered","textures":{"top":"block/crafter_top_crafting","north":"block/crafter_north_crafting","east":"block/crafter_east_crafting","west":"block/crafter_west_crafting"}},"crafter_crafting_triggered":{"parent":"block/crafter_crafting"},"crafter_triggered":{"parent":"block/crafter","textures":{"top":"block/crafter_top_triggered","south":"block/crafter_south_triggered","west":"block/crafter_west_triggered","east":"block/crafter_east_triggered"}},"crafting_table":{"parent":"minecraft:block/cube","textures":{"down":"minecraft:block/oak_planks","east":"minecraft:block/crafting_table_side","north":"minecraft:block/crafting_table_front","particle":"minecraft:block/crafting_table_front","south":"minecraft:block/crafting_table_side","up":"minecraft:block/crafting_table_top","west":"minecraft:block/crafting_table_front"}},"creaking_heart":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/creaking_heart_top","side":"minecraft:block/creaking_heart"}},"creaking_heart_awake":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/creaking_heart_top_awake","side":"minecraft:block/creaking_heart_awake"}},"creaking_heart_awake_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/creaking_heart_top_awake","side":"minecraft:block/creaking_heart_awake"}},"creaking_heart_dormant":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/creaking_heart_top_dormant","side":"minecraft:block/creaking_heart_dormant"}},"creaking_heart_dormant_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/creaking_heart_top_dormant","side":"minecraft:block/creaking_heart_dormant"}},"creaking_heart_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/creaking_heart_top","side":"minecraft:block/creaking_heart"}},"crimson_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/crimson_planks"}},"crimson_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/crimson_planks"}},"crimson_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/crimson_planks"}},"crimson_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/crimson_door_bottom","top":"minecraft:block/crimson_door_top"}},"crimson_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/crimson_door_bottom","top":"minecraft:block/crimson_door_top"}},"crimson_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/crimson_door_bottom","top":"minecraft:block/crimson_door_top"}},"crimson_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/crimson_door_bottom","top":"minecraft:block/crimson_door_top"}},"crimson_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/crimson_door_bottom","top":"minecraft:block/crimson_door_top"}},"crimson_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/crimson_door_bottom","top":"minecraft:block/crimson_door_top"}},"crimson_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/crimson_door_bottom","top":"minecraft:block/crimson_door_top"}},"crimson_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/crimson_door_bottom","top":"minecraft:block/crimson_door_top"}},"crimson_fence_gate":{"parent":"minecraft:block/template_fence_gate","textures":{"texture":"minecraft:block/crimson_planks"}},"crimson_fence_gate_open":{"parent":"minecraft:block/template_fence_gate_open","textures":{"texture":"minecraft:block/crimson_planks"}},"crimson_fence_gate_wall":{"parent":"minecraft:block/template_fence_gate_wall","textures":{"texture":"minecraft:block/crimson_planks"}},"crimson_fence_gate_wall_open":{"parent":"minecraft:block/template_fence_gate_wall_open","textures":{"texture":"minecraft:block/crimson_planks"}},"crimson_fence_inventory":{"parent":"minecraft:block/fence_inventory","textures":{"texture":"minecraft:block/crimson_planks"}},"crimson_fence_post":{"parent":"minecraft:block/fence_post","textures":{"texture":"minecraft:block/crimson_planks"}},"crimson_fence_side":{"parent":"minecraft:block/fence_side","textures":{"texture":"minecraft:block/crimson_planks"}},"crimson_fungus":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/crimson_fungus"}},"crimson_hanging_sign":{"textures":{"particle":"minecraft:block/stripped_crimson_stem"}},"crimson_hyphae":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/crimson_stem","side":"minecraft:block/crimson_stem"}},"crimson_nylium":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/netherrack","side":"minecraft:block/crimson_nylium_side","top":"minecraft:block/crimson_nylium"}},"crimson_planks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/crimson_planks"}},"crimson_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/crimson_planks"}},"crimson_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/crimson_planks"}},"crimson_roots":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/crimson_roots"}},"crimson_sign":{"textures":{"particle":"minecraft:block/crimson_planks"}},"crimson_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/crimson_planks","side":"minecraft:block/crimson_planks","top":"minecraft:block/crimson_planks"}},"crimson_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/crimson_planks","side":"minecraft:block/crimson_planks","top":"minecraft:block/crimson_planks"}},"crimson_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/crimson_planks","side":"minecraft:block/crimson_planks","top":"minecraft:block/crimson_planks"}},"crimson_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/crimson_planks","side":"minecraft:block/crimson_planks","top":"minecraft:block/crimson_planks"}},"crimson_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/crimson_planks","side":"minecraft:block/crimson_planks","top":"minecraft:block/crimson_planks"}},"crimson_stem":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/crimson_stem_top","side":"minecraft:block/crimson_stem"}},"crimson_trapdoor_bottom":{"parent":"minecraft:block/template_orientable_trapdoor_bottom","textures":{"texture":"minecraft:block/crimson_trapdoor"}},"crimson_trapdoor_open":{"parent":"minecraft:block/template_orientable_trapdoor_open","textures":{"texture":"minecraft:block/crimson_trapdoor"}},"crimson_trapdoor_top":{"parent":"minecraft:block/template_orientable_trapdoor_top","textures":{"texture":"minecraft:block/crimson_trapdoor"}},"crop":{"ambientocclusion":false,"textures":{"particle":"#crop"},"elements":[{"from":[4,-1,0],"to":[4,15,16],"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#crop"},"east":{"uv":[16,0,0,16],"texture":"#crop"}}},{"from":[12,-1,0],"to":[12,15,16],"shade":false,"faces":{"west":{"uv":[16,0,0,16],"texture":"#crop"},"east":{"uv":[0,0,16,16],"texture":"#crop"}}},{"from":[0,-1,4],"to":[16,15,4],"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#crop"},"south":{"uv":[16,0,0,16],"texture":"#crop"}}},{"from":[0,-1,12],"to":[16,15,12],"shade":false,"faces":{"north":{"uv":[16,0,0,16],"texture":"#crop"},"south":{"uv":[0,0,16,16],"texture":"#crop"}}}]},"cross":{"ambientocclusion":false,"textures":{"particle":"#cross"},"elements":[{"from":[0.8,0,8],"to":[15.2,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#cross"},"south":{"uv":[0,0,16,16],"texture":"#cross"}}},{"from":[8,0,0.8],"to":[8,16,15.2],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#cross"},"east":{"uv":[0,0,16,16],"texture":"#cross"}}}]},"cross_emissive":{"ambientocclusion":false,"textures":{"particle":"#cross"},"elements":[{"from":[0.8,0,8],"to":[15.2,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#cross"},"south":{"uv":[0,0,16,16],"texture":"#cross"}}},{"from":[8,0,0.8],"to":[8,16,15.2],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#cross"},"east":{"uv":[0,0,16,16],"texture":"#cross"}}},{"from":[0.8,0,8],"to":[15.2,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"light_emission":15,"faces":{"north":{"uv":[0,0,16,16],"texture":"#cross_emissive"},"south":{"uv":[0,0,16,16],"texture":"#cross_emissive"}}},{"from":[8,0,0.8],"to":[8,16,15.2],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"light_emission":15,"faces":{"west":{"uv":[0,0,16,16],"texture":"#cross_emissive"},"east":{"uv":[0,0,16,16],"texture":"#cross_emissive"}}}]},"crying_obsidian":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/crying_obsidian"}},"cube":{"parent":"block/block","elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"texture":"#down","cullface":"down"},"up":{"texture":"#up","cullface":"up"},"north":{"texture":"#north","cullface":"north"},"south":{"texture":"#south","cullface":"south"},"west":{"texture":"#west","cullface":"west"},"east":{"texture":"#east","cullface":"east"}}}]},"cube_all":{"parent":"block/cube","textures":{"particle":"#all","down":"#all","up":"#all","north":"#all","east":"#all","south":"#all","west":"#all"}},"cube_all_inner_faces":{"parent":"block/cube_all","elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"north":{"uv":[0,0,16,16],"texture":"#all","cullface":"north"},"east":{"uv":[0,0,16,16],"texture":"#all","cullface":"east"},"south":{"uv":[0,0,16,16],"texture":"#all","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#all","cullface":"west"},"up":{"uv":[0,0,16,16],"texture":"#all","cullface":"up"},"down":{"uv":[0,0,16,16],"texture":"#all","cullface":"down"}}},{"from":[15.998,0.002,0.002],"to":[0.002,15.998,15.998],"faces":{"north":{"uv":[16,0,0,16],"texture":"#all","cullface":"south"},"east":{"uv":[16,0,0,16],"texture":"#all","cullface":"west"},"south":{"uv":[16,0,0,16],"texture":"#all","cullface":"north"},"west":{"uv":[16,0,0,16],"texture":"#all","cullface":"east"},"up":{"uv":[16,0,0,16],"texture":"#all","cullface":"up"},"down":{"uv":[16,0,0,16],"texture":"#all","cullface":"down"}}}]},"cube_bottom_top":{"parent":"block/cube","textures":{"particle":"#side","down":"#bottom","up":"#top","north":"#side","east":"#side","south":"#side","west":"#side"}},"cube_bottom_top_inner_faces":{"parent":"block/cube_bottom_top","elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"north":{"uv":[0,0,16,16],"texture":"#side","cullface":"north"},"east":{"uv":[0,0,16,16],"texture":"#side","cullface":"east"},"south":{"uv":[0,0,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#side","cullface":"west"},"up":{"uv":[0,0,16,16],"texture":"#top","cullface":"up"},"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"}}},{"from":[15.998,0.002,0.002],"to":[0.002,15.998,15.998],"faces":{"north":{"uv":[16,0,0,16],"texture":"#side","cullface":"south"},"east":{"uv":[16,0,0,16],"texture":"#side","cullface":"west"},"south":{"uv":[16,0,0,16],"texture":"#side","cullface":"north"},"west":{"uv":[16,0,0,16],"texture":"#side","cullface":"east"},"up":{"uv":[16,0,0,16],"texture":"#top","cullface":"up"},"down":{"uv":[16,0,0,16],"texture":"#bottom","cullface":"down"}}}]},"cube_column":{"parent":"block/cube","textures":{"particle":"#side","down":"#end","up":"#end","north":"#side","east":"#side","south":"#side","west":"#side"}},"cube_column_horizontal":{"parent":"block/block","elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"texture":"#down","cullface":"down"},"up":{"texture":"#up","rotation":180,"cullface":"up"},"north":{"texture":"#north","cullface":"north"},"south":{"texture":"#south","cullface":"south"},"west":{"texture":"#west","cullface":"west"},"east":{"texture":"#east","cullface":"east"}}}],"textures":{"particle":"#side","down":"#end","up":"#end","north":"#side","east":"#side","south":"#side","west":"#side"}},"cube_column_mirrored":{"parent":"block/cube_mirrored","textures":{"particle":"#side","down":"#end","up":"#end","north":"#side","east":"#side","south":"#side","west":"#side"}},"cube_column_uv_locked_x":{"parent":"block/block","elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"texture":"#down","rotation":90,"cullface":"down"},"up":{"texture":"#up","rotation":90,"cullface":"up"},"north":{"texture":"#north","rotation":90,"cullface":"north"},"south":{"texture":"#south","rotation":90,"cullface":"south"},"west":{"texture":"#west","cullface":"west"},"east":{"texture":"#east","cullface":"east"}}}],"textures":{"particle":"#side","down":"#side","up":"#side","north":"#side","east":"#end","south":"#side","west":"#end"}},"cube_column_uv_locked_y":{"parent":"block/block","elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"texture":"#down","cullface":"down"},"up":{"texture":"#up","cullface":"up"},"north":{"texture":"#north","cullface":"north"},"south":{"texture":"#south","cullface":"south"},"west":{"texture":"#west","cullface":"west"},"east":{"texture":"#east","cullface":"east"}}}],"textures":{"particle":"#side","down":"#end","up":"#end","north":"#side","east":"#side","south":"#side","west":"#side"}},"cube_column_uv_locked_z":{"parent":"block/block","elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"texture":"#down","cullface":"down"},"up":{"texture":"#up","cullface":"up"},"north":{"texture":"#north","cullface":"north"},"south":{"texture":"#south","cullface":"south"},"west":{"texture":"#west","rotation":90,"cullface":"west"},"east":{"texture":"#east","rotation":90,"cullface":"east"}}}],"textures":{"particle":"#side","down":"#side","up":"#side","north":"#end","east":"#side","south":"#end","west":"#side"}},"cube_directional":{"parent":"block/block","elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"texture":"#down","cullface":"down","rotation":180},"up":{"texture":"#up","cullface":"up"},"north":{"texture":"#north","cullface":"north"},"south":{"texture":"#south","cullface":"south"},"west":{"texture":"#west","cullface":"west","rotation":270},"east":{"texture":"#east","cullface":"east","rotation":90}}}]},"cube_mirrored":{"elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"uv":[16,0,0,16],"texture":"#down","cullface":"down"},"up":{"uv":[16,0,0,16],"texture":"#up","cullface":"up"},"north":{"uv":[16,0,0,16],"texture":"#north","cullface":"north"},"south":{"uv":[16,0,0,16],"texture":"#south","cullface":"south"},"west":{"uv":[16,0,0,16],"texture":"#west","cullface":"west"},"east":{"uv":[16,0,0,16],"texture":"#east","cullface":"east"}}}]},"cube_mirrored_all":{"parent":"block/cube_mirrored","textures":{"particle":"#all","down":"#all","up":"#all","north":"#all","east":"#all","south":"#all","west":"#all"}},"cube_north_west_mirrored":{"elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"texture":"#down","cullface":"down"},"up":{"texture":"#up","cullface":"up"},"north":{"uv":[16,0,0,16],"texture":"#north","cullface":"north"},"south":{"texture":"#south","cullface":"south"},"west":{"uv":[16,0,0,16],"texture":"#west","cullface":"west"},"east":{"texture":"#east","cullface":"east"}}}]},"cube_north_west_mirrored_all":{"parent":"block/cube_north_west_mirrored","textures":{"particle":"#all","down":"#all","up":"#all","north":"#all","east":"#all","south":"#all","west":"#all"}},"cube_top":{"parent":"block/cube","textures":{"particle":"#side","down":"#side","up":"#top","north":"#side","east":"#side","south":"#side","west":"#side"}},"custom_fence_inventory":{"parent":"block/block","display":{"gui":{"rotation":[30,135,0],"translation":[0,0,0],"scale":[0.625,0.625,0.625]},"fixed":{"rotation":[0,90,0],"translation":[0,0,0],"scale":[0.5,0.5,0.5]}},"textures":{"particle":"#texture"},"elements":[{"from":[6,0,0],"to":[10,16,4],"faces":{"north":{"uv":[0,0,4,16],"texture":"#texture"},"east":{"uv":[0,0,4,16],"texture":"#texture"},"south":{"uv":[0,0,4,16],"texture":"#texture"},"west":{"uv":[0,0,4,16],"texture":"#texture"},"up":{"uv":[4,0,8,4],"texture":"#texture"},"down":{"uv":[4,0,8,4],"texture":"#texture","cullface":"down"}},"__comment":"Left post"},{"from":[6,0,12],"to":[10,16,16],"faces":{"north":{"uv":[0,0,4,16],"texture":"#texture"},"east":{"uv":[0,0,4,16],"texture":"#texture"},"south":{"uv":[0,0,4,16],"texture":"#texture"},"west":{"uv":[0,0,4,16],"texture":"#texture"},"up":{"uv":[4,0,8,4],"texture":"#texture"},"down":{"uv":[4,0,8,4],"texture":"#texture","cullface":"down"}},"__comment":"Right post"},{"from":[7,12,4],"to":[9,15,12],"faces":{"east":{"uv":[8,0,16,3],"texture":"#texture"},"west":{"uv":[8,0,16,3],"texture":"#texture"},"up":{"uv":[11,7,13,15],"texture":"#texture"},"down":{"uv":[11,15,13,7],"texture":"#texture"}},"__comment":"Top bar"},{"from":[7,12,-2],"to":[9,15,0],"faces":{"north":{"uv":[13,4,15,7],"texture":"#texture"},"east":{"uv":[8,0,10,3],"texture":"#texture"},"west":{"uv":[8,0,10,3],"texture":"#texture"},"up":{"uv":[11,7,13,9],"texture":"#texture"},"down":{"uv":[11,7,13,9],"texture":"#texture"}},"__comment":"Top bar left"},{"from":[7,12,16],"to":[9,15,18],"faces":{"east":{"uv":[14,0,16,3],"texture":"#texture"},"south":{"uv":[13,4,15,7],"texture":"#texture"},"west":{"uv":[14,0,16,3],"texture":"#texture"},"up":{"uv":[11,13,13,15],"texture":"#texture"},"down":{"uv":[11,13,13,15],"texture":"#texture"}},"__comment":"Top bar right"},{"from":[7,6,4],"to":[9,9,12],"faces":{"east":{"uv":[8,0,16,3],"texture":"#texture"},"west":{"uv":[8,0,16,3],"texture":"#texture"},"up":{"uv":[11,7,13,15],"texture":"#texture"},"down":{"uv":[11,15,13,7],"texture":"#texture"}},"__comment":"Lower bar"},{"from":[7,6,-2],"to":[9,9,0],"faces":{"north":{"uv":[13,4,15,7],"texture":"#texture"},"east":{"uv":[8,0,10,3],"texture":"#texture"},"west":{"uv":[8,0,10,3],"texture":"#texture"},"up":{"uv":[11,13,13,15],"texture":"#texture"},"down":{"uv":[11,13,13,15],"texture":"#texture"}},"__comment":"Lower bar left"},{"from":[7,6,16],"to":[9,9,18],"faces":{"east":{"uv":[14,0,16,3],"texture":"#texture"},"south":{"uv":[13,4,15,7],"texture":"#texture"},"west":{"uv":[14,0,16,3],"texture":"#texture"},"up":{"uv":[11,13,13,15],"texture":"#texture"},"down":{"uv":[11,13,13,15],"texture":"#texture"}},"__comment":"Lower bar right"}]},"custom_fence_post":{"textures":{"particle":"#particle"},"elements":[{"from":[6,0,6],"to":[10,16,10],"faces":{"up":{"uv":[4,0,8,4],"texture":"#texture","cullface":"up"},"down":{"uv":[4,0,8,4],"texture":"#texture","cullface":"down"},"north":{"uv":[0,0,4,16],"texture":"#texture"},"east":{"uv":[0,0,4,16],"texture":"#texture"},"south":{"uv":[0,0,4,16],"texture":"#texture"},"west":{"uv":[0,0,4,16],"texture":"#texture"}},"__comment":"Center post special"}]},"custom_fence_side_east":{"textures":{"particle":"#texture"},"elements":[{"name":"top bar","from":[7,12,7],"to":[16,15,9],"faces":{"north":{"uv":[4,4,13,7],"texture":"#texture"},"east":{"uv":[13,4,15,7],"texture":"#texture","cullface":"east"},"south":{"uv":[4,4,13,7],"texture":"#texture"},"up":{"uv":[13,7,15,16],"rotation":270,"texture":"#texture"},"down":{"uv":[13,7,15,16],"rotation":90,"texture":"#texture"}}},{"name":"lower bar","from":[7,6,7],"to":[16,9,9],"faces":{"north":{"uv":[4,4,13,7],"texture":"#texture"},"east":{"uv":[13,4,15,7],"texture":"#texture","cullface":"east"},"south":{"uv":[4,4,13,7],"texture":"#texture"},"up":{"uv":[13,7,15,16],"rotation":270,"texture":"#texture"},"down":{"uv":[13,7,15,16],"rotation":90,"texture":"#texture"}}}],"groups":[{"name":"east","origin":[0,0,0],"color":0,"children":[0,1]}]},"custom_fence_side_north":{"textures":{"particle":"#texture"},"elements":[{"name":"top bar","from":[7,12,0],"to":[9,15,9],"faces":{"north":{"uv":[13,4,15,7],"rotation":180,"texture":"#texture","cullface":"north"},"east":{"uv":[4,4,13,7],"texture":"#texture"},"west":{"uv":[4,4,13,7],"texture":"#texture"},"up":{"uv":[13,7,15,16],"texture":"#texture"},"down":{"uv":[13,7,15,16],"texture":"#texture"}}},{"name":"lower bar","from":[7,6,0],"to":[9,9,9],"faces":{"north":{"uv":[13,4,15,7],"rotation":180,"texture":"#texture","cullface":"north"},"east":{"uv":[4,4,13,7],"texture":"#texture"},"west":{"uv":[4,4,13,7],"texture":"#texture"},"up":{"uv":[13,7,15,16],"texture":"#texture"},"down":{"uv":[13,7,15,16],"texture":"#texture"}}}],"groups":[{"name":"north","origin":[0,0,0],"color":0,"children":[0,1]}]},"custom_fence_side_south":{"textures":{"particle":"#texture"},"elements":[{"name":"top bar","from":[7,12,7],"to":[9,15,16],"faces":{"east":{"uv":[4,4,13,7],"texture":"#texture"},"south":{"uv":[13,4,15,7],"texture":"#texture","cullface":"south"},"west":{"uv":[4,4,13,7],"texture":"#texture"},"up":{"uv":[13,7,15,16],"texture":"#texture"},"down":{"uv":[13,7,15,16],"texture":"#texture"}}},{"name":"lower bar","from":[7,6,7],"to":[9,9,16],"faces":{"east":{"uv":[4,4,13,7],"texture":"#texture"},"south":{"uv":[13,4,15,7],"texture":"#texture","cullface":"south"},"west":{"uv":[4,4,13,7],"texture":"#texture"},"up":{"uv":[13,7,15,16],"texture":"#texture"},"down":{"uv":[13,7,15,16],"texture":"#texture"}}}],"groups":[{"name":"south","origin":[0,0,0],"color":0,"children":[0,1]}]},"custom_fence_side_west":{"textures":{"particle":"#texture"},"elements":[{"name":"top bar","from":[0,12,7],"to":[9,15,9],"faces":{"north":{"uv":[4,4,13,7],"texture":"#texture"},"south":{"uv":[4,4,13,7],"texture":"#texture"},"west":{"uv":[15,4,13,7],"texture":"#texture","cullface":"west"},"up":{"uv":[13,7,15,16],"rotation":270,"texture":"#texture"},"down":{"uv":[13,7,15,16],"rotation":90,"texture":"#texture"}}},{"name":"lower bar","from":[0,6,7],"to":[9,9,9],"faces":{"north":{"uv":[4,4,13,7],"texture":"#texture"},"south":{"uv":[4,4,13,7],"texture":"#texture"},"west":{"uv":[15,4,13,7],"texture":"#texture","cullface":"west"},"up":{"uv":[13,7,15,16],"rotation":270,"texture":"#texture"},"down":{"uv":[13,7,15,16],"rotation":90,"texture":"#texture"}}}],"groups":[{"name":"west","origin":[0,0,0],"color":0,"children":[0,1]}]},"cut_copper":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cut_copper"}},"cut_copper_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/cut_copper","side":"minecraft:block/cut_copper","top":"minecraft:block/cut_copper"}},"cut_copper_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/cut_copper","side":"minecraft:block/cut_copper","top":"minecraft:block/cut_copper"}},"cut_copper_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/cut_copper","side":"minecraft:block/cut_copper","top":"minecraft:block/cut_copper"}},"cut_copper_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/cut_copper","side":"minecraft:block/cut_copper","top":"minecraft:block/cut_copper"}},"cut_copper_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/cut_copper","side":"minecraft:block/cut_copper","top":"minecraft:block/cut_copper"}},"cut_red_sandstone":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/red_sandstone_top","side":"minecraft:block/cut_red_sandstone"}},"cut_red_sandstone_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/red_sandstone_top","side":"minecraft:block/cut_red_sandstone","top":"minecraft:block/red_sandstone_top"}},"cut_red_sandstone_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/red_sandstone_top","side":"minecraft:block/cut_red_sandstone","top":"minecraft:block/red_sandstone_top"}},"cut_sandstone":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/sandstone_top","side":"minecraft:block/cut_sandstone"}},"cut_sandstone_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/sandstone_top","side":"minecraft:block/cut_sandstone","top":"minecraft:block/sandstone_top"}},"cut_sandstone_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/sandstone_top","side":"minecraft:block/cut_sandstone","top":"minecraft:block/sandstone_top"}},"cyan_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/cyan_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"cyan_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/cyan_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"cyan_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/cyan_candle","particle":"minecraft:block/cyan_candle"}},"cyan_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/cyan_candle_lit","particle":"minecraft:block/cyan_candle_lit"}},"cyan_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/cyan_candle","particle":"minecraft:block/cyan_candle"}},"cyan_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/cyan_candle_lit","particle":"minecraft:block/cyan_candle_lit"}},"cyan_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/cyan_candle","particle":"minecraft:block/cyan_candle"}},"cyan_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/cyan_candle_lit","particle":"minecraft:block/cyan_candle_lit"}},"cyan_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/cyan_candle","particle":"minecraft:block/cyan_candle"}},"cyan_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/cyan_candle_lit","particle":"minecraft:block/cyan_candle_lit"}},"cyan_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/cyan_wool"}},"cyan_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cyan_concrete"}},"cyan_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cyan_concrete_powder"}},"cyan_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/cyan_glazed_terracotta"}},"cyan_shulker_box":{"textures":{"particle":"minecraft:block/cyan_shulker_box"}},"cyan_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cyan_stained_glass"}},"cyan_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/cyan_stained_glass"}},"cyan_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/cyan_stained_glass"}},"cyan_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/cyan_stained_glass_pane_top","pane":"minecraft:block/cyan_stained_glass"}},"cyan_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/cyan_stained_glass_pane_top","pane":"minecraft:block/cyan_stained_glass"}},"cyan_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/cyan_stained_glass_pane_top","pane":"minecraft:block/cyan_stained_glass"}},"cyan_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cyan_terracotta"}},"cyan_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cyan_wool"}},"damaged_anvil":{"parent":"minecraft:block/template_anvil","textures":{"top":"minecraft:block/damaged_anvil_top"}},"dandelion":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/dandelion"}},"dark_oak_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/dark_oak_planks"}},"dark_oak_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/dark_oak_planks"}},"dark_oak_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/dark_oak_planks"}},"dark_oak_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/dark_oak_door_bottom","top":"minecraft:block/dark_oak_door_top"}},"dark_oak_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/dark_oak_door_bottom","top":"minecraft:block/dark_oak_door_top"}},"dark_oak_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/dark_oak_door_bottom","top":"minecraft:block/dark_oak_door_top"}},"dark_oak_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/dark_oak_door_bottom","top":"minecraft:block/dark_oak_door_top"}},"dark_oak_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/dark_oak_door_bottom","top":"minecraft:block/dark_oak_door_top"}},"dark_oak_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/dark_oak_door_bottom","top":"minecraft:block/dark_oak_door_top"}},"dark_oak_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/dark_oak_door_bottom","top":"minecraft:block/dark_oak_door_top"}},"dark_oak_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/dark_oak_door_bottom","top":"minecraft:block/dark_oak_door_top"}},"dark_oak_fence_gate":{"parent":"minecraft:block/template_fence_gate","textures":{"texture":"minecraft:block/dark_oak_planks"}},"dark_oak_fence_gate_open":{"parent":"minecraft:block/template_fence_gate_open","textures":{"texture":"minecraft:block/dark_oak_planks"}},"dark_oak_fence_gate_wall":{"parent":"minecraft:block/template_fence_gate_wall","textures":{"texture":"minecraft:block/dark_oak_planks"}},"dark_oak_fence_gate_wall_open":{"parent":"minecraft:block/template_fence_gate_wall_open","textures":{"texture":"minecraft:block/dark_oak_planks"}},"dark_oak_fence_inventory":{"parent":"minecraft:block/fence_inventory","textures":{"texture":"minecraft:block/dark_oak_planks"}},"dark_oak_fence_post":{"parent":"minecraft:block/fence_post","textures":{"texture":"minecraft:block/dark_oak_planks"}},"dark_oak_fence_side":{"parent":"minecraft:block/fence_side","textures":{"texture":"minecraft:block/dark_oak_planks"}},"dark_oak_hanging_sign":{"textures":{"particle":"minecraft:block/stripped_dark_oak_log"}},"dark_oak_leaves":{"parent":"minecraft:block/leaves","textures":{"all":"minecraft:block/dark_oak_leaves"}},"dark_oak_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/dark_oak_log_top","side":"minecraft:block/dark_oak_log"}},"dark_oak_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/dark_oak_log_top","side":"minecraft:block/dark_oak_log"}},"dark_oak_planks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/dark_oak_planks"}},"dark_oak_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/dark_oak_planks"}},"dark_oak_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/dark_oak_planks"}},"dark_oak_sapling":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/dark_oak_sapling"}},"dark_oak_sign":{"textures":{"particle":"minecraft:block/dark_oak_planks"}},"dark_oak_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/dark_oak_planks","side":"minecraft:block/dark_oak_planks","top":"minecraft:block/dark_oak_planks"}},"dark_oak_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/dark_oak_planks","side":"minecraft:block/dark_oak_planks","top":"minecraft:block/dark_oak_planks"}},"dark_oak_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/dark_oak_planks","side":"minecraft:block/dark_oak_planks","top":"minecraft:block/dark_oak_planks"}},"dark_oak_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/dark_oak_planks","side":"minecraft:block/dark_oak_planks","top":"minecraft:block/dark_oak_planks"}},"dark_oak_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/dark_oak_planks","side":"minecraft:block/dark_oak_planks","top":"minecraft:block/dark_oak_planks"}},"dark_oak_trapdoor_bottom":{"parent":"minecraft:block/template_trapdoor_bottom","textures":{"texture":"minecraft:block/dark_oak_trapdoor"}},"dark_oak_trapdoor_open":{"parent":"minecraft:block/template_trapdoor_open","textures":{"texture":"minecraft:block/dark_oak_trapdoor"}},"dark_oak_trapdoor_top":{"parent":"minecraft:block/template_trapdoor_top","textures":{"texture":"minecraft:block/dark_oak_trapdoor"}},"dark_oak_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/dark_oak_log","side":"minecraft:block/dark_oak_log"}},"dark_prismarine":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/dark_prismarine"}},"dark_prismarine_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/dark_prismarine","side":"minecraft:block/dark_prismarine","top":"minecraft:block/dark_prismarine"}},"dark_prismarine_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/dark_prismarine","side":"minecraft:block/dark_prismarine","top":"minecraft:block/dark_prismarine"}},"dark_prismarine_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/dark_prismarine","side":"minecraft:block/dark_prismarine","top":"minecraft:block/dark_prismarine"}},"dark_prismarine_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/dark_prismarine","side":"minecraft:block/dark_prismarine","top":"minecraft:block/dark_prismarine"}},"dark_prismarine_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/dark_prismarine","side":"minecraft:block/dark_prismarine","top":"minecraft:block/dark_prismarine"}},"daylight_detector":{"parent":"minecraft:block/template_daylight_detector","textures":{"side":"minecraft:block/daylight_detector_side","top":"minecraft:block/daylight_detector_top"}},"daylight_detector_inverted":{"parent":"minecraft:block/template_daylight_detector","textures":{"side":"minecraft:block/daylight_detector_side","top":"minecraft:block/daylight_detector_inverted_top"}},"dead_brain_coral":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/dead_brain_coral"}},"dead_brain_coral_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/dead_brain_coral_block"}},"dead_brain_coral_fan":{"parent":"minecraft:block/coral_fan","textures":{"fan":"minecraft:block/dead_brain_coral_fan"}},"dead_brain_coral_wall_fan":{"parent":"minecraft:block/coral_wall_fan","textures":{"fan":"minecraft:block/dead_brain_coral_fan"}},"dead_bubble_coral":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/dead_bubble_coral"}},"dead_bubble_coral_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/dead_bubble_coral_block"}},"dead_bubble_coral_fan":{"parent":"minecraft:block/coral_fan","textures":{"fan":"minecraft:block/dead_bubble_coral_fan"}},"dead_bubble_coral_wall_fan":{"parent":"minecraft:block/coral_wall_fan","textures":{"fan":"minecraft:block/dead_bubble_coral_fan"}},"dead_bush":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/dead_bush"}},"dead_fire_coral":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/dead_fire_coral"}},"dead_fire_coral_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/dead_fire_coral_block"}},"dead_fire_coral_fan":{"parent":"minecraft:block/coral_fan","textures":{"fan":"minecraft:block/dead_fire_coral_fan"}},"dead_fire_coral_wall_fan":{"parent":"minecraft:block/coral_wall_fan","textures":{"fan":"minecraft:block/dead_fire_coral_fan"}},"dead_horn_coral":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/dead_horn_coral"}},"dead_horn_coral_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/dead_horn_coral_block"}},"dead_horn_coral_fan":{"parent":"minecraft:block/coral_fan","textures":{"fan":"minecraft:block/dead_horn_coral_fan"}},"dead_horn_coral_wall_fan":{"parent":"minecraft:block/coral_wall_fan","textures":{"fan":"minecraft:block/dead_horn_coral_fan"}},"dead_sea_pickle":{"parent":"block/block","textures":{"particle":"block/sea_pickle","all":"block/sea_pickle"},"elements":[{"from":[6,0,6],"to":[10,6,10],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,11],"texture":"#all"},"south":{"uv":[0,5,4,11],"texture":"#all"},"west":{"uv":[8,5,12,11],"texture":"#all"},"east":{"uv":[12,5,16,11],"texture":"#all"}}},{"from":[6,5.95,6],"to":[10,5.95,10],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}}]},"dead_tube_coral":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/dead_tube_coral"}},"dead_tube_coral_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/dead_tube_coral_block"}},"dead_tube_coral_fan":{"parent":"minecraft:block/coral_fan","textures":{"fan":"minecraft:block/dead_tube_coral_fan"}},"dead_tube_coral_wall_fan":{"parent":"minecraft:block/coral_wall_fan","textures":{"fan":"minecraft:block/dead_tube_coral_fan"}},"decorated_pot":{"textures":{"particle":"minecraft:block/terracotta"}},"deepslate":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/deepslate_top","side":"minecraft:block/deepslate"}},"deepslate_brick_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/deepslate_bricks","side":"minecraft:block/deepslate_bricks","top":"minecraft:block/deepslate_bricks"}},"deepslate_brick_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/deepslate_bricks","side":"minecraft:block/deepslate_bricks","top":"minecraft:block/deepslate_bricks"}},"deepslate_brick_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/deepslate_bricks","side":"minecraft:block/deepslate_bricks","top":"minecraft:block/deepslate_bricks"}},"deepslate_brick_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/deepslate_bricks","side":"minecraft:block/deepslate_bricks","top":"minecraft:block/deepslate_bricks"}},"deepslate_brick_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/deepslate_bricks","side":"minecraft:block/deepslate_bricks","top":"minecraft:block/deepslate_bricks"}},"deepslate_brick_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/deepslate_bricks"}},"deepslate_brick_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/deepslate_bricks"}},"deepslate_brick_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/deepslate_bricks"}},"deepslate_brick_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/deepslate_bricks"}},"deepslate_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/deepslate_bricks"}},"deepslate_coal_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/deepslate_coal_ore"}},"deepslate_copper_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/deepslate_copper_ore"}},"deepslate_diamond_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/deepslate_diamond_ore"}},"deepslate_emerald_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/deepslate_emerald_ore"}},"deepslate_gold_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/deepslate_gold_ore"}},"deepslate_iron_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/deepslate_iron_ore"}},"deepslate_lapis_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/deepslate_lapis_ore"}},"deepslate_mirrored":{"parent":"minecraft:block/cube_column_mirrored","textures":{"end":"minecraft:block/deepslate_top","side":"minecraft:block/deepslate"}},"deepslate_redstone_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/deepslate_redstone_ore"}},"deepslate_tile_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/deepslate_tiles","side":"minecraft:block/deepslate_tiles","top":"minecraft:block/deepslate_tiles"}},"deepslate_tile_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/deepslate_tiles","side":"minecraft:block/deepslate_tiles","top":"minecraft:block/deepslate_tiles"}},"deepslate_tile_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/deepslate_tiles","side":"minecraft:block/deepslate_tiles","top":"minecraft:block/deepslate_tiles"}},"deepslate_tile_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/deepslate_tiles","side":"minecraft:block/deepslate_tiles","top":"minecraft:block/deepslate_tiles"}},"deepslate_tile_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/deepslate_tiles","side":"minecraft:block/deepslate_tiles","top":"minecraft:block/deepslate_tiles"}},"deepslate_tile_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/deepslate_tiles"}},"deepslate_tile_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/deepslate_tiles"}},"deepslate_tile_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/deepslate_tiles"}},"deepslate_tile_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/deepslate_tiles"}},"deepslate_tiles":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/deepslate_tiles"}},"detector_rail":{"parent":"minecraft:block/rail_flat","textures":{"rail":"minecraft:block/detector_rail"}},"detector_rail_on":{"parent":"minecraft:block/rail_flat","textures":{"rail":"minecraft:block/detector_rail_on"}},"detector_rail_on_raised_ne":{"parent":"minecraft:block/template_rail_raised_ne","textures":{"rail":"minecraft:block/detector_rail_on"}},"detector_rail_on_raised_sw":{"parent":"minecraft:block/template_rail_raised_sw","textures":{"rail":"minecraft:block/detector_rail_on"}},"detector_rail_raised_ne":{"parent":"minecraft:block/template_rail_raised_ne","textures":{"rail":"minecraft:block/detector_rail"}},"detector_rail_raised_sw":{"parent":"minecraft:block/template_rail_raised_sw","textures":{"rail":"minecraft:block/detector_rail"}},"diamond_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/diamond_block"}},"diamond_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/diamond_ore"}},"diorite":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/diorite"}},"diorite_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/diorite","side":"minecraft:block/diorite","top":"minecraft:block/diorite"}},"diorite_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/diorite","side":"minecraft:block/diorite","top":"minecraft:block/diorite"}},"diorite_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/diorite","side":"minecraft:block/diorite","top":"minecraft:block/diorite"}},"diorite_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/diorite","side":"minecraft:block/diorite","top":"minecraft:block/diorite"}},"diorite_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/diorite","side":"minecraft:block/diorite","top":"minecraft:block/diorite"}},"diorite_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/diorite"}},"diorite_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/diorite"}},"diorite_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/diorite"}},"diorite_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/diorite"}},"dirt":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/dirt"}},"dirt_path":{"parent":"block/block","textures":{"particle":"block/dirt","top":"block/dirt_path_top","side":"block/dirt_path_side","bottom":"block/dirt"},"elements":[{"from":[0,0,0],"to":[16,15,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,1,16,16],"texture":"#side","cullface":"north"},"south":{"uv":[0,1,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,1,16,16],"texture":"#side","cullface":"west"},"east":{"uv":[0,1,16,16],"texture":"#side","cullface":"east"}}}]},"dispenser":{"parent":"minecraft:block/orientable","textures":{"front":"minecraft:block/dispenser_front","side":"minecraft:block/furnace_side","top":"minecraft:block/furnace_top"}},"dispenser_vertical":{"parent":"minecraft:block/orientable_vertical","textures":{"front":"minecraft:block/dispenser_front_vertical","side":"minecraft:block/furnace_top"}},"door_bottom_left":{"ambientocclusion":false,"textures":{"particle":"#bottom"},"elements":[{"from":[0,0,0],"to":[3,16,16],"faces":{"down":{"uv":[16,13,0,16],"texture":"#bottom","cullface":"down","rotation":90},"north":{"uv":[3,0,0,16],"texture":"#bottom","cullface":"north"},"south":{"uv":[0,0,3,16],"texture":"#bottom","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"west"},"east":{"uv":[16,0,0,16],"texture":"#bottom"}}}]},"door_bottom_left_open":{"ambientocclusion":false,"textures":{"particle":"#bottom"},"elements":[{"from":[0,0,0],"to":[3,16,16],"faces":{"down":{"uv":[0,16,16,13],"texture":"#bottom","cullface":"down","rotation":90},"north":{"uv":[0,0,3,16],"texture":"#bottom","cullface":"north"},"south":{"uv":[0,0,3,16],"texture":"#bottom","cullface":"south"},"west":{"uv":[16,0,0,16],"texture":"#bottom","cullface":"west"},"east":{"uv":[0,0,16,16],"texture":"#bottom"}}}]},"door_bottom_right":{"ambientocclusion":false,"textures":{"particle":"#bottom"},"elements":[{"from":[0,0,0],"to":[3,16,16],"faces":{"down":{"uv":[0,13,16,16],"texture":"#bottom","cullface":"down","rotation":90},"north":{"uv":[3,0,0,16],"texture":"#bottom","cullface":"north"},"south":{"uv":[0,0,3,16],"texture":"#bottom","cullface":"south"},"west":{"uv":[16,0,0,16],"texture":"#bottom","cullface":"west"},"east":{"uv":[0,0,16,16],"texture":"#bottom"}}}]},"door_bottom_right_open":{"ambientocclusion":false,"textures":{"particle":"#bottom"},"elements":[{"from":[0,0,0],"to":[3,16,16],"faces":{"down":{"uv":[16,16,0,13],"texture":"#bottom","cullface":"down","rotation":90},"north":{"uv":[3,0,0,16],"texture":"#bottom","cullface":"north"},"south":{"uv":[3,0,0,16],"texture":"#bottom","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"west"},"east":{"uv":[16,0,0,16],"texture":"#bottom"}}}]},"door_top_left":{"ambientocclusion":false,"textures":{"particle":"#top"},"elements":[{"from":[0,0,0],"to":[3,16,16],"faces":{"up":{"uv":[0,3,16,0],"texture":"#top","cullface":"up","rotation":90},"north":{"uv":[3,0,0,16],"texture":"#top","cullface":"north"},"south":{"uv":[0,0,3,16],"texture":"#top","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#top","cullface":"west"},"east":{"uv":[16,0,0,16],"texture":"#top"}}}]},"door_top_left_open":{"ambientocclusion":false,"textures":{"particle":"#top"},"elements":[{"from":[0,0,0],"to":[3,16,16],"faces":{"up":{"uv":[0,3,16,0],"texture":"#top","cullface":"up","rotation":270},"north":{"uv":[0,0,3,16],"texture":"#top","cullface":"north"},"south":{"uv":[0,0,3,16],"texture":"#top","cullface":"south"},"west":{"uv":[16,0,0,16],"texture":"#top","cullface":"west"},"east":{"uv":[0,0,16,16],"texture":"#top"}}}]},"door_top_right":{"ambientocclusion":false,"textures":{"particle":"#top"},"elements":[{"from":[0,0,0],"to":[3,16,16],"faces":{"up":{"uv":[0,0,16,3],"texture":"#top","cullface":"up","rotation":270},"north":{"uv":[3,0,0,16],"texture":"#top","cullface":"north"},"south":{"uv":[0,0,3,16],"texture":"#top","cullface":"south"},"west":{"uv":[16,0,0,16],"texture":"#top","cullface":"west"},"east":{"uv":[0,0,16,16],"texture":"#top"}}}]},"door_top_right_open":{"ambientocclusion":false,"textures":{"particle":"#top"},"elements":[{"from":[0,0,0],"to":[3,16,16],"faces":{"up":{"uv":[0,0,16,3],"texture":"#top","cullface":"up","rotation":90},"north":{"uv":[3,0,0,16],"texture":"#top","cullface":"north"},"south":{"uv":[3,0,0,16],"texture":"#top","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#top","cullface":"west"},"east":{"uv":[16,0,0,16],"texture":"#top"}}}]},"dragon_egg":{"parent":"block/block","textures":{"particle":"block/dragon_egg","all":"block/dragon_egg"},"elements":[{"from":[6,15,6],"to":[10,16,10],"faces":{"north":{"uv":[6,0,10,1],"texture":"#all"},"east":{"uv":[6,0,10,1],"texture":"#all"},"south":{"uv":[6,0,10,1],"texture":"#all"},"west":{"uv":[6,0,10,1],"texture":"#all"},"up":{"uv":[6,6,10,10],"texture":"#all","cullface":"up"}}},{"from":[5,14,5],"to":[11,15,11],"faces":{"north":{"uv":[5,1,11,2],"texture":"#all"},"east":{"uv":[5,1,11,2],"texture":"#all"},"south":{"uv":[5,1,11,2],"texture":"#all"},"west":{"uv":[5,1,11,2],"texture":"#all"},"up":{"uv":[5,5,11,11],"texture":"#all"}}},{"from":[4,13,4],"to":[12,14,12],"rotation":{"angle":0,"axis":"y","origin":[0,-1,0]},"faces":{"north":{"uv":[4,2,12,3],"texture":"#all"},"east":{"uv":[4,2,12,3],"texture":"#all"},"south":{"uv":[4,2,12,3],"texture":"#all"},"west":{"uv":[4,2,12,3],"texture":"#all"},"up":{"uv":[4,4,12,12],"texture":"#all"}}},{"from":[3,0,3],"to":[13,13,13],"faces":{"north":{"uv":[3,3,13,16],"texture":"#all"},"east":{"uv":[3,3,13,16],"texture":"#all"},"south":{"uv":[3,3,13,16],"texture":"#all"},"west":{"uv":[3,3,13,16],"texture":"#all"},"up":{"uv":[3,3,13,13],"texture":"#all"},"down":{"uv":[3,3,13,13],"texture":"#all","cullface":"down"}}},{"from":[2,1,2],"to":[14,11,14],"faces":{"north":{"uv":[2,5,14,15],"texture":"#all"},"east":{"uv":[2,5,14,15],"texture":"#all"},"south":{"uv":[2,5,14,15],"texture":"#all"},"west":{"uv":[2,5,14,15],"texture":"#all"},"up":{"uv":[2,2,14,14],"texture":"#all"},"down":{"uv":[2,2,14,14],"texture":"#all"}}},{"from":[1,3,1],"to":[15,8,15],"faces":{"north":{"uv":[1,8,15,13],"texture":"#all"},"east":{"uv":[1,8,15,13],"texture":"#all"},"south":{"uv":[1,8,15,13],"texture":"#all"},"west":{"uv":[1,8,15,13],"texture":"#all"},"up":{"uv":[1,1,15,15],"texture":"#all"},"down":{"uv":[1,1,15,15],"texture":"#all"}}}]},"dried_ghast":{"parent":"block/block","display":{"gui":{"rotation":[30,225,0],"translation":[0.4,1.6,0],"scale":[0.8,0.8,0.8]}},"elements":[{"name":"body","from":[3,0,3],"to":[13,10,13],"rotation":{"angle":0,"axis":"y","origin":[11,0,11]},"faces":{"north":{"uv":[0,0,10,10],"texture":"#north"},"east":{"uv":[0,0,10,10],"texture":"#east"},"south":{"uv":[0,0,10,10],"texture":"#south"},"west":{"uv":[0,0,10,10],"texture":"#west"},"up":{"uv":[0,0,10,10],"rotation":180,"texture":"#top"},"down":{"uv":[10,0,0,10],"texture":"#bottom","cullface":"down"}}},{"name":"left_tent_1","from":[0,0,5],"to":[3,1,7],"rotation":{"angle":0,"axis":"y","origin":[8,0,13]},"faces":{"north":{"uv":[1,1.5,2.5,2],"texture":"#tentacles"},"east":{"uv":[0,1.5,1,2],"texture":"#tentacles"},"south":{"uv":[3.5,1.5,5,2],"texture":"#tentacles"},"west":{"uv":[2.5,1.5,3.5,2],"texture":"#tentacles","cullface":"west"},"up":{"uv":[2.5,1.5,1.5,0],"rotation":90,"texture":"#tentacles"},"down":{"uv":[2.5,1.5,3.5,0],"rotation":90,"texture":"#tentacles","cullface":"down"}}},{"name":"left_tent_2","from":[0,0,9],"to":[3,1,11],"rotation":{"angle":0,"axis":"y","origin":[8,0,17]},"faces":{"north":{"uv":[1,3.5,2.5,4],"texture":"#tentacles"},"east":{"uv":[0,3.5,1,4],"texture":"#tentacles"},"south":{"uv":[3.5,3.5,5,4],"texture":"#tentacles"},"west":{"uv":[2.5,3.5,3.5,4],"texture":"#tentacles","cullface":"west"},"up":{"uv":[2.5,3.5,1.5,2],"rotation":90,"texture":"#tentacles"},"down":{"uv":[2.5,3.5,3.5,2],"rotation":90,"texture":"#tentacles","cullface":"down"}}},{"name":"right_tent_1","from":[13,0,5],"to":[16,1,7],"rotation":{"angle":0,"axis":"y","origin":[8,0,13]},"faces":{"north":{"uv":[2.5,7.5,1,8],"texture":"#tentacles"},"east":{"uv":[3.5,7.5,2.5,8],"texture":"#tentacles","cullface":"east"},"south":{"uv":[5,7.5,3.5,8],"texture":"#tentacles"},"west":{"uv":[1,7.5,0,8],"texture":"#tentacles"},"up":{"uv":[2.5,6,1.5,7.5],"rotation":90,"texture":"#tentacles"},"down":{"uv":[2.5,6,3.5,7.5],"rotation":90,"texture":"#tentacles","cullface":"down"}}},{"name":"right_tent_2","from":[13,0,9],"to":[16,1,11],"rotation":{"angle":0,"axis":"y","origin":[8,0,17]},"faces":{"north":{"uv":[2.5,5.5,1,6],"texture":"#tentacles"},"east":{"uv":[3.5,5.5,2.5,6],"texture":"#tentacles","cullface":"east"},"south":{"uv":[5,5.5,3.5,6],"texture":"#tentacles"},"west":{"uv":[1,5.5,0,6],"texture":"#tentacles"},"up":{"uv":[2.5,4,1.5,5.5],"rotation":90,"texture":"#tentacles"},"down":{"uv":[2.5,4,3.5,5.5],"rotation":90,"texture":"#tentacles","cullface":"down"}}},{"name":"back_tent_2","from":[9,0,13],"to":[11,1,16],"rotation":{"angle":0,"axis":"y","origin":[10.5,0.5,14.5]},"faces":{"north":{"uv":[6,2.5,5,3],"texture":"#tentacles"},"east":{"uv":[7.5,2.5,6,3],"texture":"#tentacles"},"south":{"uv":[8.5,2.5,7.5,3],"texture":"#tentacles","cullface":"south"},"west":{"uv":[10,2.5,8.5,3],"texture":"#tentacles"},"up":{"uv":[6,2.5,7.5,1.5],"rotation":90,"texture":"#tentacles"},"down":{"uv":[7.5,1.5,9,2.5],"rotation":270,"texture":"#tentacles","cullface":"down"}}},{"name":"back_tent_1","from":[5,0,13],"to":[7,1,16],"rotation":{"angle":0,"axis":"y","origin":[5.5,0.5,14.5]},"faces":{"north":{"uv":[6,1,5,1.5],"texture":"#tentacles"},"east":{"uv":[7.5,1,6,1.5],"texture":"#tentacles"},"south":{"uv":[8.5,1,7.5,1.5],"texture":"#tentacles","cullface":"south"},"west":{"uv":[10,1,8.5,1.5],"texture":"#tentacles"},"up":{"uv":[6,1,7.5,0],"rotation":90,"texture":"#tentacles"},"down":{"uv":[7.5,0,9,1],"rotation":270,"texture":"#tentacles","cullface":"down"}}}]},"dried_ghast_hydration_0":{"parent":"minecraft:block/dried_ghast","textures":{"bottom":"minecraft:block/dried_ghast_hydration_0_bottom","east":"minecraft:block/dried_ghast_hydration_0_east","north":"minecraft:block/dried_ghast_hydration_0_north","particle":"minecraft:block/dried_ghast_hydration_0_north","south":"minecraft:block/dried_ghast_hydration_0_south","tentacles":"minecraft:block/dried_ghast_hydration_0_tentacles","top":"minecraft:block/dried_ghast_hydration_0_top","west":"minecraft:block/dried_ghast_hydration_0_west"}},"dried_ghast_hydration_1":{"parent":"minecraft:block/dried_ghast","textures":{"bottom":"minecraft:block/dried_ghast_hydration_1_bottom","east":"minecraft:block/dried_ghast_hydration_1_east","north":"minecraft:block/dried_ghast_hydration_1_north","particle":"minecraft:block/dried_ghast_hydration_1_north","south":"minecraft:block/dried_ghast_hydration_1_south","tentacles":"minecraft:block/dried_ghast_hydration_1_tentacles","top":"minecraft:block/dried_ghast_hydration_1_top","west":"minecraft:block/dried_ghast_hydration_1_west"}},"dried_ghast_hydration_2":{"parent":"minecraft:block/dried_ghast","textures":{"bottom":"minecraft:block/dried_ghast_hydration_2_bottom","east":"minecraft:block/dried_ghast_hydration_2_east","north":"minecraft:block/dried_ghast_hydration_2_north","particle":"minecraft:block/dried_ghast_hydration_2_north","south":"minecraft:block/dried_ghast_hydration_2_south","tentacles":"minecraft:block/dried_ghast_hydration_2_tentacles","top":"minecraft:block/dried_ghast_hydration_2_top","west":"minecraft:block/dried_ghast_hydration_2_west"}},"dried_ghast_hydration_3":{"parent":"minecraft:block/dried_ghast","textures":{"bottom":"minecraft:block/dried_ghast_hydration_3_bottom","east":"minecraft:block/dried_ghast_hydration_3_east","north":"minecraft:block/dried_ghast_hydration_3_north","particle":"minecraft:block/dried_ghast_hydration_3_north","south":"minecraft:block/dried_ghast_hydration_3_south","tentacles":"minecraft:block/dried_ghast_hydration_3_tentacles","top":"minecraft:block/dried_ghast_hydration_3_top","west":"minecraft:block/dried_ghast_hydration_3_west"}},"dried_kelp_block":{"parent":"block/block","textures":{"particle":"block/dried_kelp_side","down":"block/dried_kelp_bottom","up":"block/dried_kelp_top","north":"block/dried_kelp_side","east":"block/dried_kelp_side","south":"block/dried_kelp_side","west":"block/dried_kelp_side"},"elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"texture":"#down","cullface":"down"},"up":{"texture":"#up","cullface":"up"},"north":{"texture":"#north","cullface":"north"},"south":{"uv":[16,0,0,16],"texture":"#south","cullface":"south"},"west":{"texture":"#west","cullface":"west"},"east":{"uv":[16,0,0,16],"texture":"#east","cullface":"east"}}}]},"dripstone_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/dripstone_block"}},"dropper":{"parent":"minecraft:block/orientable","textures":{"front":"minecraft:block/dropper_front","side":"minecraft:block/furnace_side","top":"minecraft:block/furnace_top"}},"dropper_vertical":{"parent":"minecraft:block/orientable_vertical","textures":{"front":"minecraft:block/dropper_front_vertical","side":"minecraft:block/furnace_top"}},"emerald_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/emerald_block"}},"emerald_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/emerald_ore"}},"enchanting_table":{"parent":"block/block","textures":{"particle":"block/enchanting_table_bottom","bottom":"block/enchanting_table_bottom","top":"block/enchanting_table_top","side":"block/enchanting_table_side"},"elements":[{"from":[0,0,0],"to":[16,12,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,4,16,16],"texture":"#side","cullface":"north"},"south":{"uv":[0,4,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,4,16,16],"texture":"#side","cullface":"west"},"east":{"uv":[0,4,16,16],"texture":"#side","cullface":"east"}}}]},"end_gateway":{"textures":{"particle":"minecraft:block/obsidian"}},"end_portal":{"textures":{"particle":"minecraft:block/obsidian"}},"end_portal_frame":{"parent":"block/block","textures":{"particle":"block/end_portal_frame_side","bottom":"block/end_stone","top":"block/end_portal_frame_top","side":"block/end_portal_frame_side"},"elements":[{"from":[0,0,0],"to":[16,13,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,3,16,16],"texture":"#side","cullface":"north"},"south":{"uv":[0,3,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,3,16,16],"texture":"#side","cullface":"west"},"east":{"uv":[0,3,16,16],"texture":"#side","cullface":"east"}}}]},"end_portal_frame_filled":{"textures":{"particle":"block/end_portal_frame_side","bottom":"block/end_stone","top":"block/end_portal_frame_top","side":"block/end_portal_frame_side","eye":"block/end_portal_frame_eye"},"elements":[{"from":[0,0,0],"to":[16,13,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,3,16,16],"texture":"#side","cullface":"north"},"south":{"uv":[0,3,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,3,16,16],"texture":"#side","cullface":"west"},"east":{"uv":[0,3,16,16],"texture":"#side","cullface":"east"}}},{"from":[4,13,4],"to":[12,16,12],"faces":{"up":{"uv":[4,4,12,12],"texture":"#eye","cullface":"up"},"north":{"uv":[4,0,12,3],"texture":"#eye"},"south":{"uv":[4,0,12,3],"texture":"#eye"},"west":{"uv":[4,0,12,3],"texture":"#eye"},"east":{"uv":[4,0,12,3],"texture":"#eye"}}}]},"end_rod":{"parent":"block/block","display":{"head":{"rotation":[-60,0,0],"translation":[0,5,-9],"scale":[1,1,1]},"thirdperson_righthand":{"rotation":[0,0,0],"translation":[0,0,0],"scale":[0.375,0.375,0.375]}},"textures":{"end_rod":"block/end_rod","particle":"block/end_rod"},"elements":[{"from":[6,0,6],"to":[10,1,10],"faces":{"down":{"uv":[6,6,2,2],"texture":"#end_rod","cullface":"down"},"up":{"uv":[2,2,6,6],"texture":"#end_rod"},"north":{"uv":[2,6,6,7],"texture":"#end_rod"},"south":{"uv":[2,6,6,7],"texture":"#end_rod"},"west":{"uv":[2,6,6,7],"texture":"#end_rod"},"east":{"uv":[2,6,6,7],"texture":"#end_rod"}}},{"from":[7,1,7],"to":[9,16,9],"faces":{"up":{"uv":[2,0,4,2],"texture":"#end_rod","cullface":"up"},"north":{"uv":[0,0,2,15],"texture":"#end_rod"},"south":{"uv":[0,0,2,15],"texture":"#end_rod"},"west":{"uv":[0,0,2,15],"texture":"#end_rod"},"east":{"uv":[0,0,2,15],"texture":"#end_rod"}}}]},"end_stone":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/end_stone"}},"end_stone_brick_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/end_stone_bricks","side":"minecraft:block/end_stone_bricks","top":"minecraft:block/end_stone_bricks"}},"end_stone_brick_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/end_stone_bricks","side":"minecraft:block/end_stone_bricks","top":"minecraft:block/end_stone_bricks"}},"end_stone_brick_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/end_stone_bricks","side":"minecraft:block/end_stone_bricks","top":"minecraft:block/end_stone_bricks"}},"end_stone_brick_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/end_stone_bricks","side":"minecraft:block/end_stone_bricks","top":"minecraft:block/end_stone_bricks"}},"end_stone_brick_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/end_stone_bricks","side":"minecraft:block/end_stone_bricks","top":"minecraft:block/end_stone_bricks"}},"end_stone_brick_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/end_stone_bricks"}},"end_stone_brick_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/end_stone_bricks"}},"end_stone_brick_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/end_stone_bricks"}},"end_stone_brick_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/end_stone_bricks"}},"end_stone_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/end_stone_bricks"}},"ender_chest":{"textures":{"particle":"minecraft:block/obsidian"}},"exposed_chiseled_copper":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/exposed_chiseled_copper"}},"exposed_copper":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/exposed_copper"}},"exposed_copper_bulb":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/exposed_copper_bulb"}},"exposed_copper_bulb_lit":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/exposed_copper_bulb_lit"}},"exposed_copper_bulb_lit_powered":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/exposed_copper_bulb_lit_powered"}},"exposed_copper_bulb_powered":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/exposed_copper_bulb_powered"}},"exposed_copper_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/exposed_copper_door_bottom","top":"minecraft:block/exposed_copper_door_top"}},"exposed_copper_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/exposed_copper_door_bottom","top":"minecraft:block/exposed_copper_door_top"}},"exposed_copper_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/exposed_copper_door_bottom","top":"minecraft:block/exposed_copper_door_top"}},"exposed_copper_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/exposed_copper_door_bottom","top":"minecraft:block/exposed_copper_door_top"}},"exposed_copper_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/exposed_copper_door_bottom","top":"minecraft:block/exposed_copper_door_top"}},"exposed_copper_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/exposed_copper_door_bottom","top":"minecraft:block/exposed_copper_door_top"}},"exposed_copper_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/exposed_copper_door_bottom","top":"minecraft:block/exposed_copper_door_top"}},"exposed_copper_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/exposed_copper_door_bottom","top":"minecraft:block/exposed_copper_door_top"}},"exposed_copper_grate":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/exposed_copper_grate"}},"exposed_copper_trapdoor_bottom":{"parent":"minecraft:block/template_trapdoor_bottom","textures":{"texture":"minecraft:block/exposed_copper_trapdoor"}},"exposed_copper_trapdoor_open":{"parent":"minecraft:block/template_trapdoor_open","textures":{"texture":"minecraft:block/exposed_copper_trapdoor"}},"exposed_copper_trapdoor_top":{"parent":"minecraft:block/template_trapdoor_top","textures":{"texture":"minecraft:block/exposed_copper_trapdoor"}},"exposed_cut_copper":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/exposed_cut_copper"}},"exposed_cut_copper_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/exposed_cut_copper","side":"minecraft:block/exposed_cut_copper","top":"minecraft:block/exposed_cut_copper"}},"exposed_cut_copper_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/exposed_cut_copper","side":"minecraft:block/exposed_cut_copper","top":"minecraft:block/exposed_cut_copper"}},"exposed_cut_copper_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/exposed_cut_copper","side":"minecraft:block/exposed_cut_copper","top":"minecraft:block/exposed_cut_copper"}},"exposed_cut_copper_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/exposed_cut_copper","side":"minecraft:block/exposed_cut_copper","top":"minecraft:block/exposed_cut_copper"}},"exposed_cut_copper_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/exposed_cut_copper","side":"minecraft:block/exposed_cut_copper","top":"minecraft:block/exposed_cut_copper"}},"farmland":{"parent":"minecraft:block/template_farmland","textures":{"dirt":"minecraft:block/dirt","top":"minecraft:block/farmland"}},"farmland_moist":{"parent":"minecraft:block/template_farmland","textures":{"dirt":"minecraft:block/dirt","top":"minecraft:block/farmland_moist"}},"fence_inventory":{"parent":"block/block","display":{"gui":{"rotation":[30,135,0],"translation":[0,0,0],"scale":[0.625,0.625,0.625]},"fixed":{"rotation":[0,90,0],"translation":[0,0,0],"scale":[0.5,0.5,0.5]}},"textures":{"particle":"#texture"},"elements":[{"from":[6,0,0],"to":[10,16,4],"faces":{"down":{"uv":[6,0,10,4],"texture":"#texture","cullface":"down"},"up":{"uv":[6,0,10,4],"texture":"#texture"},"north":{"uv":[6,0,10,16],"texture":"#texture"},"south":{"uv":[6,0,10,16],"texture":"#texture"},"west":{"uv":[0,0,4,16],"texture":"#texture"},"east":{"uv":[0,0,4,16],"texture":"#texture"}},"__comment":"Left post"},{"from":[6,0,12],"to":[10,16,16],"faces":{"down":{"uv":[6,12,10,16],"texture":"#texture","cullface":"down"},"up":{"uv":[6,12,10,16],"texture":"#texture"},"north":{"uv":[6,0,10,16],"texture":"#texture"},"south":{"uv":[6,0,10,16],"texture":"#texture"},"west":{"uv":[12,0,16,16],"texture":"#texture"},"east":{"uv":[12,0,16,16],"texture":"#texture"}},"__comment":"Right post"},{"from":[7,12,0],"to":[9,15,16],"faces":{"down":{"uv":[7,0,9,16],"texture":"#texture"},"up":{"uv":[7,0,9,16],"texture":"#texture"},"west":{"uv":[0,1,16,4],"texture":"#texture"},"east":{"uv":[0,1,16,4],"texture":"#texture"}},"__comment":"Top bar"},{"from":[7,12,-2],"to":[9,15,0],"faces":{"down":{"uv":[7,0,9,2],"texture":"#texture"},"up":{"uv":[7,14,9,16],"texture":"#texture"},"north":{"uv":[7,1,9,4],"texture":"#texture"},"west":{"uv":[14,1,16,4],"texture":"#texture"},"east":{"uv":[0,1,2,4],"texture":"#texture"}},"__comment":"Top bar left"},{"from":[7,12,16],"to":[9,15,18],"faces":{"down":{"uv":[7,14,9,16],"texture":"#texture"},"up":{"uv":[7,0,9,2],"texture":"#texture"},"south":{"uv":[7,1,9,4],"texture":"#texture"},"west":{"uv":[0,1,2,4],"texture":"#texture"},"east":{"uv":[14,1,16,4],"texture":"#texture"}},"__comment":"Top bar right"},{"from":[7,6,0],"to":[9,9,16],"faces":{"down":{"uv":[7,0,9,16],"texture":"#texture"},"up":{"uv":[7,0,9,16],"texture":"#texture"},"west":{"uv":[0,7,16,10],"texture":"#texture"},"east":{"uv":[0,7,16,10],"texture":"#texture"}},"__comment":"Lower bar"},{"from":[7,6,-2],"to":[9,9,0],"faces":{"down":{"uv":[7,0,9,2],"texture":"#texture"},"up":{"uv":[7,14,9,16],"texture":"#texture"},"north":{"uv":[7,7,9,10],"texture":"#texture"},"west":{"uv":[14,7,16,10],"texture":"#texture"},"east":{"uv":[0,7,2,10],"texture":"#texture"}},"__comment":"Lower bar left"},{"from":[7,6,16],"to":[9,9,18],"faces":{"down":{"uv":[7,14,9,16],"texture":"#texture"},"up":{"uv":[7,0,9,2],"texture":"#texture"},"south":{"uv":[7,7,9,10],"texture":"#texture"},"west":{"uv":[0,7,2,10],"texture":"#texture"},"east":{"uv":[14,7,16,10],"texture":"#texture"}},"__comment":"Lower bar right"}]},"fence_post":{"textures":{"particle":"#texture"},"elements":[{"from":[6,0,6],"to":[10,16,10],"faces":{"down":{"uv":[6,6,10,10],"texture":"#texture","cullface":"down"},"up":{"uv":[6,6,10,10],"texture":"#texture","cullface":"up"},"north":{"uv":[6,0,10,16],"texture":"#texture"},"south":{"uv":[6,0,10,16],"texture":"#texture"},"west":{"uv":[6,0,10,16],"texture":"#texture"},"east":{"uv":[6,0,10,16],"texture":"#texture"}},"__comment":"Center post"}]},"fence_side":{"textures":{"particle":"#texture"},"elements":[{"from":[7,12,0],"to":[9,15,9],"faces":{"down":{"uv":[7,0,9,9],"texture":"#texture"},"up":{"uv":[7,0,9,9],"texture":"#texture"},"north":{"uv":[7,1,9,4],"texture":"#texture","cullface":"north"},"west":{"uv":[0,1,9,4],"texture":"#texture"},"east":{"uv":[0,1,9,4],"texture":"#texture"}},"__comment":"top bar"},{"from":[7,6,0],"to":[9,9,9],"faces":{"down":{"uv":[7,0,9,9],"texture":"#texture"},"up":{"uv":[7,0,9,9],"texture":"#texture"},"north":{"uv":[7,7,9,10],"texture":"#texture","cullface":"north"},"west":{"uv":[0,7,9,10],"texture":"#texture"},"east":{"uv":[0,7,9,10],"texture":"#texture"}},"__comment":"lower bar"}]},"fern":{"parent":"minecraft:block/tinted_cross","textures":{"cross":"minecraft:block/fern"}},"fire_coral":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/fire_coral"}},"fire_coral_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/fire_coral_block"}},"fire_coral_fan":{"parent":"minecraft:block/coral_fan","textures":{"fan":"minecraft:block/fire_coral_fan"}},"fire_coral_wall_fan":{"parent":"minecraft:block/coral_wall_fan","textures":{"fan":"minecraft:block/fire_coral_fan"}},"fire_floor0":{"parent":"minecraft:block/template_fire_floor","textures":{"fire":"minecraft:block/fire_0"}},"fire_floor1":{"parent":"minecraft:block/template_fire_floor","textures":{"fire":"minecraft:block/fire_1"}},"fire_side0":{"parent":"minecraft:block/template_fire_side","textures":{"fire":"minecraft:block/fire_0"}},"fire_side1":{"parent":"minecraft:block/template_fire_side","textures":{"fire":"minecraft:block/fire_1"}},"fire_side_alt0":{"parent":"minecraft:block/template_fire_side_alt","textures":{"fire":"minecraft:block/fire_0"}},"fire_side_alt1":{"parent":"minecraft:block/template_fire_side_alt","textures":{"fire":"minecraft:block/fire_1"}},"fire_up0":{"parent":"minecraft:block/template_fire_up","textures":{"fire":"minecraft:block/fire_0"}},"fire_up1":{"parent":"minecraft:block/template_fire_up","textures":{"fire":"minecraft:block/fire_1"}},"fire_up_alt0":{"parent":"minecraft:block/template_fire_up_alt","textures":{"fire":"minecraft:block/fire_0"}},"fire_up_alt1":{"parent":"minecraft:block/template_fire_up_alt","textures":{"fire":"minecraft:block/fire_1"}},"firefly_bush":{"parent":"minecraft:block/cross_emissive","textures":{"cross":"minecraft:block/firefly_bush","cross_emissive":"minecraft:block/firefly_bush_emissive"}},"fletching_table":{"parent":"minecraft:block/cube","textures":{"down":"minecraft:block/birch_planks","east":"minecraft:block/fletching_table_side","north":"minecraft:block/fletching_table_front","particle":"minecraft:block/fletching_table_front","south":"minecraft:block/fletching_table_front","up":"minecraft:block/fletching_table_top","west":"minecraft:block/fletching_table_side"}},"flower_pot":{"ambientocclusion":false,"textures":{"particle":"block/flower_pot","flowerpot":"block/flower_pot","dirt":"block/dirt"},"elements":[{"from":[5,0,5],"to":[6,6,11],"faces":{"down":{"uv":[5,5,6,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[5,5,6,11],"texture":"#flowerpot"},"north":{"uv":[10,10,11,16],"texture":"#flowerpot"},"south":{"uv":[5,10,6,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[10,0,5],"to":[11,6,11],"faces":{"down":{"uv":[10,5,11,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[10,5,11,11],"texture":"#flowerpot"},"north":{"uv":[5,10,6,16],"texture":"#flowerpot"},"south":{"uv":[10,10,11,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[6,0,5],"to":[10,6,6],"faces":{"down":{"uv":[6,10,10,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,5,10,6],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,10],"to":[10,6,11],"faces":{"down":{"uv":[6,5,10,6],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,10,10,11],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,6],"to":[10,4,10],"faces":{"down":{"uv":[6,12,10,16],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,6,10,10],"texture":"#dirt"}}}]},"flower_pot_cross":{"ambientocclusion":false,"textures":{"particle":"block/flower_pot","flowerpot":"block/flower_pot","dirt":"block/dirt"},"elements":[{"from":[5,0,5],"to":[6,6,11],"faces":{"down":{"uv":[5,5,6,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[5,5,6,11],"texture":"#flowerpot"},"north":{"uv":[10,10,11,16],"texture":"#flowerpot"},"south":{"uv":[5,10,6,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[10,0,5],"to":[11,6,11],"faces":{"down":{"uv":[10,5,11,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[10,5,11,11],"texture":"#flowerpot"},"north":{"uv":[5,10,6,16],"texture":"#flowerpot"},"south":{"uv":[10,10,11,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[6,0,5],"to":[10,6,6],"faces":{"down":{"uv":[6,10,10,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,5,10,6],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,10],"to":[10,6,11],"faces":{"down":{"uv":[6,5,10,6],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,10,10,11],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,6],"to":[10,4,10],"faces":{"down":{"uv":[6,12,10,16],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,6,10,10],"texture":"#dirt"}}},{"from":[2.6,4,8],"to":[13.4,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#plant"},"south":{"uv":[0,0,16,16],"texture":"#plant"}}},{"from":[8,4,2.6],"to":[8,16,13.4],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#plant"},"east":{"uv":[0,0,16,16],"texture":"#plant"}}}]},"flower_pot_cross_emissive":{"ambientocclusion":false,"textures":{"particle":"block/flower_pot","flowerpot":"block/flower_pot","dirt":"block/dirt"},"elements":[{"from":[5,0,5],"to":[6,6,11],"faces":{"down":{"uv":[5,5,6,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[5,5,6,11],"texture":"#flowerpot"},"north":{"uv":[10,10,11,16],"texture":"#flowerpot"},"south":{"uv":[5,10,6,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[10,0,5],"to":[11,6,11],"faces":{"down":{"uv":[10,5,11,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[10,5,11,11],"texture":"#flowerpot"},"north":{"uv":[5,10,6,16],"texture":"#flowerpot"},"south":{"uv":[10,10,11,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[6,0,5],"to":[10,6,6],"faces":{"down":{"uv":[6,10,10,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,5,10,6],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,10],"to":[10,6,11],"faces":{"down":{"uv":[6,5,10,6],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,10,10,11],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,6],"to":[10,4,10],"faces":{"down":{"uv":[6,12,10,16],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,6,10,10],"texture":"#dirt"}}},{"from":[2.6,4,8],"to":[13.4,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#plant"},"south":{"uv":[0,0,16,16],"texture":"#plant"}}},{"from":[8,4,2.6],"to":[8,16,13.4],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#plant"},"east":{"uv":[0,0,16,16],"texture":"#plant"}}},{"from":[2.6,4,8],"to":[13.4,16,8],"light_emission":15,"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#cross_emissive"},"south":{"uv":[0,0,16,16],"texture":"#cross_emissive"}}},{"from":[8,4,2.6],"to":[8,16,13.4],"light_emission":15,"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#cross_emissive"},"east":{"uv":[0,0,16,16],"texture":"#cross_emissive"}}}]},"flowerbed_1":{"ambientocclusion":false,"textures":{"particle":"#flowerbed"},"elements":[{"from":[0,2.99,0],"to":[8,2.99,8],"faces":{"up":{"uv":[0,0,8,8],"texture":"#flowerbed"},"down":{"uv":[0,8,8,0],"texture":"#flowerbed"}}},{"from":[4.25,0,-2.6],"to":[4.25,2.99,-1.6],"rotation":{"angle":-45,"axis":"y","origin":[0,0,0]},"faces":{"east":{"uv":[0,4,1,7],"texture":"#stem","tintindex":1},"west":{"uv":[0,4,1,7],"texture":"#stem","tintindex":1}}},{"from":[3.75,0,-2.1],"to":[4.75,2.99,-2.1],"rotation":{"angle":-45,"axis":"y","origin":[0,0,0]},"faces":{"north":{"uv":[0,4,1,7],"texture":"#stem","tintindex":1},"south":{"uv":[0,4,1,7],"texture":"#stem","tintindex":1}}},{"from":[4.9,0,2.3],"to":[4.9,2.99,3.3],"rotation":{"angle":-45,"axis":"y","origin":[0,0,0]},"faces":{"east":{"uv":[0,4,1,7],"texture":"#stem","tintindex":1},"west":{"uv":[0,4,1,7],"texture":"#stem","tintindex":1}}},{"from":[4.4,0,2.8],"to":[5.4,2.99,2.8],"rotation":{"angle":-45,"axis":"y","origin":[0,0,0]},"faces":{"north":{"uv":[0,4,1,7],"texture":"#stem","tintindex":1},"south":{"uv":[0,4,1,7],"texture":"#stem","tintindex":1}}},{"from":[9.15,0,-0.45],"to":[9.15,2.99,0.55],"rotation":{"angle":-45,"axis":"y","origin":[0,0,0]},"faces":{"east":{"uv":[0,4,1,7],"texture":"#stem","tintindex":1},"west":{"uv":[0,4,1,7],"texture":"#stem","tintindex":1}}},{"from":[8.65,0,0.05],"to":[9.65,2.99,0.05],"rotation":{"angle":-45,"axis":"y","origin":[0,0,0]},"faces":{"north":{"uv":[0,4,1,7],"texture":"#stem","tintindex":1},"south":{"uv":[0,4,1,7],"texture":"#stem","tintindex":1}}}]},"flowerbed_2":{"ambientocclusion":false,"textures":{"particle":"#flowerbed"},"elements":[{"from":[0,1,8],"to":[8,1,16],"faces":{"up":{"uv":[0,8,8,16],"texture":"#flowerbed"},"down":{"uv":[0,16,8,8],"texture":"#flowerbed"}}},{"from":[0,1,8],"to":[8,1,16],"faces":{"up":{"uv":[0,8,8,16],"texture":"#flowerbed"},"down":{"uv":[0,16,8,8],"texture":"#flowerbed"}}},{"from":[10.15,0,5.25],"to":[11.15,1,5.25],"rotation":{"angle":-45,"axis":"y","origin":[0,0,1]},"faces":{"north":{"uv":[0,6,1,7],"texture":"#stem","tintindex":1},"south":{"uv":[0,6,1,7],"texture":"#stem","tintindex":1}}},{"from":[10.65,0,4.75],"to":[10.65,1,5.75],"rotation":{"angle":-45,"axis":"y","origin":[0,0,1]},"faces":{"east":{"uv":[0,6,1,7],"texture":"#stem","tintindex":1},"west":{"uv":[0,6,1,7],"texture":"#stem","tintindex":1}}}]},"flowerbed_3":{"ambientocclusion":false,"textures":{"particle":"#flowerbed"},"elements":[{"from":[8,2,8],"to":[16,2,16],"faces":{"up":{"uv":[8,8,16,16],"texture":"#flowerbed"},"down":{"uv":[8,16,16,8],"texture":"#flowerbed"}}},{"from":[17.65,0,1.9],"to":[18.65,2,1.9],"rotation":{"angle":-45,"axis":"y","origin":[0.5,0,0.5]},"faces":{"north":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1},"south":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1}}},{"from":[18.15,0,1.4],"to":[18.15,2,2.4],"rotation":{"angle":-45,"axis":"y","origin":[0.5,0,0.5]},"faces":{"east":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1},"west":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1}}},{"from":[17.65,0,-3.35],"to":[17.65,2,-2.35],"rotation":{"angle":-45,"axis":"y","origin":[0,0,0]},"faces":{"east":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1},"west":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1}}},{"from":[17.15,0,-2.85],"to":[18.15,2,-2.85],"rotation":{"angle":-45,"axis":"y","origin":[0,0,0]},"faces":{"north":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1},"south":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1}}},{"from":[13.4,0,-0.5],"to":[13.4,2,0.5],"rotation":{"angle":-45,"axis":"y","origin":[0,0,0]},"faces":{"east":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1},"west":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1}}},{"from":[12.9,0,0],"to":[13.9,2,0],"rotation":{"angle":-45,"axis":"y","origin":[0,0,0]},"faces":{"north":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1},"south":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1}}}]},"flowerbed_4":{"ambientocclusion":false,"textures":{"particle":"#flowerbed"},"elements":[{"from":[8,2,0],"to":[16,2,8],"faces":{"up":{"uv":[8,0,16,8],"texture":"#flowerbed"},"down":{"uv":[8,8,16,0],"texture":"#flowerbed"}}},{"from":[12.4,0,-7.7],"to":[12.4,2,-6.7],"rotation":{"angle":-45,"axis":"y","origin":[-1,0,-3]},"faces":{"east":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1},"west":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1}}},{"from":[11.9,0,-7.2],"to":[12.9,2,-7.2],"rotation":{"angle":-45,"axis":"y","origin":[-1,0,-3]},"faces":{"north":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1},"south":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1}}}]},"flowering_azalea":{"parent":"minecraft:block/template_azalea","textures":{"side":"minecraft:block/flowering_azalea_side","top":"minecraft:block/flowering_azalea_top"}},"flowering_azalea_leaves":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/flowering_azalea_leaves"}},"four_dead_sea_pickles":{"parent":"block/block","textures":{"particle":"block/sea_pickle","all":"block/sea_pickle"},"elements":[{"from":[2,0,2],"to":[6,6,6],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,11],"texture":"#all"},"south":{"uv":[0,5,4,11],"texture":"#all"},"west":{"uv":[8,5,12,11],"texture":"#all"},"east":{"uv":[12,5,16,11],"texture":"#all"}}},{"from":[2,5.95,2],"to":[6,5.95,6],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[9,0,10],"to":[13,4,14],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,9],"texture":"#all"},"south":{"uv":[0,5,4,9],"texture":"#all"},"west":{"uv":[8,5,12,9],"texture":"#all"},"east":{"uv":[12,5,16,9],"texture":"#all"}}},{"from":[9,3.95,10],"to":[13,3.95,14],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[9,0,2],"to":[13,6,6],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,11],"texture":"#all"},"south":{"uv":[0,5,4,11],"texture":"#all"},"west":{"uv":[8,5,12,11],"texture":"#all"},"east":{"uv":[12,5,16,11],"texture":"#all"}}},{"from":[9,5.95,2],"to":[13,5.95,6],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[2,0,8],"to":[6,7,12],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,12],"texture":"#all"},"south":{"uv":[0,5,4,12],"texture":"#all"},"west":{"uv":[8,5,12,12],"texture":"#all"},"east":{"uv":[12,5,16,12],"texture":"#all"}}},{"from":[2,6.95,8],"to":[6,6.95,12],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}}]},"four_sea_pickles":{"parent":"block/block","textures":{"particle":"block/sea_pickle","all":"block/sea_pickle"},"elements":[{"from":[2,0,2],"to":[6,6,6],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,11],"texture":"#all"},"south":{"uv":[0,5,4,11],"texture":"#all"},"west":{"uv":[8,5,12,11],"texture":"#all"},"east":{"uv":[12,5,16,11],"texture":"#all"}}},{"from":[2,5.95,2],"to":[6,5.95,6],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[9,0,10],"to":[13,4,14],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,9],"texture":"#all"},"south":{"uv":[0,5,4,9],"texture":"#all"},"west":{"uv":[8,5,12,9],"texture":"#all"},"east":{"uv":[12,5,16,9],"texture":"#all"}}},{"from":[9,3.95,10],"to":[13,3.95,14],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[9,0,2],"to":[13,6,6],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,11],"texture":"#all"},"south":{"uv":[0,5,4,11],"texture":"#all"},"west":{"uv":[8,5,12,11],"texture":"#all"},"east":{"uv":[12,5,16,11],"texture":"#all"}}},{"from":[9,5.95,2],"to":[13,5.95,6],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[2,0,8],"to":[6,7,12],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,12],"texture":"#all"},"south":{"uv":[0,5,4,12],"texture":"#all"},"west":{"uv":[8,5,12,12],"texture":"#all"},"east":{"uv":[12,5,16,12],"texture":"#all"}}},{"from":[2,6.95,8],"to":[6,6.95,12],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[3.5,5.2,4],"to":[4.5,8.7,4],"rotation":{"origin":[4,8,4],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[1,0,3,5],"texture":"#all"},"south":{"uv":[3,0,1,5],"texture":"#all"}}},{"from":[4,5.2,3.5],"to":[4,8.7,4.5],"rotation":{"origin":[4,8,4],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[13,0,15,5],"texture":"#all"},"east":{"uv":[15,0,13,5],"texture":"#all"}}},{"from":[10.5,3.2,12],"to":[11.5,6.7,12],"rotation":{"origin":[11,8,12],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[1,0,3,5],"texture":"#all"},"south":{"uv":[3,0,1,5],"texture":"#all"}}},{"from":[11,3.2,11.5],"to":[11,6.7,12.5],"rotation":{"origin":[11,8,12],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[13,0,15,5],"texture":"#all"},"east":{"uv":[15,0,13,5],"texture":"#all"}}},{"from":[10.5,5.2,4],"to":[11.5,8.7,4],"rotation":{"origin":[11,8,4],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[1,0,3,5],"texture":"#all"},"south":{"uv":[3,0,1,5],"texture":"#all"}}},{"from":[11,5.2,3.5],"to":[11,8.7,4.5],"rotation":{"origin":[11,8,4],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[13,0,15,5],"texture":"#all"},"east":{"uv":[15,0,13,5],"texture":"#all"}}},{"from":[3.5,6.2,10],"to":[4.5,9.7,10],"rotation":{"origin":[4,8,10],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[1,0,3,5],"texture":"#all"},"south":{"uv":[3,0,1,5],"texture":"#all"}}},{"from":[4,6.2,9.5],"to":[4,9.7,10.5],"rotation":{"origin":[4,8,10],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[13,0,15,5],"texture":"#all"},"east":{"uv":[15,0,13,5],"texture":"#all"}}}]},"four_slightly_cracked_turtle_eggs":{"parent":"minecraft:block/template_four_turtle_eggs","textures":{"all":"minecraft:block/turtle_egg_slightly_cracked"}},"four_turtle_eggs":{"parent":"minecraft:block/template_four_turtle_eggs","textures":{"all":"minecraft:block/turtle_egg"}},"four_very_cracked_turtle_eggs":{"parent":"minecraft:block/template_four_turtle_eggs","textures":{"all":"minecraft:block/turtle_egg_very_cracked"}},"frogspawn":{"ambientocclusion":false,"textures":{"particle":"block/frogspawn","texture":"block/frogspawn"},"elements":[{"from":[0,0.25,0],"to":[16,0.25,16],"faces":{"down":{"uv":[0,16,16,0],"texture":"#texture"},"up":{"uv":[0,0,16,16],"texture":"#texture"}}}]},"frosted_ice_0":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/frosted_ice_0"}},"frosted_ice_1":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/frosted_ice_1"}},"frosted_ice_2":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/frosted_ice_2"}},"frosted_ice_3":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/frosted_ice_3"}},"furnace":{"parent":"minecraft:block/orientable","textures":{"front":"minecraft:block/furnace_front","side":"minecraft:block/furnace_side","top":"minecraft:block/furnace_top"}},"furnace_on":{"parent":"minecraft:block/orientable","textures":{"front":"minecraft:block/furnace_front_on","side":"minecraft:block/furnace_side","top":"minecraft:block/furnace_top"}},"gilded_blackstone":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/gilded_blackstone"}},"glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/glass"}},"glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/glass"}},"glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/glass"}},"glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/glass_pane_top","pane":"minecraft:block/glass"}},"glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/glass_pane_top","pane":"minecraft:block/glass"}},"glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/glass_pane_top","pane":"minecraft:block/glass"}},"glow_item_frame":{"parent":"minecraft:block/template_item_frame","textures":{"particle":"block/birch_planks","wood":"block/birch_planks","back":"block/glow_item_frame"}},"glow_item_frame_map":{"parent":"minecraft:block/template_item_frame_map","textures":{"particle":"block/birch_planks","wood":"block/birch_planks","back":"block/glow_item_frame"}},"glow_lichen":{"ambientocclusion":false,"textures":{"particle":"block/glow_lichen","glow_lichen":"block/glow_lichen"},"elements":[{"from":[0,0,0.1],"to":[16,16,0.1],"faces":{"north":{"uv":[16,0,0,16],"texture":"#glow_lichen"},"south":{"uv":[0,0,16,16],"texture":"#glow_lichen"}}}]},"glowstone":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/glowstone"}},"gold_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/gold_block"}},"gold_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/gold_ore"}},"granite":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/granite"}},"granite_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/granite","side":"minecraft:block/granite","top":"minecraft:block/granite"}},"granite_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/granite","side":"minecraft:block/granite","top":"minecraft:block/granite"}},"granite_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/granite","side":"minecraft:block/granite","top":"minecraft:block/granite"}},"granite_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/granite","side":"minecraft:block/granite","top":"minecraft:block/granite"}},"granite_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/granite","side":"minecraft:block/granite","top":"minecraft:block/granite"}},"granite_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/granite"}},"granite_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/granite"}},"granite_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/granite"}},"granite_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/granite"}},"grass_block":{"parent":"block/block","textures":{"particle":"block/dirt","bottom":"block/dirt","top":"block/grass_block_top","side":"block/grass_block_side","overlay":"block/grass_block_side_overlay"},"elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top","cullface":"up","tintindex":0},"north":{"uv":[0,0,16,16],"texture":"#side","cullface":"north"},"south":{"uv":[0,0,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#side","cullface":"west"},"east":{"uv":[0,0,16,16],"texture":"#side","cullface":"east"}}},{"from":[0,0,0],"to":[16,16,16],"faces":{"north":{"uv":[0,0,16,16],"texture":"#overlay","tintindex":0,"cullface":"north"},"south":{"uv":[0,0,16,16],"texture":"#overlay","tintindex":0,"cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#overlay","tintindex":0,"cullface":"west"},"east":{"uv":[0,0,16,16],"texture":"#overlay","tintindex":0,"cullface":"east"}}}]},"grass_block_snow":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/dirt","particle":"minecraft:block/dirt","side":"minecraft:block/grass_block_snow","top":"minecraft:block/grass_block_top"}},"gravel":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/gravel"}},"gray_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/gray_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"gray_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/gray_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"gray_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/gray_candle","particle":"minecraft:block/gray_candle"}},"gray_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/gray_candle_lit","particle":"minecraft:block/gray_candle_lit"}},"gray_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/gray_candle","particle":"minecraft:block/gray_candle"}},"gray_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/gray_candle_lit","particle":"minecraft:block/gray_candle_lit"}},"gray_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/gray_candle","particle":"minecraft:block/gray_candle"}},"gray_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/gray_candle_lit","particle":"minecraft:block/gray_candle_lit"}},"gray_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/gray_candle","particle":"minecraft:block/gray_candle"}},"gray_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/gray_candle_lit","particle":"minecraft:block/gray_candle_lit"}},"gray_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/gray_wool"}},"gray_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/gray_concrete"}},"gray_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/gray_concrete_powder"}},"gray_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/gray_glazed_terracotta"}},"gray_shulker_box":{"textures":{"particle":"minecraft:block/gray_shulker_box"}},"gray_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/gray_stained_glass"}},"gray_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/gray_stained_glass"}},"gray_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/gray_stained_glass"}},"gray_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/gray_stained_glass_pane_top","pane":"minecraft:block/gray_stained_glass"}},"gray_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/gray_stained_glass_pane_top","pane":"minecraft:block/gray_stained_glass"}},"gray_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/gray_stained_glass_pane_top","pane":"minecraft:block/gray_stained_glass"}},"gray_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/gray_terracotta"}},"gray_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/gray_wool"}},"green_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/green_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"green_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/green_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"green_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/green_candle","particle":"minecraft:block/green_candle"}},"green_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/green_candle_lit","particle":"minecraft:block/green_candle_lit"}},"green_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/green_candle","particle":"minecraft:block/green_candle"}},"green_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/green_candle_lit","particle":"minecraft:block/green_candle_lit"}},"green_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/green_candle","particle":"minecraft:block/green_candle"}},"green_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/green_candle_lit","particle":"minecraft:block/green_candle_lit"}},"green_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/green_candle","particle":"minecraft:block/green_candle"}},"green_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/green_candle_lit","particle":"minecraft:block/green_candle_lit"}},"green_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/green_wool"}},"green_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/green_concrete"}},"green_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/green_concrete_powder"}},"green_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/green_glazed_terracotta"}},"green_shulker_box":{"textures":{"particle":"minecraft:block/green_shulker_box"}},"green_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/green_stained_glass"}},"green_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/green_stained_glass"}},"green_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/green_stained_glass"}},"green_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/green_stained_glass_pane_top","pane":"minecraft:block/green_stained_glass"}},"green_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/green_stained_glass_pane_top","pane":"minecraft:block/green_stained_glass"}},"green_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/green_stained_glass_pane_top","pane":"minecraft:block/green_stained_glass"}},"green_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/green_terracotta"}},"green_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/green_wool"}},"grindstone":{"parent":"block/block","textures":{"pivot":"block/grindstone_pivot","round":"block/grindstone_round","side":"block/grindstone_side","particle":"block/grindstone_side","leg":"block/dark_oak_log"},"elements":[{"from":[12,0,6],"to":[14,7,10],"faces":{"north":{"uv":[2,9,4,16],"texture":"#leg"},"east":{"uv":[10,16,6,9],"texture":"#leg"},"south":{"uv":[12,9,14,16],"texture":"#leg"},"west":{"uv":[6,9,10,16],"texture":"#leg"},"down":{"uv":[12,6,14,10],"texture":"#leg","cullface":"down"}}},{"from":[2,0,6],"to":[4,7,10],"faces":{"north":{"uv":[12,9,14,16],"texture":"#leg"},"east":{"uv":[10,16,6,9],"texture":"#leg"},"south":{"uv":[2,9,4,16],"texture":"#leg"},"west":{"uv":[6,9,10,16],"texture":"#leg"},"down":{"uv":[2,6,4,10],"texture":"#leg","cullface":"down"}}},{"from":[12,7,5],"to":[14,13,11],"faces":{"north":{"uv":[6,0,8,6],"texture":"#pivot"},"east":{"uv":[0,0,6,6],"texture":"#pivot"},"south":{"uv":[6,0,8,6],"texture":"#pivot"},"up":{"uv":[8,0,10,6],"texture":"#pivot"},"down":{"uv":[8,0,10,6],"texture":"#pivot"}}},{"from":[2,7,5],"to":[4,13,11],"faces":{"north":{"uv":[6,0,8,6],"texture":"#pivot"},"south":{"uv":[6,0,8,6],"texture":"#pivot"},"west":{"uv":[0,0,6,6],"texture":"#pivot"},"up":{"uv":[8,0,10,6],"texture":"#pivot"},"down":{"uv":[8,0,10,6],"texture":"#pivot"}}},{"from":[4,4,2],"to":[12,16,14],"faces":{"north":{"uv":[0,0,8,12],"texture":"#round"},"east":{"uv":[0,0,12,12],"texture":"#side"},"south":{"uv":[0,0,8,12],"texture":"#round"},"west":{"uv":[0,0,12,12],"texture":"#side"},"up":{"uv":[0,0,8,12],"texture":"#round","cullface":"up"},"down":{"uv":[0,0,8,12],"texture":"#round"}}}]},"hanging_roots":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/hanging_roots"}},"hay_block":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/hay_block_top","side":"minecraft:block/hay_block_side"}},"hay_block_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/hay_block_top","side":"minecraft:block/hay_block_side"}},"heavy_core":{"display":{"gui":{"rotation":[30,225,0],"translation":[0,3,0],"scale":[1,1,1]},"ground":{"rotation":[0,0,0],"translation":[0,3,0],"scale":[0.5,0.5,0.5]},"fixed":{"rotation":[0,180,0],"translation":[0,4,0],"scale":[1,1,1]},"thirdperson_righthand":{"rotation":[45,45,0],"translation":[0,3,0],"scale":[0.5,0.5,0.5]}},"texture_size":[16,16],"textures":{"all":"block/heavy_core","particle":"block/heavy_core"},"elements":[{"name":"heavy_core","from":[4,0,4],"to":[12,8,12],"faces":{"north":{"uv":[0,8,8,16],"texture":"all"},"east":{"uv":[0,8,8,16],"texture":"all"},"south":{"uv":[0,8,8,16],"texture":"all"},"west":{"uv":[0,8,8,16],"texture":"all"},"up":{"uv":[0,0,8,8],"texture":"all"},"down":{"uv":[8,0,16,8],"texture":"all"}}}]},"heavy_weighted_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/iron_block"}},"heavy_weighted_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/iron_block"}},"honey_block":{"parent":"block/block","textures":{"particle":"block/honey_block_top","down":"block/honey_block_bottom","up":"block/honey_block_top","side":"block/honey_block_side"},"elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"texture":"#down","cullface":"down"},"up":{"texture":"#down","cullface":"up"},"north":{"texture":"#down","cullface":"north"},"south":{"texture":"#down","cullface":"south"},"west":{"texture":"#down","cullface":"west"},"east":{"texture":"#down","cullface":"east"}}},{"from":[1,1,1],"to":[15,15,15],"faces":{"down":{"uv":[1,1,15,15],"texture":"#down"},"up":{"uv":[1,1,15,15],"texture":"#up"},"north":{"uv":[1,1,15,15],"texture":"#side"},"south":{"uv":[1,1,15,15],"texture":"#side"},"west":{"uv":[1,1,15,15],"texture":"#side"},"east":{"uv":[1,1,15,15],"texture":"#side"}}}]},"honeycomb_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/honeycomb_block"}},"hopper":{"ambientocclusion":false,"textures":{"particle":"block/hopper_outside","top":"block/hopper_top","side":"block/hopper_outside","inside":"block/hopper_inside"},"elements":[{"from":[0,10,0],"to":[16,11,16],"faces":{"down":{"texture":"#inside"},"up":{"texture":"#inside","cullface":"up"},"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"east":{"texture":"#side","cullface":"east"}}},{"from":[0,11,0],"to":[2,16,16],"faces":{"up":{"texture":"#top","cullface":"up"},"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"east":{"texture":"#side","cullface":"up"}}},{"from":[14,11,0],"to":[16,16,16],"faces":{"up":{"texture":"#top","cullface":"up"},"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"up"},"east":{"texture":"#side","cullface":"east"}}},{"from":[2,11,0],"to":[14,16,2],"faces":{"up":{"texture":"#top","cullface":"up"},"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side","cullface":"up"}}},{"from":[2,11,14],"to":[14,16,16],"faces":{"up":{"texture":"#top","cullface":"up"},"north":{"texture":"#side","cullface":"up"},"south":{"texture":"#side","cullface":"south"}}},{"from":[4,4,4],"to":[12,10,12],"faces":{"down":{"texture":"#inside"},"north":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side"},"east":{"texture":"#side"}}},{"from":[6,0,6],"to":[10,4,10],"faces":{"down":{"texture":"#inside","cullface":"down"},"north":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side"},"east":{"texture":"#side"}}}]},"hopper_side":{"ambientocclusion":false,"textures":{"particle":"block/hopper_outside","top":"block/hopper_top","side":"block/hopper_outside","inside":"block/hopper_inside"},"elements":[{"from":[0,10,0],"to":[16,11,16],"faces":{"down":{"texture":"#inside"},"up":{"texture":"#inside","cullface":"up"},"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"east":{"texture":"#side","cullface":"east"}}},{"from":[0,11,0],"to":[2,16,16],"faces":{"up":{"texture":"#top","cullface":"up"},"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"east":{"texture":"#side","cullface":"up"}}},{"from":[14,11,0],"to":[16,16,16],"faces":{"up":{"texture":"#top","cullface":"up"},"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"up"},"east":{"texture":"#side","cullface":"east"}}},{"from":[2,11,0],"to":[14,16,2],"faces":{"up":{"texture":"#top","cullface":"up"},"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side","cullface":"up"}}},{"from":[2,11,14],"to":[14,16,16],"faces":{"up":{"texture":"#top","cullface":"up"},"north":{"texture":"#side","cullface":"up"},"south":{"texture":"#side","cullface":"south"}}},{"from":[4,4,4],"to":[12,10,12],"faces":{"down":{"texture":"#inside"},"north":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side"},"east":{"texture":"#side"}}},{"from":[6,4,0],"to":[10,8,4],"faces":{"down":{"texture":"#inside"},"up":{"texture":"#side"},"north":{"texture":"#side","cullface":"north"},"west":{"texture":"#side"},"east":{"texture":"#side"}}}]},"horn_coral":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/horn_coral"}},"horn_coral_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/horn_coral_block"}},"horn_coral_fan":{"parent":"minecraft:block/coral_fan","textures":{"fan":"minecraft:block/horn_coral_fan"}},"horn_coral_wall_fan":{"parent":"minecraft:block/coral_wall_fan","textures":{"fan":"minecraft:block/horn_coral_fan"}},"ice":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/ice"}},"inner_stairs":{"textures":{"particle":"#side"},"elements":[{"from":[0,0,0],"to":[16,8,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,8,16,16],"texture":"#side","cullface":"north"},"south":{"uv":[0,8,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,8,16,16],"texture":"#side","cullface":"west"},"east":{"uv":[0,8,16,16],"texture":"#side","cullface":"east"}}},{"from":[8,8,0],"to":[16,16,16],"faces":{"up":{"uv":[8,0,16,16],"texture":"#top","cullface":"up"},"north":{"uv":[0,0,8,8],"texture":"#side","cullface":"north"},"south":{"uv":[8,0,16,8],"texture":"#side","cullface":"south"},"west":{"uv":[0,0,16,8],"texture":"#side"},"east":{"uv":[0,0,16,8],"texture":"#side","cullface":"east"}}},{"from":[0,8,8],"to":[8,16,16],"faces":{"up":{"uv":[0,8,8,16],"texture":"#top","cullface":"up"},"north":{"uv":[8,0,16,8],"texture":"#side"},"south":{"uv":[0,0,8,8],"texture":"#side","cullface":"south"},"west":{"uv":[8,0,16,8],"texture":"#side","cullface":"west"}}}]},"iron_bars_cap":{"ambientocclusion":false,"textures":{"particle":"block/iron_bars","bars":"block/iron_bars","edge":"block/iron_bars"},"elements":[{"from":[8,0,8],"to":[8,16,9],"faces":{"west":{"uv":[8,0,7,16],"texture":"#bars"},"east":{"uv":[7,0,8,16],"texture":"#bars"}}},{"from":[7,0,9],"to":[9,16,9],"faces":{"north":{"uv":[9,0,7,16],"texture":"#bars"},"south":{"uv":[7,0,9,16],"texture":"#bars"}}}]},"iron_bars_cap_alt":{"ambientocclusion":false,"textures":{"particle":"block/iron_bars","bars":"block/iron_bars","edge":"block/iron_bars"},"elements":[{"from":[8,0,7],"to":[8,16,8],"faces":{"west":{"uv":[8,0,9,16],"texture":"#bars"},"east":{"uv":[9,0,8,16],"texture":"#bars"}}},{"from":[7,0,7],"to":[9,16,7],"faces":{"north":{"uv":[7,0,9,16],"texture":"#bars"},"south":{"uv":[9,0,7,16],"texture":"#bars"}}}]},"iron_bars_post":{"ambientocclusion":false,"textures":{"particle":"block/iron_bars","bars":"block/iron_bars"},"elements":[{"from":[8,0,7],"to":[8,16,9],"faces":{"west":{"uv":[7,0,9,16],"texture":"#bars"},"east":{"uv":[9,0,7,16],"texture":"#bars"}}},{"from":[7,0,8],"to":[9,16,8],"faces":{"north":{"uv":[7,0,9,16],"texture":"#bars"},"south":{"uv":[9,0,7,16],"texture":"#bars"}}}]},"iron_bars_post_ends":{"ambientocclusion":false,"textures":{"particle":"block/iron_bars","edge":"block/iron_bars"},"elements":[{"from":[7,0.001,7],"to":[9,0.001,9],"faces":{"down":{"uv":[7,7,9,9],"texture":"#edge"},"up":{"uv":[7,7,9,9],"texture":"#edge"}}},{"from":[7,15.999,7],"to":[9,15.999,9],"faces":{"down":{"uv":[7,7,9,9],"texture":"#edge"},"up":{"uv":[7,7,9,9],"texture":"#edge"}}}]},"iron_bars_side":{"ambientocclusion":false,"textures":{"particle":"block/iron_bars","bars":"block/iron_bars","edge":"block/iron_bars"},"elements":[{"from":[8,0,0],"to":[8,16,8],"faces":{"west":{"uv":[16,0,8,16],"texture":"#bars"},"east":{"uv":[8,0,16,16],"texture":"#bars"}}},{"from":[7,0,0],"to":[9,16,7],"faces":{"north":{"uv":[7,0,9,16],"texture":"#edge","cullface":"north"}}},{"from":[7,0.001,0],"to":[9,0.001,7],"faces":{"down":{"uv":[9,0,7,7],"texture":"#edge"},"up":{"uv":[7,0,9,7],"texture":"#edge"}}},{"from":[7,15.999,0],"to":[9,15.999,7],"faces":{"down":{"uv":[9,0,7,7],"texture":"#edge"},"up":{"uv":[7,0,9,7],"texture":"#edge"}}}]},"iron_bars_side_alt":{"ambientocclusion":false,"textures":{"particle":"block/iron_bars","bars":"block/iron_bars","edge":"block/iron_bars"},"elements":[{"from":[8,0,8],"to":[8,16,16],"faces":{"west":{"uv":[8,0,0,16],"texture":"#bars"},"east":{"uv":[0,0,8,16],"texture":"#bars"}}},{"from":[7,0,9],"to":[9,16,16],"faces":{"south":{"uv":[7,0,9,16],"texture":"#edge","cullface":"south"},"down":{"uv":[9,9,7,16],"texture":"#edge"},"up":{"uv":[7,9,9,16],"texture":"#edge"}}},{"from":[7,0.001,9],"to":[9,0.001,16],"faces":{"down":{"uv":[9,9,7,16],"texture":"#edge"},"up":{"uv":[7,9,9,16],"texture":"#edge"}}},{"from":[7,15.999,9],"to":[9,15.999,16],"faces":{"down":{"uv":[9,9,7,16],"texture":"#edge"},"up":{"uv":[7,9,9,16],"texture":"#edge"}}}]},"iron_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/iron_block"}},"iron_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/iron_door_bottom","top":"minecraft:block/iron_door_top"}},"iron_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/iron_door_bottom","top":"minecraft:block/iron_door_top"}},"iron_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/iron_door_bottom","top":"minecraft:block/iron_door_top"}},"iron_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/iron_door_bottom","top":"minecraft:block/iron_door_top"}},"iron_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/iron_door_bottom","top":"minecraft:block/iron_door_top"}},"iron_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/iron_door_bottom","top":"minecraft:block/iron_door_top"}},"iron_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/iron_door_bottom","top":"minecraft:block/iron_door_top"}},"iron_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/iron_door_bottom","top":"minecraft:block/iron_door_top"}},"iron_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/iron_ore"}},"iron_trapdoor_bottom":{"parent":"minecraft:block/template_trapdoor_bottom","textures":{"texture":"minecraft:block/iron_trapdoor"}},"iron_trapdoor_open":{"parent":"minecraft:block/template_trapdoor_open","textures":{"texture":"minecraft:block/iron_trapdoor"}},"iron_trapdoor_top":{"parent":"minecraft:block/template_trapdoor_top","textures":{"texture":"minecraft:block/iron_trapdoor"}},"item_frame":{"parent":"minecraft:block/template_item_frame","textures":{"particle":"block/birch_planks","wood":"block/birch_planks","back":"block/item_frame"}},"item_frame_map":{"parent":"minecraft:block/template_item_frame_map","textures":{"particle":"block/birch_planks","wood":"block/birch_planks","back":"block/item_frame"}},"jack_o_lantern":{"parent":"minecraft:block/orientable","textures":{"front":"minecraft:block/jack_o_lantern","side":"minecraft:block/pumpkin_side","top":"minecraft:block/pumpkin_top"}},"jigsaw":{"parent":"minecraft:block/cube_directional","textures":{"down":"minecraft:block/jigsaw_side","east":"minecraft:block/jigsaw_side","north":"minecraft:block/jigsaw_top","particle":"minecraft:block/jigsaw_top","south":"minecraft:block/jigsaw_bottom","up":"minecraft:block/jigsaw_lock","west":"minecraft:block/jigsaw_side"}},"jukebox":{"parent":"minecraft:block/cube_top","textures":{"side":"minecraft:block/jukebox_side","top":"minecraft:block/jukebox_top"}},"jungle_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/jungle_planks"}},"jungle_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/jungle_planks"}},"jungle_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/jungle_planks"}},"jungle_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/jungle_door_bottom","top":"minecraft:block/jungle_door_top"}},"jungle_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/jungle_door_bottom","top":"minecraft:block/jungle_door_top"}},"jungle_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/jungle_door_bottom","top":"minecraft:block/jungle_door_top"}},"jungle_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/jungle_door_bottom","top":"minecraft:block/jungle_door_top"}},"jungle_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/jungle_door_bottom","top":"minecraft:block/jungle_door_top"}},"jungle_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/jungle_door_bottom","top":"minecraft:block/jungle_door_top"}},"jungle_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/jungle_door_bottom","top":"minecraft:block/jungle_door_top"}},"jungle_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/jungle_door_bottom","top":"minecraft:block/jungle_door_top"}},"jungle_fence_gate":{"parent":"minecraft:block/template_fence_gate","textures":{"texture":"minecraft:block/jungle_planks"}},"jungle_fence_gate_open":{"parent":"minecraft:block/template_fence_gate_open","textures":{"texture":"minecraft:block/jungle_planks"}},"jungle_fence_gate_wall":{"parent":"minecraft:block/template_fence_gate_wall","textures":{"texture":"minecraft:block/jungle_planks"}},"jungle_fence_gate_wall_open":{"parent":"minecraft:block/template_fence_gate_wall_open","textures":{"texture":"minecraft:block/jungle_planks"}},"jungle_fence_inventory":{"parent":"minecraft:block/fence_inventory","textures":{"texture":"minecraft:block/jungle_planks"}},"jungle_fence_post":{"parent":"minecraft:block/fence_post","textures":{"texture":"minecraft:block/jungle_planks"}},"jungle_fence_side":{"parent":"minecraft:block/fence_side","textures":{"texture":"minecraft:block/jungle_planks"}},"jungle_hanging_sign":{"textures":{"particle":"minecraft:block/stripped_jungle_log"}},"jungle_leaves":{"parent":"minecraft:block/leaves","textures":{"all":"minecraft:block/jungle_leaves"}},"jungle_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/jungle_log_top","side":"minecraft:block/jungle_log"}},"jungle_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/jungle_log_top","side":"minecraft:block/jungle_log"}},"jungle_planks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/jungle_planks"}},"jungle_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/jungle_planks"}},"jungle_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/jungle_planks"}},"jungle_sapling":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/jungle_sapling"}},"jungle_sign":{"textures":{"particle":"minecraft:block/jungle_planks"}},"jungle_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/jungle_planks","side":"minecraft:block/jungle_planks","top":"minecraft:block/jungle_planks"}},"jungle_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/jungle_planks","side":"minecraft:block/jungle_planks","top":"minecraft:block/jungle_planks"}},"jungle_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/jungle_planks","side":"minecraft:block/jungle_planks","top":"minecraft:block/jungle_planks"}},"jungle_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/jungle_planks","side":"minecraft:block/jungle_planks","top":"minecraft:block/jungle_planks"}},"jungle_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/jungle_planks","side":"minecraft:block/jungle_planks","top":"minecraft:block/jungle_planks"}},"jungle_trapdoor_bottom":{"parent":"minecraft:block/template_orientable_trapdoor_bottom","textures":{"texture":"minecraft:block/jungle_trapdoor"}},"jungle_trapdoor_open":{"parent":"minecraft:block/template_orientable_trapdoor_open","textures":{"texture":"minecraft:block/jungle_trapdoor"}},"jungle_trapdoor_top":{"parent":"minecraft:block/template_orientable_trapdoor_top","textures":{"texture":"minecraft:block/jungle_trapdoor"}},"jungle_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/jungle_log","side":"minecraft:block/jungle_log"}},"kelp":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/kelp"}},"kelp_plant":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/kelp_plant"}},"ladder":{"ambientocclusion":false,"textures":{"particle":"block/ladder","texture":"block/ladder"},"elements":[{"from":[0,0,15.2],"to":[16,16,15.2],"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#texture"},"south":{"uv":[16,0,0,16],"texture":"#texture"}}}]},"lantern":{"parent":"minecraft:block/template_lantern","textures":{"lantern":"minecraft:block/lantern"}},"lantern_hanging":{"parent":"minecraft:block/template_hanging_lantern","textures":{"lantern":"minecraft:block/lantern"}},"lapis_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/lapis_block"}},"lapis_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/lapis_ore"}},"large_amethyst_bud":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/large_amethyst_bud"}},"large_fern_bottom":{"parent":"minecraft:block/tinted_cross","textures":{"cross":"minecraft:block/large_fern_bottom"}},"large_fern_top":{"parent":"minecraft:block/tinted_cross","textures":{"cross":"minecraft:block/large_fern_top"}},"lava":{"textures":{"particle":"block/lava_still"}},"lava_cauldron":{"parent":"minecraft:block/template_cauldron_full","textures":{"bottom":"minecraft:block/cauldron_bottom","content":"minecraft:block/lava_still","inside":"minecraft:block/cauldron_inner","particle":"minecraft:block/cauldron_side","side":"minecraft:block/cauldron_side","top":"minecraft:block/cauldron_top"}},"leaf_litter_1":{"parent":"minecraft:block/template_leaf_litter_1","textures":{"texture":"minecraft:block/leaf_litter"}},"leaf_litter_2":{"parent":"minecraft:block/template_leaf_litter_2","textures":{"texture":"minecraft:block/leaf_litter"}},"leaf_litter_3":{"parent":"minecraft:block/template_leaf_litter_3","textures":{"texture":"minecraft:block/leaf_litter"}},"leaf_litter_4":{"parent":"minecraft:block/template_leaf_litter_4","textures":{"texture":"minecraft:block/leaf_litter"}},"leaves":{"parent":"block/block","textures":{"particle":"#all"},"elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#all","tintindex":0,"cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#all","tintindex":0,"cullface":"up"},"north":{"uv":[0,0,16,16],"texture":"#all","tintindex":0,"cullface":"north"},"south":{"uv":[0,0,16,16],"texture":"#all","tintindex":0,"cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#all","tintindex":0,"cullface":"west"},"east":{"uv":[0,0,16,16],"texture":"#all","tintindex":0,"cullface":"east"}}}]},"lectern":{"parent":"block/block","display":{"firstperson_righthand":{"rotation":[0,135,0],"translation":[0,0,0],"scale":[0.4,0.4,0.4]},"gui":{"rotation":[30,225,0],"translation":[0,0,0],"scale":[0.6,0.6,0.6]}},"textures":{"particle":"block/lectern_sides","bottom":"block/oak_planks","base":"block/lectern_base","front":"block/lectern_front","sides":"block/lectern_sides","top":"block/lectern_top"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"north":{"uv":[0,14,16,16],"texture":"#base","cullface":"north"},"east":{"uv":[0,6,16,8],"texture":"#base","cullface":"east"},"south":{"uv":[0,6,16,8],"texture":"#base","cullface":"south"},"west":{"uv":[0,6,16,8],"texture":"#base","cullface":"west"},"up":{"uv":[0,0,16,16],"rotation":180,"texture":"#base"},"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"}}},{"from":[4,2,4],"to":[12,15,12],"faces":{"north":{"uv":[0,0,8,13],"texture":"#front"},"east":{"uv":[2,16,15,8],"rotation":90,"texture":"#sides"},"south":{"uv":[8,3,16,16],"texture":"#front"},"west":{"uv":[2,8,15,16],"rotation":90,"texture":"#sides"}}},{"from":[0.0125,12,3],"to":[15.9875,16,16],"rotation":{"angle":-22.5,"axis":"x","origin":[8,8,8]},"faces":{"north":{"uv":[0,0,16,4],"texture":"#sides"},"east":{"uv":[0,4,13,8],"texture":"#sides"},"south":{"uv":[0,4,16,8],"texture":"#sides"},"west":{"uv":[0,4,13,8],"texture":"#sides"},"up":{"uv":[0,1,16,14],"rotation":180,"texture":"#top"},"down":{"uv":[0,0,16,13],"texture":"#bottom"}}}]},"lever":{"ambientocclusion":false,"textures":{"particle":"block/cobblestone","base":"block/cobblestone","lever":"block/lever"},"elements":[{"from":[5,-0.02,4],"to":[11,2.98,12],"faces":{"down":{"uv":[5,4,11,12],"texture":"#base","cullface":"down"},"up":{"uv":[5,4,11,12],"texture":"#base"},"north":{"uv":[5,0,11,3],"texture":"#base"},"south":{"uv":[5,0,11,3],"texture":"#base"},"west":{"uv":[4,0,12,3],"texture":"#base"},"east":{"uv":[4,0,12,3],"texture":"#base"}}},{"from":[7,1,7],"to":[9,11,9],"rotation":{"origin":[8,1,8],"axis":"x","angle":-45},"faces":{"up":{"uv":[7,6,9,8],"texture":"#lever"},"north":{"uv":[7,6,9,16],"texture":"#lever"},"south":{"uv":[7,6,9,16],"texture":"#lever"},"west":{"uv":[7,6,9,16],"texture":"#lever"},"east":{"uv":[7,6,9,16],"texture":"#lever"}}}]},"lever_on":{"ambientocclusion":false,"textures":{"particle":"block/cobblestone","base":"block/cobblestone","lever":"block/lever"},"elements":[{"from":[5,-0.02,4],"to":[11,2.98,12],"faces":{"down":{"uv":[5,4,11,12],"texture":"#base","cullface":"down"},"up":{"uv":[5,4,11,12],"texture":"#base"},"north":{"uv":[5,0,11,3],"texture":"#base"},"south":{"uv":[5,0,11,3],"texture":"#base"},"west":{"uv":[4,0,12,3],"texture":"#base"},"east":{"uv":[4,0,12,3],"texture":"#base"}}},{"from":[7,1,7],"to":[9,11,9],"rotation":{"origin":[8,1,8],"axis":"x","angle":45},"faces":{"up":{"uv":[7,6,9,8],"texture":"#lever"},"north":{"uv":[7,6,9,16],"texture":"#lever"},"south":{"uv":[7,6,9,16],"texture":"#lever"},"west":{"uv":[7,6,9,16],"texture":"#lever"},"east":{"uv":[7,6,9,16],"texture":"#lever"}}}]},"light_00":{"textures":{"particle":"minecraft:item/light_00"}},"light_01":{"textures":{"particle":"minecraft:item/light_01"}},"light_02":{"textures":{"particle":"minecraft:item/light_02"}},"light_03":{"textures":{"particle":"minecraft:item/light_03"}},"light_04":{"textures":{"particle":"minecraft:item/light_04"}},"light_05":{"textures":{"particle":"minecraft:item/light_05"}},"light_06":{"textures":{"particle":"minecraft:item/light_06"}},"light_07":{"textures":{"particle":"minecraft:item/light_07"}},"light_08":{"textures":{"particle":"minecraft:item/light_08"}},"light_09":{"textures":{"particle":"minecraft:item/light_09"}},"light_10":{"textures":{"particle":"minecraft:item/light_10"}},"light_11":{"textures":{"particle":"minecraft:item/light_11"}},"light_12":{"textures":{"particle":"minecraft:item/light_12"}},"light_13":{"textures":{"particle":"minecraft:item/light_13"}},"light_14":{"textures":{"particle":"minecraft:item/light_14"}},"light_15":{"textures":{"particle":"minecraft:item/light_15"}},"light_blue_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/light_blue_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"light_blue_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/light_blue_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"light_blue_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/light_blue_candle","particle":"minecraft:block/light_blue_candle"}},"light_blue_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/light_blue_candle_lit","particle":"minecraft:block/light_blue_candle_lit"}},"light_blue_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/light_blue_candle","particle":"minecraft:block/light_blue_candle"}},"light_blue_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/light_blue_candle_lit","particle":"minecraft:block/light_blue_candle_lit"}},"light_blue_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/light_blue_candle","particle":"minecraft:block/light_blue_candle"}},"light_blue_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/light_blue_candle_lit","particle":"minecraft:block/light_blue_candle_lit"}},"light_blue_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/light_blue_candle","particle":"minecraft:block/light_blue_candle"}},"light_blue_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/light_blue_candle_lit","particle":"minecraft:block/light_blue_candle_lit"}},"light_blue_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/light_blue_wool"}},"light_blue_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/light_blue_concrete"}},"light_blue_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/light_blue_concrete_powder"}},"light_blue_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/light_blue_glazed_terracotta"}},"light_blue_shulker_box":{"textures":{"particle":"minecraft:block/light_blue_shulker_box"}},"light_blue_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/light_blue_stained_glass"}},"light_blue_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/light_blue_stained_glass"}},"light_blue_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/light_blue_stained_glass"}},"light_blue_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/light_blue_stained_glass_pane_top","pane":"minecraft:block/light_blue_stained_glass"}},"light_blue_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/light_blue_stained_glass_pane_top","pane":"minecraft:block/light_blue_stained_glass"}},"light_blue_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/light_blue_stained_glass_pane_top","pane":"minecraft:block/light_blue_stained_glass"}},"light_blue_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/light_blue_terracotta"}},"light_blue_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/light_blue_wool"}},"light_gray_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/light_gray_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"light_gray_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/light_gray_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"light_gray_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/light_gray_candle","particle":"minecraft:block/light_gray_candle"}},"light_gray_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/light_gray_candle_lit","particle":"minecraft:block/light_gray_candle_lit"}},"light_gray_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/light_gray_candle","particle":"minecraft:block/light_gray_candle"}},"light_gray_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/light_gray_candle_lit","particle":"minecraft:block/light_gray_candle_lit"}},"light_gray_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/light_gray_candle","particle":"minecraft:block/light_gray_candle"}},"light_gray_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/light_gray_candle_lit","particle":"minecraft:block/light_gray_candle_lit"}},"light_gray_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/light_gray_candle","particle":"minecraft:block/light_gray_candle"}},"light_gray_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/light_gray_candle_lit","particle":"minecraft:block/light_gray_candle_lit"}},"light_gray_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/light_gray_wool"}},"light_gray_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/light_gray_concrete"}},"light_gray_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/light_gray_concrete_powder"}},"light_gray_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/light_gray_glazed_terracotta"}},"light_gray_shulker_box":{"textures":{"particle":"minecraft:block/light_gray_shulker_box"}},"light_gray_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/light_gray_stained_glass"}},"light_gray_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/light_gray_stained_glass"}},"light_gray_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/light_gray_stained_glass"}},"light_gray_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/light_gray_stained_glass_pane_top","pane":"minecraft:block/light_gray_stained_glass"}},"light_gray_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/light_gray_stained_glass_pane_top","pane":"minecraft:block/light_gray_stained_glass"}},"light_gray_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/light_gray_stained_glass_pane_top","pane":"minecraft:block/light_gray_stained_glass"}},"light_gray_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/light_gray_terracotta"}},"light_gray_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/light_gray_wool"}},"light_weighted_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/gold_block"}},"light_weighted_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/gold_block"}},"lightning_rod":{"parent":"block/block","display":{"head":{"rotation":[-180,0,0],"translation":[8.5,4,0]},"thirdperson_righthand":{"translation":[0,2,0.5],"scale":[0.40,0.40,0.40]}},"textures":{"texture":"block/lightning_rod","particle":"block/lightning_rod"},"elements":[{"from":[6,12,6],"to":[10,16,10],"faces":{"north":{"uv":[0,0,4,4],"texture":"#texture"},"south":{"uv":[0,0,4,4],"texture":"#texture"},"west":{"uv":[0,0,4,4],"texture":"#texture"},"east":{"uv":[0,0,4,4],"texture":"#texture"},"down":{"uv":[0,0,4,4],"texture":"#texture"},"up":{"uv":[4,4,0,0],"texture":"#texture"}}},{"from":[7,0,7],"to":[9,12,9],"faces":{"north":{"uv":[0,4,2,16],"texture":"#texture"},"south":{"uv":[0,4,2,16],"texture":"#texture"},"west":{"uv":[0,4,2,16],"texture":"#texture"},"east":{"uv":[0,4,2,16],"texture":"#texture"},"down":{"uv":[0,4,2,6],"texture":"#texture"}}}]},"lightning_rod_on":{"parent":"block/block","textures":{"texture":"block/lightning_rod_on","particle":"block/lightning_rod_on"},"elements":[{"from":[6,12,6],"to":[10,16,10],"shade":false,"faces":{"north":{"uv":[0,0,4,4],"texture":"#texture"},"south":{"uv":[0,0,4,4],"texture":"#texture"},"west":{"uv":[0,0,4,4],"texture":"#texture"},"east":{"uv":[0,0,4,4],"texture":"#texture"},"down":{"uv":[0,0,4,4],"texture":"#texture"},"up":{"uv":[4,4,0,0],"texture":"#texture"}}},{"from":[7,0,7],"to":[9,12,9],"shade":false,"faces":{"north":{"uv":[0,4,2,16],"texture":"#texture"},"south":{"uv":[0,4,2,16],"texture":"#texture"},"west":{"uv":[0,4,2,16],"texture":"#texture"},"east":{"uv":[0,4,2,16],"texture":"#texture"},"down":{"uv":[0,4,2,16],"texture":"#texture"}}}]},"lilac_bottom":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/lilac_bottom"}},"lilac_top":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/lilac_top"}},"lily_of_the_valley":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/lily_of_the_valley"}},"lily_pad":{"ambientocclusion":false,"textures":{"particle":"block/lily_pad","texture":"block/lily_pad"},"elements":[{"from":[0,0.25,0],"to":[16,0.25,16],"faces":{"down":{"uv":[0,16,16,0],"texture":"#texture","tintindex":0},"up":{"uv":[0,0,16,16],"texture":"#texture","tintindex":0}}}]},"lime_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/lime_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"lime_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/lime_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"lime_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/lime_candle","particle":"minecraft:block/lime_candle"}},"lime_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/lime_candle_lit","particle":"minecraft:block/lime_candle_lit"}},"lime_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/lime_candle","particle":"minecraft:block/lime_candle"}},"lime_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/lime_candle_lit","particle":"minecraft:block/lime_candle_lit"}},"lime_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/lime_candle","particle":"minecraft:block/lime_candle"}},"lime_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/lime_candle_lit","particle":"minecraft:block/lime_candle_lit"}},"lime_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/lime_candle","particle":"minecraft:block/lime_candle"}},"lime_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/lime_candle_lit","particle":"minecraft:block/lime_candle_lit"}},"lime_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/lime_wool"}},"lime_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/lime_concrete"}},"lime_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/lime_concrete_powder"}},"lime_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/lime_glazed_terracotta"}},"lime_shulker_box":{"textures":{"particle":"minecraft:block/lime_shulker_box"}},"lime_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/lime_stained_glass"}},"lime_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/lime_stained_glass"}},"lime_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/lime_stained_glass"}},"lime_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/lime_stained_glass_pane_top","pane":"minecraft:block/lime_stained_glass"}},"lime_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/lime_stained_glass_pane_top","pane":"minecraft:block/lime_stained_glass"}},"lime_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/lime_stained_glass_pane_top","pane":"minecraft:block/lime_stained_glass"}},"lime_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/lime_terracotta"}},"lime_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/lime_wool"}},"lodestone":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/lodestone_top","side":"minecraft:block/lodestone_side"}},"loom":{"parent":"minecraft:block/orientable_with_bottom","textures":{"bottom":"minecraft:block/loom_bottom","front":"minecraft:block/loom_front","side":"minecraft:block/loom_side","top":"minecraft:block/loom_top"}},"magenta_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/magenta_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"magenta_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/magenta_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"magenta_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/magenta_candle","particle":"minecraft:block/magenta_candle"}},"magenta_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/magenta_candle_lit","particle":"minecraft:block/magenta_candle_lit"}},"magenta_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/magenta_candle","particle":"minecraft:block/magenta_candle"}},"magenta_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/magenta_candle_lit","particle":"minecraft:block/magenta_candle_lit"}},"magenta_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/magenta_candle","particle":"minecraft:block/magenta_candle"}},"magenta_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/magenta_candle_lit","particle":"minecraft:block/magenta_candle_lit"}},"magenta_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/magenta_candle","particle":"minecraft:block/magenta_candle"}},"magenta_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/magenta_candle_lit","particle":"minecraft:block/magenta_candle_lit"}},"magenta_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/magenta_wool"}},"magenta_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/magenta_concrete"}},"magenta_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/magenta_concrete_powder"}},"magenta_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/magenta_glazed_terracotta"}},"magenta_shulker_box":{"textures":{"particle":"minecraft:block/magenta_shulker_box"}},"magenta_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/magenta_stained_glass"}},"magenta_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/magenta_stained_glass"}},"magenta_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/magenta_stained_glass"}},"magenta_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/magenta_stained_glass_pane_top","pane":"minecraft:block/magenta_stained_glass"}},"magenta_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/magenta_stained_glass_pane_top","pane":"minecraft:block/magenta_stained_glass"}},"magenta_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/magenta_stained_glass_pane_top","pane":"minecraft:block/magenta_stained_glass"}},"magenta_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/magenta_terracotta"}},"magenta_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/magenta_wool"}},"magma_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/magma"}},"mangrove_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/mangrove_planks"}},"mangrove_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/mangrove_planks"}},"mangrove_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/mangrove_planks"}},"mangrove_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/mangrove_door_bottom","top":"minecraft:block/mangrove_door_top"}},"mangrove_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/mangrove_door_bottom","top":"minecraft:block/mangrove_door_top"}},"mangrove_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/mangrove_door_bottom","top":"minecraft:block/mangrove_door_top"}},"mangrove_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/mangrove_door_bottom","top":"minecraft:block/mangrove_door_top"}},"mangrove_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/mangrove_door_bottom","top":"minecraft:block/mangrove_door_top"}},"mangrove_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/mangrove_door_bottom","top":"minecraft:block/mangrove_door_top"}},"mangrove_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/mangrove_door_bottom","top":"minecraft:block/mangrove_door_top"}},"mangrove_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/mangrove_door_bottom","top":"minecraft:block/mangrove_door_top"}},"mangrove_fence_gate":{"parent":"minecraft:block/template_fence_gate","textures":{"texture":"minecraft:block/mangrove_planks"}},"mangrove_fence_gate_open":{"parent":"minecraft:block/template_fence_gate_open","textures":{"texture":"minecraft:block/mangrove_planks"}},"mangrove_fence_gate_wall":{"parent":"minecraft:block/template_fence_gate_wall","textures":{"texture":"minecraft:block/mangrove_planks"}},"mangrove_fence_gate_wall_open":{"parent":"minecraft:block/template_fence_gate_wall_open","textures":{"texture":"minecraft:block/mangrove_planks"}},"mangrove_fence_inventory":{"parent":"minecraft:block/fence_inventory","textures":{"texture":"minecraft:block/mangrove_planks"}},"mangrove_fence_post":{"parent":"minecraft:block/fence_post","textures":{"texture":"minecraft:block/mangrove_planks"}},"mangrove_fence_side":{"parent":"minecraft:block/fence_side","textures":{"texture":"minecraft:block/mangrove_planks"}},"mangrove_hanging_sign":{"textures":{"particle":"minecraft:block/stripped_mangrove_log"}},"mangrove_leaves":{"parent":"minecraft:block/leaves","textures":{"all":"minecraft:block/mangrove_leaves"}},"mangrove_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/mangrove_log_top","side":"minecraft:block/mangrove_log"}},"mangrove_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/mangrove_log_top","side":"minecraft:block/mangrove_log"}},"mangrove_planks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/mangrove_planks"}},"mangrove_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/mangrove_planks"}},"mangrove_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/mangrove_planks"}},"mangrove_propagule":{"ambientocclusion":false,"textures":{"particle":"block/mangrove_propagule","sapling":"block/mangrove_propagule"},"elements":[{"name":"leaves","from":[4.5,9,8],"to":[11.5,15,8],"rotation":{"angle":45,"axis":"y","origin":[8,0,8],"rescale":true},"faces":{"north":{"uv":[4,1,11,7],"texture":"#sapling"},"south":{"uv":[4,1,11,7],"texture":"#sapling"}}},{"name":"leaves","from":[8,9,4.5],"to":[8,15,11.5],"rotation":{"angle":45,"axis":"y","origin":[8,0,8],"rescale":true},"faces":{"east":{"uv":[4,1,11,7],"texture":"#sapling"},"west":{"uv":[4,1,11,7],"texture":"#sapling"}}},{"name":"hypocotyl","from":[8,0,7],"to":[8,9,9],"rotation":{"angle":45,"axis":"y","origin":[8,0,8],"rescale":true},"faces":{"east":{"uv":[7,7,9,16],"texture":"#sapling"},"west":{"uv":[7,7,9,16],"texture":"#sapling"}}},{"name":"hypocotyl","from":[7,0,8],"to":[9,9,8],"rotation":{"angle":45,"axis":"y","origin":[8,0,8],"rescale":true},"faces":{"north":{"uv":[7,7,9,16],"texture":"#sapling"},"south":{"uv":[7,7,9,16],"texture":"#sapling"}}}]},"mangrove_propagule_hanging_0":{"parent":"block/block","textures":{"propagule":"block/mangrove_propagule_hanging","particle":"block/mangrove_propagule_hanging"},"elements":[{"from":[7,13.61104,10.07193],"to":[9,13.61104,12.07193],"rotation":{"angle":22.5,"axis":"x","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":180,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"texture":"#propagule"}}},{"from":[10.07193,13.61104,7],"to":[12.07193,13.61104,9],"rotation":{"angle":-22.5,"axis":"z","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":90,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":90,"texture":"#propagule"}}},{"from":[7,13.61104,3.92807],"to":[9,13.61104,5.92807],"rotation":{"angle":-22.5,"axis":"x","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":180,"texture":"#propagule"}}},{"from":[3.92807,13.61104,7],"to":[5.92807,13.61104,9],"rotation":{"angle":22.5,"axis":"z","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":270,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":270,"texture":"#propagule"}}},{"from":[7,13,7],"to":[9,14,9],"rotation":{"angle":0,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,2,2,3],"texture":"#propagule"},"east":{"uv":[0,2,2,3],"texture":"#propagule"},"south":{"uv":[0,2,2,3],"texture":"#propagule"},"west":{"uv":[0,2,2,3],"texture":"#propagule"},"up":{"uv":[0,0,2,2],"texture":"#propagule"},"down":{"uv":[0,3,2,5],"texture":"#propagule"}}},{"from":[7,14,8],"to":[9,16,8],"rotation":{"angle":-45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,2],"texture":"#propagule"},"east":{"uv":[0,0,0,2],"texture":"#propagule"},"south":{"uv":[0,0,2,2],"texture":"#propagule"},"west":{"uv":[0,0,0,2],"texture":"#propagule"},"up":{"uv":[0,0,2,0],"texture":"#propagule"},"down":{"uv":[0,0,2,0],"texture":"#propagule"}}},{"from":[7,14,8],"to":[9,16,8],"rotation":{"angle":45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,2],"texture":"#propagule"},"east":{"uv":[0,0,0,2],"texture":"#propagule"},"south":{"uv":[0,0,2,2],"texture":"#propagule"},"west":{"uv":[0,0,0,2],"texture":"#propagule"},"up":{"uv":[0,0,2,0],"texture":"#propagule"},"down":{"uv":[0,0,2,0],"texture":"#propagule"}}}]},"mangrove_propagule_hanging_1":{"parent":"block/block","textures":{"propagule":"block/mangrove_propagule_hanging","particle":"block/mangrove_propagule_hanging"},"elements":[{"from":[7,10,7],"to":[9,13,9],"rotation":{"angle":0,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,7,2,10],"texture":"#propagule"},"east":{"uv":[0,7,2,10],"texture":"#propagule"},"south":{"uv":[0,7,2,10],"texture":"#propagule"},"west":{"uv":[0,7,2,10],"texture":"#propagule"},"up":{"uv":[0,5,2,7],"texture":"#propagule"},"down":{"uv":[0,5,2,7],"texture":"#propagule"}}},{"from":[7,13.61104,10.07193],"to":[9,13.61104,12.07193],"rotation":{"angle":22.5,"axis":"x","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":180,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"texture":"#propagule"}}},{"from":[10.07193,13.61104,7],"to":[12.07193,13.61104,9],"rotation":{"angle":-22.5,"axis":"z","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":90,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":90,"texture":"#propagule"}}},{"from":[7,13.61104,3.92807],"to":[9,13.61104,5.92807],"rotation":{"angle":-22.5,"axis":"x","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":180,"texture":"#propagule"}}},{"from":[3.92807,13.61104,7],"to":[5.92807,13.61104,9],"rotation":{"angle":22.5,"axis":"z","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":270,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":270,"texture":"#propagule"}}},{"from":[7,13,7],"to":[9,14,9],"rotation":{"angle":0,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,2,2,3],"texture":"#propagule"},"east":{"uv":[0,2,2,3],"texture":"#propagule"},"south":{"uv":[0,2,2,3],"texture":"#propagule"},"west":{"uv":[0,2,2,3],"texture":"#propagule"},"up":{"uv":[0,0,2,2],"texture":"#propagule"},"down":{"uv":[0,3,2,5],"texture":"#propagule"}}},{"from":[7,14,8],"to":[9,16,8],"rotation":{"angle":-45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,2],"texture":"#propagule"},"east":{"uv":[0,0,0,2],"texture":"#propagule"},"south":{"uv":[0,0,2,2],"texture":"#propagule"},"west":{"uv":[0,0,0,2],"texture":"#propagule"},"up":{"uv":[0,0,2,0],"texture":"#propagule"},"down":{"uv":[0,0,2,0],"texture":"#propagule"}}},{"from":[7,14,8],"to":[9,16,8],"rotation":{"angle":45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,2],"texture":"#propagule"},"east":{"uv":[0,0,0,2],"texture":"#propagule"},"south":{"uv":[0,0,2,2],"texture":"#propagule"},"west":{"uv":[0,0,0,2],"texture":"#propagule"},"up":{"uv":[0,0,2,0],"texture":"#propagule"},"down":{"uv":[0,0,2,0],"texture":"#propagule"}}}]},"mangrove_propagule_hanging_2":{"parent":"block/block","textures":{"propagule":"block/mangrove_propagule_hanging","particle":"block/mangrove_propagule_hanging"},"elements":[{"from":[7,10,7],"to":[9,13,9],"rotation":{"angle":0,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,7,2,10],"texture":"#propagule"},"east":{"uv":[0,7,2,10],"texture":"#propagule"},"south":{"uv":[0,7,2,10],"texture":"#propagule"},"west":{"uv":[0,7,2,10],"texture":"#propagule"},"up":{"uv":[0,5,2,7],"texture":"#propagule"},"down":{"uv":[0,10,2,12],"texture":"#propagule"}}},{"from":[7,13.61104,10.07193],"to":[9,13.61104,12.07193],"rotation":{"angle":22.5,"axis":"x","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":180,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"texture":"#propagule"}}},{"from":[10.07193,13.61104,7],"to":[12.07193,13.61104,9],"rotation":{"angle":-22.5,"axis":"z","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":90,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":90,"texture":"#propagule"}}},{"from":[7,13.61104,3.92807],"to":[9,13.61104,5.92807],"rotation":{"angle":-22.5,"axis":"x","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":180,"texture":"#propagule"}}},{"from":[3.92807,13.61104,7],"to":[5.92807,13.61104,9],"rotation":{"angle":22.5,"axis":"z","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":270,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":270,"texture":"#propagule"}}},{"from":[7,13,7],"to":[9,14,9],"rotation":{"angle":0,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,2,2,3],"texture":"#propagule"},"east":{"uv":[0,2,2,3],"texture":"#propagule"},"south":{"uv":[0,2,2,3],"texture":"#propagule"},"west":{"uv":[0,2,2,3],"texture":"#propagule"},"up":{"uv":[0,0,2,2],"texture":"#propagule"},"down":{"uv":[0,3,2,5],"texture":"#propagule"}}},{"from":[7,14,8],"to":[9,16,8],"rotation":{"angle":-45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,2],"texture":"#propagule"},"east":{"uv":[0,0,0,2],"texture":"#propagule"},"south":{"uv":[0,0,2,2],"texture":"#propagule"},"west":{"uv":[0,0,0,2],"texture":"#propagule"},"up":{"uv":[0,0,2,0],"texture":"#propagule"},"down":{"uv":[0,0,2,0],"texture":"#propagule"}}},{"from":[7,14,8],"to":[9,16,8],"rotation":{"angle":45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,2],"texture":"#propagule"},"east":{"uv":[0,0,0,2],"texture":"#propagule"},"south":{"uv":[0,0,2,2],"texture":"#propagule"},"west":{"uv":[0,0,0,2],"texture":"#propagule"},"up":{"uv":[0,0,2,0],"texture":"#propagule"},"down":{"uv":[0,0,2,0],"texture":"#propagule"}}},{"from":[7,7,8],"to":[9,10,8],"rotation":{"angle":45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[3,7,5,10],"texture":"#propagule"},"east":{"uv":[13,0,13,10],"texture":"#propagule"},"south":{"uv":[3,7,5,10],"texture":"#propagule"},"west":{"uv":[11,0,11,10],"texture":"#propagule"},"up":{"uv":[11,0,13,0],"texture":"#propagule"},"down":{"uv":[11,10,13,10],"texture":"#propagule"}}},{"from":[7,7,8],"to":[9,10,8],"rotation":{"angle":-45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[3,7,5,10],"texture":"#propagule"},"east":{"uv":[11,0,11,10],"texture":"#propagule"},"south":{"uv":[3,7,5,10],"texture":"#propagule"},"west":{"uv":[13,0,13,10],"texture":"#propagule"},"up":{"uv":[11,0,13,0],"rotation":180,"texture":"#propagule"},"down":{"uv":[11,10,13,10],"rotation":180,"texture":"#propagule"}}}]},"mangrove_propagule_hanging_3":{"parent":"block/block","textures":{"propagule":"block/mangrove_propagule_hanging","particle":"block/mangrove_propagule_hanging"},"elements":[{"from":[7,10,7],"to":[9,13,9],"rotation":{"angle":0,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,7,2,10],"texture":"#propagule"},"east":{"uv":[0,7,2,10],"texture":"#propagule"},"south":{"uv":[0,7,2,10],"texture":"#propagule"},"west":{"uv":[0,7,2,10],"texture":"#propagule"},"up":{"uv":[0,5,2,7],"texture":"#propagule"},"down":{"uv":[0,10,2,12],"texture":"#propagule"}}},{"from":[7,13.61104,10.07193],"to":[9,13.61104,12.07193],"rotation":{"angle":22.5,"axis":"x","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":180,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"texture":"#propagule"}}},{"from":[10.07193,13.61104,7],"to":[12.07193,13.61104,9],"rotation":{"angle":-22.5,"axis":"z","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":90,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":90,"texture":"#propagule"}}},{"from":[7,13.61104,3.92807],"to":[9,13.61104,5.92807],"rotation":{"angle":-22.5,"axis":"x","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":180,"texture":"#propagule"}}},{"from":[3.92807,13.61104,7],"to":[5.92807,13.61104,9],"rotation":{"angle":22.5,"axis":"z","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":270,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":270,"texture":"#propagule"}}},{"from":[7,13,7],"to":[9,14,9],"rotation":{"angle":0,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,2,2,3],"texture":"#propagule"},"east":{"uv":[0,2,2,3],"texture":"#propagule"},"south":{"uv":[0,2,2,3],"texture":"#propagule"},"west":{"uv":[0,2,2,3],"texture":"#propagule"},"up":{"uv":[0,0,2,2],"texture":"#propagule"},"down":{"uv":[0,3,2,5],"texture":"#propagule"}}},{"from":[7,14,8],"to":[9,16,8],"rotation":{"angle":-45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,2],"texture":"#propagule"},"east":{"uv":[0,0,0,2],"texture":"#propagule"},"south":{"uv":[0,0,2,2],"texture":"#propagule"},"west":{"uv":[0,0,0,2],"texture":"#propagule"},"up":{"uv":[0,0,2,0],"texture":"#propagule"},"down":{"uv":[0,0,2,0],"texture":"#propagule"}}},{"from":[7,14,8],"to":[9,16,8],"rotation":{"angle":45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,2],"texture":"#propagule"},"east":{"uv":[0,0,0,2],"texture":"#propagule"},"south":{"uv":[0,0,2,2],"texture":"#propagule"},"west":{"uv":[0,0,0,2],"texture":"#propagule"},"up":{"uv":[0,0,2,0],"texture":"#propagule"},"down":{"uv":[0,0,2,0],"texture":"#propagule"}}},{"from":[7,3,8],"to":[9,10,8],"rotation":{"angle":45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[3,3,5,10],"texture":"#propagule"},"east":{"uv":[13,0,13,10],"texture":"#propagule"},"south":{"uv":[3,3,5,10],"texture":"#propagule"},"west":{"uv":[11,0,11,10],"texture":"#propagule"},"up":{"uv":[11,0,13,0],"texture":"#propagule"},"down":{"uv":[11,10,13,10],"texture":"#propagule"}}},{"from":[7,3,8],"to":[9,10,8],"rotation":{"angle":-45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[3,3,5,10],"texture":"#propagule"},"east":{"uv":[11,0,11,10],"texture":"#propagule"},"south":{"uv":[3,3,5,10],"texture":"#propagule"},"west":{"uv":[13,0,13,10],"texture":"#propagule"},"up":{"uv":[11,0,13,0],"rotation":180,"texture":"#propagule"},"down":{"uv":[11,10,13,10],"rotation":180,"texture":"#propagule"}}}]},"mangrove_propagule_hanging_4":{"parent":"block/block","textures":{"propagule":"block/mangrove_propagule_hanging","particle":"block/mangrove_propagule_hanging"},"elements":[{"from":[7,10,7],"to":[9,13,9],"rotation":{"angle":0,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,7,2,10],"texture":"#propagule"},"east":{"uv":[0,7,2,10],"texture":"#propagule"},"south":{"uv":[0,7,2,10],"texture":"#propagule"},"west":{"uv":[0,7,2,10],"texture":"#propagule"},"up":{"uv":[0,5,2,7],"texture":"#propagule"},"down":{"uv":[0,10,2,12],"texture":"#propagule"}}},{"from":[7,13.61104,10.07193],"to":[9,13.61104,12.07193],"rotation":{"angle":22.5,"axis":"x","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":180,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"texture":"#propagule"}}},{"from":[10.07193,13.61104,7],"to":[12.07193,13.61104,9],"rotation":{"angle":-22.5,"axis":"z","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":90,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":90,"texture":"#propagule"}}},{"from":[7,13.61104,3.92807],"to":[9,13.61104,5.92807],"rotation":{"angle":-22.5,"axis":"x","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":180,"texture":"#propagule"}}},{"from":[3.92807,13.61104,7],"to":[5.92807,13.61104,9],"rotation":{"angle":22.5,"axis":"z","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":270,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":270,"texture":"#propagule"}}},{"from":[7,13,7],"to":[9,14,9],"rotation":{"angle":0,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,2,2,3],"texture":"#propagule"},"east":{"uv":[0,2,2,3],"texture":"#propagule"},"south":{"uv":[0,2,2,3],"texture":"#propagule"},"west":{"uv":[0,2,2,3],"texture":"#propagule"},"up":{"uv":[0,0,2,2],"texture":"#propagule"},"down":{"uv":[0,3,2,5],"texture":"#propagule"}}},{"from":[7,14,8],"to":[9,16,8],"rotation":{"angle":-45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,2],"texture":"#propagule"},"east":{"uv":[0,0,0,2],"texture":"#propagule"},"south":{"uv":[0,0,2,2],"texture":"#propagule"},"west":{"uv":[0,0,0,2],"texture":"#propagule"},"up":{"uv":[0,0,2,0],"texture":"#propagule"},"down":{"uv":[0,0,2,0],"texture":"#propagule"}}},{"from":[7,14,8],"to":[9,16,8],"rotation":{"angle":45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,2],"texture":"#propagule"},"east":{"uv":[0,0,0,2],"texture":"#propagule"},"south":{"uv":[0,0,2,2],"texture":"#propagule"},"west":{"uv":[0,0,0,2],"texture":"#propagule"},"up":{"uv":[0,0,2,0],"texture":"#propagule"},"down":{"uv":[0,0,2,0],"texture":"#propagule"}}},{"from":[7,0,8],"to":[9,10,8],"rotation":{"angle":45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[3,0,5,10],"texture":"#propagule"},"east":{"uv":[13,0,13,10],"texture":"#propagule"},"south":{"uv":[3,0,5,10],"texture":"#propagule"},"west":{"uv":[11,0,11,10],"texture":"#propagule"},"up":{"uv":[11,0,13,0],"texture":"#propagule"},"down":{"uv":[11,10,13,10],"texture":"#propagule"}}},{"from":[7,0,8],"to":[9,10,8],"rotation":{"angle":-45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[3,0,5,10],"texture":"#propagule"},"east":{"uv":[11,0,11,10],"texture":"#propagule"},"south":{"uv":[3,0,5,10],"texture":"#propagule"},"west":{"uv":[13,0,13,10],"texture":"#propagule"},"up":{"uv":[11,0,13,0],"rotation":180,"texture":"#propagule"},"down":{"uv":[11,10,13,10],"rotation":180,"texture":"#propagule"}}}]},"mangrove_roots":{"parent":"block/block","textures":{"side":"block/mangrove_roots_side","top":"block/mangrove_roots_top","particle":"#side"},"elements":[{"from":[0,0,8],"to":[16,16,8],"faces":{"north":{"uv":[0,0,16,16],"texture":"#side"},"south":{"uv":[0,0,16,16],"texture":"#side"}}},{"from":[8,0,0],"to":[8,16,16],"faces":{"west":{"uv":[0,0,16,16],"texture":"#side"},"east":{"uv":[0,0,16,16],"texture":"#side"}}},{"from":[0,15.998,0],"to":[16,16,16],"faces":{"down":{"uv":[0,16,16,0],"texture":"#top","cullface":"up"},"up":{"uv":[0,0,16,16],"texture":"#top","cullface":"up"}}},{"from":[0,0,0],"to":[16,0.002,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#top","cullface":"down"},"up":{"uv":[0,16,16,0],"texture":"#top","cullface":"down"}}},{"from":[0,0,0],"to":[16,16,0.002],"faces":{"north":{"uv":[0,0,16,16],"texture":"#side","cullface":"north"},"south":{"uv":[16,0,0,16],"texture":"#side","cullface":"north"}}},{"from":[0,0,15.998],"to":[16,16,16],"faces":{"north":{"uv":[16,0,0,16],"texture":"#side","cullface":"south"},"south":{"uv":[0,0,16,16],"texture":"#side","cullface":"south"}}},{"from":[0,0,0],"to":[0.002,16,16],"faces":{"east":{"uv":[16,0,0,16],"texture":"#side","cullface":"west"},"west":{"uv":[0,0,16,16],"texture":"#side","cullface":"west"}}},{"from":[15.998,0,0],"to":[16,16,16],"faces":{"east":{"uv":[0,0,16,16],"texture":"#side","cullface":"east"},"west":{"uv":[16,0,0,16],"texture":"#side","cullface":"east"}}}]},"mangrove_sign":{"textures":{"particle":"minecraft:block/mangrove_planks"}},"mangrove_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/mangrove_planks","side":"minecraft:block/mangrove_planks","top":"minecraft:block/mangrove_planks"}},"mangrove_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/mangrove_planks","side":"minecraft:block/mangrove_planks","top":"minecraft:block/mangrove_planks"}},"mangrove_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/mangrove_planks","side":"minecraft:block/mangrove_planks","top":"minecraft:block/mangrove_planks"}},"mangrove_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/mangrove_planks","side":"minecraft:block/mangrove_planks","top":"minecraft:block/mangrove_planks"}},"mangrove_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/mangrove_planks","side":"minecraft:block/mangrove_planks","top":"minecraft:block/mangrove_planks"}},"mangrove_trapdoor_bottom":{"parent":"minecraft:block/template_orientable_trapdoor_bottom","textures":{"texture":"minecraft:block/mangrove_trapdoor"}},"mangrove_trapdoor_open":{"parent":"minecraft:block/template_orientable_trapdoor_open","textures":{"texture":"minecraft:block/mangrove_trapdoor"}},"mangrove_trapdoor_top":{"parent":"minecraft:block/template_orientable_trapdoor_top","textures":{"texture":"minecraft:block/mangrove_trapdoor"}},"mangrove_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/mangrove_log","side":"minecraft:block/mangrove_log"}},"medium_amethyst_bud":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/medium_amethyst_bud"}},"melon":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/melon_top","side":"minecraft:block/melon_side"}},"melon_stem_stage0":{"parent":"minecraft:block/stem_growth0","textures":{"stem":"minecraft:block/melon_stem"}},"melon_stem_stage1":{"parent":"minecraft:block/stem_growth1","textures":{"stem":"minecraft:block/melon_stem"}},"melon_stem_stage2":{"parent":"minecraft:block/stem_growth2","textures":{"stem":"minecraft:block/melon_stem"}},"melon_stem_stage3":{"parent":"minecraft:block/stem_growth3","textures":{"stem":"minecraft:block/melon_stem"}},"melon_stem_stage4":{"parent":"minecraft:block/stem_growth4","textures":{"stem":"minecraft:block/melon_stem"}},"melon_stem_stage5":{"parent":"minecraft:block/stem_growth5","textures":{"stem":"minecraft:block/melon_stem"}},"melon_stem_stage6":{"parent":"minecraft:block/stem_growth6","textures":{"stem":"minecraft:block/melon_stem"}},"melon_stem_stage7":{"parent":"minecraft:block/stem_growth7","textures":{"stem":"minecraft:block/melon_stem"}},"moss_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/moss_block"}},"moss_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/moss_block"}},"mossy_carpet_side":{"ambientocclusion":true,"textures":{"particle":"#side"},"elements":[{"from":[0,0,0.1],"to":[16,16,0.1],"shade":true,"faces":{"north":{"uv":[16,0,0,16],"texture":"#side"},"south":{"uv":[0,0,16,16],"texture":"#side"}}}]},"mossy_cobblestone":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/mossy_cobblestone"}},"mossy_cobblestone_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/mossy_cobblestone","side":"minecraft:block/mossy_cobblestone","top":"minecraft:block/mossy_cobblestone"}},"mossy_cobblestone_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/mossy_cobblestone","side":"minecraft:block/mossy_cobblestone","top":"minecraft:block/mossy_cobblestone"}},"mossy_cobblestone_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/mossy_cobblestone","side":"minecraft:block/mossy_cobblestone","top":"minecraft:block/mossy_cobblestone"}},"mossy_cobblestone_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/mossy_cobblestone","side":"minecraft:block/mossy_cobblestone","top":"minecraft:block/mossy_cobblestone"}},"mossy_cobblestone_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/mossy_cobblestone","side":"minecraft:block/mossy_cobblestone","top":"minecraft:block/mossy_cobblestone"}},"mossy_cobblestone_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/mossy_cobblestone"}},"mossy_cobblestone_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/mossy_cobblestone"}},"mossy_cobblestone_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/mossy_cobblestone"}},"mossy_cobblestone_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/mossy_cobblestone"}},"mossy_stone_brick_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/mossy_stone_bricks","side":"minecraft:block/mossy_stone_bricks","top":"minecraft:block/mossy_stone_bricks"}},"mossy_stone_brick_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/mossy_stone_bricks","side":"minecraft:block/mossy_stone_bricks","top":"minecraft:block/mossy_stone_bricks"}},"mossy_stone_brick_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/mossy_stone_bricks","side":"minecraft:block/mossy_stone_bricks","top":"minecraft:block/mossy_stone_bricks"}},"mossy_stone_brick_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/mossy_stone_bricks","side":"minecraft:block/mossy_stone_bricks","top":"minecraft:block/mossy_stone_bricks"}},"mossy_stone_brick_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/mossy_stone_bricks","side":"minecraft:block/mossy_stone_bricks","top":"minecraft:block/mossy_stone_bricks"}},"mossy_stone_brick_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/mossy_stone_bricks"}},"mossy_stone_brick_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/mossy_stone_bricks"}},"mossy_stone_brick_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/mossy_stone_bricks"}},"mossy_stone_brick_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/mossy_stone_bricks"}},"mossy_stone_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/mossy_stone_bricks"}},"moving_piston":{"textures":{"particle":"minecraft:block/piston_side"}},"mud":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/mud"}},"mud_brick_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/mud_bricks","side":"minecraft:block/mud_bricks","top":"minecraft:block/mud_bricks"}},"mud_brick_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/mud_bricks","side":"minecraft:block/mud_bricks","top":"minecraft:block/mud_bricks"}},"mud_brick_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/mud_bricks","side":"minecraft:block/mud_bricks","top":"minecraft:block/mud_bricks"}},"mud_brick_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/mud_bricks","side":"minecraft:block/mud_bricks","top":"minecraft:block/mud_bricks"}},"mud_brick_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/mud_bricks","side":"minecraft:block/mud_bricks","top":"minecraft:block/mud_bricks"}},"mud_brick_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/mud_bricks"}},"mud_brick_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/mud_bricks"}},"mud_brick_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/mud_bricks"}},"mud_brick_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/mud_bricks"}},"mud_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/mud_bricks"}},"mud_bricks_north_west_mirrored":{"parent":"minecraft:block/cube_north_west_mirrored_all","textures":{"all":"minecraft:block/mud_bricks"}},"muddy_mangrove_roots":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/muddy_mangrove_roots_top","side":"minecraft:block/muddy_mangrove_roots_side"}},"mushroom_block_inside":{"parent":"block/template_single_face","textures":{"texture":"block/mushroom_block_inside"}},"mushroom_stem":{"parent":"minecraft:block/template_single_face","textures":{"texture":"minecraft:block/mushroom_stem"}},"mushroom_stem_inventory":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/mushroom_stem"}},"mycelium":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/dirt","side":"minecraft:block/mycelium_side","top":"minecraft:block/mycelium_top"}},"nether_brick_fence_inventory":{"parent":"minecraft:block/fence_inventory","textures":{"texture":"minecraft:block/nether_bricks"}},"nether_brick_fence_post":{"parent":"minecraft:block/fence_post","textures":{"texture":"minecraft:block/nether_bricks"}},"nether_brick_fence_side":{"parent":"minecraft:block/fence_side","textures":{"texture":"minecraft:block/nether_bricks"}},"nether_brick_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/nether_bricks","side":"minecraft:block/nether_bricks","top":"minecraft:block/nether_bricks"}},"nether_brick_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/nether_bricks","side":"minecraft:block/nether_bricks","top":"minecraft:block/nether_bricks"}},"nether_brick_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/nether_bricks","side":"minecraft:block/nether_bricks","top":"minecraft:block/nether_bricks"}},"nether_brick_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/nether_bricks","side":"minecraft:block/nether_bricks","top":"minecraft:block/nether_bricks"}},"nether_brick_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/nether_bricks","side":"minecraft:block/nether_bricks","top":"minecraft:block/nether_bricks"}},"nether_brick_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/nether_bricks"}},"nether_brick_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/nether_bricks"}},"nether_brick_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/nether_bricks"}},"nether_brick_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/nether_bricks"}},"nether_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/nether_bricks"}},"nether_gold_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/nether_gold_ore"}},"nether_portal_ew":{"textures":{"particle":"block/nether_portal","portal":"block/nether_portal"},"elements":[{"from":[6,0,0],"to":[10,16,16],"faces":{"east":{"uv":[0,0,16,16],"texture":"#portal"},"west":{"uv":[0,0,16,16],"texture":"#portal"}}}]},"nether_portal_ns":{"textures":{"particle":"block/nether_portal","portal":"block/nether_portal"},"elements":[{"from":[0,0,6],"to":[16,16,10],"faces":{"north":{"uv":[0,0,16,16],"texture":"#portal"},"south":{"uv":[0,0,16,16],"texture":"#portal"}}}]},"nether_quartz_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/nether_quartz_ore"}},"nether_sprouts":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/nether_sprouts"}},"nether_wart_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/nether_wart_block"}},"nether_wart_stage0":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/nether_wart_stage0"}},"nether_wart_stage1":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/nether_wart_stage1"}},"nether_wart_stage2":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/nether_wart_stage2"}},"netherite_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/netherite_block"}},"netherrack":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/netherrack"}},"note_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/note_block"}},"oak_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/oak_planks"}},"oak_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/oak_planks"}},"oak_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/oak_planks"}},"oak_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/oak_door_bottom","top":"minecraft:block/oak_door_top"}},"oak_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/oak_door_bottom","top":"minecraft:block/oak_door_top"}},"oak_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/oak_door_bottom","top":"minecraft:block/oak_door_top"}},"oak_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/oak_door_bottom","top":"minecraft:block/oak_door_top"}},"oak_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/oak_door_bottom","top":"minecraft:block/oak_door_top"}},"oak_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/oak_door_bottom","top":"minecraft:block/oak_door_top"}},"oak_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/oak_door_bottom","top":"minecraft:block/oak_door_top"}},"oak_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/oak_door_bottom","top":"minecraft:block/oak_door_top"}},"oak_fence_gate":{"parent":"minecraft:block/template_fence_gate","textures":{"texture":"minecraft:block/oak_planks"}},"oak_fence_gate_open":{"parent":"minecraft:block/template_fence_gate_open","textures":{"texture":"minecraft:block/oak_planks"}},"oak_fence_gate_wall":{"parent":"minecraft:block/template_fence_gate_wall","textures":{"texture":"minecraft:block/oak_planks"}},"oak_fence_gate_wall_open":{"parent":"minecraft:block/template_fence_gate_wall_open","textures":{"texture":"minecraft:block/oak_planks"}},"oak_fence_inventory":{"parent":"minecraft:block/fence_inventory","textures":{"texture":"minecraft:block/oak_planks"}},"oak_fence_post":{"parent":"minecraft:block/fence_post","textures":{"texture":"minecraft:block/oak_planks"}},"oak_fence_side":{"parent":"minecraft:block/fence_side","textures":{"texture":"minecraft:block/oak_planks"}},"oak_hanging_sign":{"textures":{"particle":"minecraft:block/stripped_oak_log"}},"oak_leaves":{"parent":"minecraft:block/leaves","textures":{"all":"minecraft:block/oak_leaves"}},"oak_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/oak_log_top","side":"minecraft:block/oak_log"}},"oak_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/oak_log_top","side":"minecraft:block/oak_log"}},"oak_planks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/oak_planks"}},"oak_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/oak_planks"}},"oak_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/oak_planks"}},"oak_sapling":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/oak_sapling"}},"oak_sign":{"textures":{"particle":"minecraft:block/oak_planks"}},"oak_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/oak_planks","side":"minecraft:block/oak_planks","top":"minecraft:block/oak_planks"}},"oak_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/oak_planks","side":"minecraft:block/oak_planks","top":"minecraft:block/oak_planks"}},"oak_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/oak_planks","side":"minecraft:block/oak_planks","top":"minecraft:block/oak_planks"}},"oak_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/oak_planks","side":"minecraft:block/oak_planks","top":"minecraft:block/oak_planks"}},"oak_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/oak_planks","side":"minecraft:block/oak_planks","top":"minecraft:block/oak_planks"}},"oak_trapdoor_bottom":{"parent":"minecraft:block/template_trapdoor_bottom","textures":{"texture":"minecraft:block/oak_trapdoor"}},"oak_trapdoor_open":{"parent":"minecraft:block/template_trapdoor_open","textures":{"texture":"minecraft:block/oak_trapdoor"}},"oak_trapdoor_top":{"parent":"minecraft:block/template_trapdoor_top","textures":{"texture":"minecraft:block/oak_trapdoor"}},"oak_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/oak_log","side":"minecraft:block/oak_log"}},"observer":{"parent":"block/block","textures":{"bottom":"block/observer_back","side":"block/observer_side","top":"block/observer_top","front":"block/observer_front","particle":"block/observer_front"},"elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#top","cullface":"down"},"up":{"uv":[0,16,16,0],"texture":"#top","cullface":"up"},"north":{"uv":[0,0,16,16],"texture":"#front","cullface":"north"},"south":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#side","cullface":"west"},"east":{"uv":[0,0,16,16],"texture":"#side","cullface":"east"}}}]},"observer_on":{"parent":"block/observer","textures":{"bottom":"block/observer_back_on"}},"obsidian":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/obsidian"}},"ochre_froglight":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/ochre_froglight_top","side":"minecraft:block/ochre_froglight_side"}},"ochre_froglight_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/ochre_froglight_top","side":"minecraft:block/ochre_froglight_side"}},"open_eyeblossom":{"parent":"minecraft:block/cross_emissive","textures":{"cross":"minecraft:block/open_eyeblossom","cross_emissive":"minecraft:block/open_eyeblossom_emissive"}},"orange_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/orange_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"orange_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/orange_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"orange_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/orange_candle","particle":"minecraft:block/orange_candle"}},"orange_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/orange_candle_lit","particle":"minecraft:block/orange_candle_lit"}},"orange_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/orange_candle","particle":"minecraft:block/orange_candle"}},"orange_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/orange_candle_lit","particle":"minecraft:block/orange_candle_lit"}},"orange_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/orange_candle","particle":"minecraft:block/orange_candle"}},"orange_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/orange_candle_lit","particle":"minecraft:block/orange_candle_lit"}},"orange_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/orange_candle","particle":"minecraft:block/orange_candle"}},"orange_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/orange_candle_lit","particle":"minecraft:block/orange_candle_lit"}},"orange_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/orange_wool"}},"orange_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/orange_concrete"}},"orange_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/orange_concrete_powder"}},"orange_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/orange_glazed_terracotta"}},"orange_shulker_box":{"textures":{"particle":"minecraft:block/orange_shulker_box"}},"orange_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/orange_stained_glass"}},"orange_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/orange_stained_glass"}},"orange_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/orange_stained_glass"}},"orange_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/orange_stained_glass_pane_top","pane":"minecraft:block/orange_stained_glass"}},"orange_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/orange_stained_glass_pane_top","pane":"minecraft:block/orange_stained_glass"}},"orange_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/orange_stained_glass_pane_top","pane":"minecraft:block/orange_stained_glass"}},"orange_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/orange_terracotta"}},"orange_tulip":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/orange_tulip"}},"orange_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/orange_wool"}},"orientable":{"parent":"block/orientable_with_bottom","textures":{"bottom":"#top"}},"orientable_vertical":{"parent":"block/cube","textures":{"particle":"#side","down":"#side","up":"#front","north":"#side","east":"#side","south":"#side","west":"#side"}},"orientable_with_bottom":{"parent":"block/cube","display":{"firstperson_righthand":{"rotation":[0,135,0],"translation":[0,0,0],"scale":[0.40,0.40,0.40]}},"textures":{"particle":"#front","down":"#bottom","up":"#top","north":"#front","east":"#side","south":"#side","west":"#side"}},"outer_stairs":{"textures":{"particle":"#side"},"elements":[{"from":[0,0,0],"to":[16,8,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,8,16,16],"texture":"#side","cullface":"north"},"south":{"uv":[0,8,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,8,16,16],"texture":"#side","cullface":"west"},"east":{"uv":[0,8,16,16],"texture":"#side","cullface":"east"}}},{"from":[8,8,8],"to":[16,16,16],"faces":{"up":{"uv":[8,8,16,16],"texture":"#top","cullface":"up"},"north":{"uv":[0,0,8,8],"texture":"#side"},"south":{"uv":[8,0,16,8],"texture":"#side","cullface":"south"},"west":{"uv":[8,0,16,8],"texture":"#side"},"east":{"uv":[0,0,8,8],"texture":"#side","cullface":"east"}}}]},"oxeye_daisy":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/oxeye_daisy"}},"oxidized_chiseled_copper":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/oxidized_chiseled_copper"}},"oxidized_copper":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/oxidized_copper"}},"oxidized_copper_bulb":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/oxidized_copper_bulb"}},"oxidized_copper_bulb_lit":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/oxidized_copper_bulb_lit"}},"oxidized_copper_bulb_lit_powered":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/oxidized_copper_bulb_lit_powered"}},"oxidized_copper_bulb_powered":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/oxidized_copper_bulb_powered"}},"oxidized_copper_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/oxidized_copper_door_bottom","top":"minecraft:block/oxidized_copper_door_top"}},"oxidized_copper_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/oxidized_copper_door_bottom","top":"minecraft:block/oxidized_copper_door_top"}},"oxidized_copper_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/oxidized_copper_door_bottom","top":"minecraft:block/oxidized_copper_door_top"}},"oxidized_copper_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/oxidized_copper_door_bottom","top":"minecraft:block/oxidized_copper_door_top"}},"oxidized_copper_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/oxidized_copper_door_bottom","top":"minecraft:block/oxidized_copper_door_top"}},"oxidized_copper_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/oxidized_copper_door_bottom","top":"minecraft:block/oxidized_copper_door_top"}},"oxidized_copper_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/oxidized_copper_door_bottom","top":"minecraft:block/oxidized_copper_door_top"}},"oxidized_copper_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/oxidized_copper_door_bottom","top":"minecraft:block/oxidized_copper_door_top"}},"oxidized_copper_grate":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/oxidized_copper_grate"}},"oxidized_copper_trapdoor_bottom":{"parent":"minecraft:block/template_trapdoor_bottom","textures":{"texture":"minecraft:block/oxidized_copper_trapdoor"}},"oxidized_copper_trapdoor_open":{"parent":"minecraft:block/template_trapdoor_open","textures":{"texture":"minecraft:block/oxidized_copper_trapdoor"}},"oxidized_copper_trapdoor_top":{"parent":"minecraft:block/template_trapdoor_top","textures":{"texture":"minecraft:block/oxidized_copper_trapdoor"}},"oxidized_cut_copper":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/oxidized_cut_copper"}},"oxidized_cut_copper_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/oxidized_cut_copper","side":"minecraft:block/oxidized_cut_copper","top":"minecraft:block/oxidized_cut_copper"}},"oxidized_cut_copper_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/oxidized_cut_copper","side":"minecraft:block/oxidized_cut_copper","top":"minecraft:block/oxidized_cut_copper"}},"oxidized_cut_copper_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/oxidized_cut_copper","side":"minecraft:block/oxidized_cut_copper","top":"minecraft:block/oxidized_cut_copper"}},"oxidized_cut_copper_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/oxidized_cut_copper","side":"minecraft:block/oxidized_cut_copper","top":"minecraft:block/oxidized_cut_copper"}},"oxidized_cut_copper_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/oxidized_cut_copper","side":"minecraft:block/oxidized_cut_copper","top":"minecraft:block/oxidized_cut_copper"}},"packed_ice":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/packed_ice"}},"packed_mud":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/packed_mud"}},"pale_hanging_moss":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/pale_hanging_moss"}},"pale_hanging_moss_tip":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/pale_hanging_moss_tip"}},"pale_moss_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/pale_moss_block"}},"pale_moss_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/pale_moss_carpet"}},"pale_moss_carpet_side_small":{"parent":"minecraft:block/mossy_carpet_side","textures":{"side":"minecraft:block/pale_moss_carpet_side_small"}},"pale_moss_carpet_side_tall":{"parent":"minecraft:block/mossy_carpet_side","textures":{"side":"minecraft:block/pale_moss_carpet_side_tall"}},"pale_oak_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/pale_oak_planks"}},"pale_oak_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/pale_oak_planks"}},"pale_oak_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/pale_oak_planks"}},"pale_oak_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/pale_oak_door_bottom","top":"minecraft:block/pale_oak_door_top"}},"pale_oak_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/pale_oak_door_bottom","top":"minecraft:block/pale_oak_door_top"}},"pale_oak_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/pale_oak_door_bottom","top":"minecraft:block/pale_oak_door_top"}},"pale_oak_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/pale_oak_door_bottom","top":"minecraft:block/pale_oak_door_top"}},"pale_oak_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/pale_oak_door_bottom","top":"minecraft:block/pale_oak_door_top"}},"pale_oak_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/pale_oak_door_bottom","top":"minecraft:block/pale_oak_door_top"}},"pale_oak_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/pale_oak_door_bottom","top":"minecraft:block/pale_oak_door_top"}},"pale_oak_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/pale_oak_door_bottom","top":"minecraft:block/pale_oak_door_top"}},"pale_oak_fence_gate":{"parent":"minecraft:block/template_fence_gate","textures":{"texture":"minecraft:block/pale_oak_planks"}},"pale_oak_fence_gate_open":{"parent":"minecraft:block/template_fence_gate_open","textures":{"texture":"minecraft:block/pale_oak_planks"}},"pale_oak_fence_gate_wall":{"parent":"minecraft:block/template_fence_gate_wall","textures":{"texture":"minecraft:block/pale_oak_planks"}},"pale_oak_fence_gate_wall_open":{"parent":"minecraft:block/template_fence_gate_wall_open","textures":{"texture":"minecraft:block/pale_oak_planks"}},"pale_oak_fence_inventory":{"parent":"minecraft:block/fence_inventory","textures":{"texture":"minecraft:block/pale_oak_planks"}},"pale_oak_fence_post":{"parent":"minecraft:block/fence_post","textures":{"texture":"minecraft:block/pale_oak_planks"}},"pale_oak_fence_side":{"parent":"minecraft:block/fence_side","textures":{"texture":"minecraft:block/pale_oak_planks"}},"pale_oak_hanging_sign":{"textures":{"particle":"minecraft:block/stripped_pale_oak_log"}},"pale_oak_leaves":{"parent":"minecraft:block/leaves","textures":{"all":"minecraft:block/pale_oak_leaves"}},"pale_oak_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/pale_oak_log_top","side":"minecraft:block/pale_oak_log"}},"pale_oak_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/pale_oak_log_top","side":"minecraft:block/pale_oak_log"}},"pale_oak_planks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/pale_oak_planks"}},"pale_oak_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/pale_oak_planks"}},"pale_oak_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/pale_oak_planks"}},"pale_oak_sapling":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/pale_oak_sapling"}},"pale_oak_sign":{"textures":{"particle":"minecraft:block/pale_oak_planks"}},"pale_oak_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/pale_oak_planks","side":"minecraft:block/pale_oak_planks","top":"minecraft:block/pale_oak_planks"}},"pale_oak_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/pale_oak_planks","side":"minecraft:block/pale_oak_planks","top":"minecraft:block/pale_oak_planks"}},"pale_oak_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/pale_oak_planks","side":"minecraft:block/pale_oak_planks","top":"minecraft:block/pale_oak_planks"}},"pale_oak_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/pale_oak_planks","side":"minecraft:block/pale_oak_planks","top":"minecraft:block/pale_oak_planks"}},"pale_oak_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/pale_oak_planks","side":"minecraft:block/pale_oak_planks","top":"minecraft:block/pale_oak_planks"}},"pale_oak_trapdoor_bottom":{"parent":"minecraft:block/template_orientable_trapdoor_bottom","textures":{"texture":"minecraft:block/pale_oak_trapdoor"}},"pale_oak_trapdoor_open":{"parent":"minecraft:block/template_orientable_trapdoor_open","textures":{"texture":"minecraft:block/pale_oak_trapdoor"}},"pale_oak_trapdoor_top":{"parent":"minecraft:block/template_orientable_trapdoor_top","textures":{"texture":"minecraft:block/pale_oak_trapdoor"}},"pale_oak_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/pale_oak_log","side":"minecraft:block/pale_oak_log"}},"pearlescent_froglight":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/pearlescent_froglight_top","side":"minecraft:block/pearlescent_froglight_side"}},"pearlescent_froglight_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/pearlescent_froglight_top","side":"minecraft:block/pearlescent_froglight_side"}},"peony_bottom":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/peony_bottom"}},"peony_top":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/peony_top"}},"petrified_oak_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/oak_planks","side":"minecraft:block/oak_planks","top":"minecraft:block/oak_planks"}},"petrified_oak_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/oak_planks","side":"minecraft:block/oak_planks","top":"minecraft:block/oak_planks"}},"pink_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/pink_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"pink_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/pink_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"pink_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/pink_candle","particle":"minecraft:block/pink_candle"}},"pink_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/pink_candle_lit","particle":"minecraft:block/pink_candle_lit"}},"pink_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/pink_candle","particle":"minecraft:block/pink_candle"}},"pink_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/pink_candle_lit","particle":"minecraft:block/pink_candle_lit"}},"pink_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/pink_candle","particle":"minecraft:block/pink_candle"}},"pink_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/pink_candle_lit","particle":"minecraft:block/pink_candle_lit"}},"pink_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/pink_candle","particle":"minecraft:block/pink_candle"}},"pink_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/pink_candle_lit","particle":"minecraft:block/pink_candle_lit"}},"pink_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/pink_wool"}},"pink_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/pink_concrete"}},"pink_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/pink_concrete_powder"}},"pink_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/pink_glazed_terracotta"}},"pink_petals_1":{"parent":"minecraft:block/flowerbed_1","textures":{"flowerbed":"minecraft:block/pink_petals","stem":"minecraft:block/pink_petals_stem"}},"pink_petals_2":{"parent":"minecraft:block/flowerbed_2","textures":{"flowerbed":"minecraft:block/pink_petals","stem":"minecraft:block/pink_petals_stem"}},"pink_petals_3":{"parent":"minecraft:block/flowerbed_3","textures":{"flowerbed":"minecraft:block/pink_petals","stem":"minecraft:block/pink_petals_stem"}},"pink_petals_4":{"parent":"minecraft:block/flowerbed_4","textures":{"flowerbed":"minecraft:block/pink_petals","stem":"minecraft:block/pink_petals_stem"}},"pink_shulker_box":{"textures":{"particle":"minecraft:block/pink_shulker_box"}},"pink_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/pink_stained_glass"}},"pink_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/pink_stained_glass"}},"pink_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/pink_stained_glass"}},"pink_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/pink_stained_glass_pane_top","pane":"minecraft:block/pink_stained_glass"}},"pink_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/pink_stained_glass_pane_top","pane":"minecraft:block/pink_stained_glass"}},"pink_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/pink_stained_glass_pane_top","pane":"minecraft:block/pink_stained_glass"}},"pink_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/pink_terracotta"}},"pink_tulip":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/pink_tulip"}},"pink_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/pink_wool"}},"piston":{"parent":"minecraft:block/template_piston","textures":{"bottom":"minecraft:block/piston_bottom","platform":"minecraft:block/piston_top","side":"minecraft:block/piston_side"}},"piston_base":{"parent":"block/piston_extended","textures":{"bottom":"block/piston_bottom","side":"block/piston_side","inside":"block/piston_inner"}},"piston_extended":{"textures":{"particle":"#side"},"elements":[{"from":[0,0,4],"to":[16,16,16],"faces":{"down":{"uv":[0,4,16,16],"texture":"#side","cullface":"down","rotation":180},"up":{"uv":[0,4,16,16],"texture":"#side","cullface":"up"},"north":{"uv":[0,0,16,16],"texture":"#inside"},"south":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"south"},"west":{"uv":[0,4,16,16],"texture":"#side","cullface":"west","rotation":270},"east":{"uv":[0,4,16,16],"texture":"#side","cullface":"east","rotation":90}}}]},"piston_head":{"parent":"minecraft:block/template_piston_head","textures":{"platform":"minecraft:block/piston_top","side":"minecraft:block/piston_side","unsticky":"minecraft:block/piston_top"}},"piston_head_short":{"parent":"minecraft:block/template_piston_head_short","textures":{"platform":"minecraft:block/piston_top","side":"minecraft:block/piston_side","unsticky":"minecraft:block/piston_top"}},"piston_head_short_sticky":{"parent":"minecraft:block/template_piston_head_short","textures":{"platform":"minecraft:block/piston_top_sticky","side":"minecraft:block/piston_side","unsticky":"minecraft:block/piston_top"}},"piston_head_sticky":{"parent":"minecraft:block/template_piston_head","textures":{"platform":"minecraft:block/piston_top_sticky","side":"minecraft:block/piston_side","unsticky":"minecraft:block/piston_top"}},"piston_inventory":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/piston_bottom","side":"minecraft:block/piston_side","top":"minecraft:block/piston_top"}},"pitcher_crop_bottom_stage_0":{"ambientocclusion":false,"textures":{"particle":"block/pitcher_crop_top","pitcher_top":"block/pitcher_crop_top","pitcher_side":"block/pitcher_crop_side","pitcher_bottom":"block/pitcher_crop_bottom"},"elements":[{"name":"pitcher_crop_bottom_stage_0","from":[5,-1,5],"to":[11,3,11],"faces":{"north":{"uv":[3,10,9,14],"texture":"#pitcher_side"},"east":{"uv":[3,10,9,14],"texture":"#pitcher_side"},"south":{"uv":[3,10,9,14],"texture":"#pitcher_side"},"west":{"uv":[3,10,9,14],"texture":"#pitcher_side"},"up":{"uv":[5,5,11,11],"texture":"#pitcher_top"},"down":{"uv":[5,5,11,11],"texture":"#pitcher_bottom"}}}]},"pitcher_crop_bottom_stage_1":{"ambientocclusion":false,"textures":{"particle":"block/pitcher_crop_top","stage_1":"block/pitcher_crop_bottom_stage_1","pitcher_top":"block/pitcher_crop_top","pitcher_side":"block/pitcher_crop_side","pitcher_bottom":"block/pitcher_crop_bottom"},"elements":[{"name":"pitcher_crop_bottom_stage_1","from":[0,5,8],"to":[16,21,8],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,5,8]},"faces":{"north":{"uv":[0,0,16,16],"texture":"#stage_1"},"south":{"uv":[0,0,16,16],"texture":"#stage_1"}}},{"name":"pitcher_crop_bottom_stage_1","from":[0,5,8],"to":[16,21,8],"shade":false,"rotation":{"angle":-45,"axis":"y","origin":[8,5,8]},"faces":{"north":{"uv":[0,0,16,16],"texture":"#stage_1"},"south":{"uv":[0,0,16,16],"texture":"#stage_1"}}},{"name":"pitcher_crop_bottom_stage_1","from":[3,-1,3],"to":[13,5,13],"faces":{"north":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"east":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"south":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"west":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"up":{"uv":[3,3,13,13],"texture":"#pitcher_top"},"down":{"uv":[3,3,13,13],"texture":"#pitcher_bottom"}}}]},"pitcher_crop_bottom_stage_2":{"ambientocclusion":false,"textures":{"particle":"block/pitcher_crop_top","stage_2":"block/pitcher_crop_bottom_stage_2","pitcher_top":"block/pitcher_crop_top","pitcher_side":"block/pitcher_crop_side","pitcher_bottom":"block/pitcher_crop_bottom"},"elements":[{"name":"pitcher_crop_bottom_stage_2","from":[0,5,8],"to":[16,21,8],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,6,8]},"faces":{"north":{"uv":[0,0,16,16],"texture":"#stage_2"},"south":{"uv":[0,0,16,16],"texture":"#stage_2"}}},{"name":"pitcher_crop_bottom_stage_2","from":[8,5,0],"to":[8,21,16],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,6,8]},"faces":{"east":{"uv":[0,0,16,16],"texture":"#stage_2"},"west":{"uv":[0,0,16,16],"texture":"#stage_2"}}},{"name":"pitcher_crop_bottom_stage_1","from":[3,-1,3],"to":[13,5,13],"faces":{"north":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"east":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"south":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"west":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"up":{"uv":[3,3,13,13],"texture":"#pitcher_top"},"down":{"uv":[3,3,13,13],"texture":"#pitcher_bottom"}}}]},"pitcher_crop_bottom_stage_3":{"ambientocclusion":false,"textures":{"particle":"block/pitcher_crop_top","stage_3_bottom":"block/pitcher_crop_bottom_stage_3","pitcher_top":"block/pitcher_crop_top","pitcher_side":"block/pitcher_crop_side","pitcher_bottom":"block/pitcher_crop_bottom"},"elements":[{"name":"pitcher_crop_bottom_stage_3","from":[0,0,8],"to":[16,16,8],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,0,8]},"faces":{"north":{"uv":[0,0,16,16],"texture":"#stage_3_bottom"},"south":{"uv":[0,0,16,16],"texture":"#stage_3_bottom"}}},{"name":"pitcher_crop_bottom_stage_3","from":[0,0,8],"to":[16,16,8],"shade":false,"rotation":{"angle":-45,"axis":"y","origin":[8,0,8]},"faces":{"north":{"uv":[0,0,16,16],"texture":"#stage_3_bottom"},"south":{"uv":[0,0,16,16],"texture":"#stage_3_bottom"}}},{"name":"pitcher_crop_bottom_stage_1","from":[3,-1,3],"to":[13,5,13],"faces":{"north":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"east":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"south":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"west":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"up":{"uv":[3,3,13,13],"texture":"#pitcher_top"},"down":{"uv":[3,3,13,13],"texture":"#pitcher_bottom"}}}]},"pitcher_crop_bottom_stage_4":{"ambientocclusion":false,"textures":{"particle":"block/pitcher_crop_top","stage_4_bottom":"block/pitcher_crop_bottom_stage_4","pitcher_top":"block/pitcher_crop_top","pitcher_side":"block/pitcher_crop_side","pitcher_bottom":"block/pitcher_crop_bottom"},"elements":[{"name":"pitcher_crop_bottom_stage_4","from":[8,0,0],"to":[8,16,16],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,0,8]},"faces":{"east":{"uv":[0,0,16,16],"texture":"#stage_4_bottom"},"west":{"uv":[0,0,16,16],"texture":"#stage_4_bottom"}}},{"name":"pitcher_crop_bottom_stage_4","from":[0,0,8],"to":[16,16,8],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,0,8]},"faces":{"north":{"uv":[0,0,16,16],"texture":"#stage_4_bottom"},"south":{"uv":[0,0,16,16],"texture":"#stage_4_bottom"}}},{"name":"pitcher_crop_bottom_stage_1","from":[3,-1,3],"to":[13,5,13],"faces":{"north":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"east":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"south":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"west":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"up":{"uv":[3,3,13,13],"texture":"#pitcher_top"},"down":{"uv":[3,3,13,13],"texture":"#pitcher_bottom"}}}]},"pitcher_crop_top_stage_0":{"ambientocclusion":false,"textures":{"particle":"block/pitcher_crop_top"}},"pitcher_crop_top_stage_1":{"ambientocclusion":false,"textures":{"particle":"block/pitcher_crop_top"}},"pitcher_crop_top_stage_2":{"ambientocclusion":false,"textures":{"particle":"block/pitcher_crop_top"}},"pitcher_crop_top_stage_3":{"ambientocclusion":false,"textures":{"particle":"block/pitcher_crop_top","stage_3_top":"block/pitcher_crop_top_stage_3"},"elements":[{"name":"pitcher_crop_top_stage_3","from":[0,0,8],"to":[16,16,8],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,16,16],"texture":"#stage_3_top"},"south":{"uv":[0,0,16,16],"texture":"#stage_3_top"}}},{"name":"pitcher_crop_top_stage_3","from":[0,0,8],"to":[16,16,8],"shade":false,"rotation":{"angle":-45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,16,16],"texture":"#stage_3_top"},"south":{"uv":[0,0,16,16],"texture":"#stage_3_top"}}}]},"pitcher_crop_top_stage_4":{"ambientocclusion":false,"textures":{"particle":"block/pitcher_crop_top","stage_4_top":"block/pitcher_crop_top_stage_4","pitcher_top":"block/pitcher_crop_top","pitcher_side":"block/pitcher_crop_side"},"elements":[{"name":"pitcher_crop_top_stage_4","from":[8,0,0],"to":[8,16,16],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,0,8]},"faces":{"east":{"uv":[0,0,16,16],"texture":"#stage_4_top"},"west":{"uv":[0,0,16,16],"texture":"#stage_4_top"}}},{"name":"pitcher_crop_top_stage_4","from":[0,0,8],"to":[16,16,8],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,0,8]},"faces":{"north":{"uv":[0,0,16,16],"texture":"#stage_4_top"},"south":{"uv":[0,0,16,16],"texture":"#stage_4_top"}}}]},"pitcher_plant_bottom":{"ambientocclusion":false,"textures":{"particle":"block/pitcher_crop_bottom_stage_4","bottom":"block/pitcher_crop_bottom_stage_4"},"elements":[{"name":"pitcher_plant_bottom","from":[8,-5,0],"to":[8,11,16],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,3,8]},"faces":{"north":{"uv":[0,0,0,16],"texture":"#bottom"},"east":{"uv":[0,0,16,16],"texture":"#bottom"},"south":{"uv":[0,0,0,16],"texture":"#bottom"},"west":{"uv":[0,0,16,16],"texture":"#bottom"},"up":{"uv":[0,0,16,0],"rotation":90,"texture":"#bottom"},"down":{"uv":[0,0,16,0],"rotation":270,"texture":"#bottom"}}},{"name":"pitcher_plant_bottom","from":[0,-5,8],"to":[16,11,8],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,3,8]},"faces":{"north":{"uv":[0,0,16,16],"texture":"#bottom"},"east":{"uv":[0,0,0,16],"texture":"#bottom"},"south":{"uv":[0,0,16,16],"texture":"#bottom"},"west":{"uv":[0,0,0,16],"texture":"#bottom"},"up":{"uv":[0,0,16,0],"texture":"#bottom"},"down":{"uv":[0,0,16,0],"texture":"#bottom"}}}]},"pitcher_plant_top":{"ambientocclusion":false,"textures":{"particle":"block/pitcher_crop_top_stage_4","top":"block/pitcher_crop_top_stage_4"},"elements":[{"name":"pitcher_plant_top","from":[8,-5,0],"to":[8,11,16],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,19,8]},"faces":{"north":{"uv":[0,0,0,16],"texture":"#top"},"east":{"uv":[0,0,16,16],"texture":"#top"},"south":{"uv":[0,0,0,16],"texture":"#top"},"west":{"uv":[0,0,16,16],"texture":"#top"},"up":{"uv":[0,0,16,0],"rotation":90,"texture":"#top"},"down":{"uv":[0,0,16,0],"rotation":270,"texture":"#top"}}},{"name":"pitcher_plant_top","from":[0,-5,8],"to":[16,11,8],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,19,8]},"faces":{"north":{"uv":[0,0,16,16],"texture":"#top"},"east":{"uv":[0,0,0,16],"texture":"#top"},"south":{"uv":[0,0,16,16],"texture":"#top"},"west":{"uv":[0,0,0,16],"texture":"#top"},"up":{"uv":[0,0,16,0],"texture":"#top"},"down":{"uv":[0,0,16,0],"texture":"#top"}}}]},"podzol":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/dirt","side":"minecraft:block/podzol_side","top":"minecraft:block/podzol_top"}},"pointed_dripstone":{"ambientocclusion":true,"textures":{"particle":"#cross"},"elements":[{"from":[0.8,0,8],"to":[15.2,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#cross"},"south":{"uv":[0,0,16,16],"texture":"#cross"}}},{"from":[8,0,0.8],"to":[8,16,15.2],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#cross"},"east":{"uv":[0,0,16,16],"texture":"#cross"}}}]},"pointed_dripstone_down_base":{"parent":"minecraft:block/pointed_dripstone","textures":{"cross":"minecraft:block/pointed_dripstone_down_base"}},"pointed_dripstone_down_frustum":{"parent":"minecraft:block/pointed_dripstone","textures":{"cross":"minecraft:block/pointed_dripstone_down_frustum"}},"pointed_dripstone_down_middle":{"parent":"minecraft:block/pointed_dripstone","textures":{"cross":"minecraft:block/pointed_dripstone_down_middle"}},"pointed_dripstone_down_tip":{"parent":"minecraft:block/pointed_dripstone","textures":{"cross":"minecraft:block/pointed_dripstone_down_tip"}},"pointed_dripstone_down_tip_merge":{"parent":"minecraft:block/pointed_dripstone","textures":{"cross":"minecraft:block/pointed_dripstone_down_tip_merge"}},"pointed_dripstone_up_base":{"parent":"minecraft:block/pointed_dripstone","textures":{"cross":"minecraft:block/pointed_dripstone_up_base"}},"pointed_dripstone_up_frustum":{"parent":"minecraft:block/pointed_dripstone","textures":{"cross":"minecraft:block/pointed_dripstone_up_frustum"}},"pointed_dripstone_up_middle":{"parent":"minecraft:block/pointed_dripstone","textures":{"cross":"minecraft:block/pointed_dripstone_up_middle"}},"pointed_dripstone_up_tip":{"parent":"minecraft:block/pointed_dripstone","textures":{"cross":"minecraft:block/pointed_dripstone_up_tip"}},"pointed_dripstone_up_tip_merge":{"parent":"minecraft:block/pointed_dripstone","textures":{"cross":"minecraft:block/pointed_dripstone_up_tip_merge"}},"polished_andesite":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/polished_andesite"}},"polished_andesite_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/polished_andesite","side":"minecraft:block/polished_andesite","top":"minecraft:block/polished_andesite"}},"polished_andesite_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/polished_andesite","side":"minecraft:block/polished_andesite","top":"minecraft:block/polished_andesite"}},"polished_andesite_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/polished_andesite","side":"minecraft:block/polished_andesite","top":"minecraft:block/polished_andesite"}},"polished_andesite_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/polished_andesite","side":"minecraft:block/polished_andesite","top":"minecraft:block/polished_andesite"}},"polished_andesite_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/polished_andesite","side":"minecraft:block/polished_andesite","top":"minecraft:block/polished_andesite"}},"polished_basalt":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/polished_basalt_top","side":"minecraft:block/polished_basalt_side"}},"polished_blackstone":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/polished_blackstone"}},"polished_blackstone_brick_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/polished_blackstone_bricks","side":"minecraft:block/polished_blackstone_bricks","top":"minecraft:block/polished_blackstone_bricks"}},"polished_blackstone_brick_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/polished_blackstone_bricks","side":"minecraft:block/polished_blackstone_bricks","top":"minecraft:block/polished_blackstone_bricks"}},"polished_blackstone_brick_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/polished_blackstone_bricks","side":"minecraft:block/polished_blackstone_bricks","top":"minecraft:block/polished_blackstone_bricks"}},"polished_blackstone_brick_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/polished_blackstone_bricks","side":"minecraft:block/polished_blackstone_bricks","top":"minecraft:block/polished_blackstone_bricks"}},"polished_blackstone_brick_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/polished_blackstone_bricks","side":"minecraft:block/polished_blackstone_bricks","top":"minecraft:block/polished_blackstone_bricks"}},"polished_blackstone_brick_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/polished_blackstone_bricks"}},"polished_blackstone_brick_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/polished_blackstone_bricks"}},"polished_blackstone_brick_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/polished_blackstone_bricks"}},"polished_blackstone_brick_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/polished_blackstone_bricks"}},"polished_blackstone_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/polished_blackstone_bricks"}},"polished_blackstone_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/polished_blackstone"}},"polished_blackstone_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/polished_blackstone"}},"polished_blackstone_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/polished_blackstone"}},"polished_blackstone_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/polished_blackstone"}},"polished_blackstone_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/polished_blackstone"}},"polished_blackstone_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/polished_blackstone","side":"minecraft:block/polished_blackstone","top":"minecraft:block/polished_blackstone"}},"polished_blackstone_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/polished_blackstone","side":"minecraft:block/polished_blackstone","top":"minecraft:block/polished_blackstone"}},"polished_blackstone_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/polished_blackstone","side":"minecraft:block/polished_blackstone","top":"minecraft:block/polished_blackstone"}},"polished_blackstone_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/polished_blackstone","side":"minecraft:block/polished_blackstone","top":"minecraft:block/polished_blackstone"}},"polished_blackstone_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/polished_blackstone","side":"minecraft:block/polished_blackstone","top":"minecraft:block/polished_blackstone"}},"polished_blackstone_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/polished_blackstone"}},"polished_blackstone_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/polished_blackstone"}},"polished_blackstone_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/polished_blackstone"}},"polished_blackstone_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/polished_blackstone"}},"polished_deepslate":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/polished_deepslate"}},"polished_deepslate_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/polished_deepslate","side":"minecraft:block/polished_deepslate","top":"minecraft:block/polished_deepslate"}},"polished_deepslate_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/polished_deepslate","side":"minecraft:block/polished_deepslate","top":"minecraft:block/polished_deepslate"}},"polished_deepslate_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/polished_deepslate","side":"minecraft:block/polished_deepslate","top":"minecraft:block/polished_deepslate"}},"polished_deepslate_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/polished_deepslate","side":"minecraft:block/polished_deepslate","top":"minecraft:block/polished_deepslate"}},"polished_deepslate_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/polished_deepslate","side":"minecraft:block/polished_deepslate","top":"minecraft:block/polished_deepslate"}},"polished_deepslate_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/polished_deepslate"}},"polished_deepslate_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/polished_deepslate"}},"polished_deepslate_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/polished_deepslate"}},"polished_deepslate_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/polished_deepslate"}},"polished_diorite":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/polished_diorite"}},"polished_diorite_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/polished_diorite","side":"minecraft:block/polished_diorite","top":"minecraft:block/polished_diorite"}},"polished_diorite_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/polished_diorite","side":"minecraft:block/polished_diorite","top":"minecraft:block/polished_diorite"}},"polished_diorite_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/polished_diorite","side":"minecraft:block/polished_diorite","top":"minecraft:block/polished_diorite"}},"polished_diorite_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/polished_diorite","side":"minecraft:block/polished_diorite","top":"minecraft:block/polished_diorite"}},"polished_diorite_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/polished_diorite","side":"minecraft:block/polished_diorite","top":"minecraft:block/polished_diorite"}},"polished_granite":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/polished_granite"}},"polished_granite_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/polished_granite","side":"minecraft:block/polished_granite","top":"minecraft:block/polished_granite"}},"polished_granite_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/polished_granite","side":"minecraft:block/polished_granite","top":"minecraft:block/polished_granite"}},"polished_granite_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/polished_granite","side":"minecraft:block/polished_granite","top":"minecraft:block/polished_granite"}},"polished_granite_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/polished_granite","side":"minecraft:block/polished_granite","top":"minecraft:block/polished_granite"}},"polished_granite_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/polished_granite","side":"minecraft:block/polished_granite","top":"minecraft:block/polished_granite"}},"polished_tuff":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/polished_tuff"}},"polished_tuff_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/polished_tuff","side":"minecraft:block/polished_tuff","top":"minecraft:block/polished_tuff"}},"polished_tuff_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/polished_tuff","side":"minecraft:block/polished_tuff","top":"minecraft:block/polished_tuff"}},"polished_tuff_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/polished_tuff","side":"minecraft:block/polished_tuff","top":"minecraft:block/polished_tuff"}},"polished_tuff_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/polished_tuff","side":"minecraft:block/polished_tuff","top":"minecraft:block/polished_tuff"}},"polished_tuff_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/polished_tuff","side":"minecraft:block/polished_tuff","top":"minecraft:block/polished_tuff"}},"polished_tuff_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/polished_tuff"}},"polished_tuff_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/polished_tuff"}},"polished_tuff_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/polished_tuff"}},"polished_tuff_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/polished_tuff"}},"poppy":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/poppy"}},"potatoes_stage0":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/potatoes_stage0"}},"potatoes_stage1":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/potatoes_stage1"}},"potatoes_stage2":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/potatoes_stage2"}},"potatoes_stage3":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/potatoes_stage3"}},"potted_acacia_sapling":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/acacia_sapling"}},"potted_allium":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/allium"}},"potted_azalea_bush":{"parent":"minecraft:block/template_potted_azalea_bush","textures":{"plant":"minecraft:block/potted_azalea_bush_plant","side":"minecraft:block/potted_azalea_bush_side","top":"minecraft:block/potted_azalea_bush_top"}},"potted_azure_bluet":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/azure_bluet"}},"potted_bamboo":{"ambientocclusion":false,"textures":{"particle":"block/flower_pot","flowerpot":"block/flower_pot","dirt":"block/dirt","bamboo":"block/bamboo_stalk","leaf":"block/bamboo_singleleaf"},"elements":[{"from":[5,0,5],"to":[6,6,11],"faces":{"down":{"uv":[5,5,6,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[5,5,6,11],"texture":"#flowerpot"},"north":{"uv":[10,10,11,16],"texture":"#flowerpot"},"south":{"uv":[5,10,6,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[10,0,5],"to":[11,6,11],"faces":{"down":{"uv":[10,5,11,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[10,5,11,11],"texture":"#flowerpot"},"north":{"uv":[5,10,6,16],"texture":"#flowerpot"},"south":{"uv":[10,10,11,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[6,0,5],"to":[10,6,6],"faces":{"down":{"uv":[6,10,10,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,5,10,6],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,10],"to":[10,6,11],"faces":{"down":{"uv":[6,5,10,6],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,10,10,11],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,6],"to":[10,4,10],"faces":{"down":{"uv":[6,12,10,16],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,6,10,10],"texture":"#dirt"}}},{"from":[7,0,7],"to":[9,16,9],"faces":{"up":{"uv":[13,0,15,2],"texture":"#bamboo","cullface":"up"},"north":{"uv":[6,0,8,16],"texture":"#bamboo"},"south":{"uv":[6,0,8,16],"texture":"#bamboo"},"west":{"uv":[6,0,8,16],"texture":"#bamboo"},"east":{"uv":[6,0,8,16],"texture":"#bamboo"}}},{"from":[0,2,8],"to":[16,18,8],"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#leaf"},"south":{"uv":[16,0,0,16],"texture":"#leaf"}}}]},"potted_birch_sapling":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/birch_sapling"}},"potted_blue_orchid":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/blue_orchid"}},"potted_brown_mushroom":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/brown_mushroom"}},"potted_cactus":{"ambientocclusion":false,"textures":{"particle":"block/flower_pot","flowerpot":"block/flower_pot","cactus_top":"block/cactus_top","cactus":"block/cactus_side"},"elements":[{"from":[5,0,5],"to":[11,6,11],"faces":{"down":{"uv":[5,5,6,11],"texture":"#flowerpot","cullface":"down"},"up":{"texture":"#flowerpot"},"north":{"texture":"#flowerpot"},"south":{"texture":"#flowerpot"},"west":{"texture":"#flowerpot"},"east":{"texture":"#flowerpot"}}},{"from":[6,5,6],"to":[10,16,10],"faces":{"up":{"texture":"#cactus_top","cullface":"up"},"north":{"uv":[6,0,10,11],"texture":"#cactus"},"south":{"uv":[6,0,10,11],"texture":"#cactus"},"west":{"uv":[6,0,10,11],"texture":"#cactus"},"east":{"uv":[6,0,10,11],"texture":"#cactus"}}}]},"potted_cherry_sapling":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/cherry_sapling"}},"potted_closed_eyeblossom":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/closed_eyeblossom"}},"potted_cornflower":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/cornflower"}},"potted_crimson_fungus":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/crimson_fungus"}},"potted_crimson_roots":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/crimson_roots_pot"}},"potted_dandelion":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/dandelion"}},"potted_dark_oak_sapling":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/dark_oak_sapling"}},"potted_dead_bush":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/dead_bush"}},"potted_fern":{"parent":"minecraft:block/tinted_flower_pot_cross","textures":{"plant":"minecraft:block/fern"}},"potted_flowering_azalea_bush":{"parent":"minecraft:block/template_potted_azalea_bush","textures":{"plant":"minecraft:block/potted_flowering_azalea_bush_plant","side":"minecraft:block/potted_flowering_azalea_bush_side","top":"minecraft:block/potted_flowering_azalea_bush_top"}},"potted_jungle_sapling":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/jungle_sapling"}},"potted_lily_of_the_valley":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/lily_of_the_valley"}},"potted_mangrove_propagule":{"ambientocclusion":false,"textures":{"particle":"block/flower_pot","sapling":"block/mangrove_propagule","flowerpot":"block/flower_pot","dirt":"block/dirt"},"elements":[{"name":"leaves","from":[4.5,9,8],"to":[11.5,15,8],"rotation":{"angle":45,"axis":"y","origin":[8,0,8],"rescale":true},"faces":{"north":{"uv":[4,1,11,7],"texture":"#sapling"},"south":{"uv":[4,1,11,7],"texture":"#sapling"}}},{"name":"leaves","from":[8,9,4.5],"to":[8,15,11.5],"rotation":{"angle":45,"axis":"y","origin":[8,0,8],"rescale":true},"faces":{"east":{"uv":[4,1,11,7],"texture":"#sapling"},"west":{"uv":[4,1,11,7],"texture":"#sapling"}}},{"name":"hypocotyl","from":[8,0,7],"to":[8,9,9],"rotation":{"angle":45,"axis":"y","origin":[8,0,8],"rescale":true},"faces":{"east":{"uv":[7,7,9,16],"texture":"#sapling"},"west":{"uv":[7,7,9,16],"texture":"#sapling"}}},{"name":"hypocotyl","from":[7,0,8],"to":[9,9,8],"rotation":{"angle":45,"axis":"y","origin":[8,0,8],"rescale":true},"faces":{"north":{"uv":[7,7,9,16],"texture":"#sapling"},"south":{"uv":[7,7,9,16],"texture":"#sapling"}}},{"from":[5,0,5],"to":[6,6,11],"faces":{"down":{"uv":[5,5,6,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[5,5,6,11],"texture":"#flowerpot"},"north":{"uv":[10,10,11,16],"texture":"#flowerpot"},"south":{"uv":[5,10,6,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[10,0,5],"to":[11,6,11],"faces":{"down":{"uv":[10,5,11,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[10,5,11,11],"texture":"#flowerpot"},"north":{"uv":[5,10,6,16],"texture":"#flowerpot"},"south":{"uv":[10,10,11,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[6,0,5],"to":[10,6,6],"faces":{"down":{"uv":[6,10,10,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,5,10,6],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,10],"to":[10,6,11],"faces":{"down":{"uv":[6,5,10,6],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,10,10,11],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,6],"to":[10,4,10],"faces":{"down":{"uv":[6,12,10,16],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,6,10,10],"texture":"#dirt"}}}]},"potted_oak_sapling":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/oak_sapling"}},"potted_open_eyeblossom":{"parent":"minecraft:block/flower_pot_cross_emissive","textures":{"cross_emissive":"minecraft:block/open_eyeblossom_emissive","plant":"minecraft:block/open_eyeblossom"}},"potted_orange_tulip":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/orange_tulip"}},"potted_oxeye_daisy":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/oxeye_daisy"}},"potted_pale_oak_sapling":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/pale_oak_sapling"}},"potted_pink_tulip":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/pink_tulip"}},"potted_poppy":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/poppy"}},"potted_red_mushroom":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/red_mushroom"}},"potted_red_tulip":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/red_tulip"}},"potted_spruce_sapling":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/spruce_sapling"}},"potted_torchflower":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/torchflower"}},"potted_warped_fungus":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/warped_fungus"}},"potted_warped_roots":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/warped_roots_pot"}},"potted_white_tulip":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/white_tulip"}},"potted_wither_rose":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/wither_rose"}},"powder_snow":{"parent":"block/block","textures":{"texture":"block/powder_snow","particle":"#texture"},"elements":[{"from":[0,15.998,0],"to":[16,16,16],"faces":{"down":{"uv":[0,16,16,0],"texture":"#texture","cullface":"up"},"up":{"uv":[0,0,16,16],"texture":"#texture","cullface":"up"}}},{"from":[0,0,0],"to":[16,0.002,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture","cullface":"down"},"up":{"uv":[0,16,16,0],"texture":"#texture","cullface":"down"}}},{"from":[0,0,0],"to":[16,16,0.002],"faces":{"north":{"uv":[0,0,16,16],"texture":"#texture","cullface":"north"},"south":{"uv":[16,0,0,16],"texture":"#texture","cullface":"north"}}},{"from":[0,0,15.998],"to":[16,16,16],"faces":{"north":{"uv":[16,0,0,16],"texture":"#texture","cullface":"south"},"south":{"uv":[0,0,16,16],"texture":"#texture","cullface":"south"}}},{"from":[0,0,0],"to":[0.002,16,16],"faces":{"east":{"uv":[16,0,0,16],"texture":"#texture","cullface":"west"},"west":{"uv":[0,0,16,16],"texture":"#texture","cullface":"west"}}},{"from":[15.998,0,0],"to":[16,16,16],"faces":{"east":{"uv":[0,0,16,16],"texture":"#texture","cullface":"east"},"west":{"uv":[16,0,0,16],"texture":"#texture","cullface":"east"}}}]},"powder_snow_cauldron_full":{"parent":"minecraft:block/template_cauldron_full","textures":{"bottom":"minecraft:block/cauldron_bottom","content":"minecraft:block/powder_snow","inside":"minecraft:block/cauldron_inner","particle":"minecraft:block/cauldron_side","side":"minecraft:block/cauldron_side","top":"minecraft:block/cauldron_top"}},"powder_snow_cauldron_level1":{"parent":"minecraft:block/template_cauldron_level1","textures":{"bottom":"minecraft:block/cauldron_bottom","content":"minecraft:block/powder_snow","inside":"minecraft:block/cauldron_inner","particle":"minecraft:block/cauldron_side","side":"minecraft:block/cauldron_side","top":"minecraft:block/cauldron_top"}},"powder_snow_cauldron_level2":{"parent":"minecraft:block/template_cauldron_level2","textures":{"bottom":"minecraft:block/cauldron_bottom","content":"minecraft:block/powder_snow","inside":"minecraft:block/cauldron_inner","particle":"minecraft:block/cauldron_side","side":"minecraft:block/cauldron_side","top":"minecraft:block/cauldron_top"}},"powered_rail":{"parent":"minecraft:block/rail_flat","textures":{"rail":"minecraft:block/powered_rail"}},"powered_rail_on":{"parent":"minecraft:block/rail_flat","textures":{"rail":"minecraft:block/powered_rail_on"}},"powered_rail_on_raised_ne":{"parent":"minecraft:block/template_rail_raised_ne","textures":{"rail":"minecraft:block/powered_rail_on"}},"powered_rail_on_raised_sw":{"parent":"minecraft:block/template_rail_raised_sw","textures":{"rail":"minecraft:block/powered_rail_on"}},"powered_rail_raised_ne":{"parent":"minecraft:block/template_rail_raised_ne","textures":{"rail":"minecraft:block/powered_rail"}},"powered_rail_raised_sw":{"parent":"minecraft:block/template_rail_raised_sw","textures":{"rail":"minecraft:block/powered_rail"}},"pressure_plate_down":{"textures":{"particle":"#texture"},"elements":[{"from":[1,0,1],"to":[15,0.5,15],"faces":{"down":{"uv":[1,1,15,15],"texture":"#texture","cullface":"down"},"up":{"uv":[1,1,15,15],"texture":"#texture"},"north":{"uv":[1,15,15,15.5],"texture":"#texture"},"south":{"uv":[1,15,15,15.5],"texture":"#texture"},"west":{"uv":[1,15,15,15.5],"texture":"#texture"},"east":{"uv":[1,15,15,15.5],"texture":"#texture"}}}]},"pressure_plate_up":{"parent":"block/thin_block","textures":{"particle":"#texture"},"elements":[{"from":[1,0,1],"to":[15,1,15],"faces":{"down":{"uv":[1,1,15,15],"texture":"#texture","cullface":"down"},"up":{"uv":[1,1,15,15],"texture":"#texture"},"north":{"uv":[1,15,15,16],"texture":"#texture"},"south":{"uv":[1,15,15,16],"texture":"#texture"},"west":{"uv":[1,15,15,16],"texture":"#texture"},"east":{"uv":[1,15,15,16],"texture":"#texture"}}}]},"prismarine":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/prismarine"}},"prismarine_brick_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/prismarine_bricks","side":"minecraft:block/prismarine_bricks","top":"minecraft:block/prismarine_bricks"}},"prismarine_brick_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/prismarine_bricks","side":"minecraft:block/prismarine_bricks","top":"minecraft:block/prismarine_bricks"}},"prismarine_brick_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/prismarine_bricks","side":"minecraft:block/prismarine_bricks","top":"minecraft:block/prismarine_bricks"}},"prismarine_brick_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/prismarine_bricks","side":"minecraft:block/prismarine_bricks","top":"minecraft:block/prismarine_bricks"}},"prismarine_brick_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/prismarine_bricks","side":"minecraft:block/prismarine_bricks","top":"minecraft:block/prismarine_bricks"}},"prismarine_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/prismarine_bricks"}},"prismarine_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/prismarine","side":"minecraft:block/prismarine","top":"minecraft:block/prismarine"}},"prismarine_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/prismarine","side":"minecraft:block/prismarine","top":"minecraft:block/prismarine"}},"prismarine_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/prismarine","side":"minecraft:block/prismarine","top":"minecraft:block/prismarine"}},"prismarine_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/prismarine","side":"minecraft:block/prismarine","top":"minecraft:block/prismarine"}},"prismarine_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/prismarine","side":"minecraft:block/prismarine","top":"minecraft:block/prismarine"}},"prismarine_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/prismarine"}},"prismarine_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/prismarine"}},"prismarine_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/prismarine"}},"prismarine_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/prismarine"}},"pumpkin":{"parent":"block/cube_column","display":{"firstperson_righthand":{"rotation":[0,135,0],"translation":[0,0,0],"scale":[0.40,0.40,0.40]}},"textures":{"end":"block/pumpkin_top","side":"block/pumpkin_side"}},"pumpkin_stem_stage0":{"parent":"minecraft:block/stem_growth0","textures":{"stem":"minecraft:block/pumpkin_stem"}},"pumpkin_stem_stage1":{"parent":"minecraft:block/stem_growth1","textures":{"stem":"minecraft:block/pumpkin_stem"}},"pumpkin_stem_stage2":{"parent":"minecraft:block/stem_growth2","textures":{"stem":"minecraft:block/pumpkin_stem"}},"pumpkin_stem_stage3":{"parent":"minecraft:block/stem_growth3","textures":{"stem":"minecraft:block/pumpkin_stem"}},"pumpkin_stem_stage4":{"parent":"minecraft:block/stem_growth4","textures":{"stem":"minecraft:block/pumpkin_stem"}},"pumpkin_stem_stage5":{"parent":"minecraft:block/stem_growth5","textures":{"stem":"minecraft:block/pumpkin_stem"}},"pumpkin_stem_stage6":{"parent":"minecraft:block/stem_growth6","textures":{"stem":"minecraft:block/pumpkin_stem"}},"pumpkin_stem_stage7":{"parent":"minecraft:block/stem_growth7","textures":{"stem":"minecraft:block/pumpkin_stem"}},"purple_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/purple_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"purple_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/purple_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"purple_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/purple_candle","particle":"minecraft:block/purple_candle"}},"purple_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/purple_candle_lit","particle":"minecraft:block/purple_candle_lit"}},"purple_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/purple_candle","particle":"minecraft:block/purple_candle"}},"purple_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/purple_candle_lit","particle":"minecraft:block/purple_candle_lit"}},"purple_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/purple_candle","particle":"minecraft:block/purple_candle"}},"purple_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/purple_candle_lit","particle":"minecraft:block/purple_candle_lit"}},"purple_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/purple_candle","particle":"minecraft:block/purple_candle"}},"purple_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/purple_candle_lit","particle":"minecraft:block/purple_candle_lit"}},"purple_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/purple_wool"}},"purple_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/purple_concrete"}},"purple_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/purple_concrete_powder"}},"purple_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/purple_glazed_terracotta"}},"purple_shulker_box":{"textures":{"particle":"minecraft:block/purple_shulker_box"}},"purple_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/purple_stained_glass"}},"purple_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/purple_stained_glass"}},"purple_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/purple_stained_glass"}},"purple_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/purple_stained_glass_pane_top","pane":"minecraft:block/purple_stained_glass"}},"purple_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/purple_stained_glass_pane_top","pane":"minecraft:block/purple_stained_glass"}},"purple_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/purple_stained_glass_pane_top","pane":"minecraft:block/purple_stained_glass"}},"purple_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/purple_terracotta"}},"purple_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/purple_wool"}},"purpur_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/purpur_block"}},"purpur_pillar":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/purpur_pillar_top","side":"minecraft:block/purpur_pillar"}},"purpur_pillar_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/purpur_pillar_top","side":"minecraft:block/purpur_pillar"}},"purpur_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/purpur_block","side":"minecraft:block/purpur_block","top":"minecraft:block/purpur_block"}},"purpur_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/purpur_block","side":"minecraft:block/purpur_block","top":"minecraft:block/purpur_block"}},"purpur_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/purpur_block","side":"minecraft:block/purpur_block","top":"minecraft:block/purpur_block"}},"purpur_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/purpur_block","side":"minecraft:block/purpur_block","top":"minecraft:block/purpur_block"}},"purpur_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/purpur_block","side":"minecraft:block/purpur_block","top":"minecraft:block/purpur_block"}},"quartz_block":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/quartz_block_top","side":"minecraft:block/quartz_block_side"}},"quartz_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/quartz_bricks"}},"quartz_pillar":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/quartz_pillar_top","side":"minecraft:block/quartz_pillar"}},"quartz_pillar_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/quartz_pillar_top","side":"minecraft:block/quartz_pillar"}},"quartz_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/quartz_block_top","side":"minecraft:block/quartz_block_side","top":"minecraft:block/quartz_block_top"}},"quartz_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/quartz_block_top","side":"minecraft:block/quartz_block_side","top":"minecraft:block/quartz_block_top"}},"quartz_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/quartz_block_top","side":"minecraft:block/quartz_block_side","top":"minecraft:block/quartz_block_top"}},"quartz_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/quartz_block_top","side":"minecraft:block/quartz_block_side","top":"minecraft:block/quartz_block_top"}},"quartz_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/quartz_block_top","side":"minecraft:block/quartz_block_side","top":"minecraft:block/quartz_block_top"}},"rail":{"parent":"minecraft:block/rail_flat","textures":{"rail":"minecraft:block/rail"}},"rail_corner":{"parent":"minecraft:block/rail_curved","textures":{"rail":"minecraft:block/rail_corner"}},"rail_curved":{"ambientocclusion":false,"textures":{"particle":"#rail"},"elements":[{"from":[0,1,0],"to":[16,1,16],"faces":{"down":{"uv":[0,16,16,0],"texture":"#rail"},"up":{"uv":[0,0,16,16],"texture":"#rail"}}}]},"rail_flat":{"ambientocclusion":false,"textures":{"particle":"#rail"},"elements":[{"from":[0,1,0],"to":[16,1,16],"faces":{"down":{"uv":[0,16,16,0],"texture":"#rail"},"up":{"uv":[0,0,16,16],"texture":"#rail"}}}]},"rail_raised_ne":{"parent":"minecraft:block/template_rail_raised_ne","textures":{"rail":"minecraft:block/rail"}},"rail_raised_sw":{"parent":"minecraft:block/template_rail_raised_sw","textures":{"rail":"minecraft:block/rail"}},"raw_copper_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/raw_copper_block"}},"raw_gold_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/raw_gold_block"}},"raw_iron_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/raw_iron_block"}},"red_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/red_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"red_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/red_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"red_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/red_candle","particle":"minecraft:block/red_candle"}},"red_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/red_candle_lit","particle":"minecraft:block/red_candle_lit"}},"red_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/red_candle","particle":"minecraft:block/red_candle"}},"red_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/red_candle_lit","particle":"minecraft:block/red_candle_lit"}},"red_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/red_candle","particle":"minecraft:block/red_candle"}},"red_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/red_candle_lit","particle":"minecraft:block/red_candle_lit"}},"red_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/red_candle","particle":"minecraft:block/red_candle"}},"red_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/red_candle_lit","particle":"minecraft:block/red_candle_lit"}},"red_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/red_wool"}},"red_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/red_concrete"}},"red_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/red_concrete_powder"}},"red_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/red_glazed_terracotta"}},"red_mushroom":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/red_mushroom"}},"red_mushroom_block":{"parent":"minecraft:block/template_single_face","textures":{"texture":"minecraft:block/red_mushroom_block"}},"red_mushroom_block_inventory":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/red_mushroom_block"}},"red_nether_brick_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/red_nether_bricks","side":"minecraft:block/red_nether_bricks","top":"minecraft:block/red_nether_bricks"}},"red_nether_brick_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/red_nether_bricks","side":"minecraft:block/red_nether_bricks","top":"minecraft:block/red_nether_bricks"}},"red_nether_brick_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/red_nether_bricks","side":"minecraft:block/red_nether_bricks","top":"minecraft:block/red_nether_bricks"}},"red_nether_brick_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/red_nether_bricks","side":"minecraft:block/red_nether_bricks","top":"minecraft:block/red_nether_bricks"}},"red_nether_brick_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/red_nether_bricks","side":"minecraft:block/red_nether_bricks","top":"minecraft:block/red_nether_bricks"}},"red_nether_brick_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/red_nether_bricks"}},"red_nether_brick_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/red_nether_bricks"}},"red_nether_brick_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/red_nether_bricks"}},"red_nether_brick_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/red_nether_bricks"}},"red_nether_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/red_nether_bricks"}},"red_sand":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/red_sand"}},"red_sandstone":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/red_sandstone_bottom","side":"minecraft:block/red_sandstone","top":"minecraft:block/red_sandstone_top"}},"red_sandstone_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/red_sandstone_bottom","side":"minecraft:block/red_sandstone","top":"minecraft:block/red_sandstone_top"}},"red_sandstone_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/red_sandstone_bottom","side":"minecraft:block/red_sandstone","top":"minecraft:block/red_sandstone_top"}},"red_sandstone_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/red_sandstone_bottom","side":"minecraft:block/red_sandstone","top":"minecraft:block/red_sandstone_top"}},"red_sandstone_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/red_sandstone_bottom","side":"minecraft:block/red_sandstone","top":"minecraft:block/red_sandstone_top"}},"red_sandstone_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/red_sandstone_bottom","side":"minecraft:block/red_sandstone","top":"minecraft:block/red_sandstone_top"}},"red_sandstone_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/red_sandstone"}},"red_sandstone_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/red_sandstone"}},"red_sandstone_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/red_sandstone"}},"red_sandstone_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/red_sandstone"}},"red_shulker_box":{"textures":{"particle":"minecraft:block/red_shulker_box"}},"red_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/red_stained_glass"}},"red_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/red_stained_glass"}},"red_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/red_stained_glass"}},"red_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/red_stained_glass_pane_top","pane":"minecraft:block/red_stained_glass"}},"red_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/red_stained_glass_pane_top","pane":"minecraft:block/red_stained_glass"}},"red_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/red_stained_glass_pane_top","pane":"minecraft:block/red_stained_glass"}},"red_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/red_terracotta"}},"red_tulip":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/red_tulip"}},"red_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/red_wool"}},"redstone_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/redstone_block"}},"redstone_dust_dot":{"ambientocclusion":false,"textures":{"particle":"block/redstone_dust_dot","line":"block/redstone_dust_dot","overlay":"block/redstone_dust_overlay"},"elements":[{"from":[0,0.25,0],"to":[16,0.25,16],"shade":false,"faces":{"up":{"uv":[0,0,16,16],"texture":"#line","tintindex":0},"down":{"uv":[0,16,16,0],"texture":"#line","tintindex":0}}},{"from":[0,0.25,0],"to":[16,0.25,16],"shade":false,"faces":{"up":{"uv":[0,0,16,16],"texture":"#overlay"},"down":{"uv":[0,16,16,0],"texture":"#overlay"}}}]},"redstone_dust_side":{"ambientocclusion":false,"textures":{"particle":"block/redstone_dust_dot","overlay":"block/redstone_dust_overlay"},"elements":[{"from":[0,0.25,0],"to":[16,0.25,8],"shade":false,"faces":{"up":{"uv":[0,0,16,8],"texture":"#line","tintindex":0},"down":{"uv":[0,8,16,0],"texture":"#line","tintindex":0}}},{"from":[0,0.25,0],"to":[16,0.25,8],"shade":false,"faces":{"up":{"uv":[0,0,16,8],"texture":"#overlay"},"down":{"uv":[0,8,16,0],"texture":"#overlay"}}}]},"redstone_dust_side0":{"parent":"block/redstone_dust_side","textures":{"line":"block/redstone_dust_line0"}},"redstone_dust_side1":{"parent":"block/redstone_dust_side","textures":{"line":"block/redstone_dust_line1"}},"redstone_dust_side_alt":{"ambientocclusion":false,"textures":{"particle":"block/redstone_dust_dot","overlay":"block/redstone_dust_overlay"},"elements":[{"from":[0,0.25,8],"to":[16,0.25,16],"shade":false,"faces":{"up":{"uv":[0,8,16,16],"texture":"#line","tintindex":0},"down":{"uv":[0,16,16,8],"texture":"#line","tintindex":0}}},{"from":[0,0.25,8],"to":[16,0.25,16],"shade":false,"faces":{"up":{"uv":[0,8,16,16],"texture":"#overlay"},"down":{"uv":[0,16,16,8],"texture":"#overlay"}}}]},"redstone_dust_side_alt0":{"parent":"block/redstone_dust_side_alt","textures":{"line":"block/redstone_dust_line0"}},"redstone_dust_side_alt1":{"parent":"block/redstone_dust_side_alt","textures":{"line":"block/redstone_dust_line1"}},"redstone_dust_up":{"ambientocclusion":false,"textures":{"particle":"block/redstone_dust_dot","line":"block/redstone_dust_line0","overlay":"block/redstone_dust_overlay"},"elements":[{"from":[0,0,0.25],"to":[16,16,0.25],"shade":false,"faces":{"south":{"uv":[0,0,16,16],"texture":"#line","tintindex":0},"north":{"uv":[16,0,0,16],"texture":"#line","tintindex":0}}},{"from":[0,0,0.25],"to":[16,16,0.25],"shade":false,"faces":{"south":{"uv":[0,0,16,16],"texture":"#overlay"},"north":{"uv":[16,0,0,16],"texture":"#overlay"}}}]},"redstone_lamp":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/redstone_lamp"}},"redstone_lamp_on":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/redstone_lamp_on"}},"redstone_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/redstone_ore"}},"redstone_torch":{"parent":"minecraft:block/template_redstone_torch","textures":{"torch":"minecraft:block/redstone_torch"}},"redstone_torch_off":{"parent":"minecraft:block/template_torch_unlit","textures":{"torch":"minecraft:block/redstone_torch_off"}},"redstone_wall_torch":{"parent":"minecraft:block/template_redstone_torch_wall","textures":{"torch":"minecraft:block/redstone_torch"}},"redstone_wall_torch_off":{"parent":"minecraft:block/template_torch_wall_unlit","textures":{"torch":"minecraft:block/redstone_torch_off"}},"reinforced_deepslate":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/reinforced_deepslate_bottom","side":"minecraft:block/reinforced_deepslate_side","top":"minecraft:block/reinforced_deepslate_top"}},"repeater_1tick":{"ambientocclusion":false,"textures":{"particle":"block/repeater","slab":"block/smooth_stone","top":"block/repeater","unlit":"block/redstone_torch_off"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[7,2,6],"to":[9,7,8],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}},{"from":[7,2,2],"to":[9,7,4],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}}]},"repeater_1tick_locked":{"ambientocclusion":false,"textures":{"particle":"block/repeater","slab":"block/smooth_stone","top":"block/repeater","lock":"block/bedrock","unlit":"block/redstone_torch_off"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[2,2,6],"to":[14,4,8],"faces":{"up":{"uv":[7,2,9,14],"texture":"#lock","rotation":90},"north":{"uv":[2,7,14,9],"texture":"#lock"},"south":{"uv":[2,7,14,9],"texture":"#lock"},"west":{"uv":[6,7,8,9],"texture":"#lock"},"east":{"uv":[6,7,8,9],"texture":"#lock"}}},{"from":[7,2,2],"to":[9,7,4],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}}]},"repeater_1tick_on":{"ambientocclusion":false,"textures":{"particle":"block/repeater_on","slab":"block/smooth_stone","top":"block/repeater_on","lit":"block/redstone_torch"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[7,2,6],"to":[9,7,8],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[7,2,2],"to":[9,7,4],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[6.5,1.5,1.5],"to":[9.5,4.5,4.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#lit"}}},{"from":[6.5,7.5,1.5],"to":[9.5,10.5,4.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#lit"}}},{"from":[6.5,4.5,-1.5],"to":[9.5,7.5,1.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#lit"}}},{"from":[6.5,4.5,4.5],"to":[9.5,7.5,7.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#lit"}}},{"from":[3.5,4.5,1.5],"to":[6.5,7.5,4.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#lit"}}},{"from":[9.5,4.5,1.5],"to":[12.5,7.5,4.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#lit"}}},{"from":[6.5,1.5,5.5],"to":[9.5,4.5,8.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#lit"}}},{"from":[6.5,7.5,5.5],"to":[9.5,10.5,8.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#lit"}}},{"from":[6.5,4.5,2.5],"to":[9.5,7.5,5.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#lit"}}},{"from":[6.5,4.5,8.5],"to":[9.5,7.5,11.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#lit"}}},{"from":[3.5,4.5,5.5],"to":[6.5,7.5,8.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#lit"}}},{"from":[9.5,4.5,5.5],"to":[12.5,7.5,8.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#lit"}}}]},"repeater_1tick_on_locked":{"ambientocclusion":false,"textures":{"particle":"block/repeater_on","slab":"block/smooth_stone","top":"block/repeater_on","lit":"block/redstone_torch","lock":"block/bedrock"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[2,2,6],"to":[14,4,8],"faces":{"up":{"uv":[7,2,9,14],"texture":"#lock","rotation":90},"north":{"uv":[2,7,14,9],"texture":"#lock"},"south":{"uv":[2,7,14,9],"texture":"#lock"},"west":{"uv":[6,7,8,9],"texture":"#lock"},"east":{"uv":[6,7,8,9],"texture":"#lock"}}},{"from":[7,2,2],"to":[9,7,4],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[6.5,1.5,1.5],"to":[9.5,4.5,4.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#lit"}}},{"from":[6.5,7.5,1.5],"to":[9.5,10.5,4.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#lit"}}},{"from":[6.5,4.5,-1.5],"to":[9.5,7.5,1.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#lit"}}},{"from":[6.5,4.5,4.5],"to":[9.5,7.5,7.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#lit"}}},{"from":[3.5,4.5,1.5],"to":[6.5,7.5,4.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#lit"}}},{"from":[9.5,4.5,1.5],"to":[12.5,7.5,4.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#lit"}}}]},"repeater_2tick":{"ambientocclusion":false,"textures":{"particle":"block/repeater","slab":"block/smooth_stone","top":"block/repeater","unlit":"block/redstone_torch_off"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[7,2,8],"to":[9,7,10],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}},{"from":[7,2,2],"to":[9,7,4],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}}]},"repeater_2tick_locked":{"ambientocclusion":false,"textures":{"particle":"block/repeater","slab":"block/smooth_stone","top":"block/repeater","lock":"block/bedrock","unlit":"block/redstone_torch_off"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[2,2,8],"to":[14,4,10],"faces":{"up":{"uv":[7,2,9,14],"texture":"#lock","rotation":90},"north":{"uv":[2,7,14,9],"texture":"#lock"},"south":{"uv":[2,7,14,9],"texture":"#lock"},"west":{"uv":[6,7,8,9],"texture":"#lock"},"east":{"uv":[6,7,8,9],"texture":"#lock"}}},{"from":[7,2,2],"to":[9,7,4],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}}]},"repeater_2tick_on":{"ambientocclusion":false,"textures":{"particle":"block/repeater_on","slab":"block/smooth_stone","top":"block/repeater_on","lit":"block/redstone_torch"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[7,2,8],"to":[9,7,10],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[7,2,2],"to":[9,7,4],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[6.5,1.5,1.5],"to":[9.5,4.5,4.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#lit"}}},{"from":[6.5,7.5,1.5],"to":[9.5,10.5,4.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#lit"}}},{"from":[6.5,4.5,-1.5],"to":[9.5,7.5,1.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#lit"}}},{"from":[6.5,4.5,4.5],"to":[9.5,7.5,7.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#lit"}}},{"from":[3.5,4.5,1.5],"to":[6.5,7.5,4.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#lit"}}},{"from":[9.5,4.5,1.5],"to":[12.5,7.5,4.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#lit"}}},{"from":[6.5,1.5,7.5],"to":[9.5,4.5,10.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#lit"}}},{"from":[6.5,7.5,7.5],"to":[9.5,10.5,10.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#lit"}}},{"from":[6.5,4.5,4.5],"to":[9.5,7.5,7.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#lit"}}},{"from":[6.5,4.5,10.5],"to":[9.5,7.5,13.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#lit"}}},{"from":[3.5,4.5,7.5],"to":[6.5,7.5,10.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#lit"}}},{"from":[9.5,4.5,7.5],"to":[12.5,7.5,10.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#lit"}}}]},"repeater_2tick_on_locked":{"ambientocclusion":false,"textures":{"particle":"block/repeater_on","slab":"block/smooth_stone","top":"block/repeater_on","lit":"block/redstone_torch","lock":"block/bedrock"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[2,2,8],"to":[14,4,10],"faces":{"up":{"uv":[7,2,9,14],"texture":"#lock","rotation":90},"north":{"uv":[2,7,14,9],"texture":"#lock"},"south":{"uv":[2,7,14,9],"texture":"#lock"},"west":{"uv":[6,7,8,9],"texture":"#lock"},"east":{"uv":[6,7,8,9],"texture":"#lock"}}},{"from":[7,2,2],"to":[9,7,4],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[6.5,1.5,1.5],"to":[9.5,4.5,4.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#lit"}}},{"from":[6.5,7.5,1.5],"to":[9.5,10.5,4.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#lit"}}},{"from":[6.5,4.5,-1.5],"to":[9.5,7.5,1.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#lit"}}},{"from":[6.5,4.5,4.5],"to":[9.5,7.5,7.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#lit"}}},{"from":[3.5,4.5,1.5],"to":[6.5,7.5,4.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#lit"}}},{"from":[9.5,4.5,1.5],"to":[12.5,7.5,4.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#lit"}}}]},"repeater_3tick":{"ambientocclusion":false,"textures":{"particle":"block/repeater","slab":"block/smooth_stone","top":"block/repeater","unlit":"block/redstone_torch_off"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[7,2,10],"to":[9,7,12],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}},{"from":[7,2,2],"to":[9,7,4],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}}]},"repeater_3tick_locked":{"ambientocclusion":false,"textures":{"particle":"block/repeater","slab":"block/smooth_stone","top":"block/repeater","lock":"block/bedrock","unlit":"block/redstone_torch_off"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[2,2,10],"to":[14,4,12],"faces":{"up":{"uv":[7,2,9,14],"texture":"#lock","rotation":90},"north":{"uv":[2,7,14,9],"texture":"#lock"},"south":{"uv":[2,7,14,9],"texture":"#lock"},"west":{"uv":[6,7,8,9],"texture":"#lock"},"east":{"uv":[6,7,8,9],"texture":"#lock"}}},{"from":[7,2,2],"to":[9,7,4],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}}]},"repeater_3tick_on":{"ambientocclusion":false,"textures":{"particle":"block/repeater_on","slab":"block/smooth_stone","top":"block/repeater_on","lit":"block/redstone_torch"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[7,2,10],"to":[9,7,12],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[7,2,2],"to":[9,7,4],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[6.5,1.5,1.5],"to":[9.5,4.5,4.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#lit"}}},{"from":[6.5,7.5,1.5],"to":[9.5,10.5,4.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#lit"}}},{"from":[6.5,4.5,-1.5],"to":[9.5,7.5,1.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#lit"}}},{"from":[6.5,4.5,4.5],"to":[9.5,7.5,7.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#lit"}}},{"from":[3.5,4.5,1.5],"to":[6.5,7.5,4.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#lit"}}},{"from":[9.5,4.5,1.5],"to":[12.5,7.5,4.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#lit"}}},{"from":[6.5,1.5,9.5],"to":[9.5,4.5,12.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#lit"}}},{"from":[6.5,7.5,9.5],"to":[9.5,10.5,12.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#lit"}}},{"from":[6.5,4.5,6.5],"to":[9.5,7.5,9.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#lit"}}},{"from":[6.5,4.5,12.5],"to":[9.5,7.5,15.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#lit"}}},{"from":[3.5,4.5,9.5],"to":[6.5,7.5,12.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#lit"}}},{"from":[9.5,4.5,9.5],"to":[12.5,7.5,12.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#lit"}}}]},"repeater_3tick_on_locked":{"ambientocclusion":false,"textures":{"particle":"block/repeater_on","slab":"block/smooth_stone","top":"block/repeater_on","lit":"block/redstone_torch","lock":"block/bedrock"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[2,2,10],"to":[14,4,12],"faces":{"up":{"uv":[7,2,9,14],"texture":"#lock","rotation":90},"north":{"uv":[2,7,14,9],"texture":"#lock"},"south":{"uv":[2,7,14,9],"texture":"#lock"},"west":{"uv":[6,7,8,9],"texture":"#lock"},"east":{"uv":[6,7,8,9],"texture":"#lock"}}},{"from":[7,2,2],"to":[9,7,4],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[6.5,1.5,1.5],"to":[9.5,4.5,4.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#lit"}}},{"from":[6.5,7.5,1.5],"to":[9.5,10.5,4.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#lit"}}},{"from":[6.5,4.5,-1.5],"to":[9.5,7.5,1.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#lit"}}},{"from":[6.5,4.5,4.5],"to":[9.5,7.5,7.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#lit"}}},{"from":[3.5,4.5,1.5],"to":[6.5,7.5,4.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#lit"}}},{"from":[9.5,4.5,1.5],"to":[12.5,7.5,4.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#lit"}}}]},"repeater_4tick":{"ambientocclusion":false,"textures":{"particle":"block/repeater","slab":"block/smooth_stone","top":"block/repeater","unlit":"block/redstone_torch_off"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[7,2,12],"to":[9,7,14],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}},{"from":[7,2,2],"to":[9,7,4],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}}]},"repeater_4tick_locked":{"ambientocclusion":false,"textures":{"particle":"block/repeater","slab":"block/smooth_stone","top":"block/repeater","lock":"block/bedrock","unlit":"block/redstone_torch_off"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[2,2,12],"to":[14,4,14],"faces":{"up":{"uv":[7,2,9,14],"texture":"#lock","rotation":90},"north":{"uv":[2,7,14,9],"texture":"#lock"},"south":{"uv":[2,7,14,9],"texture":"#lock"},"west":{"uv":[6,7,8,9],"texture":"#lock"},"east":{"uv":[6,7,8,9],"texture":"#lock"}}},{"from":[7,2,2],"to":[9,7,4],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}}]},"repeater_4tick_on":{"ambientocclusion":false,"textures":{"particle":"block/repeater_on","slab":"block/smooth_stone","top":"block/repeater_on","lit":"block/redstone_torch"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[7,2,12],"to":[9,7,14],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[7,2,2],"to":[9,7,4],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[6.5,1.5,1.5],"to":[9.5,4.5,4.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#lit"}}},{"from":[6.5,7.5,1.5],"to":[9.5,10.5,4.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#lit"}}},{"from":[6.5,4.5,-1.5],"to":[9.5,7.5,1.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#lit"}}},{"from":[6.5,4.5,4.5],"to":[9.5,7.5,7.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#lit"}}},{"from":[3.5,4.5,1.5],"to":[6.5,7.5,4.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#lit"}}},{"from":[9.5,4.5,1.5],"to":[12.5,7.5,4.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#lit"}}},{"from":[6.5,1.5,11.5],"to":[9.5,4.5,14.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#lit"}}},{"from":[6.5,7.5,11.5],"to":[9.5,10.5,14.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#lit"}}},{"from":[6.5,4.5,8.5],"to":[9.5,7.5,11.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#lit"}}},{"from":[6.5,4.5,14.5],"to":[9.5,7.5,17.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#lit"}}},{"from":[3.5,4.5,11.5],"to":[6.5,7.5,14.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#lit"}}},{"from":[9.5,4.5,11.5],"to":[12.5,7.5,14.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#lit"}}}]},"repeater_4tick_on_locked":{"ambientocclusion":false,"textures":{"particle":"block/repeater_on","slab":"block/smooth_stone","top":"block/repeater_on","lit":"block/redstone_torch","lock":"block/bedrock"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[2,2,12],"to":[14,4,14],"faces":{"up":{"uv":[7,2,9,14],"texture":"#lock","rotation":90},"north":{"uv":[2,7,14,9],"texture":"#lock"},"south":{"uv":[2,7,14,9],"texture":"#lock"},"west":{"uv":[6,7,8,9],"texture":"#lock"},"east":{"uv":[6,7,8,9],"texture":"#lock"}}},{"from":[7,2,2],"to":[9,7,4],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[6.5,1.5,1.5],"to":[9.5,4.5,4.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#lit"}}},{"from":[6.5,7.5,1.5],"to":[9.5,10.5,4.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#lit"}}},{"from":[6.5,4.5,-1.5],"to":[9.5,7.5,1.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#lit"}}},{"from":[6.5,4.5,4.5],"to":[9.5,7.5,7.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#lit"}}},{"from":[3.5,4.5,1.5],"to":[6.5,7.5,4.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#lit"}}},{"from":[9.5,4.5,1.5],"to":[12.5,7.5,4.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#lit"}}}]},"repeating_command_block":{"parent":"minecraft:block/template_command_block","textures":{"back":"minecraft:block/repeating_command_block_back","front":"minecraft:block/repeating_command_block_front","side":"minecraft:block/repeating_command_block_side"}},"repeating_command_block_conditional":{"parent":"minecraft:block/template_command_block","textures":{"back":"minecraft:block/repeating_command_block_back","front":"minecraft:block/repeating_command_block_front","side":"minecraft:block/repeating_command_block_conditional"}},"resin_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/resin_block"}},"resin_brick_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/resin_bricks","side":"minecraft:block/resin_bricks","top":"minecraft:block/resin_bricks"}},"resin_brick_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/resin_bricks","side":"minecraft:block/resin_bricks","top":"minecraft:block/resin_bricks"}},"resin_brick_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/resin_bricks","side":"minecraft:block/resin_bricks","top":"minecraft:block/resin_bricks"}},"resin_brick_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/resin_bricks","side":"minecraft:block/resin_bricks","top":"minecraft:block/resin_bricks"}},"resin_brick_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/resin_bricks","side":"minecraft:block/resin_bricks","top":"minecraft:block/resin_bricks"}},"resin_brick_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/resin_bricks"}},"resin_brick_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/resin_bricks"}},"resin_brick_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/resin_bricks"}},"resin_brick_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/resin_bricks"}},"resin_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/resin_bricks"}},"resin_clump":{"ambientocclusion":false,"textures":{"particle":"block/resin_clump","texture":"block/resin_clump"},"elements":[{"from":[0,0,0.1],"to":[16,16,0.1],"faces":{"north":{"uv":[16,0,0,16],"texture":"#texture"},"south":{"uv":[0,0,16,16],"texture":"#texture"}}}]},"respawn_anchor_0":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/respawn_anchor_bottom","side":"minecraft:block/respawn_anchor_side0","top":"minecraft:block/respawn_anchor_top_off"}},"respawn_anchor_1":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/respawn_anchor_bottom","side":"minecraft:block/respawn_anchor_side1","top":"minecraft:block/respawn_anchor_top"}},"respawn_anchor_2":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/respawn_anchor_bottom","side":"minecraft:block/respawn_anchor_side2","top":"minecraft:block/respawn_anchor_top"}},"respawn_anchor_3":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/respawn_anchor_bottom","side":"minecraft:block/respawn_anchor_side3","top":"minecraft:block/respawn_anchor_top"}},"respawn_anchor_4":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/respawn_anchor_bottom","side":"minecraft:block/respawn_anchor_side4","top":"minecraft:block/respawn_anchor_top"}},"rooted_dirt":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/rooted_dirt"}},"rose_bush_bottom":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/rose_bush_bottom"}},"rose_bush_top":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/rose_bush_top"}},"sand":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/sand"}},"sandstone":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/sandstone_bottom","side":"minecraft:block/sandstone","top":"minecraft:block/sandstone_top"}},"sandstone_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/sandstone_bottom","side":"minecraft:block/sandstone","top":"minecraft:block/sandstone_top"}},"sandstone_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/sandstone_bottom","side":"minecraft:block/sandstone","top":"minecraft:block/sandstone_top"}},"sandstone_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/sandstone_bottom","side":"minecraft:block/sandstone","top":"minecraft:block/sandstone_top"}},"sandstone_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/sandstone_bottom","side":"minecraft:block/sandstone","top":"minecraft:block/sandstone_top"}},"sandstone_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/sandstone_bottom","side":"minecraft:block/sandstone","top":"minecraft:block/sandstone_top"}},"sandstone_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/sandstone"}},"sandstone_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/sandstone"}},"sandstone_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/sandstone"}},"sandstone_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/sandstone"}},"scaffolding_stable":{"parent":"block/block","textures":{"particle":"block/scaffolding_top","top":"block/scaffolding_top","side":"block/scaffolding_side","bottom":"block/scaffolding_bottom"},"elements":[{"from":[0,15.99,0],"to":[16,16,16],"faces":{"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#top","uv":[0,16,16,0]}}},{"from":[0,0,0],"to":[2,16,2],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,14],"to":[2,16,16],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,14],"to":[16,16,16],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,0],"to":[16,16,2],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[2,14,0],"to":[14,16,2],"faces":{"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side","uv":[2,2,14,4]},"down":{"texture":"#bottom"}}},{"from":[2,14,14],"to":[14,16,16],"faces":{"north":{"texture":"#side","uv":[14,0,2,2]},"south":{"texture":"#side","cullface":"south"},"down":{"texture":"#bottom"}}},{"from":[14,14,2],"to":[16,16,14],"faces":{"east":{"texture":"#side","uv":[14,0,2,2],"cullface":"east"},"west":{"texture":"#side","uv":[14,2,2,4]},"down":{"texture":"#bottom"}}},{"from":[0,14,2],"to":[2,16,14],"faces":{"east":{"texture":"#side"},"west":{"texture":"#side","uv":[14,0,2,2],"cullface":"west"},"down":{"texture":"#bottom"}}}]},"scaffolding_unstable":{"parent":"block/block","textures":{"particle":"block/scaffolding_top","top":"block/scaffolding_top","side":"block/scaffolding_side","bottom":"block/scaffolding_bottom"},"elements":[{"from":[0,15.99,0],"to":[16,16,16],"faces":{"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#top","uv":[0,16,16,0]}}},{"from":[0,0,0],"to":[2,16,2],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,14],"to":[2,16,16],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,14],"to":[16,16,16],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,0],"to":[16,16,2],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[2,14,0],"to":[14,16,2],"faces":{"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side","uv":[2,2,14,4]},"down":{"texture":"#bottom"}}},{"from":[2,14,14],"to":[14,16,16],"faces":{"north":{"texture":"#side","uv":[14,0,2,2]},"south":{"texture":"#side","cullface":"south"},"down":{"texture":"#bottom"}}},{"from":[14,14,2],"to":[16,16,14],"faces":{"east":{"texture":"#side","uv":[14,0,2,2],"cullface":"east"},"west":{"texture":"#side","uv":[14,2,2,4]},"down":{"texture":"#bottom"}}},{"from":[0,14,2],"to":[2,16,14],"faces":{"east":{"texture":"#side"},"west":{"texture":"#side","uv":[14,0,2,2],"cullface":"west"},"down":{"texture":"#bottom"}}},{"from":[0,1.99,0],"to":[16,2,16],"faces":{"up":{"texture":"#top"},"down":{"uv":[0,16,16,0],"texture":"#top"}}},{"from":[2,0,0],"to":[14,2,2],"faces":{"north":{"texture":"#side","uv":[2,0,14,2],"cullface":"north"},"south":{"texture":"#side","uv":[2,2,14,4]},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[2,0,14],"to":[14,2,16],"faces":{"north":{"texture":"#side","uv":[14,0,2,2]},"south":{"texture":"#side","uv":[2,0,14,2],"cullface":"south"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,2],"to":[16,2,14],"faces":{"east":{"texture":"#side","uv":[14,0,2,2],"cullface":"east"},"west":{"texture":"#side","uv":[14,2,2,4]},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,2],"to":[2,2,14],"faces":{"east":{"texture":"#side","uv":[2,0,14,2]},"west":{"texture":"#side","uv":[14,0,2,2],"cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}}]},"sculk":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/sculk"}},"sculk_catalyst":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/sculk_catalyst_bottom","side":"minecraft:block/sculk_catalyst_side","top":"minecraft:block/sculk_catalyst_top"}},"sculk_catalyst_bloom":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/sculk_catalyst_bottom","side":"minecraft:block/sculk_catalyst_side_bloom","top":"minecraft:block/sculk_catalyst_top_bloom"}},"sculk_mirrored":{"parent":"minecraft:block/cube_mirrored_all","textures":{"all":"minecraft:block/sculk"}},"sculk_sensor":{"parent":"block/block","textures":{"bottom":"block/sculk_sensor_bottom","side":"block/sculk_sensor_side","tendrils":"block/sculk_sensor_tendril_inactive","top":"block/sculk_sensor_top","particle":"block/sculk_sensor_bottom"},"elements":[{"from":[0,0,0],"to":[16,8,16],"faces":{"north":{"uv":[0,8,16,16],"texture":"#side","cullface":"north"},"east":{"uv":[0,8,16,16],"texture":"#side","cullface":"east"},"south":{"uv":[0,8,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,8,16,16],"texture":"#side","cullface":"west"},"up":{"uv":[0,0,16,16],"texture":"#top"},"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"}}},{"from":[-1,8,3],"to":[7,16,3],"rotation":{"angle":45,"axis":"y","origin":[3,12,3]},"faces":{"north":{"uv":[4,8,12,16],"texture":"#tendrils"},"south":{"uv":[12,8,4,16],"texture":"#tendrils"}}},{"from":[9,8,3],"to":[17,16,3],"rotation":{"angle":-45,"axis":"y","origin":[13,12,3]},"faces":{"north":{"uv":[12,8,4,16],"texture":"#tendrils"},"south":{"uv":[4,8,12,16],"texture":"#tendrils"}}},{"from":[9,8,13],"to":[17,16,13],"rotation":{"angle":45,"axis":"y","origin":[13,12,13]},"faces":{"north":{"uv":[12,8,4,16],"texture":"#tendrils"},"south":{"uv":[4,8,12,16],"texture":"#tendrils"}}},{"from":[-1,8,13],"to":[7,16,13],"rotation":{"angle":-45,"axis":"y","origin":[3,12,13]},"faces":{"north":{"uv":[4,8,12,16],"texture":"#tendrils"},"south":{"uv":[12,8,4,16],"texture":"#tendrils"}}}]},"sculk_sensor_active":{"parent":"block/sculk_sensor","textures":{"tendrils":"block/sculk_sensor_tendril_active"}},"sculk_sensor_inactive":{"parent":"block/sculk_sensor","textures":{"tendrils":"block/sculk_sensor_tendril_inactive"}},"sculk_shrieker":{"parent":"minecraft:block/template_sculk_shrieker","textures":{"bottom":"minecraft:block/sculk_shrieker_bottom","inner_top":"minecraft:block/sculk_shrieker_inner_top","particle":"minecraft:block/sculk_shrieker_bottom","side":"minecraft:block/sculk_shrieker_side","top":"minecraft:block/sculk_shrieker_top"}},"sculk_shrieker_can_summon":{"parent":"minecraft:block/template_sculk_shrieker","textures":{"bottom":"minecraft:block/sculk_shrieker_bottom","inner_top":"minecraft:block/sculk_shrieker_can_summon_inner_top","particle":"minecraft:block/sculk_shrieker_bottom","side":"minecraft:block/sculk_shrieker_side","top":"minecraft:block/sculk_shrieker_top"}},"sculk_vein":{"ambientocclusion":false,"textures":{"particle":"block/sculk_vein","sculk_vein":"block/sculk_vein"},"elements":[{"from":[0,0,0.1],"to":[16,16,0.1],"faces":{"north":{"uv":[16,0,0,16],"texture":"#sculk_vein"},"south":{"uv":[0,0,16,16],"texture":"#sculk_vein"}}}]},"sea_lantern":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/sea_lantern"}},"sea_pickle":{"parent":"block/block","textures":{"particle":"block/sea_pickle","all":"block/sea_pickle"},"elements":[{"from":[6,0,6],"to":[10,6,10],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,11],"texture":"#all"},"south":{"uv":[0,5,4,11],"texture":"#all"},"west":{"uv":[8,5,12,11],"texture":"#all"},"east":{"uv":[12,5,16,11],"texture":"#all"}}},{"from":[6,5.95,6],"to":[10,5.95,10],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[7.5,5.2,8],"to":[8.5,8.7,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[1,0,3,5],"texture":"#all"},"south":{"uv":[3,0,1,5],"texture":"#all"}}},{"from":[8,5.2,7.5],"to":[8,8.7,8.5],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[13,0,15,5],"texture":"#all"},"east":{"uv":[15,0,13,5],"texture":"#all"}}}]},"seagrass":{"parent":"minecraft:block/template_seagrass","textures":{"texture":"minecraft:block/seagrass"}},"short_dry_grass":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/short_dry_grass"}},"short_grass":{"parent":"minecraft:block/tinted_cross","textures":{"cross":"minecraft:block/short_grass"}},"shroomlight":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/shroomlight"}},"shulker_box":{"textures":{"particle":"minecraft:block/shulker_box"}},"skull":{"textures":{"particle":"minecraft:block/soul_sand"}},"slab":{"parent":"block/block","textures":{"particle":"#side"},"elements":[{"from":[0,0,0],"to":[16,8,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,8,16,16],"texture":"#side","cullface":"north"},"south":{"uv":[0,8,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,8,16,16],"texture":"#side","cullface":"west"},"east":{"uv":[0,8,16,16],"texture":"#side","cullface":"east"}}}]},"slab_top":{"textures":{"particle":"#side"},"elements":[{"from":[0,8,0],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom"},"up":{"uv":[0,0,16,16],"texture":"#top","cullface":"up"},"north":{"uv":[0,0,16,8],"texture":"#side","cullface":"north"},"south":{"uv":[0,0,16,8],"texture":"#side","cullface":"south"},"west":{"uv":[0,0,16,8],"texture":"#side","cullface":"west"},"east":{"uv":[0,0,16,8],"texture":"#side","cullface":"east"}}}]},"slightly_cracked_turtle_egg":{"parent":"minecraft:block/template_turtle_egg","textures":{"all":"minecraft:block/turtle_egg_slightly_cracked"}},"slime_block":{"parent":"block/block","textures":{"particle":"block/slime_block","texture":"block/slime_block"},"elements":[{"from":[3,3,3],"to":[13,13,13],"faces":{"down":{"uv":[3,3,13,13],"texture":"#texture"},"up":{"uv":[3,3,13,13],"texture":"#texture"},"north":{"uv":[3,3,13,13],"texture":"#texture"},"south":{"uv":[3,3,13,13],"texture":"#texture"},"west":{"uv":[3,3,13,13],"texture":"#texture"},"east":{"uv":[3,3,13,13],"texture":"#texture"}}},{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#texture","cullface":"up"},"north":{"uv":[0,0,16,16],"texture":"#texture","cullface":"north"},"south":{"uv":[0,0,16,16],"texture":"#texture","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#texture","cullface":"west"},"east":{"uv":[0,0,16,16],"texture":"#texture","cullface":"east"}}}]},"small_amethyst_bud":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/small_amethyst_bud"}},"small_dripleaf_bottom":{"parent":"block/block","textures":{"stem":"block/small_dripleaf_stem_bottom","particle":"block/big_dripleaf_stem"},"elements":[{"from":[4.5,0,8],"to":[11.5,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":false},"shade":false,"faces":{"north":{"uv":[5,0,12,16],"texture":"#stem"},"south":{"uv":[5,0,12,16],"texture":"#stem"}}},{"from":[4.5,0,8],"to":[11.5,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":-45,"rescale":false},"shade":false,"faces":{"north":{"uv":[5,0,12,16],"texture":"#stem"},"south":{"uv":[5,0,12,16],"texture":"#stem"}}}]},"small_dripleaf_top":{"parent":"block/block","textures":{"top":"block/small_dripleaf_top","side":"block/small_dripleaf_side","stem":"block/small_dripleaf_stem_top","particle":"block/small_dripleaf_top"},"elements":[{"from":[8,3,8],"to":[15,3,15],"shade":false,"faces":{"down":{"uv":[8,0,0,8],"texture":"#top"},"up":{"uv":[8,8,0,0],"texture":"#top"}}},{"from":[1,8.02,1],"to":[8,8.02,8],"shade":false,"faces":{"down":{"uv":[0,8,8,0],"texture":"#top"},"up":{"uv":[0,0,8,8],"texture":"#top"}}},{"from":[1,12.02,8],"to":[8,12.02,15],"shade":false,"faces":{"down":{"uv":[8,0,0,8],"texture":"#top","rotation":270},"up":{"uv":[0,0,8,8],"texture":"#top","rotation":270}}},{"from":[8,2,8],"to":[15,3,15],"shade":false,"faces":{"east":{"uv":[0,0,8,1],"texture":"#side"},"west":{"uv":[0,0,8,1],"texture":"#side"},"north":{"uv":[0,0,8,1],"texture":"#side"},"south":{"uv":[0,0,8,1],"texture":"#side"}}},{"from":[1,7.02,1],"to":[8,8.02,8],"shade":false,"faces":{"east":{"uv":[0,0,8,1],"texture":"#side"},"west":{"uv":[0,0,8,1],"texture":"#side"},"north":{"uv":[0,0,8,1],"texture":"#side"},"south":{"uv":[0,0,8,1],"texture":"#side"}}},{"from":[1,11.02,8],"to":[8,12.02,15],"shade":false,"faces":{"east":{"uv":[0,0,8,1],"texture":"#side"},"west":{"uv":[0,0,8,1],"texture":"#side"},"north":{"uv":[0,0,8,1],"texture":"#side"},"south":{"uv":[0,0,8,1],"texture":"#side"}}},{"from":[4.5,0,8],"to":[11.5,14,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":false},"shade":false,"faces":{"north":{"uv":[4,0,12,14],"texture":"#stem"},"south":{"uv":[4,0,12,14],"texture":"#stem"}}},{"from":[4.5,0,8],"to":[11.5,14,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":-45,"rescale":false},"shade":false,"faces":{"north":{"uv":[4,0,12,14],"texture":"#stem"},"south":{"uv":[4,0,12,14],"texture":"#stem"}}}]},"smithing_table":{"parent":"minecraft:block/cube","textures":{"down":"minecraft:block/smithing_table_bottom","east":"minecraft:block/smithing_table_side","north":"minecraft:block/smithing_table_front","particle":"minecraft:block/smithing_table_front","south":"minecraft:block/smithing_table_front","up":"minecraft:block/smithing_table_top","west":"minecraft:block/smithing_table_side"}},"smoker":{"parent":"minecraft:block/orientable_with_bottom","textures":{"bottom":"minecraft:block/smoker_bottom","front":"minecraft:block/smoker_front","side":"minecraft:block/smoker_side","top":"minecraft:block/smoker_top"}},"smoker_on":{"parent":"minecraft:block/orientable_with_bottom","textures":{"bottom":"minecraft:block/smoker_bottom","front":"minecraft:block/smoker_front_on","side":"minecraft:block/smoker_side","top":"minecraft:block/smoker_top"}},"smooth_basalt":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/smooth_basalt"}},"smooth_quartz":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/quartz_block_bottom"}},"smooth_quartz_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/quartz_block_bottom","side":"minecraft:block/quartz_block_bottom","top":"minecraft:block/quartz_block_bottom"}},"smooth_quartz_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/quartz_block_bottom","side":"minecraft:block/quartz_block_bottom","top":"minecraft:block/quartz_block_bottom"}},"smooth_quartz_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/quartz_block_bottom","side":"minecraft:block/quartz_block_bottom","top":"minecraft:block/quartz_block_bottom"}},"smooth_quartz_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/quartz_block_bottom","side":"minecraft:block/quartz_block_bottom","top":"minecraft:block/quartz_block_bottom"}},"smooth_quartz_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/quartz_block_bottom","side":"minecraft:block/quartz_block_bottom","top":"minecraft:block/quartz_block_bottom"}},"smooth_red_sandstone":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/red_sandstone_top"}},"smooth_red_sandstone_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/red_sandstone_top","side":"minecraft:block/red_sandstone_top","top":"minecraft:block/red_sandstone_top"}},"smooth_red_sandstone_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/red_sandstone_top","side":"minecraft:block/red_sandstone_top","top":"minecraft:block/red_sandstone_top"}},"smooth_red_sandstone_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/red_sandstone_top","side":"minecraft:block/red_sandstone_top","top":"minecraft:block/red_sandstone_top"}},"smooth_red_sandstone_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/red_sandstone_top","side":"minecraft:block/red_sandstone_top","top":"minecraft:block/red_sandstone_top"}},"smooth_red_sandstone_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/red_sandstone_top","side":"minecraft:block/red_sandstone_top","top":"minecraft:block/red_sandstone_top"}},"smooth_sandstone":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/sandstone_top"}},"smooth_sandstone_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/sandstone_top","side":"minecraft:block/sandstone_top","top":"minecraft:block/sandstone_top"}},"smooth_sandstone_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/sandstone_top","side":"minecraft:block/sandstone_top","top":"minecraft:block/sandstone_top"}},"smooth_sandstone_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/sandstone_top","side":"minecraft:block/sandstone_top","top":"minecraft:block/sandstone_top"}},"smooth_sandstone_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/sandstone_top","side":"minecraft:block/sandstone_top","top":"minecraft:block/sandstone_top"}},"smooth_sandstone_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/sandstone_top","side":"minecraft:block/sandstone_top","top":"minecraft:block/sandstone_top"}},"smooth_stone":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/smooth_stone"}},"smooth_stone_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/smooth_stone","side":"minecraft:block/smooth_stone_slab_side","top":"minecraft:block/smooth_stone"}},"smooth_stone_slab_double":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/smooth_stone","side":"minecraft:block/smooth_stone_slab_side"}},"smooth_stone_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/smooth_stone","side":"minecraft:block/smooth_stone_slab_side","top":"minecraft:block/smooth_stone"}},"sniffer_egg":{"textures":{"particle":"#north"},"elements":[{"from":[1,0,2],"to":[15,16,14],"faces":{"north":{"uv":[0,0,14,16],"texture":"#north"},"east":{"uv":[0,0,12,16],"texture":"#east"},"south":{"uv":[0,0,14,16],"texture":"#south"},"west":{"uv":[0,0,12,16],"texture":"#west"},"up":{"uv":[0,0,14,12],"texture":"#top","cullface":"up"},"down":{"uv":[0,0,14,12],"texture":"#bottom","cullface":"down"}}}]},"sniffer_egg_not_cracked":{"parent":"minecraft:block/sniffer_egg","textures":{"bottom":"minecraft:block/sniffer_egg_not_cracked_bottom","east":"minecraft:block/sniffer_egg_not_cracked_east","north":"minecraft:block/sniffer_egg_not_cracked_north","south":"minecraft:block/sniffer_egg_not_cracked_south","top":"minecraft:block/sniffer_egg_not_cracked_top","west":"minecraft:block/sniffer_egg_not_cracked_west"}},"sniffer_egg_slightly_cracked":{"parent":"minecraft:block/sniffer_egg","textures":{"bottom":"minecraft:block/sniffer_egg_slightly_cracked_bottom","east":"minecraft:block/sniffer_egg_slightly_cracked_east","north":"minecraft:block/sniffer_egg_slightly_cracked_north","south":"minecraft:block/sniffer_egg_slightly_cracked_south","top":"minecraft:block/sniffer_egg_slightly_cracked_top","west":"minecraft:block/sniffer_egg_slightly_cracked_west"}},"sniffer_egg_very_cracked":{"parent":"minecraft:block/sniffer_egg","textures":{"bottom":"minecraft:block/sniffer_egg_very_cracked_bottom","east":"minecraft:block/sniffer_egg_very_cracked_east","north":"minecraft:block/sniffer_egg_very_cracked_north","south":"minecraft:block/sniffer_egg_very_cracked_south","top":"minecraft:block/sniffer_egg_very_cracked_top","west":"minecraft:block/sniffer_egg_very_cracked_west"}},"snow_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/snow"}},"snow_height10":{"textures":{"particle":"block/snow","texture":"block/snow"},"elements":[{"from":[0,0,0],"to":[16,10,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#texture"},"north":{"uv":[0,6,16,16],"texture":"#texture","cullface":"north"},"south":{"uv":[0,6,16,16],"texture":"#texture","cullface":"south"},"west":{"uv":[0,6,16,16],"texture":"#texture","cullface":"west"},"east":{"uv":[0,6,16,16],"texture":"#texture","cullface":"east"}}}]},"snow_height12":{"textures":{"particle":"block/snow","texture":"block/snow"},"elements":[{"from":[0,0,0],"to":[16,12,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#texture"},"north":{"uv":[0,4,16,16],"texture":"#texture","cullface":"north"},"south":{"uv":[0,4,16,16],"texture":"#texture","cullface":"south"},"west":{"uv":[0,4,16,16],"texture":"#texture","cullface":"west"},"east":{"uv":[0,4,16,16],"texture":"#texture","cullface":"east"}}}]},"snow_height14":{"textures":{"particle":"block/snow","texture":"block/snow"},"elements":[{"from":[0,0,0],"to":[16,14,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#texture"},"north":{"uv":[0,2,16,16],"texture":"#texture","cullface":"north"},"south":{"uv":[0,2,16,16],"texture":"#texture","cullface":"south"},"west":{"uv":[0,2,16,16],"texture":"#texture","cullface":"west"},"east":{"uv":[0,2,16,16],"texture":"#texture","cullface":"east"}}}]},"snow_height2":{"parent":"block/thin_block","textures":{"particle":"block/snow","texture":"block/snow"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#texture"},"north":{"uv":[0,14,16,16],"texture":"#texture","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#texture","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#texture","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#texture","cullface":"east"}}}]},"snow_height4":{"textures":{"particle":"block/snow","texture":"block/snow"},"elements":[{"from":[0,0,0],"to":[16,4,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#texture"},"north":{"uv":[0,12,16,16],"texture":"#texture","cullface":"north"},"south":{"uv":[0,12,16,16],"texture":"#texture","cullface":"south"},"west":{"uv":[0,12,16,16],"texture":"#texture","cullface":"west"},"east":{"uv":[0,12,16,16],"texture":"#texture","cullface":"east"}}}]},"snow_height6":{"textures":{"particle":"block/snow","texture":"block/snow"},"elements":[{"from":[0,0,0],"to":[16,6,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#texture"},"north":{"uv":[0,10,16,16],"texture":"#texture","cullface":"north"},"south":{"uv":[0,10,16,16],"texture":"#texture","cullface":"south"},"west":{"uv":[0,10,16,16],"texture":"#texture","cullface":"west"},"east":{"uv":[0,10,16,16],"texture":"#texture","cullface":"east"}}}]},"snow_height8":{"textures":{"particle":"block/snow","texture":"block/snow"},"elements":[{"from":[0,0,0],"to":[16,8,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#texture"},"north":{"uv":[0,8,16,16],"texture":"#texture","cullface":"north"},"south":{"uv":[0,8,16,16],"texture":"#texture","cullface":"south"},"west":{"uv":[0,8,16,16],"texture":"#texture","cullface":"west"},"east":{"uv":[0,8,16,16],"texture":"#texture","cullface":"east"}}}]},"soul_campfire":{"parent":"minecraft:block/template_campfire","textures":{"fire":"minecraft:block/soul_campfire_fire","lit_log":"minecraft:block/soul_campfire_log_lit"}},"soul_fire_floor0":{"parent":"minecraft:block/template_fire_floor","textures":{"fire":"minecraft:block/soul_fire_0"}},"soul_fire_floor1":{"parent":"minecraft:block/template_fire_floor","textures":{"fire":"minecraft:block/soul_fire_1"}},"soul_fire_side0":{"parent":"minecraft:block/template_fire_side","textures":{"fire":"minecraft:block/soul_fire_0"}},"soul_fire_side1":{"parent":"minecraft:block/template_fire_side","textures":{"fire":"minecraft:block/soul_fire_1"}},"soul_fire_side_alt0":{"parent":"minecraft:block/template_fire_side_alt","textures":{"fire":"minecraft:block/soul_fire_0"}},"soul_fire_side_alt1":{"parent":"minecraft:block/template_fire_side_alt","textures":{"fire":"minecraft:block/soul_fire_1"}},"soul_lantern":{"parent":"minecraft:block/template_lantern","textures":{"lantern":"minecraft:block/soul_lantern"}},"soul_lantern_hanging":{"parent":"minecraft:block/template_hanging_lantern","textures":{"lantern":"minecraft:block/soul_lantern"}},"soul_sand":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/soul_sand"}},"soul_soil":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/soul_soil"}},"soul_torch":{"parent":"minecraft:block/template_torch","textures":{"torch":"minecraft:block/soul_torch"}},"soul_wall_torch":{"parent":"minecraft:block/template_torch_wall","textures":{"torch":"minecraft:block/soul_torch"}},"spawner":{"parent":"minecraft:block/cube_all_inner_faces","textures":{"all":"minecraft:block/spawner"}},"sponge":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/sponge"}},"spore_blossom":{"parent":"block/block","textures":{"particle":"block/spore_blossom","flower":"block/spore_blossom","base":"block/spore_blossom_base"},"elements":[{"from":[1,15.9,1],"to":[15,15.9,15],"shade":false,"faces":{"up":{"uv":[1,1,15,15],"texture":"#base"},"down":{"uv":[1,1,15,15],"texture":"#base"}}},{"from":[8,15.7,0],"to":[24,15.7,16],"rotation":{"origin":[8,16,0],"axis":"z","angle":-22.5,"rescale":false},"shade":false,"faces":{"up":{"uv":[0,0,16,16],"texture":"#flower","rotation":90},"down":{"uv":[0,16,16,0],"texture":"#flower","rotation":270}}},{"from":[-8,15.7,0],"to":[8,15.7,16],"rotation":{"origin":[8,16,0],"axis":"z","angle":22.5,"rescale":false},"shade":false,"faces":{"up":{"uv":[0,0,16,16],"texture":"#flower","rotation":270},"down":{"uv":[0,16,16,0],"texture":"#flower","rotation":90}}},{"from":[0,15.7,8],"to":[16,15.7,24],"rotation":{"origin":[0,16,8],"axis":"x","angle":22.5,"rescale":false},"shade":false,"faces":{"up":{"uv":[16,16,0,0],"texture":"#flower"},"down":{"uv":[16,0,0,16],"texture":"#flower"}}},{"from":[0,15.7,-8],"to":[16,15.7,8],"rotation":{"origin":[0,16,8],"axis":"x","angle":-22.5,"rescale":false},"shade":false,"faces":{"up":{"uv":[0,0,16,16],"texture":"#flower"},"down":{"uv":[0,16,16,0],"texture":"#flower"}}}]},"spruce_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/spruce_planks"}},"spruce_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/spruce_planks"}},"spruce_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/spruce_planks"}},"spruce_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/spruce_door_bottom","top":"minecraft:block/spruce_door_top"}},"spruce_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/spruce_door_bottom","top":"minecraft:block/spruce_door_top"}},"spruce_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/spruce_door_bottom","top":"minecraft:block/spruce_door_top"}},"spruce_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/spruce_door_bottom","top":"minecraft:block/spruce_door_top"}},"spruce_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/spruce_door_bottom","top":"minecraft:block/spruce_door_top"}},"spruce_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/spruce_door_bottom","top":"minecraft:block/spruce_door_top"}},"spruce_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/spruce_door_bottom","top":"minecraft:block/spruce_door_top"}},"spruce_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/spruce_door_bottom","top":"minecraft:block/spruce_door_top"}},"spruce_fence_gate":{"parent":"minecraft:block/template_fence_gate","textures":{"texture":"minecraft:block/spruce_planks"}},"spruce_fence_gate_open":{"parent":"minecraft:block/template_fence_gate_open","textures":{"texture":"minecraft:block/spruce_planks"}},"spruce_fence_gate_wall":{"parent":"minecraft:block/template_fence_gate_wall","textures":{"texture":"minecraft:block/spruce_planks"}},"spruce_fence_gate_wall_open":{"parent":"minecraft:block/template_fence_gate_wall_open","textures":{"texture":"minecraft:block/spruce_planks"}},"spruce_fence_inventory":{"parent":"minecraft:block/fence_inventory","textures":{"texture":"minecraft:block/spruce_planks"}},"spruce_fence_post":{"parent":"minecraft:block/fence_post","textures":{"texture":"minecraft:block/spruce_planks"}},"spruce_fence_side":{"parent":"minecraft:block/fence_side","textures":{"texture":"minecraft:block/spruce_planks"}},"spruce_hanging_sign":{"textures":{"particle":"minecraft:block/stripped_spruce_log"}},"spruce_leaves":{"parent":"minecraft:block/leaves","textures":{"all":"minecraft:block/spruce_leaves"}},"spruce_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/spruce_log_top","side":"minecraft:block/spruce_log"}},"spruce_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/spruce_log_top","side":"minecraft:block/spruce_log"}},"spruce_planks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/spruce_planks"}},"spruce_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/spruce_planks"}},"spruce_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/spruce_planks"}},"spruce_sapling":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/spruce_sapling"}},"spruce_sign":{"textures":{"particle":"minecraft:block/spruce_planks"}},"spruce_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/spruce_planks","side":"minecraft:block/spruce_planks","top":"minecraft:block/spruce_planks"}},"spruce_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/spruce_planks","side":"minecraft:block/spruce_planks","top":"minecraft:block/spruce_planks"}},"spruce_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/spruce_planks","side":"minecraft:block/spruce_planks","top":"minecraft:block/spruce_planks"}},"spruce_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/spruce_planks","side":"minecraft:block/spruce_planks","top":"minecraft:block/spruce_planks"}},"spruce_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/spruce_planks","side":"minecraft:block/spruce_planks","top":"minecraft:block/spruce_planks"}},"spruce_trapdoor_bottom":{"parent":"minecraft:block/template_orientable_trapdoor_bottom","textures":{"texture":"minecraft:block/spruce_trapdoor"}},"spruce_trapdoor_open":{"parent":"minecraft:block/template_orientable_trapdoor_open","textures":{"texture":"minecraft:block/spruce_trapdoor"}},"spruce_trapdoor_top":{"parent":"minecraft:block/template_orientable_trapdoor_top","textures":{"texture":"minecraft:block/spruce_trapdoor"}},"spruce_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/spruce_log","side":"minecraft:block/spruce_log"}},"stairs":{"parent":"block/block","display":{"gui":{"rotation":[30,135,0],"translation":[0,0,0],"scale":[0.625,0.625,0.625]},"head":{"rotation":[0,-90,0],"translation":[0,0,0],"scale":[1,1,1]},"thirdperson_lefthand":{"rotation":[75,-135,0],"translation":[0,2.5,0],"scale":[0.375,0.375,0.375]}},"textures":{"particle":"#side"},"elements":[{"from":[0,0,0],"to":[16,8,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,8,16,16],"texture":"#side","cullface":"north"},"south":{"uv":[0,8,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,8,16,16],"texture":"#side","cullface":"west"},"east":{"uv":[0,8,16,16],"texture":"#side","cullface":"east"}}},{"from":[8,8,0],"to":[16,16,16],"faces":{"up":{"uv":[8,0,16,16],"texture":"#top","cullface":"up"},"north":{"uv":[0,0,8,8],"texture":"#side","cullface":"north"},"south":{"uv":[8,0,16,8],"texture":"#side","cullface":"south"},"west":{"uv":[0,0,16,8],"texture":"#side"},"east":{"uv":[0,0,16,8],"texture":"#side","cullface":"east"}}}]},"stem_fruit":{"ambientocclusion":false,"textures":{"particle":"#stem"},"elements":[{"from":[0,-1,8],"to":[16,7,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"north":{"uv":[0,0,16,8],"texture":"#stem","tintindex":0},"south":{"uv":[16,0,0,8],"texture":"#stem","tintindex":0}}},{"from":[8,-1,0],"to":[8,7,16],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"west":{"uv":[0,0,16,8],"texture":"#stem","tintindex":0},"east":{"uv":[16,0,0,8],"texture":"#stem","tintindex":0}}},{"from":[0,0,8],"to":[9,16,8],"faces":{"north":{"uv":[9,0,0,16],"texture":"#upperstem","tintindex":0},"south":{"uv":[0,0,9,16],"texture":"#upperstem","tintindex":0}}}]},"stem_growth0":{"ambientocclusion":false,"textures":{"particle":"#stem"},"elements":[{"from":[0,-1,8],"to":[16,1,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"north":{"uv":[0,0,16,2],"texture":"#stem","tintindex":0},"south":{"uv":[16,0,0,2],"texture":"#stem","tintindex":0}}},{"from":[8,-1,0],"to":[8,1,16],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"west":{"uv":[0,0,16,2],"texture":"#stem","tintindex":0},"east":{"uv":[16,0,0,2],"texture":"#stem","tintindex":0}}}]},"stem_growth1":{"ambientocclusion":false,"textures":{"particle":"#stem"},"elements":[{"from":[0,-1,8],"to":[16,3,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"north":{"uv":[0,0,16,4],"texture":"#stem","tintindex":0},"south":{"uv":[16,0,0,4],"texture":"#stem","tintindex":0}}},{"from":[8,-1,0],"to":[8,3,16],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"west":{"uv":[0,0,16,4],"texture":"#stem","tintindex":0},"east":{"uv":[16,0,0,4],"texture":"#stem","tintindex":0}}}]},"stem_growth2":{"ambientocclusion":false,"textures":{"particle":"#stem"},"elements":[{"from":[0,-1,8],"to":[16,5,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"north":{"uv":[0,0,16,6],"texture":"#stem","tintindex":0},"south":{"uv":[16,0,0,6],"texture":"#stem","tintindex":0}}},{"from":[8,-1,0],"to":[8,5,16],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"west":{"uv":[0,0,16,6],"texture":"#stem","tintindex":0},"east":{"uv":[16,0,0,6],"texture":"#stem","tintindex":0}}}]},"stem_growth3":{"ambientocclusion":false,"textures":{"particle":"#stem"},"elements":[{"from":[0,-1,8],"to":[16,7,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"north":{"uv":[0,0,16,8],"texture":"#stem","tintindex":0},"south":{"uv":[16,0,0,8],"texture":"#stem","tintindex":0}}},{"from":[8,-1,0],"to":[8,7,16],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"west":{"uv":[0,0,16,8],"texture":"#stem","tintindex":0},"east":{"uv":[16,0,0,8],"texture":"#stem","tintindex":0}}}]},"stem_growth4":{"ambientocclusion":false,"textures":{"particle":"#stem"},"elements":[{"from":[0,-1,8],"to":[16,9,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"north":{"uv":[0,0,16,10],"texture":"#stem","tintindex":0},"south":{"uv":[16,0,0,10],"texture":"#stem","tintindex":0}}},{"from":[8,-1,0],"to":[8,9,16],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"west":{"uv":[0,0,16,10],"texture":"#stem","tintindex":0},"east":{"uv":[16,0,0,10],"texture":"#stem","tintindex":0}}}]},"stem_growth5":{"ambientocclusion":false,"textures":{"particle":"#stem"},"elements":[{"from":[0,-1,8],"to":[16,11,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"north":{"uv":[0,0,16,12],"texture":"#stem","tintindex":0},"south":{"uv":[16,0,0,12],"texture":"#stem","tintindex":0}}},{"from":[8,-1,0],"to":[8,11,16],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"west":{"uv":[0,0,16,12],"texture":"#stem","tintindex":0},"east":{"uv":[16,0,0,12],"texture":"#stem","tintindex":0}}}]},"stem_growth6":{"ambientocclusion":false,"textures":{"particle":"#stem"},"elements":[{"from":[0,-1,8],"to":[16,13,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"north":{"uv":[0,0,16,14],"texture":"#stem","tintindex":0},"south":{"uv":[16,0,0,14],"texture":"#stem","tintindex":0}}},{"from":[8,-1,0],"to":[8,13,16],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"west":{"uv":[0,0,16,14],"texture":"#stem","tintindex":0},"east":{"uv":[16,0,0,14],"texture":"#stem","tintindex":0}}}]},"stem_growth7":{"ambientocclusion":false,"textures":{"particle":"#stem"},"elements":[{"from":[0,-1,8],"to":[16,15,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"north":{"uv":[0,0,16,16],"texture":"#stem","tintindex":0},"south":{"uv":[16,0,0,16],"texture":"#stem","tintindex":0}}},{"from":[8,-1,0],"to":[8,15,16],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"west":{"uv":[0,0,16,16],"texture":"#stem","tintindex":0},"east":{"uv":[16,0,0,16],"texture":"#stem","tintindex":0}}}]},"sticky_piston":{"parent":"minecraft:block/template_piston","textures":{"bottom":"minecraft:block/piston_bottom","platform":"minecraft:block/piston_top_sticky","side":"minecraft:block/piston_side"}},"sticky_piston_inventory":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/piston_bottom","side":"minecraft:block/piston_side","top":"minecraft:block/piston_top_sticky"}},"stone":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/stone"}},"stone_brick_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/stone_bricks","side":"minecraft:block/stone_bricks","top":"minecraft:block/stone_bricks"}},"stone_brick_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/stone_bricks","side":"minecraft:block/stone_bricks","top":"minecraft:block/stone_bricks"}},"stone_brick_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/stone_bricks","side":"minecraft:block/stone_bricks","top":"minecraft:block/stone_bricks"}},"stone_brick_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/stone_bricks","side":"minecraft:block/stone_bricks","top":"minecraft:block/stone_bricks"}},"stone_brick_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/stone_bricks","side":"minecraft:block/stone_bricks","top":"minecraft:block/stone_bricks"}},"stone_brick_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/stone_bricks"}},"stone_brick_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/stone_bricks"}},"stone_brick_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/stone_bricks"}},"stone_brick_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/stone_bricks"}},"stone_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/stone_bricks"}},"stone_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/stone"}},"stone_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/stone"}},"stone_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/stone"}},"stone_mirrored":{"parent":"minecraft:block/cube_mirrored_all","textures":{"all":"minecraft:block/stone"}},"stone_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/stone"}},"stone_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/stone"}},"stone_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/stone","side":"minecraft:block/stone","top":"minecraft:block/stone"}},"stone_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/stone","side":"minecraft:block/stone","top":"minecraft:block/stone"}},"stone_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/stone","side":"minecraft:block/stone","top":"minecraft:block/stone"}},"stone_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/stone","side":"minecraft:block/stone","top":"minecraft:block/stone"}},"stone_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/stone","side":"minecraft:block/stone","top":"minecraft:block/stone"}},"stonecutter":{"parent":"block/block","textures":{"particle":"block/stonecutter_bottom","bottom":"block/stonecutter_bottom","top":"block/stonecutter_top","side":"block/stonecutter_side","saw":"block/stonecutter_saw"},"elements":[{"from":[0,0,0],"to":[16,9,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,7,16,16],"texture":"#side","cullface":"north"},"south":{"uv":[0,7,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,7,16,16],"texture":"#side","cullface":"west"},"east":{"uv":[0,7,16,16],"texture":"#side","cullface":"east"}}},{"from":[1,9,8],"to":[15,16,8],"faces":{"north":{"uv":[1,9,15,16],"texture":"#saw","tintindex":0},"south":{"uv":[15,9,1,16],"texture":"#saw","tintindex":0}}}]},"stripped_acacia_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_acacia_log_top","side":"minecraft:block/stripped_acacia_log"}},"stripped_acacia_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/stripped_acacia_log_top","side":"minecraft:block/stripped_acacia_log"}},"stripped_acacia_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_acacia_log","side":"minecraft:block/stripped_acacia_log"}},"stripped_bamboo_block":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_bamboo_block_top","side":"minecraft:block/stripped_bamboo_block"}},"stripped_bamboo_block_x":{"parent":"minecraft:block/cube_column_uv_locked_x","textures":{"end":"minecraft:block/stripped_bamboo_block_top","side":"minecraft:block/stripped_bamboo_block"}},"stripped_bamboo_block_y":{"parent":"minecraft:block/cube_column_uv_locked_y","textures":{"end":"minecraft:block/stripped_bamboo_block_top","side":"minecraft:block/stripped_bamboo_block"}},"stripped_bamboo_block_z":{"parent":"minecraft:block/cube_column_uv_locked_z","textures":{"end":"minecraft:block/stripped_bamboo_block_top","side":"minecraft:block/stripped_bamboo_block"}},"stripped_birch_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_birch_log_top","side":"minecraft:block/stripped_birch_log"}},"stripped_birch_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/stripped_birch_log_top","side":"minecraft:block/stripped_birch_log"}},"stripped_birch_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_birch_log","side":"minecraft:block/stripped_birch_log"}},"stripped_cherry_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_cherry_log_top","side":"minecraft:block/stripped_cherry_log"}},"stripped_cherry_log_x":{"parent":"minecraft:block/cube_column_uv_locked_x","textures":{"end":"minecraft:block/stripped_cherry_log_top","side":"minecraft:block/stripped_cherry_log"}},"stripped_cherry_log_y":{"parent":"minecraft:block/cube_column_uv_locked_y","textures":{"end":"minecraft:block/stripped_cherry_log_top","side":"minecraft:block/stripped_cherry_log"}},"stripped_cherry_log_z":{"parent":"minecraft:block/cube_column_uv_locked_z","textures":{"end":"minecraft:block/stripped_cherry_log_top","side":"minecraft:block/stripped_cherry_log"}},"stripped_cherry_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_cherry_log","side":"minecraft:block/stripped_cherry_log"}},"stripped_crimson_hyphae":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_crimson_stem","side":"minecraft:block/stripped_crimson_stem"}},"stripped_crimson_stem":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_crimson_stem_top","side":"minecraft:block/stripped_crimson_stem"}},"stripped_dark_oak_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_dark_oak_log_top","side":"minecraft:block/stripped_dark_oak_log"}},"stripped_dark_oak_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/stripped_dark_oak_log_top","side":"minecraft:block/stripped_dark_oak_log"}},"stripped_dark_oak_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_dark_oak_log","side":"minecraft:block/stripped_dark_oak_log"}},"stripped_jungle_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_jungle_log_top","side":"minecraft:block/stripped_jungle_log"}},"stripped_jungle_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/stripped_jungle_log_top","side":"minecraft:block/stripped_jungle_log"}},"stripped_jungle_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_jungle_log","side":"minecraft:block/stripped_jungle_log"}},"stripped_mangrove_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_mangrove_log_top","side":"minecraft:block/stripped_mangrove_log"}},"stripped_mangrove_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/stripped_mangrove_log_top","side":"minecraft:block/stripped_mangrove_log"}},"stripped_mangrove_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_mangrove_log","side":"minecraft:block/stripped_mangrove_log"}},"stripped_oak_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_oak_log_top","side":"minecraft:block/stripped_oak_log"}},"stripped_oak_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/stripped_oak_log_top","side":"minecraft:block/stripped_oak_log"}},"stripped_oak_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_oak_log","side":"minecraft:block/stripped_oak_log"}},"stripped_pale_oak_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_pale_oak_log_top","side":"minecraft:block/stripped_pale_oak_log"}},"stripped_pale_oak_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/stripped_pale_oak_log_top","side":"minecraft:block/stripped_pale_oak_log"}},"stripped_pale_oak_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_pale_oak_log","side":"minecraft:block/stripped_pale_oak_log"}},"stripped_spruce_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_spruce_log_top","side":"minecraft:block/stripped_spruce_log"}},"stripped_spruce_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/stripped_spruce_log_top","side":"minecraft:block/stripped_spruce_log"}},"stripped_spruce_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_spruce_log","side":"minecraft:block/stripped_spruce_log"}},"stripped_warped_hyphae":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_warped_stem","side":"minecraft:block/stripped_warped_stem"}},"stripped_warped_stem":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_warped_stem_top","side":"minecraft:block/stripped_warped_stem"}},"structure_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/structure_block"}},"structure_block_corner":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/structure_block_corner"}},"structure_block_data":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/structure_block_data"}},"structure_block_load":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/structure_block_load"}},"structure_block_save":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/structure_block_save"}},"structure_void":{"textures":{"particle":"minecraft:item/structure_void"}},"sugar_cane":{"parent":"minecraft:block/tinted_cross","textures":{"cross":"minecraft:block/sugar_cane"}},"sunflower_bottom":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/sunflower_bottom"}},"sunflower_top":{"ambientocclusion":false,"textures":{"particle":"block/sunflower_front","cross":"block/sunflower_top","back":"block/sunflower_back","front":"block/sunflower_front"},"elements":[{"from":[0.8,0,8],"to":[15.2,8,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[0,8,16,16],"texture":"#cross"},"south":{"uv":[0,8,16,16],"texture":"#cross"}}},{"from":[8,0,0.8],"to":[8,8,15.2],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[0,8,16,16],"texture":"#cross"},"east":{"uv":[0,8,16,16],"texture":"#cross"}}},{"from":[9.6,-1,1],"to":[9.6,15,15],"rotation":{"origin":[8,8,8],"axis":"z","angle":22.5,"rescale":true},"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#back"},"east":{"uv":[0,0,16,16],"texture":"#front"}}}]},"suspicious_gravel_0":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/suspicious_gravel_0"}},"suspicious_gravel_1":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/suspicious_gravel_1"}},"suspicious_gravel_2":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/suspicious_gravel_2"}},"suspicious_gravel_3":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/suspicious_gravel_3"}},"suspicious_sand_0":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/suspicious_sand_0"}},"suspicious_sand_1":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/suspicious_sand_1"}},"suspicious_sand_2":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/suspicious_sand_2"}},"suspicious_sand_3":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/suspicious_sand_3"}},"sweet_berry_bush_stage0":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/sweet_berry_bush_stage0"}},"sweet_berry_bush_stage1":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/sweet_berry_bush_stage1"}},"sweet_berry_bush_stage2":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/sweet_berry_bush_stage2"}},"sweet_berry_bush_stage3":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/sweet_berry_bush_stage3"}},"tall_dry_grass":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/tall_dry_grass"}},"tall_grass_bottom":{"parent":"minecraft:block/tinted_cross","textures":{"cross":"minecraft:block/tall_grass_bottom"}},"tall_grass_top":{"parent":"minecraft:block/tinted_cross","textures":{"cross":"minecraft:block/tall_grass_top"}},"tall_seagrass_bottom":{"parent":"minecraft:block/template_seagrass","textures":{"texture":"minecraft:block/tall_seagrass_bottom"}},"tall_seagrass_top":{"parent":"minecraft:block/template_seagrass","textures":{"texture":"minecraft:block/tall_seagrass_top"}},"target":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/target_top","side":"minecraft:block/target_side"}},"template_anvil":{"parent":"block/block","textures":{"particle":"block/anvil","body":"block/anvil"},"display":{"fixed":{"rotation":[0,90,0],"translation":[0,0,0],"scale":[0.5,0.5,0.5]}},"elements":[{"__comment":"Anvil base","from":[2,0,2],"to":[14,4,14],"faces":{"down":{"uv":[2,2,14,14],"texture":"#body","rotation":180,"cullface":"down"},"up":{"uv":[2,2,14,14],"texture":"#body","rotation":180},"north":{"uv":[2,12,14,16],"texture":"#body"},"south":{"uv":[2,12,14,16],"texture":"#body"},"west":{"uv":[0,2,4,14],"texture":"#body","rotation":90},"east":{"uv":[4,2,0,14],"texture":"#body","rotation":270}}},{"__comment":"Lower narrow portion","from":[4,4,3],"to":[12,5,13],"faces":{"up":{"uv":[4,3,12,13],"texture":"#body","rotation":180},"north":{"uv":[4,11,12,12],"texture":"#body"},"south":{"uv":[4,11,12,12],"texture":"#body"},"west":{"uv":[4,3,5,13],"texture":"#body","rotation":90},"east":{"uv":[5,3,4,13],"texture":"#body","rotation":270}}},{"__comment":"Wider section beneath top portion","from":[6,5,4],"to":[10,10,12],"faces":{"north":{"uv":[6,6,10,11],"texture":"#body"},"south":{"uv":[6,6,10,11],"texture":"#body"},"west":{"uv":[5,4,10,12],"texture":"#body","rotation":90},"east":{"uv":[10,4,5,12],"texture":"#body","rotation":270}}},{"__comment":"Anvil top","from":[3,10,0],"to":[13,16,16],"faces":{"down":{"uv":[3,0,13,16],"texture":"#body","rotation":180},"up":{"uv":[3,0,13,16],"texture":"#top","rotation":180},"north":{"uv":[3,0,13,6],"texture":"#body"},"south":{"uv":[3,0,13,6],"texture":"#body"},"west":{"uv":[10,0,16,16],"texture":"#body","rotation":90},"east":{"uv":[16,0,10,16],"texture":"#body","rotation":270}}}]},"template_azalea":{"parent":"block/block","textures":{"particle":"block/azalea_plant","plant":"block/azalea_plant"},"elements":[{"from":[0,16,0],"to":[16,16,16],"faces":{"down":{"uv":[0,16,16,0],"texture":"#top"},"up":{"uv":[0,0,16,16],"texture":"#top","cullface":"up"}}},{"from":[0,5,0],"to":[16,16,0.01],"faces":{"north":{"uv":[0,0,16,11],"texture":"#side","cullface":"north"},"south":{"uv":[16,0,0,11],"texture":"#side"}}},{"from":[0,5,15.99],"to":[16,16,16],"faces":{"north":{"uv":[16,0,0,11],"texture":"#side"},"south":{"uv":[0,0,16,11],"texture":"#side","cullface":"south"}}},{"from":[0,5,0],"to":[0.01,16,16],"faces":{"west":{"uv":[0,0,16,11],"texture":"#side","cullface":"west"},"east":{"uv":[16,0,0,11],"texture":"#side"}}},{"from":[15.99,5,0],"to":[16,16,16],"faces":{"west":{"uv":[16,0,0,11],"texture":"#side"},"east":{"uv":[0,0,16,11],"texture":"#side","cullface":"east"}}},{"from":[0.1,0,8],"to":[15.9,15.9,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"north":{"uv":[0,0,16,16],"texture":"#plant"},"south":{"uv":[0,0,16,16],"texture":"#plant"}}},{"from":[8,0,0.1],"to":[8,15.9,15.9],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"west":{"uv":[0,0,16,16],"texture":"#plant"},"east":{"uv":[0,0,16,16],"texture":"#plant"}}}]},"template_cake_with_candle":{"textures":{"particle":"block/cake_side","bottom":"block/cake_bottom","top":"block/cake_top","side":"block/cake_side"},"elements":[{"from":[1,0,1],"to":[15,8,15],"faces":{"down":{"texture":"#bottom","cullface":"down"},"up":{"texture":"#top"},"north":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side"},"east":{"texture":"#side"}}},{"from":[7,8,7],"to":[9,14,9],"faces":{"north":{"uv":[0,8,2,14],"texture":"#candle"},"east":{"uv":[0,8,2,14],"texture":"#candle"},"south":{"uv":[0,8,2,14],"texture":"#candle"},"west":{"uv":[0,8,2,14],"texture":"#candle"},"up":{"uv":[0,6,2,8],"texture":"#candle"},"down":{"uv":[0,14,2,16],"texture":"#candle","cullface":"down"}}},{"from":[7.5,14,8],"to":[8.5,15,8],"rotation":{"angle":-45,"axis":"y","origin":[8,14,8]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#candle"},"south":{"uv":[0,5,1,6],"texture":"#candle"}}},{"from":[7.5,14,8],"to":[8.5,15,8],"rotation":{"angle":45,"axis":"y","origin":[8,14,8]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#candle"},"south":{"uv":[0,5,1,6],"texture":"#candle"}}}]},"template_campfire":{"parent":"block/block","display":{"head":{"translation":[0,10.5,0]}},"textures":{"particle":"block/campfire_log","log":"block/campfire_log"},"elements":[{"from":[1,0,0],"to":[5,4,16],"faces":{"north":{"uv":[0,4,4,8],"texture":"#log","cullface":"north"},"east":{"uv":[0,1,16,5],"texture":"#lit_log"},"south":{"uv":[0,4,4,8],"texture":"#log","cullface":"south"},"west":{"uv":[16,0,0,4],"texture":"#log"},"up":{"uv":[0,0,16,4],"rotation":90,"texture":"#log"},"down":{"uv":[0,0,16,4],"rotation":90,"texture":"#log","cullface":"down"}}},{"from":[0,3,11],"to":[16,7,15],"faces":{"north":{"uv":[16,0,0,4],"texture":"#lit_log"},"east":{"uv":[0,4,4,8],"texture":"#log","cullface":"east"},"south":{"uv":[0,0,16,4],"texture":"#lit_log"},"west":{"uv":[0,4,4,8],"texture":"#log","cullface":"west"},"up":{"uv":[0,0,16,4],"rotation":180,"texture":"#log"},"down":{"uv":[0,4,16,8],"texture":"#lit_log"}}},{"from":[11,0,0],"to":[15,4,16],"faces":{"north":{"uv":[0,4,4,8],"texture":"#log","cullface":"north"},"east":{"uv":[0,0,16,4],"texture":"#log"},"south":{"uv":[0,4,4,8],"texture":"#log","cullface":"south"},"west":{"uv":[16,1,0,5],"texture":"#lit_log"},"up":{"uv":[0,0,16,4],"rotation":90,"texture":"#log"},"down":{"uv":[0,0,16,4],"rotation":90,"texture":"#log","cullface":"down"}}},{"from":[0,3,1],"to":[16,7,5],"faces":{"north":{"uv":[0,0,16,4],"texture":"#lit_log"},"east":{"uv":[0,4,4,8],"texture":"#log","cullface":"east"},"south":{"uv":[16,0,0,4],"texture":"#lit_log"},"west":{"uv":[0,4,4,8],"texture":"#log","cullface":"west"},"up":{"uv":[0,0,16,4],"rotation":180,"texture":"#log"},"down":{"uv":[0,4,16,8],"texture":"#lit_log"}}},{"from":[5,0,0],"to":[11,1,16],"faces":{"north":{"uv":[0,15,6,16],"texture":"#log","cullface":"north"},"south":{"uv":[10,15,16,16],"texture":"#log","cullface":"south"},"up":{"uv":[0,8,16,14],"rotation":90,"texture":"#lit_log"},"down":{"uv":[0,8,16,14],"rotation":90,"texture":"#log","cullface":"down"}}},{"from":[0.8,1,8],"to":[15.2,17,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#fire"},"south":{"uv":[0,0,16,16],"texture":"#fire"}}},{"from":[8,1,0.8],"to":[8,17,15.2],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#fire"},"east":{"uv":[0,0,16,16],"texture":"#fire"}}}]},"template_candle":{"parent":"block/block","elements":[{"from":[7,0,7],"to":[9,6,9],"faces":{"north":{"uv":[0,8,2,14],"texture":"#all"},"east":{"uv":[0,8,2,14],"texture":"#all"},"south":{"uv":[0,8,2,14],"texture":"#all"},"west":{"uv":[0,8,2,14],"texture":"#all"},"up":{"uv":[0,6,2,8],"texture":"#all"},"down":{"uv":[0,14,2,16],"texture":"#all","cullface":"down"}}},{"from":[7.5,6,8],"to":[8.5,7,8],"rotation":{"angle":45,"axis":"y","origin":[8,6,8]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[0,5,1,6],"texture":"#all"}}},{"from":[7.5,6,8],"to":[8.5,7,8],"rotation":{"angle":-45,"axis":"y","origin":[8,6,8]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[0,5,1,6],"texture":"#all"}}}]},"template_cauldron_full":{"ambientocclusion":false,"textures":{"particle":"block/cauldron_side","top":"block/cauldron_top","bottom":"block/cauldron_bottom","side":"block/cauldron_side","inside":"block/cauldron_inner"},"elements":[{"from":[0,3,0],"to":[2,16,16],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[2,3,2],"to":[14,4,14],"faces":{"up":{"texture":"#inside"},"down":{"texture":"#inside"}}},{"from":[14,3,0],"to":[16,16,16],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[2,3,0],"to":[14,16,2],"faces":{"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[2,3,14],"to":[14,16,16],"faces":{"north":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[0,0,0],"to":[4,3,2],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,2],"to":[2,3,4],"faces":{"east":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[12,0,0],"to":[16,3,2],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,2],"to":[16,3,4],"faces":{"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,14],"to":[4,3,16],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,12],"to":[2,3,14],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[12,0,14],"to":[16,3,16],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,12],"to":[16,3,14],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side","cullface":"east"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[2,4,2],"to":[14,15,14],"faces":{"up":{"texture":"#content","tintindex":0}}}]},"template_cauldron_level1":{"ambientocclusion":false,"textures":{"particle":"block/cauldron_side","top":"block/cauldron_top","bottom":"block/cauldron_bottom","side":"block/cauldron_side","inside":"block/cauldron_inner"},"elements":[{"from":[0,3,0],"to":[2,16,16],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[2,3,2],"to":[14,4,14],"faces":{"up":{"texture":"#inside"},"down":{"texture":"#inside"}}},{"from":[14,3,0],"to":[16,16,16],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[2,3,0],"to":[14,16,2],"faces":{"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[2,3,14],"to":[14,16,16],"faces":{"north":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[0,0,0],"to":[4,3,2],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,2],"to":[2,3,4],"faces":{"east":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[12,0,0],"to":[16,3,2],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,2],"to":[16,3,4],"faces":{"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,14],"to":[4,3,16],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,12],"to":[2,3,14],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[12,0,14],"to":[16,3,16],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,12],"to":[16,3,14],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side","cullface":"east"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[2,4,2],"to":[14,9,14],"faces":{"up":{"texture":"#content","tintindex":0}}}]},"template_cauldron_level2":{"ambientocclusion":false,"textures":{"particle":"block/cauldron_side","top":"block/cauldron_top","bottom":"block/cauldron_bottom","side":"block/cauldron_side","inside":"block/cauldron_inner"},"elements":[{"from":[0,3,0],"to":[2,16,16],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[2,3,2],"to":[14,4,14],"faces":{"up":{"texture":"#inside"},"down":{"texture":"#inside"}}},{"from":[14,3,0],"to":[16,16,16],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[2,3,0],"to":[14,16,2],"faces":{"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[2,3,14],"to":[14,16,16],"faces":{"north":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[0,0,0],"to":[4,3,2],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,2],"to":[2,3,4],"faces":{"east":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[12,0,0],"to":[16,3,2],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,2],"to":[16,3,4],"faces":{"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,14],"to":[4,3,16],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,12],"to":[2,3,14],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[12,0,14],"to":[16,3,16],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,12],"to":[16,3,14],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side","cullface":"east"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[2,4,2],"to":[14,12,14],"faces":{"up":{"texture":"#content","tintindex":0}}}]},"template_chiseled_bookshelf_slot_bottom_left":{"textures":{"particle":"#texture"},"elements":[{"from":[10,0,0],"to":[16,8,0],"faces":{"north":{"uv":[0,8,6,16],"texture":"#texture","cullface":"north"}}}]},"template_chiseled_bookshelf_slot_bottom_mid":{"textures":{"particle":"#texture"},"elements":[{"from":[5,0,0],"to":[10,8,0],"faces":{"north":{"uv":[6,8,11,16],"texture":"#texture","cullface":"north"}}}]},"template_chiseled_bookshelf_slot_bottom_right":{"textures":{"particle":"#texture"},"elements":[{"from":[0,0,0],"to":[5,8,0],"faces":{"north":{"uv":[11,8,16,16],"texture":"#texture","cullface":"north"}}}]},"template_chiseled_bookshelf_slot_top_left":{"textures":{"particle":"#texture"},"elements":[{"from":[10,8,0],"to":[16,16,0],"faces":{"north":{"uv":[0,0,6,8],"texture":"#texture","cullface":"north"}}}]},"template_chiseled_bookshelf_slot_top_mid":{"textures":{"particle":"#texture"},"elements":[{"from":[5,8,0],"to":[10,16,0],"faces":{"north":{"uv":[6,0,11,8],"texture":"#texture","cullface":"north"}}}]},"template_chiseled_bookshelf_slot_top_right":{"textures":{"particle":"#texture"},"elements":[{"from":[0,8,0],"to":[5,16,0],"faces":{"north":{"uv":[11,0,16,8],"texture":"#texture","cullface":"north"}}}]},"template_chorus_flower":{"parent":"block/block","textures":{"bottom":"block/chorus_plant","particle":"#texture"},"elements":[{"from":[2,14,2],"to":[14,16,14],"faces":{"up":{"uv":[2,2,14,14],"texture":"#texture"},"north":{"uv":[2,0,14,2],"texture":"#bottom"},"south":{"uv":[2,0,14,2],"texture":"#bottom"},"west":{"uv":[2,0,14,2],"texture":"#bottom"},"east":{"uv":[2,0,14,2],"texture":"#bottom"}}},{"from":[0,2,2],"to":[2,14,14],"faces":{"down":{"uv":[16,14,14,2],"texture":"#bottom"},"up":{"uv":[0,2,2,14],"texture":"#bottom"},"north":{"uv":[14,2,16,14],"texture":"#bottom"},"south":{"uv":[0,2,2,14],"texture":"#bottom"},"west":{"uv":[2,2,14,14],"texture":"#texture"}}},{"from":[2,2,0],"to":[14,14,2],"faces":{"down":{"uv":[14,2,2,0],"texture":"#bottom"},"up":{"uv":[2,0,14,2],"texture":"#bottom"},"north":{"uv":[2,2,14,14],"texture":"#texture"},"west":{"uv":[0,2,2,14],"texture":"#bottom"},"east":{"uv":[14,2,16,14],"texture":"#bottom"}}},{"from":[2,2,14],"to":[14,14,16],"faces":{"down":{"uv":[14,16,2,14],"texture":"#bottom"},"up":{"uv":[2,14,14,16],"texture":"#bottom"},"south":{"uv":[2,2,14,14],"texture":"#texture"},"west":{"uv":[14,2,16,14],"texture":"#bottom"},"east":{"uv":[0,2,2,14],"texture":"#bottom"}}},{"from":[14,2,2],"to":[16,14,14],"faces":{"down":{"uv":[2,14,0,2],"texture":"#bottom"},"up":{"uv":[14,2,16,14],"texture":"#bottom"},"north":{"uv":[0,2,2,14],"texture":"#bottom"},"south":{"uv":[14,2,16,14],"texture":"#bottom"},"east":{"uv":[2,2,14,14],"texture":"#texture"}}},{"from":[2,0,2],"to":[14,14,14],"faces":{"up":{"uv":[2,2,14,14],"texture":"#bottom"},"down":{"uv":[14,14,2,2],"texture":"#bottom"},"north":{"uv":[2,2,14,16],"texture":"#bottom"},"south":{"uv":[2,2,14,16],"texture":"#bottom"},"west":{"uv":[2,2,14,16],"texture":"#bottom"},"east":{"uv":[2,2,14,16],"texture":"#bottom"}}}]},"template_command_block":{"parent":"block/cube_directional","textures":{"particle":"#back","down":"#side","up":"#side","north":"#front","east":"#side","south":"#back","west":"#side"}},"template_custom_fence_gate":{"parent":"block/block","textures":{"particle":"#particle"},"elements":[{"name":"Left-hand post","from":[0,5,7],"to":[2,16,9],"faces":{"north":{"uv":[14,2,16,13],"texture":"#texture"},"east":{"uv":[14,2,16,13],"texture":"#texture"},"south":{"uv":[14,2,16,13],"texture":"#texture"},"west":{"uv":[14,2,16,13],"texture":"#texture","cullface":"west"},"up":{"uv":[14,0,16,2],"texture":"#texture"},"down":{"uv":[16,13,14,15],"texture":"#texture"}}},{"name":"Right-hand post","from":[14,5,7],"to":[16,16,9],"faces":{"north":{"uv":[0,2,2,13],"texture":"#texture"},"east":{"uv":[0,2,2,13],"texture":"#texture","cullface":"east"},"south":{"uv":[0,2,2,13],"texture":"#texture"},"west":{"uv":[0,2,2,13],"texture":"#texture"},"up":{"uv":[0,0,2,2],"texture":"#texture"},"down":{"uv":[2,13,0,15],"texture":"#texture"}}},{"name":"Inner vertical post of left-hand gate door","from":[6,6,7],"to":[8,15,9],"faces":{"north":{"uv":[8,3,10,12],"texture":"#texture"},"south":{"uv":[6,3,8,12],"texture":"#texture"},"west":{"uv":[8,3,10,12],"texture":"#texture"},"up":{"uv":[8,1,10,3],"texture":"#texture"},"down":{"uv":[8,14,10,12],"texture":"#texture"}}},{"name":"Inner vertical post of right-hand gate door","from":[8,6,7],"to":[10,15,9],"faces":{"north":{"uv":[6,3,8,12],"texture":"#texture"},"east":{"uv":[6,3,8,12],"texture":"#texture"},"south":{"uv":[8,3,10,12],"texture":"#texture"},"up":{"uv":[6,1,8,3],"texture":"#texture"},"down":{"uv":[6,14,8,12],"texture":"#texture"}}},{"name":"Lower horizontal bar of left-hand gate door","from":[2,6,7],"to":[6,9,9],"faces":{"north":{"uv":[10,3,14,6],"texture":"#texture"},"south":{"uv":[10,9,14,12],"texture":"#texture"},"up":{"uv":[10,1,14,3],"texture":"#texture"},"down":{"uv":[10,14,14,12],"texture":"#texture"}}},{"name":"Upper horizontal bar of left-hand gate door","from":[2,12,7],"to":[6,15,9],"faces":{"north":{"uv":[10,3,14,6],"texture":"#texture"},"south":{"uv":[10,9,14,12],"texture":"#texture"},"up":{"uv":[10,1,14,3],"texture":"#texture"},"down":{"uv":[10,14,14,12],"texture":"#texture"}}},{"name":"Lower horizontal bar of right-hand gate door","from":[10,6,7],"to":[14,9,9],"faces":{"north":{"uv":[2,3,6,6],"texture":"#texture"},"south":{"uv":[2,9,6,12],"texture":"#texture"},"up":{"uv":[2,1,6,3],"texture":"#texture"},"down":{"uv":[2,14,6,12],"texture":"#texture"}}},{"name":"Upper horizontal bar of right-hand gate door","from":[10,12,7],"to":[14,15,9],"faces":{"north":{"uv":[2,3,6,6],"texture":"#texture"},"south":{"uv":[2,9,6,12],"texture":"#texture"},"up":{"uv":[2,1,6,3],"texture":"#texture"},"down":{"uv":[2,14,6,12],"texture":"#texture"}}}],"display":{"gui":{"rotation":[30,45,0],"translation":[0,-1,0],"scale":[0.8,0.8,0.8]},"head":{"translation":[0,-3,-6]}}},"template_custom_fence_gate_open":{"textures":{"particle":"#particle"},"elements":[{"name":"Left-hand post","from":[0,5,7],"to":[2,16,9],"faces":{"north":{"uv":[14,2,16,13],"texture":"#texture"},"east":{"uv":[14,2,16,13],"texture":"#texture"},"south":{"uv":[14,2,16,13],"texture":"#texture"},"west":{"uv":[14,2,16,13],"texture":"#texture","cullface":"west"},"up":{"uv":[14,0,16,2],"texture":"#texture"},"down":{"uv":[16,13,14,15],"texture":"#texture"}}},{"name":"Right-hand post","from":[14,5,7],"to":[16,16,9],"faces":{"north":{"uv":[0,2,2,13],"texture":"#texture"},"east":{"uv":[0,2,2,13],"texture":"#texture","cullface":"east"},"south":{"uv":[0,2,2,13],"texture":"#texture"},"west":{"uv":[0,2,2,13],"texture":"#texture"},"up":{"uv":[0,0,2,2],"texture":"#texture"},"down":{"uv":[2,13,0,15],"texture":"#texture"}}},{"name":"Inner vertical post of left-hand gate door","from":[0,6,13],"to":[2,15,15],"faces":{"north":{"uv":[8,3,10,12],"texture":"#texture"},"east":{"uv":[8,3,10,12],"texture":"#texture"},"south":{"uv":[8,3,10,12],"texture":"#texture"},"west":{"uv":[8,3,10,12],"texture":"#texture"},"up":{"uv":[8,1,10,3],"texture":"#texture"},"down":{"uv":[8,14,10,12],"texture":"#texture"}}},{"name":"Inner vertical post of right-hand gate door","from":[14,6,13],"to":[16,15,15],"faces":{"north":{"uv":[6,3,8,12],"texture":"#texture"},"east":{"uv":[6,3,8,12],"texture":"#texture"},"south":{"uv":[6,3,8,12],"texture":"#texture"},"west":{"uv":[6,3,8,12],"texture":"#texture"},"up":{"uv":[6,1,8,3],"texture":"#texture"},"down":{"uv":[6,14,8,12],"texture":"#texture"}}},{"name":"Lower horizontal bar of left-hand gate door","from":[0,6,9],"to":[2,9,13],"faces":{"east":{"uv":[2,9,6,12],"texture":"#texture"},"west":{"uv":[2,3,6,6],"texture":"#texture"},"up":{"uv":[2,1,6,3],"rotation":270,"texture":"#texture"},"down":{"uv":[2,12,6,14],"rotation":270,"texture":"#texture"}}},{"name":"Upper horizontal bar of left-hand gate door","from":[0,12,9],"to":[2,15,13],"faces":{"east":{"uv":[2,9,6,12],"texture":"#texture"},"west":{"uv":[2,3,6,6],"texture":"#texture"},"up":{"uv":[2,1,6,3],"rotation":270,"texture":"#texture"},"down":{"uv":[2,12,6,14],"rotation":270,"texture":"#texture"}}},{"name":"Lower horizontal bar of left-hand gate door","from":[14,6,9],"to":[16,9,13],"faces":{"east":{"uv":[10,9,14,12],"texture":"#texture"},"west":{"uv":[10,3,14,6],"texture":"#texture"},"up":{"uv":[10,1,14,3],"rotation":270,"texture":"#texture"},"down":{"uv":[10,12,14,14],"rotation":270,"texture":"#texture"}}},{"name":"Upper horizontal bar of left-hand gate door","from":[14,12,9],"to":[16,15,13],"faces":{"east":{"uv":[10,9,14,12],"texture":"#texture"},"west":{"uv":[14,3,10,6],"texture":"#texture"},"up":{"uv":[10,1,14,3],"rotation":270,"texture":"#texture"},"down":{"uv":[10,12,14,14],"rotation":270,"texture":"#texture"}}}]},"template_custom_fence_gate_wall":{"ambientocclusion":true,"textures":{"particle":"#particle"},"elements":[{"name":"Left-hand post","from":[0,2,7],"to":[2,13,9],"faces":{"north":{"uv":[14,2,16,13],"texture":"#texture"},"east":{"uv":[14,2,16,13],"texture":"#texture"},"south":{"uv":[14,2,16,13],"texture":"#texture"},"west":{"uv":[14,2,16,13],"texture":"#texture","cullface":"west"},"up":{"uv":[14,0,16,2],"texture":"#texture"},"down":{"uv":[16,13,14,15],"texture":"#texture"}}},{"name":"Right-hand post","from":[14,2,7],"to":[16,13,9],"faces":{"north":{"uv":[0,2,2,13],"texture":"#texture"},"east":{"uv":[0,2,2,13],"texture":"#texture","cullface":"east"},"south":{"uv":[0,2,2,13],"texture":"#texture"},"west":{"uv":[0,2,2,13],"texture":"#texture"},"up":{"uv":[0,0,2,2],"texture":"#texture"},"down":{"uv":[2,13,0,15],"texture":"#texture"}}},{"name":"Inner vertical post of left-hand gate door","from":[6,3,7],"to":[8,12,9],"faces":{"north":{"uv":[8,3,10,12],"texture":"#texture"},"south":{"uv":[6,3,8,12],"texture":"#texture"},"west":{"uv":[8,3,10,12],"texture":"#texture"},"up":{"uv":[8,1,10,3],"texture":"#texture"},"down":{"uv":[8,14,10,12],"texture":"#texture"}}},{"name":"Inner vertical post of right-hand gate door","from":[8,3,7],"to":[10,12,9],"faces":{"north":{"uv":[6,3,8,12],"texture":"#texture"},"east":{"uv":[6,3,8,12],"texture":"#texture"},"south":{"uv":[8,3,10,12],"texture":"#texture"},"up":{"uv":[6,1,8,3],"texture":"#texture"},"down":{"uv":[6,14,8,12],"texture":"#texture"}}},{"name":"Lower horizontal bar of left-hand gate door","from":[2,3,7],"to":[6,6,9],"faces":{"north":{"uv":[10,3,14,6],"texture":"#texture"},"south":{"uv":[10,9,14,12],"texture":"#texture"},"up":{"uv":[10,1,14,3],"texture":"#texture"},"down":{"uv":[10,14,14,12],"texture":"#texture"}}},{"name":"Upper horizontal bar of left-hand gate door","from":[2,9,7],"to":[6,12,9],"faces":{"north":{"uv":[10,3,14,6],"texture":"#texture"},"south":{"uv":[10,9,14,12],"texture":"#texture"},"up":{"uv":[10,1,14,3],"texture":"#texture"},"down":{"uv":[10,14,14,12],"texture":"#texture"}}},{"name":"Lower horizontal bar of right-hand gate door","from":[10,3,7],"to":[14,6,9],"faces":{"north":{"uv":[2,3,6,6],"texture":"#texture"},"south":{"uv":[2,9,6,12],"texture":"#texture"},"up":{"uv":[2,1,6,3],"texture":"#texture"},"down":{"uv":[2,14,6,12],"texture":"#texture"}}},{"name":"Upper horizontal bar of right-hand gate door","from":[10,9,7],"to":[14,12,9],"faces":{"north":{"uv":[2,3,6,6],"texture":"#texture"},"south":{"uv":[2,9,6,12],"texture":"#texture"},"up":{"uv":[2,1,6,3],"texture":"#texture"},"down":{"uv":[2,14,6,12],"texture":"#texture"}}}]},"template_custom_fence_gate_wall_open":{"ambientocclusion":true,"textures":{"particle":"#particle"},"elements":[{"name":"Left-hand post","from":[0,2,7],"to":[2,13,9],"faces":{"north":{"uv":[14,2,16,13],"texture":"#texture"},"east":{"uv":[14,2,16,13],"texture":"#texture"},"south":{"uv":[14,2,16,13],"texture":"#texture"},"west":{"uv":[14,2,16,13],"texture":"#texture","cullface":"west"},"up":{"uv":[14,0,16,2],"texture":"#texture"},"down":{"uv":[16,13,14,15],"texture":"#texture"}}},{"name":"Right-hand post","from":[14,2,7],"to":[16,13,9],"faces":{"north":{"uv":[0,2,2,13],"texture":"#texture"},"east":{"uv":[0,2,2,13],"texture":"#texture","cullface":"east"},"south":{"uv":[0,2,2,13],"texture":"#texture"},"west":{"uv":[0,2,2,13],"texture":"#texture"},"up":{"uv":[0,0,2,2],"texture":"#texture"},"down":{"uv":[2,13,0,15],"texture":"#texture"}}},{"name":"Inner vertical post of left-hand gate door","from":[0,3,13],"to":[2,12,15],"faces":{"north":{"uv":[8,3,10,12],"texture":"#texture"},"east":{"uv":[8,3,10,12],"texture":"#texture"},"south":{"uv":[8,3,10,12],"texture":"#texture"},"west":{"uv":[8,3,10,12],"texture":"#texture"},"up":{"uv":[8,1,10,3],"texture":"#texture"},"down":{"uv":[8,14,10,12],"texture":"#texture"}}},{"name":"Inner vertical post of right-hand gate door","from":[14,3,13],"to":[16,12,15],"faces":{"north":{"uv":[6,3,8,12],"texture":"#texture"},"east":{"uv":[6,3,8,12],"texture":"#texture"},"south":{"uv":[6,3,8,12],"texture":"#texture"},"west":{"uv":[6,3,8,12],"texture":"#texture"},"up":{"uv":[6,1,8,3],"texture":"#texture"},"down":{"uv":[6,14,8,12],"texture":"#texture"}}},{"name":"Lower horizontal bar of left-hand gate door","from":[0,3,9],"to":[2,6,13],"faces":{"east":{"uv":[2,9,6,12],"texture":"#texture"},"west":{"uv":[2,3,6,6],"texture":"#texture"},"up":{"uv":[2,1,6,3],"rotation":270,"texture":"#texture"},"down":{"uv":[2,12,6,14],"rotation":270,"texture":"#texture"}}},{"name":"Upper horizontal bar of left-hand gate door","from":[0,9,9],"to":[2,12,13],"faces":{"east":{"uv":[2,9,6,12],"texture":"#texture"},"west":{"uv":[2,3,6,6],"texture":"#texture"},"up":{"uv":[2,1,6,3],"rotation":270,"texture":"#texture"},"down":{"uv":[2,12,6,14],"rotation":270,"texture":"#texture"}}},{"name":"Lower horizontal bar of left-hand gate door","from":[14,3,9],"to":[16,6,13],"faces":{"east":{"uv":[10,9,14,12],"texture":"#texture"},"west":{"uv":[10,3,14,6],"texture":"#texture"},"up":{"uv":[10,1,14,3],"rotation":270,"texture":"#texture"},"down":{"uv":[10,12,14,14],"rotation":270,"texture":"#texture"}}},{"name":"Upper horizontal bar of left-hand gate door","from":[14,9,9],"to":[16,12,13],"faces":{"east":{"uv":[10,9,14,12],"texture":"#texture"},"west":{"uv":[14,3,10,6],"texture":"#texture"},"up":{"uv":[10,1,14,3],"rotation":270,"texture":"#texture"},"down":{"uv":[10,12,14,14],"rotation":270,"texture":"#texture"}}}]},"template_daylight_detector":{"parent":"block/thin_block","textures":{"particle":"#top"},"elements":[{"from":[0,0,0],"to":[16,6,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#side","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,10,16,16],"texture":"#side","cullface":"north"},"south":{"uv":[0,10,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,10,16,16],"texture":"#side","cullface":"west"},"east":{"uv":[0,10,16,16],"texture":"#side","cullface":"east"}}}]},"template_farmland":{"parent":"block/block","textures":{"particle":"#dirt"},"elements":[{"from":[0,0,0],"to":[16,15,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#dirt","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,1,16,16],"texture":"#dirt","cullface":"north"},"south":{"uv":[0,1,16,16],"texture":"#dirt","cullface":"south"},"west":{"uv":[0,1,16,16],"texture":"#dirt","cullface":"west"},"east":{"uv":[0,1,16,16],"texture":"#dirt","cullface":"east"}}}]},"template_fence_gate":{"parent":"block/block","display":{"gui":{"rotation":[30,45,0],"translation":[0,-1,0],"scale":[0.8,0.8,0.8]},"head":{"rotation":[0,0,0],"translation":[0,-3,-6],"scale":[1,1,1]}},"textures":{"particle":"#texture"},"elements":[{"__comment":"Left-hand post","from":[0,5,7],"to":[2,16,9],"faces":{"down":{"uv":[0,7,2,9],"texture":"#texture"},"up":{"uv":[0,7,2,9],"texture":"#texture"},"north":{"uv":[0,0,2,11],"texture":"#texture"},"south":{"uv":[0,0,2,11],"texture":"#texture"},"west":{"uv":[7,0,9,11],"texture":"#texture","cullface":"west"},"east":{"uv":[7,0,9,11],"texture":"#texture"}}},{"__comment":"Right-hand post","from":[14,5,7],"to":[16,16,9],"faces":{"down":{"uv":[14,7,16,9],"texture":"#texture"},"up":{"uv":[14,7,16,9],"texture":"#texture"},"north":{"uv":[14,0,16,11],"texture":"#texture"},"south":{"uv":[14,0,16,11],"texture":"#texture"},"west":{"uv":[7,0,9,11],"texture":"#texture"},"east":{"uv":[7,0,9,11],"texture":"#texture","cullface":"east"}}},{"__comment":"Inner vertical post of left-hand gate door","from":[6,6,7],"to":[8,15,9],"faces":{"down":{"uv":[6,7,8,9],"texture":"#texture"},"up":{"uv":[6,7,8,9],"texture":"#texture"},"north":{"uv":[6,1,8,10],"texture":"#texture"},"south":{"uv":[6,1,8,10],"texture":"#texture"},"west":{"uv":[7,1,9,10],"texture":"#texture"},"east":{"uv":[7,1,9,10],"texture":"#texture"}}},{"__comment":"Inner vertical post of right-hand gate door","from":[8,6,7],"to":[10,15,9],"faces":{"down":{"uv":[8,7,10,9],"texture":"#texture"},"up":{"uv":[8,7,10,9],"texture":"#texture"},"north":{"uv":[8,1,10,10],"texture":"#texture"},"south":{"uv":[8,1,10,10],"texture":"#texture"},"west":{"uv":[7,1,9,10],"texture":"#texture"},"east":{"uv":[7,1,9,10],"texture":"#texture"}}},{"__comment":"Lower horizontal bar of left-hand gate door","from":[2,6,7],"to":[6,9,9],"faces":{"down":{"uv":[2,7,6,9],"texture":"#texture"},"up":{"uv":[2,7,6,9],"texture":"#texture"},"north":{"uv":[2,7,6,10],"texture":"#texture"},"south":{"uv":[2,7,6,10],"texture":"#texture"}}},{"__comment":"Upper horizontal bar of left-hand gate door","from":[2,12,7],"to":[6,15,9],"faces":{"down":{"uv":[2,7,6,9],"texture":"#texture"},"up":{"uv":[2,7,6,9],"texture":"#texture"},"north":{"uv":[2,1,6,4],"texture":"#texture"},"south":{"uv":[2,1,6,4],"texture":"#texture"}}},{"__comment":"Lower horizontal bar of right-hand gate door","from":[10,6,7],"to":[14,9,9],"faces":{"down":{"uv":[10,7,14,9],"texture":"#texture"},"up":{"uv":[10,7,14,9],"texture":"#texture"},"north":{"uv":[10,7,14,10],"texture":"#texture"},"south":{"uv":[10,7,14,10],"texture":"#texture"}}},{"__comment":"Upper horizontal bar of right-hand gate door","from":[10,12,7],"to":[14,15,9],"faces":{"down":{"uv":[10,7,14,9],"texture":"#texture"},"up":{"uv":[10,7,14,9],"texture":"#texture"},"north":{"uv":[10,1,14,4],"texture":"#texture"},"south":{"uv":[10,1,14,4],"texture":"#texture"}}}]},"template_fence_gate_open":{"textures":{"particle":"#texture"},"elements":[{"__comment":"Left-hand post","from":[0,5,7],"to":[2,16,9],"faces":{"down":{"uv":[0,7,2,9],"texture":"#texture"},"up":{"uv":[0,7,2,9],"texture":"#texture"},"north":{"uv":[0,0,2,11],"texture":"#texture"},"south":{"uv":[0,0,2,11],"texture":"#texture"},"west":{"uv":[7,0,9,11],"texture":"#texture","cullface":"west"},"east":{"uv":[7,0,9,11],"texture":"#texture"}}},{"__comment":"Right-hand post","from":[14,5,7],"to":[16,16,9],"faces":{"down":{"uv":[14,7,16,9],"texture":"#texture"},"up":{"uv":[14,7,16,9],"texture":"#texture"},"north":{"uv":[14,0,16,11],"texture":"#texture"},"south":{"uv":[14,0,16,11],"texture":"#texture"},"west":{"uv":[7,0,9,11],"texture":"#texture"},"east":{"uv":[7,0,9,11],"texture":"#texture","cullface":"east"}}},{"__comment":"Inner vertical post of left-hand gate door","from":[0,6,13],"to":[2,15,15],"faces":{"down":{"uv":[0,13,2,15],"texture":"#texture"},"up":{"uv":[0,13,2,15],"texture":"#texture"},"north":{"uv":[0,1,2,10],"texture":"#texture"},"south":{"uv":[0,1,2,10],"texture":"#texture"},"west":{"uv":[13,1,15,10],"texture":"#texture"},"east":{"uv":[13,1,15,10],"texture":"#texture"}}},{"__comment":"Inner vertical post of right-hand gate door","from":[14,6,13],"to":[16,15,15],"faces":{"down":{"uv":[14,13,16,15],"texture":"#texture"},"up":{"uv":[14,13,16,15],"texture":"#texture"},"north":{"uv":[14,1,16,10],"texture":"#texture"},"south":{"uv":[14,1,16,10],"texture":"#texture"},"west":{"uv":[13,1,15,10],"texture":"#texture"},"east":{"uv":[13,1,15,10],"texture":"#texture"}}},{"__comment":"Lower horizontal bar of left-hand gate door","from":[0,6,9],"to":[2,9,13],"faces":{"down":{"uv":[0,9,2,13],"texture":"#texture"},"up":{"uv":[0,9,2,13],"texture":"#texture"},"west":{"uv":[13,7,15,10],"texture":"#texture"},"east":{"uv":[13,7,15,10],"texture":"#texture"}}},{"__comment":"Upper horizontal bar of left-hand gate door","from":[0,12,9],"to":[2,15,13],"faces":{"down":{"uv":[0,9,2,13],"texture":"#texture"},"up":{"uv":[0,9,2,13],"texture":"#texture"},"west":{"uv":[13,1,15,4],"texture":"#texture"},"east":{"uv":[13,1,15,4],"texture":"#texture"}}},{"__comment":"Lower horizontal bar of left-hand gate door","from":[14,6,9],"to":[16,9,13],"faces":{"down":{"uv":[14,9,16,13],"texture":"#texture"},"up":{"uv":[14,9,16,13],"texture":"#texture"},"west":{"uv":[13,7,15,10],"texture":"#texture"},"east":{"uv":[13,7,15,10],"texture":"#texture"}}},{"__comment":"Upper horizontal bar of left-hand gate door","from":[14,12,9],"to":[16,15,13],"faces":{"down":{"uv":[14,9,16,13],"texture":"#texture"},"up":{"uv":[14,9,16,13],"texture":"#texture"},"west":{"uv":[13,1,15,4],"texture":"#texture"},"east":{"uv":[13,1,15,4],"texture":"#texture"}}}]},"template_fence_gate_wall":{"ambientocclusion":true,"textures":{"particle":"#texture"},"elements":[{"__comment":"Left-hand post","from":[0,2,7],"to":[2,13,9],"faces":{"down":{"uv":[0,7,2,9],"texture":"#texture"},"up":{"uv":[0,7,2,9],"texture":"#texture"},"north":{"uv":[0,0,2,11],"texture":"#texture"},"south":{"uv":[0,0,2,11],"texture":"#texture"},"west":{"uv":[7,0,9,11],"texture":"#texture","cullface":"west"},"east":{"uv":[7,0,9,11],"texture":"#texture"}}},{"__comment":"Right-hand post","from":[14,2,7],"to":[16,13,9],"faces":{"down":{"uv":[14,7,16,9],"texture":"#texture"},"up":{"uv":[14,7,16,9],"texture":"#texture"},"north":{"uv":[14,0,16,11],"texture":"#texture"},"south":{"uv":[14,0,16,11],"texture":"#texture"},"west":{"uv":[7,0,9,11],"texture":"#texture"},"east":{"uv":[7,0,9,11],"texture":"#texture","cullface":"east"}}},{"__comment":"Inner vertical post of left-hand gate door","from":[6,3,7],"to":[8,12,9],"faces":{"down":{"uv":[6,7,8,9],"texture":"#texture"},"up":{"uv":[6,7,8,9],"texture":"#texture"},"north":{"uv":[6,1,8,10],"texture":"#texture"},"south":{"uv":[6,1,8,10],"texture":"#texture"},"west":{"uv":[7,1,9,10],"texture":"#texture"},"east":{"uv":[7,1,9,10],"texture":"#texture"}}},{"__comment":"Inner vertical post of right-hand gate door","from":[8,3,7],"to":[10,12,9],"faces":{"down":{"uv":[8,7,10,9],"texture":"#texture"},"up":{"uv":[8,7,10,9],"texture":"#texture"},"north":{"uv":[8,1,10,10],"texture":"#texture"},"south":{"uv":[8,1,10,10],"texture":"#texture"},"west":{"uv":[7,1,9,10],"texture":"#texture"},"east":{"uv":[7,1,9,10],"texture":"#texture"}}},{"__comment":"Lower horizontal bar of left-hand gate door","from":[2,3,7],"to":[6,6,9],"faces":{"down":{"uv":[2,7,6,9],"texture":"#texture"},"up":{"uv":[2,7,6,9],"texture":"#texture"},"north":{"uv":[2,7,6,10],"texture":"#texture"},"south":{"uv":[2,7,6,10],"texture":"#texture"}}},{"__comment":"Upper horizontal bar of left-hand gate door","from":[2,9,7],"to":[6,12,9],"faces":{"down":{"uv":[2,7,6,9],"texture":"#texture"},"up":{"uv":[2,7,6,9],"texture":"#texture"},"north":{"uv":[2,1,6,4],"texture":"#texture"},"south":{"uv":[2,1,6,4],"texture":"#texture"}}},{"__comment":"Lower horizontal bar of right-hand gate door","from":[10,3,7],"to":[14,6,9],"faces":{"down":{"uv":[10,7,14,9],"texture":"#texture"},"up":{"uv":[10,7,14,9],"texture":"#texture"},"north":{"uv":[10,7,14,10],"texture":"#texture"},"south":{"uv":[10,7,14,10],"texture":"#texture"}}},{"__comment":"Upper horizontal bar of right-hand gate door","from":[10,9,7],"to":[14,12,9],"faces":{"down":{"uv":[10,7,14,9],"texture":"#texture"},"up":{"uv":[10,7,14,9],"texture":"#texture"},"north":{"uv":[10,1,14,4],"texture":"#texture"},"south":{"uv":[10,1,14,4],"texture":"#texture"}}}]},"template_fence_gate_wall_open":{"ambientocclusion":true,"textures":{"particle":"#texture"},"elements":[{"__comment":"Left-hand post","from":[0,2,7],"to":[2,13,9],"faces":{"down":{"uv":[0,7,2,9],"texture":"#texture"},"up":{"uv":[0,7,2,9],"texture":"#texture"},"north":{"uv":[0,0,2,11],"texture":"#texture"},"south":{"uv":[0,0,2,11],"texture":"#texture"},"west":{"uv":[7,0,9,11],"texture":"#texture","cullface":"west"},"east":{"uv":[7,0,9,11],"texture":"#texture"}}},{"__comment":"Right-hand post","from":[14,2,7],"to":[16,13,9],"faces":{"down":{"uv":[14,7,16,9],"texture":"#texture"},"up":{"uv":[14,7,16,9],"texture":"#texture"},"north":{"uv":[14,0,16,11],"texture":"#texture"},"south":{"uv":[14,0,16,11],"texture":"#texture"},"west":{"uv":[7,0,9,11],"texture":"#texture"},"east":{"uv":[7,0,9,11],"texture":"#texture","cullface":"east"}}},{"__comment":"Inner vertical post of left-hand gate door","from":[0,3,13],"to":[2,12,15],"faces":{"down":{"uv":[0,13,2,15],"texture":"#texture"},"up":{"uv":[0,13,2,15],"texture":"#texture"},"north":{"uv":[0,1,2,10],"texture":"#texture"},"south":{"uv":[0,1,2,10],"texture":"#texture"},"west":{"uv":[13,1,15,10],"texture":"#texture"},"east":{"uv":[13,1,15,10],"texture":"#texture"}}},{"__comment":"Inner vertical post of right-hand gate door","from":[14,3,13],"to":[16,12,15],"faces":{"down":{"uv":[14,13,16,15],"texture":"#texture"},"up":{"uv":[14,13,16,15],"texture":"#texture"},"north":{"uv":[14,1,16,10],"texture":"#texture"},"south":{"uv":[14,1,16,10],"texture":"#texture"},"west":{"uv":[13,1,15,10],"texture":"#texture"},"east":{"uv":[13,1,15,10],"texture":"#texture"}}},{"__comment":"Lower horizontal bar of left-hand gate door","from":[0,3,9],"to":[2,6,13],"faces":{"down":{"uv":[0,9,2,13],"texture":"#texture"},"up":{"uv":[0,9,2,13],"texture":"#texture"},"west":{"uv":[13,7,15,10],"texture":"#texture"},"east":{"uv":[13,7,15,10],"texture":"#texture"}}},{"__comment":"Upper horizontal bar of left-hand gate door","from":[0,9,9],"to":[2,12,13],"faces":{"down":{"uv":[0,9,2,13],"texture":"#texture"},"up":{"uv":[0,9,2,13],"texture":"#texture"},"west":{"uv":[13,1,15,4],"texture":"#texture"},"east":{"uv":[13,1,15,4],"texture":"#texture"}}},{"__comment":"Lower horizontal bar of left-hand gate door","from":[14,3,9],"to":[16,6,13],"faces":{"down":{"uv":[14,9,16,13],"texture":"#texture"},"up":{"uv":[14,9,16,13],"texture":"#texture"},"west":{"uv":[13,7,15,10],"texture":"#texture"},"east":{"uv":[13,7,15,10],"texture":"#texture"}}},{"__comment":"Upper horizontal bar of left-hand gate door","from":[14,9,9],"to":[16,12,13],"faces":{"down":{"uv":[14,9,16,13],"texture":"#texture"},"up":{"uv":[14,9,16,13],"texture":"#texture"},"west":{"uv":[13,1,15,4],"texture":"#texture"},"east":{"uv":[13,1,15,4],"texture":"#texture"}}}]},"template_fire_floor":{"textures":{"particle":"#fire"},"ambientocclusion":false,"elements":[{"from":[0,0,8.8],"to":[16,22.4,8.8],"rotation":{"origin":[8,8,8],"axis":"x","angle":-22.5,"rescale":true},"shade":false,"faces":{"south":{"uv":[0,0,16,16],"texture":"#fire"}}},{"from":[0,0,7.2],"to":[16,22.4,7.2],"rotation":{"origin":[8,8,8],"axis":"x","angle":22.5,"rescale":true},"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#fire"}}},{"from":[8.8,0,0],"to":[8.8,22.4,16],"rotation":{"origin":[8,8,8],"axis":"z","angle":-22.5,"rescale":true},"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#fire"}}},{"from":[7.2,0,0],"to":[7.2,22.4,16],"rotation":{"origin":[8,8,8],"axis":"z","angle":22.5,"rescale":true},"shade":false,"faces":{"east":{"uv":[0,0,16,16],"texture":"#fire"}}}]},"template_fire_side":{"textures":{"particle":"#fire"},"ambientocclusion":false,"elements":[{"from":[0,0,0.01],"to":[16,22.4,0.01],"shade":false,"faces":{"south":{"uv":[0,0,16,16],"texture":"#fire"},"north":{"uv":[0,0,16,16],"texture":"#fire"}}}]},"template_fire_side_alt":{"textures":{"particle":"#fire"},"ambientocclusion":false,"elements":[{"from":[0,0,0.01],"to":[16,22.4,0.01],"shade":false,"faces":{"south":{"uv":[16,0,0,16],"texture":"#fire"},"north":{"uv":[16,0,0,16],"texture":"#fire"}}}]},"template_fire_up":{"textures":{"particle":"#fire"},"ambientocclusion":false,"elements":[{"from":[0,16,0],"to":[16,16,16],"rotation":{"origin":[16,16,8],"axis":"z","angle":22.5,"rescale":true},"shade":false,"faces":{"down":{"uv":[0,0,16,16],"texture":"#fire","rotation":270}}},{"from":[0,16,0],"to":[16,16,16],"rotation":{"origin":[0,16,8],"axis":"z","angle":-22.5,"rescale":true},"shade":false,"faces":{"down":{"uv":[0,0,16,16],"texture":"#fire","rotation":90}}}]},"template_fire_up_alt":{"textures":{"particle":"#fire"},"ambientocclusion":false,"elements":[{"from":[0,16,0],"to":[16,16,16],"rotation":{"origin":[8,16,16],"axis":"x","angle":-22.5,"rescale":true},"shade":false,"faces":{"down":{"uv":[0,0,16,16],"texture":"#fire","rotation":180}}},{"from":[0,16,0],"to":[16,16,16],"rotation":{"origin":[8,16,0],"axis":"x","angle":22.5,"rescale":true},"shade":false,"faces":{"down":{"uv":[0,0,16,16],"texture":"#fire"}}}]},"template_four_candles":{"parent":"block/block","elements":[{"from":[6,0,8],"to":[8,3,10],"faces":{"north":{"uv":[0,8,2,11],"texture":"#all"},"east":{"uv":[0,8,2,11],"texture":"#all"},"south":{"uv":[0,8,2,11],"texture":"#all"},"west":{"uv":[0,8,2,11],"texture":"#all"},"up":{"uv":[0,6,2,8],"texture":"#all"},"down":{"uv":[0,14,2,16],"texture":"#all","cullface":"down"}}},{"from":[6.5,3,9],"to":[7.5,4,9],"rotation":{"angle":45,"axis":"y","origin":[7,3,9]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[1,5,0,6],"texture":"#all"}}},{"from":[6.5,3,9],"to":[7.5,4,9],"rotation":{"angle":-45,"axis":"y","origin":[7,3,9]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[1,5,0,6],"texture":"#all"}}},{"from":[9,0,8],"to":[11,5,10],"faces":{"north":{"uv":[0,8,2,13],"texture":"#all"},"east":{"uv":[0,8,2,13],"texture":"#all"},"south":{"uv":[0,8,2,13],"texture":"#all"},"west":{"uv":[0,8,2,13],"texture":"#all"},"up":{"uv":[0,6,2,8],"texture":"#all"},"down":{"uv":[0,14,2,16],"texture":"#all","cullface":"down"}}},{"from":[9.5,5,9],"to":[10.5,6,9],"rotation":{"angle":45,"axis":"y","origin":[10,5,9]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[1,5,0,6],"texture":"#all"}}},{"from":[9.5,5,9],"to":[10.5,6,9],"rotation":{"angle":-45,"axis":"y","origin":[10,5,9]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[1,5,0,6],"texture":"#all"}}},{"from":[5,0,5],"to":[7,5,7],"faces":{"north":{"uv":[0,8,2,13],"texture":"#all"},"east":{"uv":[0,8,2,13],"texture":"#all"},"south":{"uv":[0,8,2,13],"texture":"#all"},"west":{"uv":[0,8,2,13],"texture":"#all"},"up":{"uv":[0,6,2,8],"texture":"#all"},"down":{"uv":[0,14,2,16],"texture":"#all","cullface":"down"}}},{"from":[5.5,5,6],"to":[6.5,6,6],"rotation":{"angle":45,"axis":"y","origin":[6,5,6]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[1,5,0,6],"texture":"#all"}}},{"from":[5.5,5,6],"to":[6.5,6,6],"rotation":{"angle":-45,"axis":"y","origin":[6,5,6]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[1,5,0,6],"texture":"#all"}}},{"from":[8,0,5],"to":[10,6,7],"faces":{"north":{"uv":[0,8,2,14],"texture":"#all"},"east":{"uv":[0,8,2,14],"texture":"#all"},"south":{"uv":[0,8,2,14],"texture":"#all"},"west":{"uv":[0,8,2,14],"texture":"#all"},"up":{"uv":[0,6,2,8],"texture":"#all"},"down":{"uv":[0,14,2,16],"texture":"#all","cullface":"down"}}},{"from":[8.5,6,6],"to":[9.5,7,6],"rotation":{"angle":45,"axis":"y","origin":[9,6,6]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[0,5,1,6],"texture":"#all"}}},{"from":[8.5,6,6],"to":[9.5,7,6],"rotation":{"angle":-45,"axis":"y","origin":[9,6,6]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[0,5,1,6],"texture":"#all"}}}]},"template_four_turtle_eggs":{"parent":"block/block","textures":{"all":"block/turtle_egg","particle":"#all"},"elements":[{"from":[5,0,4],"to":[9,7,8],"faces":{"down":{"uv":[0,0,4,4],"texture":"#all","cullface":"down"},"up":{"uv":[0,0,4,4],"texture":"#all"},"north":{"uv":[1,4,5,11],"texture":"#all"},"south":{"uv":[1,4,5,11],"texture":"#all"},"west":{"uv":[1,4,5,11],"texture":"#all"},"east":{"uv":[1,4,5,11],"texture":"#all"}}},{"from":[1,0,7],"to":[5,5,11],"faces":{"down":{"uv":[6,7,10,11],"texture":"#all","cullface":"down"},"up":{"uv":[6,7,10,11],"texture":"#all"},"north":{"uv":[10,10,14,15],"texture":"#all"},"south":{"uv":[10,10,14,15],"texture":"#all"},"west":{"uv":[10,10,14,15],"texture":"#all"},"east":{"uv":[10,10,14,15],"texture":"#all"}}},{"from":[11,0,7],"to":[14,4,10],"faces":{"down":{"uv":[5,0,8,3],"texture":"#all","cullface":"down"},"up":{"uv":[5,0,8,3],"texture":"#all"},"north":{"uv":[8,3,11,7],"texture":"#all"},"south":{"uv":[8,3,11,7],"texture":"#all"},"west":{"uv":[8,3,11,7],"texture":"#all"},"east":{"uv":[8,3,11,7],"texture":"#all"}}},{"from":[6,0,9],"to":[10,4,13],"faces":{"down":{"uv":[0,11,4,15],"texture":"#all"},"up":{"uv":[0,11,4,15],"texture":"#all"},"north":{"uv":[4,11,8,15],"texture":"#all"},"south":{"uv":[4,11,8,15],"texture":"#all"},"west":{"uv":[4,11,8,15],"texture":"#all"},"east":{"uv":[4,11,8,15],"texture":"#all"}}}]},"template_glass_pane_noside":{"ambientocclusion":false,"textures":{"particle":"#pane"},"elements":[{"from":[7,0,7],"to":[9,16,9],"faces":{"north":{"uv":[9,0,7,16],"texture":"#pane"}}}]},"template_glass_pane_noside_alt":{"ambientocclusion":false,"textures":{"particle":"#pane"},"elements":[{"from":[7,0,7],"to":[9,16,9],"faces":{"east":{"uv":[7,0,9,16],"texture":"#pane"}}}]},"template_glass_pane_post":{"ambientocclusion":false,"textures":{"particle":"#pane"},"elements":[{"from":[7,0,7],"to":[9,16,9],"faces":{"down":{"uv":[7,7,9,9],"texture":"#edge"},"up":{"uv":[7,7,9,9],"texture":"#edge"}}}]},"template_glass_pane_side":{"ambientocclusion":false,"textures":{"particle":"#pane"},"elements":[{"from":[7,0,0],"to":[9,16,7],"faces":{"down":{"uv":[7,0,9,7],"texture":"#edge"},"up":{"uv":[7,0,9,7],"texture":"#edge"},"north":{"uv":[7,0,9,16],"texture":"#edge","cullface":"north"},"west":{"uv":[16,0,9,16],"texture":"#pane"},"east":{"uv":[9,0,16,16],"texture":"#pane"}}}]},"template_glass_pane_side_alt":{"ambientocclusion":false,"textures":{"particle":"#pane"},"elements":[{"from":[7,0,9],"to":[9,16,16],"faces":{"down":{"uv":[7,0,9,7],"texture":"#edge"},"up":{"uv":[7,0,9,7],"texture":"#edge"},"south":{"uv":[7,0,9,16],"texture":"#edge","cullface":"south"},"west":{"uv":[7,0,0,16],"texture":"#pane"},"east":{"uv":[0,0,7,16],"texture":"#pane"}}}]},"template_glazed_terracotta":{"parent":"block/cube","textures":{"particle":"#pattern"},"display":{"firstperson_righthand":{"rotation":[0,135,0],"translation":[0,0,0],"scale":[0.40,0.40,0.40]}},"elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#pattern","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#pattern","cullface":"up"},"north":{"uv":[0,0,16,16],"texture":"#pattern","cullface":"north","rotation":90},"south":{"uv":[0,0,16,16],"texture":"#pattern","cullface":"south","rotation":270},"west":{"uv":[0,0,16,16],"texture":"#pattern","cullface":"west","rotation":0},"east":{"uv":[0,0,16,16],"texture":"#pattern","cullface":"east","rotation":180}}}]},"template_hanging_lantern":{"parent":"block/block","textures":{"particle":"#lantern"},"elements":[{"from":[5,1,5],"to":[11,8,11],"faces":{"down":{"uv":[0,9,6,15],"texture":"#lantern"},"up":{"uv":[0,9,6,15],"texture":"#lantern"},"north":{"uv":[0,2,6,9],"texture":"#lantern"},"south":{"uv":[0,2,6,9],"texture":"#lantern"},"west":{"uv":[0,2,6,9],"texture":"#lantern"},"east":{"uv":[0,2,6,9],"texture":"#lantern"}}},{"from":[6,8,6],"to":[10,10,10],"faces":{"down":{"uv":[1,10,5,14],"texture":"#lantern"},"up":{"uv":[1,10,5,14],"texture":"#lantern"},"north":{"uv":[1,0,5,2],"texture":"#lantern"},"south":{"uv":[1,0,5,2],"texture":"#lantern"},"west":{"uv":[1,0,5,2],"texture":"#lantern"},"east":{"uv":[1,0,5,2],"texture":"#lantern"}}},{"from":[6.5,11,8],"to":[9.5,15,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45},"shade":false,"faces":{"north":{"uv":[14,1,11,5],"texture":"#lantern"},"south":{"uv":[11,1,14,5],"texture":"#lantern"}}},{"from":[8,10,6.5],"to":[8,16,9.5],"rotation":{"origin":[8,8,8],"axis":"y","angle":45},"shade":false,"faces":{"west":{"uv":[14,6,11,12],"texture":"#lantern"},"east":{"uv":[11,6,14,12],"texture":"#lantern"}}}]},"template_item_frame":{"elements":[{"from":[3,3,15.5],"to":[13,13,16],"faces":{"north":{"uv":[3,3,13,13],"texture":"#back"},"south":{"uv":[3,3,13,13],"texture":"#back"}}},{"from":[2,2,15],"to":[14,3,16],"faces":{"down":{"uv":[2,0,14,1],"texture":"#wood"},"up":{"uv":[2,15,14,16],"texture":"#wood"},"north":{"uv":[2,13,14,14],"texture":"#wood"},"south":{"uv":[2,13,14,14],"texture":"#wood"},"west":{"uv":[15,13,16,14],"texture":"#wood"},"east":{"uv":[0,13,1,14],"texture":"#wood"}}},{"from":[2,13,15],"to":[14,14,16],"faces":{"down":{"uv":[2,0,14,1],"texture":"#wood"},"up":{"uv":[2,15,14,16],"texture":"#wood"},"north":{"uv":[2,2,14,3],"texture":"#wood"},"south":{"uv":[2,2,14,3],"texture":"#wood"},"west":{"uv":[15,2,16,3],"texture":"#wood"},"east":{"uv":[0,2,1,3],"texture":"#wood"}}},{"from":[2,3,15],"to":[3,13,16],"faces":{"north":{"uv":[13,3,14,13],"texture":"#wood"},"south":{"uv":[2,3,3,13],"texture":"#wood"},"west":{"uv":[15,3,16,13],"texture":"#wood"},"east":{"uv":[0,3,1,13],"texture":"#wood"}}},{"from":[13,3,15],"to":[14,13,16],"faces":{"north":{"uv":[2,3,3,13],"texture":"#wood"},"south":{"uv":[13,3,14,13],"texture":"#wood"},"west":{"uv":[15,3,16,13],"texture":"#wood"},"east":{"uv":[0,3,1,13],"texture":"#wood"}}}]},"template_item_frame_map":{"elements":[{"from":[1,1,15.001],"to":[15,15,16],"faces":{"north":{"uv":[1,1,15,15],"texture":"#back"},"south":{"uv":[1,1,15,15],"texture":"#back"}}},{"from":[0,0,15.001],"to":[16,1,16],"faces":{"down":{"uv":[0,0,16,1],"texture":"#wood"},"up":{"uv":[0,15,16,16],"texture":"#wood"},"north":{"uv":[0,15,16,16],"texture":"#wood"},"south":{"uv":[0,15,16,16],"texture":"#wood"},"west":{"uv":[15,15,16,16],"texture":"#wood"},"east":{"uv":[0,15,1,16],"texture":"#wood"}}},{"from":[0,15,15.001],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,1],"texture":"#wood"},"up":{"uv":[0,15,16,16],"texture":"#wood"},"north":{"uv":[0,0,16,1],"texture":"#wood"},"south":{"uv":[0,0,16,1],"texture":"#wood"},"west":{"uv":[15,0,16,1],"texture":"#wood"},"east":{"uv":[0,0,1,1],"texture":"#wood"}}},{"from":[0,1,15.001],"to":[1,15,16],"faces":{"north":{"uv":[15,1,16,15],"texture":"#wood"},"south":{"uv":[0,1,1,15],"texture":"#wood"},"west":{"uv":[15,1,16,15],"texture":"#wood"},"east":{"uv":[0,1,1,15],"texture":"#wood"}}},{"from":[15,1,15.001],"to":[16,15,16],"faces":{"north":{"uv":[0,1,1,15],"texture":"#wood"},"south":{"uv":[15,1,16,15],"texture":"#wood"},"west":{"uv":[15,1,16,15],"texture":"#wood"},"east":{"uv":[0,1,1,15],"texture":"#wood"}}}]},"template_lantern":{"parent":"block/block","textures":{"particle":"#lantern"},"elements":[{"from":[5,0,5],"to":[11,7,11],"faces":{"down":{"uv":[0,9,6,15],"texture":"#lantern","cullface":"down"},"up":{"uv":[0,9,6,15],"texture":"#lantern"},"north":{"uv":[0,2,6,9],"texture":"#lantern"},"south":{"uv":[0,2,6,9],"texture":"#lantern"},"west":{"uv":[0,2,6,9],"texture":"#lantern"},"east":{"uv":[0,2,6,9],"texture":"#lantern"}}},{"from":[6,7,6],"to":[10,9,10],"faces":{"up":{"uv":[1,10,5,14],"texture":"#lantern"},"north":{"uv":[1,0,5,2],"texture":"#lantern"},"south":{"uv":[1,0,5,2],"texture":"#lantern"},"west":{"uv":[1,0,5,2],"texture":"#lantern"},"east":{"uv":[1,0,5,2],"texture":"#lantern"}}},{"from":[6.5,9,8],"to":[9.5,11,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45},"shade":false,"faces":{"north":{"uv":[14,1,11,3],"texture":"#lantern"},"south":{"uv":[11,1,14,3],"texture":"#lantern"}}},{"from":[8,9,6.5],"to":[8,11,9.5],"rotation":{"origin":[8,8,8],"axis":"y","angle":45},"shade":false,"faces":{"west":{"uv":[14,10,11,12],"texture":"#lantern"},"east":{"uv":[11,10,14,12],"texture":"#lantern"}}}]},"template_leaf_litter_1":{"ambientocclusion":false,"textures":{"particle":"#texture"},"elements":[{"from":[0,0.25,0],"to":[8,0.25,8],"faces":{"up":{"uv":[0,0,8,8],"texture":"#texture","tintindex":0},"down":{"uv":[0,8,8,0],"texture":"#texture","tintindex":0}}}]},"template_leaf_litter_2":{"ambientocclusion":false,"textures":{"particle":"#texture"},"elements":[{"from":[0,0.25,0],"to":[8,0.25,16],"faces":{"up":{"uv":[0,0,8,16],"texture":"#texture","tintindex":0},"down":{"uv":[0,16,8,0],"texture":"#texture","tintindex":0}}}]},"template_leaf_litter_3":{"ambientocclusion":false,"textures":{"particle":"#texture"},"elements":[{"from":[8,0.25,8],"to":[16,0.25,16],"faces":{"up":{"uv":[8,8,16,16],"texture":"#texture","tintindex":0},"down":{"uv":[8,16,16,8],"texture":"#texture","tintindex":0}}}]},"template_leaf_litter_4":{"ambientocclusion":false,"textures":{"particle":"#texture"},"elements":[{"from":[0,0.25,0],"to":[16,0.25,16],"faces":{"up":{"uv":[0,0,16,16],"texture":"#texture","tintindex":0},"down":{"uv":[0,16,16,0],"texture":"#texture","tintindex":0}}}]},"template_orientable_trapdoor_bottom":{"parent":"block/thin_block","textures":{"particle":"#texture"},"elements":[{"from":[0,0,0],"to":[16,3,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture","cullface":"down"},"up":{"uv":[0,16,16,0],"texture":"#texture"},"north":{"uv":[0,0,16,3],"texture":"#texture","cullface":"north"},"south":{"uv":[0,0,16,3],"texture":"#texture","cullface":"south"},"west":{"uv":[0,0,16,3],"texture":"#texture","cullface":"west"},"east":{"uv":[0,0,16,3],"texture":"#texture","cullface":"east"}}}]},"template_orientable_trapdoor_open":{"textures":{"particle":"#texture"},"elements":[{"from":[0,0,13],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,3],"texture":"#texture","cullface":"down"},"up":{"uv":[0,3,16,0],"texture":"#texture","cullface":"up"},"north":{"uv":[0,16,16,0],"texture":"#texture"},"south":{"uv":[0,16,16,0],"texture":"#texture","cullface":"south"},"west":{"uv":[0,0,16,3],"rotation":90,"texture":"#texture","cullface":"west"},"east":{"uv":[0,3,16,0],"rotation":90,"texture":"#texture","cullface":"east"}}}]},"template_orientable_trapdoor_top":{"textures":{"particle":"#texture"},"elements":[{"from":[0,13,0],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture"},"up":{"uv":[0,16,16,0],"texture":"#texture","cullface":"up"},"north":{"uv":[0,0,16,3],"texture":"#texture","cullface":"north"},"south":{"uv":[0,0,16,3],"texture":"#texture","cullface":"south"},"west":{"uv":[0,0,16,3],"texture":"#texture","cullface":"west"},"east":{"uv":[0,0,16,3],"texture":"#texture","cullface":"east"}}}]},"template_piston":{"textures":{"particle":"#side"},"elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#side","rotation":180,"cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#side","cullface":"up"},"north":{"uv":[0,0,16,16],"texture":"#platform","cullface":"north"},"south":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#side","rotation":270,"cullface":"west"},"east":{"uv":[0,0,16,16],"texture":"#side","rotation":90,"cullface":"east"}}}]},"template_piston_head":{"textures":{"particle":"#platform"},"elements":[{"from":[0,0,0],"to":[16,16,4],"faces":{"down":{"uv":[0,0,16,4],"texture":"#side","cullface":"down","rotation":180},"up":{"uv":[0,0,16,4],"texture":"#side","cullface":"up"},"north":{"uv":[0,0,16,16],"texture":"#platform","cullface":"north"},"south":{"uv":[0,0,16,16],"texture":"#unsticky"},"west":{"uv":[0,0,16,4],"texture":"#side","rotation":270,"cullface":"west"},"east":{"uv":[0,0,16,4],"texture":"#side","rotation":90,"cullface":"east"}}},{"from":[6,6,4],"to":[10,10,20],"faces":{"down":{"uv":[0,0,16,4],"texture":"#side","rotation":90},"up":{"uv":[0,0,16,4],"texture":"#side","rotation":270},"west":{"uv":[16,4,0,0],"texture":"#side"},"east":{"uv":[0,0,16,4],"texture":"#side"}}}]},"template_piston_head_short":{"textures":{"particle":"#platform"},"elements":[{"from":[0,0,0],"to":[16,16,4],"faces":{"down":{"uv":[0,0,16,4],"texture":"#side","cullface":"down","rotation":180},"up":{"uv":[0,0,16,4],"texture":"#side","cullface":"up"},"north":{"uv":[0,0,16,16],"texture":"#platform","cullface":"north"},"south":{"uv":[0,0,16,16],"texture":"#unsticky"},"west":{"uv":[0,0,16,4],"texture":"#side","rotation":270,"cullface":"west"},"east":{"uv":[0,0,16,4],"texture":"#side","rotation":90,"cullface":"east"}}},{"from":[6,6,4],"to":[10,10,16],"faces":{"down":{"uv":[4,0,16,4],"texture":"#side","rotation":90},"up":{"uv":[4,0,16,4],"texture":"#side","rotation":270},"west":{"uv":[16,4,4,0],"texture":"#side"},"east":{"uv":[4,0,16,4],"texture":"#side"}}}]},"template_potted_azalea_bush":{"parent":"block/block","textures":{"particle":"block/flower_pot","flowerpot":"block/flower_pot","dirt":"block/dirt"},"elements":[{"from":[5,0,5],"to":[6,6,11],"faces":{"down":{"uv":[5,5,6,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[5,5,6,11],"texture":"#flowerpot"},"north":{"uv":[10,10,11,16],"texture":"#flowerpot"},"south":{"uv":[5,10,6,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[10,0,5],"to":[11,6,11],"faces":{"down":{"uv":[10,5,11,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[10,5,11,11],"texture":"#flowerpot"},"north":{"uv":[5,10,6,16],"texture":"#flowerpot"},"south":{"uv":[10,10,11,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[6,0,5],"to":[10,6,6],"faces":{"down":{"uv":[6,10,10,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,5,10,6],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,10],"to":[10,6,11],"faces":{"down":{"uv":[6,5,10,6],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,10,10,11],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,6],"to":[10,4,10],"faces":{"down":{"uv":[6,12,10,16],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,6,10,10],"texture":"#dirt"}}},{"from":[4,15.9,4],"to":[12,16,12],"faces":{"down":{"uv":[4,12,12,4],"texture":"#top"},"up":{"uv":[4,4,12,12],"texture":"#top","cullface":"up"}}},{"from":[4,8,4],"to":[12,16,4],"faces":{"north":{"uv":[4,5,12,13],"texture":"#side"},"south":{"uv":[12,5,4,13],"texture":"#side"}}},{"from":[4,8,12],"to":[12,16,12],"faces":{"north":{"uv":[12,5,4,13],"texture":"#side"},"south":{"uv":[4,5,12,13],"texture":"#side"}}},{"from":[4,8,4],"to":[4,16,12],"faces":{"west":{"uv":[4,5,12,13],"texture":"#side"},"east":{"uv":[12,5,4,13],"texture":"#side"}}},{"from":[12,8,4],"to":[12,16,12],"faces":{"west":{"uv":[12,5,4,13],"texture":"#side"},"east":{"uv":[4,5,12,13],"texture":"#side"}}},{"from":[2.6,4,8],"to":[13.4,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"north":{"uv":[0,4,16,16],"texture":"#plant"},"south":{"uv":[0,4,16,16],"texture":"#plant"}}},{"from":[8,4,2.6],"to":[8,16,13.4],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"west":{"uv":[0,4,16,16],"texture":"#plant"},"east":{"uv":[0,4,16,16],"texture":"#plant"}}}]},"template_rail_raised_ne":{"ambientocclusion":false,"textures":{"particle":"#rail"},"elements":[{"from":[0,9,0],"to":[16,9,16],"rotation":{"origin":[8,9,8],"axis":"x","angle":45,"rescale":true},"faces":{"down":{"uv":[0,16,16,0],"texture":"#rail"},"up":{"uv":[0,0,16,16],"texture":"#rail"}}}]},"template_rail_raised_sw":{"ambientocclusion":false,"textures":{"particle":"#rail"},"elements":[{"from":[0,9,0],"to":[16,9,16],"rotation":{"origin":[8,9,8],"axis":"x","angle":-45,"rescale":true},"faces":{"down":{"uv":[0,16,16,0],"texture":"#rail"},"up":{"uv":[0,0,16,16],"texture":"#rail"}}}]},"template_redstone_torch":{"ambientocclusion":false,"textures":{"particle":"#torch"},"elements":[{"from":[7,0,7],"to":[9,10,9],"shade":false,"faces":{"down":{"uv":[7,13,9,15],"texture":"#torch","cullface":"down"},"up":{"uv":[7,6,9,8],"texture":"#torch"},"north":{"uv":[7,6,9,16],"texture":"#torch"},"east":{"uv":[7,6,9,16],"texture":"#torch"},"south":{"uv":[7,6,9,16],"texture":"#torch"},"west":{"uv":[7,6,9,16],"texture":"#torch"}}},{"from":[6.5,7.5,6.5],"to":[9.5,7.5,9.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#torch"}}},{"from":[6.5,10.5,6.5],"to":[9.5,10.5,9.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#torch"}}},{"from":[6.5,7.5,6.5],"to":[9.5,10.5,6.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#torch"}}},{"from":[9.5,7.5,6.5],"to":[9.5,10.5,9.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#torch"}}},{"from":[6.5,7.5,9.5],"to":[9.5,10.5,9.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#torch"}}},{"from":[6.5,7.5,6.5],"to":[6.5,10.5,9.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#torch"}}}]},"template_redstone_torch_wall":{"ambientocclusion":false,"textures":{"particle":"#torch"},"elements":[{"from":[-1,3.5,7],"to":[1,13.5,9],"rotation":{"origin":[0,3.5,8],"axis":"z","angle":-22.5},"shade":false,"faces":{"down":{"uv":[7,13,9,15],"texture":"#torch"},"up":{"uv":[7,6,9,8],"texture":"#torch"},"north":{"uv":[7,6,9,16],"texture":"#torch"},"east":{"uv":[7,6,9,16],"texture":"#torch"},"south":{"uv":[7,6,9,16],"texture":"#torch"},"west":{"uv":[7,6,9,16],"texture":"#torch"}}},{"from":[-1.5,8,6.5],"to":[1.5,11,9.5],"shade":false,"rotation":{"origin":[0,3.5,8],"axis":"z","angle":-22.5},"faces":{"up":{"uv":[6,5,7,6],"texture":"#torch"}}},{"from":[-1.5,14,6.5],"to":[1.5,17,9.5],"shade":false,"rotation":{"origin":[0,3.5,8],"axis":"z","angle":-22.5},"faces":{"down":{"uv":[6,5,7,6],"texture":"#torch"}}},{"from":[-1.5,11,3.5],"to":[1.5,14,6.5],"shade":false,"rotation":{"origin":[0,3.5,8],"axis":"z","angle":-22.5},"faces":{"south":{"uv":[6,5,7,6],"texture":"#torch"}}},{"from":[1.5,11,6.5],"to":[4.5,14,9.5],"shade":false,"rotation":{"origin":[0,3.5,8],"axis":"z","angle":-22.5},"faces":{"west":{"uv":[6,5,7,6],"texture":"#torch"}}},{"from":[-1.5,11,9.5],"to":[1.5,14,12.5],"shade":false,"rotation":{"origin":[0,3.5,8],"axis":"z","angle":-22.5},"faces":{"north":{"uv":[6,5,7,6],"texture":"#torch"}}},{"from":[-4.5,11,6.5],"to":[-1.5,14,9.5],"shade":false,"rotation":{"origin":[0,3.5,8],"axis":"z","angle":-22.5},"faces":{"east":{"uv":[6,5,7,6],"texture":"#torch"}}}]},"template_sculk_shrieker":{"parent":"block/block","textures":{"bottom":"block/sculk_shrieker_bottom","side":"block/sculk_shrieker_side","top":"block/sculk_shrieker_top","inner_top":"block/sculk_shrieker_inner_top","particle":"block/sculk_shrieker_bottom"},"elements":[{"name":"bottom_slab","from":[0,0,0],"to":[16,8,16],"faces":{"north":{"uv":[0,8,16,16],"texture":"#side","cullface":"north"},"east":{"uv":[0,8,16,16],"texture":"#side","cullface":"east"},"south":{"uv":[0,8,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,8,16,16],"texture":"#side","cullface":"west"},"up":{"uv":[0,0,16,16],"texture":"#inner_top"},"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"}}},{"name":"top_slab","from":[1,8,1],"to":[15,15,15],"faces":{"north":{"uv":[1,1,15,8],"texture":"#side"},"east":{"uv":[1,1,15,8],"texture":"#side"},"south":{"uv":[1,1,15,8],"texture":"#side"},"west":{"uv":[1,1,15,8],"texture":"#side"},"up":{"uv":[1,1,15,15],"texture":"#top"}}},{"name":"up","from":[1,14.98,1],"to":[15,14.98,15],"faces":{"down":{"uv":[1,1,15,15],"texture":"#top"}}},{"name":"south","from":[1,8,14.98],"to":[15,15,14.98],"faces":{"north":{"uv":[1,1,15,8],"texture":"#side"}}},{"name":"north","from":[1,8,1.02],"to":[15,15,1.02],"faces":{"south":{"uv":[1,1,15,8],"texture":"#side"}}},{"name":"east","from":[14.98,8,1],"to":[14.98,15,15],"faces":{"west":{"uv":[1,1,15,8],"texture":"#side"}}},{"name":"west","from":[1.02,8,1],"to":[1.02,15,15],"faces":{"east":{"uv":[1,1,15,8],"texture":"#side"}}}]},"template_seagrass":{"parent":"block/block","textures":{"particle":"#texture"},"elements":[{"from":[0,0,4],"to":[16,16,4],"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#texture"},"south":{"uv":[0,0,16,16],"texture":"#texture"}}},{"from":[12,0,0],"to":[12,16,16],"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#texture"},"east":{"uv":[0,0,16,16],"texture":"#texture"}}},{"from":[4,0,0],"to":[4,16,16],"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#texture"},"east":{"uv":[0,0,16,16],"texture":"#texture"}}},{"from":[0,0,12],"to":[16,16,12],"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#texture"},"south":{"uv":[0,0,16,16],"texture":"#texture"}}}]},"template_single_face":{"textures":{"particle":"#texture"},"elements":[{"from":[0,0,0],"to":[16,16,0],"faces":{"north":{"texture":"#texture","cullface":"north"}}}]},"template_three_candles":{"parent":"block/block","elements":[{"from":[7,0,9],"to":[9,3,11],"faces":{"north":{"uv":[0,8,2,11],"texture":"#all"},"east":{"uv":[0,8,2,11],"texture":"#all"},"south":{"uv":[0,8,2,11],"texture":"#all"},"west":{"uv":[0,8,2,11],"texture":"#all"},"up":{"uv":[0,6,2,8],"texture":"#all"},"down":{"uv":[0,14,2,16],"texture":"#all","cullface":"down"}}},{"from":[7.5,3,10],"to":[8.5,4,10],"rotation":{"angle":45,"axis":"y","origin":[8,3,10]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[1,5,0,6],"texture":"#all"}}},{"from":[7.5,3,10],"to":[8.5,4,10],"rotation":{"angle":-45,"axis":"y","origin":[8,3,10]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[1,5,0,6],"texture":"#all"}}},{"from":[5,0,7],"to":[7,5,9],"faces":{"north":{"uv":[0,8,2,13],"texture":"#all"},"east":{"uv":[0,8,2,13],"texture":"#all"},"south":{"uv":[0,8,2,13],"texture":"#all"},"west":{"uv":[0,8,2,13],"texture":"#all"},"up":{"uv":[0,6,2,8],"texture":"#all"},"down":{"uv":[0,14,2,16],"texture":"#all","cullface":"down"}}},{"from":[5.5,5,8],"to":[6.5,6,8],"rotation":{"angle":45,"axis":"y","origin":[6,5,8]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[1,5,0,6],"texture":"#all"}}},{"from":[5.5,5,8],"to":[6.5,6,8],"rotation":{"angle":-45,"axis":"y","origin":[6,5,8]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[1,5,0,6],"texture":"#all"}}},{"from":[8,0,6],"to":[10,6,8],"faces":{"north":{"uv":[0,8,2,14],"texture":"#all"},"east":{"uv":[0,8,2,14],"texture":"#all"},"south":{"uv":[0,8,2,14],"texture":"#all"},"west":{"uv":[0,8,2,14],"texture":"#all"},"up":{"uv":[0,6,2,8],"texture":"#all"},"down":{"uv":[0,14,2,16],"texture":"#all","cullface":"down"}}},{"from":[8.5,6,7],"to":[9.5,7,7],"rotation":{"angle":45,"axis":"y","origin":[9,6,7]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[0,5,1,6],"texture":"#all"}}},{"from":[8.5,6,7],"to":[9.5,7,7],"rotation":{"angle":-45,"axis":"y","origin":[9,6,7]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[0,5,1,6],"texture":"#all"}}}]},"template_three_turtle_eggs":{"parent":"block/block","textures":{"particle":"#all"},"elements":[{"from":[5,0,4],"to":[9,7,8],"faces":{"down":{"uv":[0,0,4,4],"texture":"#all","cullface":"down"},"up":{"uv":[0,0,4,4],"texture":"#all"},"north":{"uv":[1,4,5,11],"texture":"#all"},"south":{"uv":[1,4,5,11],"texture":"#all"},"west":{"uv":[1,4,5,11],"texture":"#all"},"east":{"uv":[1,4,5,11],"texture":"#all"}}},{"from":[1,0,7],"to":[5,5,11],"faces":{"down":{"uv":[6,7,10,11],"texture":"#all","cullface":"down"},"up":{"uv":[6,7,10,11],"texture":"#all"},"north":{"uv":[10,10,14,15],"texture":"#all"},"south":{"uv":[10,10,14,15],"texture":"#all"},"west":{"uv":[10,10,14,15],"texture":"#all"},"east":{"uv":[10,10,14,15],"texture":"#all"}}},{"from":[11,0,7],"to":[14,4,10],"faces":{"down":{"uv":[5,0,8,3],"texture":"#all","cullface":"down"},"up":{"uv":[5,0,8,3],"texture":"#all"},"north":{"uv":[8,3,11,7],"texture":"#all"},"south":{"uv":[8,3,11,7],"texture":"#all"},"west":{"uv":[8,3,11,7],"texture":"#all"},"east":{"uv":[8,3,11,7],"texture":"#all"}}}]},"template_torch":{"ambientocclusion":false,"textures":{"particle":"#torch"},"elements":[{"from":[7,0,7],"to":[9,10,9],"shade":false,"faces":{"down":{"uv":[7,13,9,15],"texture":"#torch","cullface":"down"},"up":{"uv":[7,6,9,8],"texture":"#torch"},"north":{"uv":[7,6,9,16],"texture":"#torch"},"east":{"uv":[7,6,9,16],"texture":"#torch"},"south":{"uv":[7,6,9,16],"texture":"#torch"},"west":{"uv":[7,6,9,16],"texture":"#torch"}}}]},"template_torch_unlit":{"ambientocclusion":false,"textures":{"particle":"#torch"},"elements":[{"from":[7,0,7],"to":[9,10,9],"faces":{"down":{"uv":[7,13,9,15],"texture":"#torch","cullface":"down"},"up":{"uv":[7,6,9,8],"texture":"#torch"},"north":{"uv":[7,6,9,16],"texture":"#torch"},"east":{"uv":[7,6,9,16],"texture":"#torch"},"south":{"uv":[7,6,9,16],"texture":"#torch"},"west":{"uv":[7,6,9,16],"texture":"#torch"}}}]},"template_torch_wall":{"ambientocclusion":false,"textures":{"particle":"#torch"},"elements":[{"from":[-1,3.5,7],"to":[1,13.5,9],"rotation":{"origin":[0,3.5,8],"axis":"z","angle":-22.5},"shade":false,"faces":{"down":{"uv":[7,13,9,15],"texture":"#torch"},"up":{"uv":[7,6,9,8],"texture":"#torch"},"north":{"uv":[7,6,9,16],"texture":"#torch"},"east":{"uv":[7,6,9,16],"texture":"#torch"},"south":{"uv":[7,6,9,16],"texture":"#torch"},"west":{"uv":[7,6,9,16],"texture":"#torch"}}}]},"template_torch_wall_unlit":{"ambientocclusion":false,"textures":{"particle":"#torch"},"elements":[{"from":[-1,3.5,7],"to":[1,13.5,9],"rotation":{"origin":[0,3.5,8],"axis":"z","angle":-22.5},"faces":{"down":{"uv":[7,13,9,15],"texture":"#torch"},"up":{"uv":[7,6,9,8],"texture":"#torch"},"north":{"uv":[7,6,9,16],"texture":"#torch"},"east":{"uv":[7,6,9,16],"texture":"#torch"},"south":{"uv":[7,6,9,16],"texture":"#torch"},"west":{"uv":[7,6,9,16],"texture":"#torch"}}}]},"template_trapdoor_bottom":{"parent":"block/thin_block","textures":{"particle":"#texture"},"elements":[{"from":[0,0,0],"to":[16,3,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#texture"},"north":{"uv":[0,16,16,13],"texture":"#texture","cullface":"north"},"south":{"uv":[0,16,16,13],"texture":"#texture","cullface":"south"},"west":{"uv":[0,16,16,13],"texture":"#texture","cullface":"west"},"east":{"uv":[0,16,16,13],"texture":"#texture","cullface":"east"}}}]},"template_trapdoor_open":{"textures":{"particle":"#texture"},"elements":[{"from":[0,0,13],"to":[16,16,16],"faces":{"down":{"uv":[0,13,16,16],"texture":"#texture","cullface":"down"},"up":{"uv":[0,16,16,13],"texture":"#texture","cullface":"up"},"north":{"uv":[0,0,16,16],"texture":"#texture"},"south":{"uv":[0,0,16,16],"texture":"#texture","cullface":"south"},"west":{"uv":[16,0,13,16],"texture":"#texture","cullface":"west"},"east":{"uv":[13,0,16,16],"texture":"#texture","cullface":"east"}}}]},"template_trapdoor_top":{"textures":{"particle":"#texture"},"elements":[{"from":[0,13,0],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture"},"up":{"uv":[0,0,16,16],"texture":"#texture","cullface":"up"},"north":{"uv":[0,16,16,13],"texture":"#texture","cullface":"north"},"south":{"uv":[0,16,16,13],"texture":"#texture","cullface":"south"},"west":{"uv":[0,16,16,13],"texture":"#texture","cullface":"west"},"east":{"uv":[0,16,16,13],"texture":"#texture","cullface":"east"}}}]},"template_turtle_egg":{"parent":"block/block","textures":{"particle":"#all"},"elements":[{"from":[5,0,4],"to":[9,7,8],"faces":{"down":{"uv":[0,0,4,4],"texture":"#all","cullface":"down"},"up":{"uv":[0,0,4,4],"texture":"#all"},"north":{"uv":[1,4,5,11],"texture":"#all"},"south":{"uv":[1,4,5,11],"texture":"#all"},"west":{"uv":[1,4,5,11],"texture":"#all"},"east":{"uv":[1,4,5,11],"texture":"#all"}}}]},"template_two_candles":{"parent":"block/block","elements":[{"from":[5,0,7],"to":[7,5,9],"faces":{"north":{"uv":[0,8,2,13],"texture":"#all"},"east":{"uv":[0,8,2,13],"texture":"#all"},"south":{"uv":[0,8,2,13],"texture":"#all"},"west":{"uv":[0,8,2,13],"texture":"#all"},"up":{"uv":[0,6,2,8],"texture":"#all"},"down":{"uv":[0,14,2,16],"texture":"#all","cullface":"down"}}},{"from":[5.5,5,8],"to":[6.5,6,8],"rotation":{"angle":45,"axis":"y","origin":[6,5,8]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[1,5,0,6],"texture":"#all"}}},{"from":[5.5,5,8],"to":[6.5,6,8],"rotation":{"angle":-45,"axis":"y","origin":[6,5,8]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[1,5,0,6],"texture":"#all"}}},{"from":[9,0,6],"to":[11,6,8],"faces":{"north":{"uv":[0,8,2,14],"texture":"#all"},"east":{"uv":[0,8,2,14],"texture":"#all"},"south":{"uv":[0,8,2,14],"texture":"#all"},"west":{"uv":[0,8,2,14],"texture":"#all"},"up":{"uv":[0,6,2,8],"texture":"#all"},"down":{"uv":[0,14,2,16],"texture":"#all","cullface":"down"}}},{"from":[9.5,6,7],"to":[10.5,7,7],"rotation":{"angle":45,"axis":"y","origin":[10,6,7]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[0,5,1,6],"texture":"#all"}}},{"from":[9.5,6,7],"to":[10.5,7,7],"rotation":{"angle":-45,"axis":"y","origin":[10,6,7]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[0,5,1,6],"texture":"#all"}}}]},"template_two_turtle_eggs":{"parent":"block/block","textures":{"particle":"#all"},"elements":[{"from":[5,0,4],"to":[9,7,8],"faces":{"down":{"uv":[0,0,4,4],"texture":"#all","cullface":"down"},"up":{"uv":[0,0,4,4],"texture":"#all"},"north":{"uv":[1,4,5,11],"texture":"#all"},"south":{"uv":[1,4,5,11],"texture":"#all"},"west":{"uv":[1,4,5,11],"texture":"#all"},"east":{"uv":[1,4,5,11],"texture":"#all"}}},{"from":[1,0,7],"to":[5,5,11],"faces":{"down":{"uv":[6,7,10,11],"texture":"#all","cullface":"down"},"up":{"uv":[6,7,10,11],"texture":"#all"},"north":{"uv":[10,10,14,15],"texture":"#all"},"south":{"uv":[10,10,14,15],"texture":"#all"},"west":{"uv":[10,10,14,15],"texture":"#all"},"east":{"uv":[10,10,14,15],"texture":"#all"}}}]},"template_vault":{"parent":"block/block","textures":{"particle":"#side"},"elements":[{"name":"cage","from":[0,0,0],"to":[16,16,16],"faces":{"north":{"uv":[0,0,16,16],"texture":"#front","cullface":"north"},"east":{"uv":[0,0,16,16],"texture":"#side","cullface":"east"},"south":{"uv":[0,0,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#side","cullface":"west"},"up":{"uv":[0,0,16,16],"texture":"#top","cullface":"up"},"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"}}},{"name":"cage_inverted_faces","from":[15.998,3.002,0.002],"to":[0.002,15.998,15.998],"faces":{"north":{"uv":[16,0,0,13],"texture":"#front"},"east":{"uv":[16,0,0,13],"texture":"#side"},"south":{"uv":[16,0,0,13],"texture":"#side"},"west":{"uv":[16,0,0,13],"texture":"#side"},"up":{"uv":[16,0,0,16],"texture":"#top"},"down":{"uv":[0,0,16,16],"texture":"#bottom"}}}]},"template_wall_post":{"textures":{"particle":"#wall"},"elements":[{"from":[4,0,4],"to":[12,16,12],"faces":{"down":{"texture":"#wall","cullface":"down"},"up":{"texture":"#wall","cullface":"up"},"north":{"texture":"#wall"},"south":{"texture":"#wall"},"west":{"texture":"#wall"},"east":{"texture":"#wall"}},"__comment":"Center post"}]},"template_wall_side":{"textures":{"particle":"#wall"},"elements":[{"from":[5,0,0],"to":[11,14,8],"faces":{"down":{"texture":"#wall","cullface":"down"},"up":{"texture":"#wall"},"north":{"texture":"#wall","cullface":"north"},"west":{"texture":"#wall"},"east":{"texture":"#wall"}},"__comment":"wall"}]},"template_wall_side_tall":{"textures":{"particle":"#wall"},"elements":[{"from":[5,0,0],"to":[11,16,8],"faces":{"down":{"texture":"#wall","cullface":"down"},"up":{"texture":"#wall","cullface":"up"},"north":{"texture":"#wall","cullface":"north"},"west":{"texture":"#wall"},"east":{"texture":"#wall"}}}]},"terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/terracotta"}},"test_block_accept":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/test_block_accept"}},"test_block_fail":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/test_block_fail"}},"test_block_log":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/test_block_log"}},"test_block_start":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/test_block_start"}},"test_instance_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/test_instance_block"}},"thin_block":{"parent":"block/block","display":{"thirdperson_righthand":{"rotation":[75,45,0],"translation":[0,2.5,2],"scale":[0.375,0.375,0.375]},"firstperson_righthand":{"rotation":[0,45,0],"translation":[0,4.2,0],"scale":[0.40,0.40,0.40]},"firstperson_lefthand":{"rotation":[0,225,0],"translation":[0,4.2,0],"scale":[0.40,0.40,0.40]}}},"three_dead_sea_pickles":{"parent":"block/block","textures":{"particle":"block/sea_pickle","all":"block/sea_pickle"},"elements":[{"from":[6,0,9],"to":[10,6,13],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,11],"texture":"#all"},"south":{"uv":[0,5,4,11],"texture":"#all"},"west":{"uv":[8,5,12,11],"texture":"#all"},"east":{"uv":[12,5,16,11],"texture":"#all"}}},{"from":[6,5.95,9],"to":[10,5.95,13],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[2,0,2],"to":[6,4,6],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,9],"texture":"#all"},"south":{"uv":[0,5,4,9],"texture":"#all"},"west":{"uv":[8,5,12,9],"texture":"#all"},"east":{"uv":[12,5,16,9],"texture":"#all"}}},{"from":[2,3.95,2],"to":[6,3.95,6],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[8,0,4],"to":[12,6,8],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,11],"texture":"#all"},"south":{"uv":[0,5,4,11],"texture":"#all"},"west":{"uv":[8,5,12,11],"texture":"#all"},"east":{"uv":[12,5,16,11],"texture":"#all"}}},{"from":[8,5.95,4],"to":[12,5.95,8],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}}]},"three_sea_pickles":{"parent":"block/block","textures":{"particle":"block/sea_pickle","all":"block/sea_pickle"},"elements":[{"from":[6,0,9],"to":[10,6,13],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,11],"texture":"#all"},"south":{"uv":[0,5,4,11],"texture":"#all"},"west":{"uv":[8,5,12,11],"texture":"#all"},"east":{"uv":[12,5,16,11],"texture":"#all"}}},{"from":[6,5.95,9],"to":[10,5.95,13],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[2,0,2],"to":[6,4,6],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,9],"texture":"#all"},"south":{"uv":[0,5,4,9],"texture":"#all"},"west":{"uv":[8,5,12,9],"texture":"#all"},"east":{"uv":[12,5,16,9],"texture":"#all"}}},{"from":[2,3.95,2],"to":[6,3.95,6],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[8,0,4],"to":[12,6,8],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,11],"texture":"#all"},"south":{"uv":[0,5,4,11],"texture":"#all"},"west":{"uv":[8,5,12,11],"texture":"#all"},"east":{"uv":[12,5,16,11],"texture":"#all"}}},{"from":[8,5.95,4],"to":[12,5.95,8],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[7.5,5.2,11],"to":[8.5,8.7,11],"rotation":{"origin":[8,8,11],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[1,0,3,5],"texture":"#all"},"south":{"uv":[3,0,1,5],"texture":"#all"}}},{"from":[8,5.2,10.5],"to":[8,8.7,11.5],"rotation":{"origin":[8,8,11],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[13,0,15,5],"texture":"#all"},"east":{"uv":[15,0,13,5],"texture":"#all"}}},{"from":[3.5,3.2,4],"to":[4.5,6.7,4],"rotation":{"origin":[4,8,4],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[1,0,3,5],"texture":"#all"},"south":{"uv":[3,0,1,5],"texture":"#all"}}},{"from":[4,3.2,3.5],"to":[4,6.7,4.5],"rotation":{"origin":[4,8,4],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[13,0,15,5],"texture":"#all"},"east":{"uv":[15,0,13,5],"texture":"#all"}}},{"from":[9.5,5.2,6],"to":[10.5,8.7,6],"rotation":{"origin":[10,8,6],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[1,0,3,5],"texture":"#all"},"south":{"uv":[3,0,1,5],"texture":"#all"}}},{"from":[10,5.2,5.5],"to":[10,8.7,6.5],"rotation":{"origin":[10,8,6],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[13,0,15,5],"texture":"#all"},"east":{"uv":[15,0,13,5],"texture":"#all"}}}]},"three_slightly_cracked_turtle_eggs":{"parent":"minecraft:block/template_three_turtle_eggs","textures":{"all":"minecraft:block/turtle_egg_slightly_cracked"}},"three_turtle_eggs":{"parent":"minecraft:block/template_three_turtle_eggs","textures":{"all":"minecraft:block/turtle_egg"}},"three_very_cracked_turtle_eggs":{"parent":"minecraft:block/template_three_turtle_eggs","textures":{"all":"minecraft:block/turtle_egg_very_cracked"}},"tinted_cross":{"ambientocclusion":false,"textures":{"particle":"#cross"},"elements":[{"from":[0.8,0,8],"to":[15.2,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#cross","tintindex":0},"south":{"uv":[0,0,16,16],"texture":"#cross","tintindex":0}}},{"from":[8,0,0.8],"to":[8,16,15.2],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#cross","tintindex":0},"east":{"uv":[0,0,16,16],"texture":"#cross","tintindex":0}}}]},"tinted_flower_pot_cross":{"ambientocclusion":false,"textures":{"particle":"block/flower_pot","flowerpot":"block/flower_pot","dirt":"block/dirt"},"elements":[{"from":[5,0,5],"to":[6,6,11],"faces":{"down":{"uv":[5,5,6,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[5,5,6,11],"texture":"#flowerpot"},"north":{"uv":[10,10,11,16],"texture":"#flowerpot"},"south":{"uv":[5,10,6,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[10,0,5],"to":[11,6,11],"faces":{"down":{"uv":[10,5,11,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[10,5,11,11],"texture":"#flowerpot"},"north":{"uv":[5,10,6,16],"texture":"#flowerpot"},"south":{"uv":[10,10,11,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[6,0,5],"to":[10,6,6],"faces":{"down":{"uv":[6,10,10,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,5,10,6],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,10],"to":[10,6,11],"faces":{"down":{"uv":[6,5,10,6],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,10,10,11],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,6],"to":[10,4,10],"faces":{"down":{"uv":[6,12,10,16],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,6,10,10],"texture":"#dirt"}}},{"from":[2.6,4,8],"to":[13.4,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#plant","tintindex":0},"south":{"uv":[0,0,16,16],"texture":"#plant","tintindex":0}}},{"from":[8,4,2.6],"to":[8,16,13.4],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#plant","tintindex":0},"east":{"uv":[0,0,16,16],"texture":"#plant","tintindex":0}}}]},"tinted_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/tinted_glass"}},"tnt":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/tnt_bottom","side":"minecraft:block/tnt_side","top":"minecraft:block/tnt_top"}},"torch":{"parent":"minecraft:block/template_torch","textures":{"torch":"minecraft:block/torch"}},"torchflower":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/torchflower"}},"torchflower_crop_stage0":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/torchflower_crop_stage0"}},"torchflower_crop_stage1":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/torchflower_crop_stage1"}},"trapped_chest":{"textures":{"particle":"minecraft:block/oak_planks"}},"trial_spawner":{"parent":"minecraft:block/cube_bottom_top_inner_faces","textures":{"bottom":"minecraft:block/trial_spawner_bottom","side":"minecraft:block/trial_spawner_side_inactive","top":"minecraft:block/trial_spawner_top_inactive"}},"trial_spawner_active":{"parent":"minecraft:block/cube_bottom_top_inner_faces","textures":{"bottom":"minecraft:block/trial_spawner_bottom","side":"minecraft:block/trial_spawner_side_active","top":"minecraft:block/trial_spawner_top_active"}},"trial_spawner_active_ominous":{"parent":"minecraft:block/cube_bottom_top_inner_faces","textures":{"bottom":"minecraft:block/trial_spawner_bottom","side":"minecraft:block/trial_spawner_side_active_ominous","top":"minecraft:block/trial_spawner_top_active_ominous"}},"trial_spawner_ejecting_reward":{"parent":"minecraft:block/cube_bottom_top_inner_faces","textures":{"bottom":"minecraft:block/trial_spawner_bottom","side":"minecraft:block/trial_spawner_side_active","top":"minecraft:block/trial_spawner_top_ejecting_reward"}},"trial_spawner_ejecting_reward_ominous":{"parent":"minecraft:block/cube_bottom_top_inner_faces","textures":{"bottom":"minecraft:block/trial_spawner_bottom","side":"minecraft:block/trial_spawner_side_active_ominous","top":"minecraft:block/trial_spawner_top_ejecting_reward_ominous"}},"trial_spawner_inactive_ominous":{"parent":"minecraft:block/cube_bottom_top_inner_faces","textures":{"bottom":"minecraft:block/trial_spawner_bottom","side":"minecraft:block/trial_spawner_side_inactive_ominous","top":"minecraft:block/trial_spawner_top_inactive_ominous"}},"tripwire_attached_n":{"ambientocclusion":false,"textures":{"particle":"block/tripwire","texture":"block/tripwire"},"elements":[{"from":[7.75,1.5,0],"to":[8.25,1.5,4],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,4],"to":[8.25,1.5,8],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,8],"to":[8.25,1.5,12],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}}]},"tripwire_attached_ne":{"ambientocclusion":false,"textures":{"particle":"block/tripwire","texture":"block/tripwire"},"elements":[{"from":[7.75,1.5,0],"to":[8.25,1.5,4],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,4],"to":[8.25,1.5,8],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[8,1.5,7.75],"to":[12,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,4,16,2],"texture":"#texture"},"up":{"uv":[0,2,16,4],"texture":"#texture"}}},{"from":[12,1.5,7.75],"to":[16,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,4,16,2],"texture":"#texture"},"up":{"uv":[0,2,16,4],"texture":"#texture"}}}]},"tripwire_attached_ns":{"ambientocclusion":false,"textures":{"particle":"block/tripwire","texture":"block/tripwire"},"elements":[{"from":[7.75,1.5,0],"to":[8.25,1.5,4],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,4],"to":[8.25,1.5,8],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,8],"to":[8.25,1.5,12],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,12],"to":[8.25,1.5,16],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}}]},"tripwire_attached_nse":{"ambientocclusion":false,"textures":{"particle":"block/tripwire","texture":"block/tripwire"},"elements":[{"from":[7.75,1.5,0],"to":[8.25,1.5,4],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,4],"to":[8.25,1.5,8],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,8],"to":[8.25,1.5,12],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,12],"to":[8.25,1.5,16],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[8,1.5,7.75],"to":[12,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,4,16,2],"texture":"#texture"},"up":{"uv":[0,2,16,4],"texture":"#texture"}}},{"from":[12,1.5,7.75],"to":[16,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,4,16,2],"texture":"#texture"},"up":{"uv":[0,2,16,4],"texture":"#texture"}}}]},"tripwire_attached_nsew":{"ambientocclusion":false,"textures":{"particle":"block/tripwire","texture":"block/tripwire"},"elements":[{"from":[7.75,1.5,0],"to":[8.25,1.5,4],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,4],"to":[8.25,1.5,8],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,8],"to":[8.25,1.5,12],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,12],"to":[8.25,1.5,16],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[0,1.5,7.75],"to":[4,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,4,16,2],"texture":"#texture"},"up":{"uv":[0,2,16,4],"texture":"#texture"}}},{"from":[4,1.5,7.75],"to":[8,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,4,16,2],"texture":"#texture"},"up":{"uv":[0,2,16,4],"texture":"#texture"}}},{"from":[8,1.5,7.75],"to":[12,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,4,16,2],"texture":"#texture"},"up":{"uv":[0,2,16,4],"texture":"#texture"}}},{"from":[12,1.5,7.75],"to":[16,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,4,16,2],"texture":"#texture"},"up":{"uv":[0,2,16,4],"texture":"#texture"}}}]},"tripwire_hook":{"textures":{"particle":"block/oak_planks","hook":"block/tripwire_hook","wood":"block/oak_planks"},"elements":[{"from":[6.2,3.8,7.9],"to":[9.8,4.6,11.5],"rotation":{"origin":[8,6,5.2],"axis":"x","angle":-45},"faces":{"down":{"uv":[5,3,11,9],"texture":"#hook"},"up":{"uv":[5,3,11,9],"texture":"#hook"},"north":{"uv":[5,3,11,4],"texture":"#hook"},"south":{"uv":[5,8,11,9],"texture":"#hook"},"west":{"uv":[5,8,11,9],"texture":"#hook"},"east":{"uv":[5,3,11,4],"texture":"#hook"}}},{"from":[7.4,3.8,10.3],"to":[8.6,4.6,10.3],"rotation":{"origin":[8,6,5.2],"axis":"x","angle":-45},"faces":{"north":{"uv":[7,8,9,9],"texture":"#hook"}}},{"from":[7.4,3.8,9.1],"to":[8.6,4.6,9.1],"rotation":{"origin":[8,6,5.2],"axis":"x","angle":-45},"faces":{"south":{"uv":[7,3,9,4],"texture":"#hook"}}},{"from":[7.4,3.8,9.1],"to":[7.4,4.6,10.3],"rotation":{"origin":[8,6,5.2],"axis":"x","angle":-45},"faces":{"east":{"uv":[7,8,9,9],"texture":"#hook"}}},{"from":[8.6,3.8,9.1],"to":[8.6,4.6,10.3],"rotation":{"origin":[8,6,5.2],"axis":"x","angle":-45},"faces":{"west":{"uv":[7,3,9,4],"texture":"#hook"}}},{"from":[7.4,5.2,10],"to":[8.8,6.8,14],"rotation":{"origin":[8,6,14],"axis":"x","angle":45},"faces":{"down":{"uv":[7,9,9,14],"texture":"#wood"},"up":{"uv":[7,2,9,7],"texture":"#wood"},"north":{"uv":[7,9,9,11],"texture":"#wood"},"south":{"uv":[7,9,9,11],"texture":"#wood"},"west":{"uv":[2,9,7,11],"texture":"#wood"},"east":{"uv":[9,9,14,11],"texture":"#wood"}}},{"from":[6,1,14],"to":[10,9,16],"faces":{"down":{"uv":[6,14,10,16],"texture":"#wood"},"up":{"uv":[6,0,10,2],"texture":"#wood"},"north":{"uv":[6,7,10,15],"texture":"#wood"},"south":{"uv":[6,7,10,15],"texture":"#wood","cullface":"south"},"west":{"uv":[0,7,2,15],"texture":"#wood"},"east":{"uv":[14,7,16,15],"texture":"#wood"}}}]},"tripwire_hook_attached":{"textures":{"particle":"block/oak_planks","hook":"block/tripwire_hook","wood":"block/oak_planks","tripwire":"block/tripwire"},"elements":[{"from":[7.75,1.5,0],"to":[8.25,1.5,6.7],"rotation":{"origin":[8,0,0],"axis":"x","angle":-22.5,"rescale":true},"faces":{"down":{"uv":[16,6,0,8],"texture":"#tripwire","rotation":90},"up":{"uv":[0,6,16,8],"texture":"#tripwire","rotation":90}}},{"from":[6.2,4.2,6.7],"to":[9.8,5,10.3],"rotation":{"origin":[8,4.2,6.7],"axis":"x","angle":-22.5,"rescale":false},"faces":{"down":{"uv":[5,3,11,9],"texture":"#hook"},"up":{"uv":[5,3,11,9],"texture":"#hook"},"north":{"uv":[5,3,11,4],"texture":"#hook"},"south":{"uv":[5,8,11,9],"texture":"#hook"},"west":{"uv":[5,8,11,9],"texture":"#hook"},"east":{"uv":[5,3,11,4],"texture":"#hook"}}},{"from":[7.4,4.2,9.1],"to":[8.6,5,9.1],"rotation":{"origin":[8,4.2,6.7],"axis":"x","angle":-22.5,"rescale":false},"faces":{"north":{"uv":[7,8,9,9],"texture":"#hook"}}},{"from":[7.4,4.2,7.9],"to":[8.6,5,7.9],"rotation":{"origin":[8,4.2,6.7],"axis":"x","angle":-22.5,"rescale":false},"faces":{"south":{"uv":[7,3,9,4],"texture":"#hook"}}},{"from":[7.4,4.2,7.9],"to":[7.4,5,9.1],"rotation":{"origin":[8,4.2,6.7],"axis":"x","angle":-22.5,"rescale":false},"faces":{"east":{"uv":[7,8,9,9],"texture":"#hook"}}},{"from":[8.6,4.2,7.9],"to":[8.6,5,9.1],"rotation":{"origin":[8,4.2,6.7],"axis":"x","angle":-22.5,"rescale":false},"faces":{"west":{"uv":[7,3,9,4],"texture":"#hook"}}},{"from":[7.4,5.2,10],"to":[8.8,6.8,14],"faces":{"down":{"uv":[7,9,9,14],"texture":"#wood"},"up":{"uv":[7,2,9,7],"texture":"#wood"},"north":{"uv":[7,9,9,11],"texture":"#wood"},"west":{"uv":[2,9,7,11],"texture":"#wood"},"east":{"uv":[9,9,14,11],"texture":"#wood"}}},{"from":[6,1,14],"to":[10,9,16],"faces":{"down":{"uv":[6,14,10,16],"texture":"#wood"},"up":{"uv":[6,0,10,2],"texture":"#wood"},"north":{"uv":[6,7,10,15],"texture":"#wood"},"south":{"uv":[6,7,10,15],"texture":"#wood","cullface":"south"},"west":{"uv":[0,7,2,15],"texture":"#wood"},"east":{"uv":[14,7,16,15],"texture":"#wood"}}}]},"tripwire_hook_attached_on":{"textures":{"particle":"block/oak_planks","hook":"block/tripwire_hook","wood":"block/oak_planks","tripwire":"block/tripwire"},"elements":[{"from":[7.75,0.5,0],"to":[8.25,0.5,6.7],"rotation":{"origin":[8,0,0],"axis":"x","angle":-22.5,"rescale":true},"faces":{"down":{"uv":[16,6,0,8],"texture":"#tripwire","rotation":90},"up":{"uv":[0,6,16,8],"texture":"#tripwire","rotation":90}}},{"from":[6.2,3.4,6.7],"to":[9.8,4.2,10.3],"faces":{"down":{"uv":[5,3,11,9],"texture":"#hook"},"up":{"uv":[5,3,11,9],"texture":"#hook"},"north":{"uv":[5,3,11,4],"texture":"#hook"},"south":{"uv":[5,8,11,9],"texture":"#hook"},"west":{"uv":[5,8,11,9],"texture":"#hook"},"east":{"uv":[5,3,11,4],"texture":"#hook"}}},{"from":[7.4,3.4,9.1],"to":[8.6,4.2,9.1],"faces":{"north":{"uv":[7,8,9,9],"texture":"#hook"}}},{"from":[7.4,3.4,7.9],"to":[8.6,4.2,7.9],"faces":{"south":{"uv":[7,3,9,4],"texture":"#hook"}}},{"from":[7.4,3.4,7.9],"to":[7.4,4.2,9.1],"faces":{"east":{"uv":[7,8,9,9],"texture":"#hook"}}},{"from":[8.6,3.4,7.9],"to":[8.6,4.2,9.1],"faces":{"west":{"uv":[7,3,9,4],"texture":"#hook"}}},{"from":[7.4,5.2,10],"to":[8.8,6.8,14],"rotation":{"origin":[8,6,14],"axis":"x","angle":-22.5},"faces":{"down":{"uv":[7,9,9,14],"texture":"#wood"},"up":{"uv":[7,2,9,7],"texture":"#wood"},"north":{"uv":[7,9,9,11],"texture":"#wood"},"south":{"uv":[7,9,9,11],"texture":"#wood"},"west":{"uv":[2,9,7,11],"texture":"#wood"},"east":{"uv":[9,9,14,11],"texture":"#wood"}}},{"from":[6,1,14],"to":[10,9,16],"faces":{"down":{"uv":[6,14,10,16],"texture":"#wood"},"up":{"uv":[6,0,10,2],"texture":"#wood"},"north":{"uv":[6,7,10,15],"texture":"#wood"},"south":{"uv":[6,7,10,15],"texture":"#wood","cullface":"south"},"west":{"uv":[0,7,2,15],"texture":"#wood"},"east":{"uv":[14,7,16,15],"texture":"#wood"}}}]},"tripwire_hook_on":{"textures":{"particle":"block/oak_planks","hook":"block/tripwire_hook","wood":"block/oak_planks"},"elements":[{"from":[6.2,4.2,6.7],"to":[9.8,5,10.3],"faces":{"down":{"uv":[5,3,11,9],"texture":"#hook"},"up":{"uv":[5,3,11,9],"texture":"#hook"},"north":{"uv":[5,3,11,4],"texture":"#hook"},"south":{"uv":[5,8,11,9],"texture":"#hook"},"west":{"uv":[5,8,11,9],"texture":"#hook"},"east":{"uv":[5,3,11,4],"texture":"#hook"}}},{"from":[7.4,4.2,9.1],"to":[8.6,5,9.1],"faces":{"north":{"uv":[7,8,9,9],"texture":"#hook"}}},{"from":[7.4,4.2,7.9],"to":[8.6,5,7.9],"faces":{"south":{"uv":[7,3,9,4],"texture":"#hook"}}},{"from":[7.4,4.2,7.9],"to":[7.4,5,9.1],"faces":{"east":{"uv":[7,8,9,9],"texture":"#hook"}}},{"from":[8.6,4.2,7.9],"to":[8.6,5,9.1],"faces":{"west":{"uv":[7,3,9,4],"texture":"#hook"}}},{"from":[7.4,5.2,10],"to":[8.8,6.8,14],"rotation":{"origin":[8,6,14],"axis":"x","angle":-22.5},"faces":{"down":{"uv":[7,9,9,14],"texture":"#wood"},"up":{"uv":[7,2,9,7],"texture":"#wood"},"north":{"uv":[7,9,9,11],"texture":"#wood"},"south":{"uv":[7,9,9,11],"texture":"#wood"},"west":{"uv":[2,9,7,11],"texture":"#wood"},"east":{"uv":[9,9,14,11],"texture":"#wood"}}},{"from":[6,1,14],"to":[10,9,16],"faces":{"down":{"uv":[6,14,10,16],"texture":"#wood"},"up":{"uv":[6,0,10,2],"texture":"#wood"},"north":{"uv":[6,7,10,15],"texture":"#wood"},"south":{"uv":[6,7,10,15],"texture":"#wood","cullface":"south"},"west":{"uv":[0,7,2,15],"texture":"#wood"},"east":{"uv":[14,7,16,15],"texture":"#wood"}}}]},"tripwire_n":{"ambientocclusion":false,"textures":{"particle":"block/tripwire","texture":"block/tripwire"},"elements":[{"from":[7.75,1.5,0],"to":[8.25,1.5,4],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,4],"to":[8.25,1.5,8],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,8],"to":[8.25,1.5,12],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}}]},"tripwire_ne":{"ambientocclusion":false,"textures":{"particle":"block/tripwire","texture":"block/tripwire"},"elements":[{"from":[7.75,1.5,0],"to":[8.25,1.5,4],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,4],"to":[8.25,1.5,8],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[8,1.5,7.75],"to":[12,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,2,16,0],"texture":"#texture"},"up":{"uv":[0,0,16,2],"texture":"#texture"}}},{"from":[12,1.5,7.75],"to":[16,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,2,16,0],"texture":"#texture"},"up":{"uv":[0,0,16,2],"texture":"#texture"}}}]},"tripwire_ns":{"ambientocclusion":false,"textures":{"particle":"block/tripwire","texture":"block/tripwire"},"elements":[{"from":[7.75,1.5,0],"to":[8.25,1.5,4],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,4],"to":[8.25,1.5,8],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,8],"to":[8.25,1.5,12],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,12],"to":[8.25,1.5,16],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}}]},"tripwire_nse":{"ambientocclusion":false,"textures":{"particle":"block/tripwire","texture":"block/tripwire"},"elements":[{"from":[7.75,1.5,0],"to":[8.25,1.5,4],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,4],"to":[8.25,1.5,8],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,8],"to":[8.25,1.5,12],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,12],"to":[8.25,1.5,16],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[8,1.5,7.75],"to":[12,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,2,16,0],"texture":"#texture"},"up":{"uv":[0,0,16,2],"texture":"#texture"}}},{"from":[12,1.5,7.75],"to":[16,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,2,16,0],"texture":"#texture"},"up":{"uv":[0,0,16,2],"texture":"#texture"}}}]},"tripwire_nsew":{"ambientocclusion":false,"textures":{"particle":"block/tripwire","texture":"block/tripwire"},"elements":[{"from":[7.75,1.5,0],"to":[8.25,1.5,4],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,4],"to":[8.25,1.5,8],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,8],"to":[8.25,1.5,12],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,12],"to":[8.25,1.5,16],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[0,1.5,7.75],"to":[4,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,2,16,0],"texture":"#texture"},"up":{"uv":[0,0,16,2],"texture":"#texture"}}},{"from":[4,1.5,7.75],"to":[8,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,2,16,0],"texture":"#texture"},"up":{"uv":[0,0,16,2],"texture":"#texture"}}},{"from":[8,1.5,7.75],"to":[12,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,2,16,0],"texture":"#texture"},"up":{"uv":[0,0,16,2],"texture":"#texture"}}},{"from":[12,1.5,7.75],"to":[16,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,2,16,0],"texture":"#texture"},"up":{"uv":[0,0,16,2],"texture":"#texture"}}}]},"tube_coral":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/tube_coral"}},"tube_coral_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/tube_coral_block"}},"tube_coral_fan":{"parent":"minecraft:block/coral_fan","textures":{"fan":"minecraft:block/tube_coral_fan"}},"tube_coral_wall_fan":{"parent":"minecraft:block/coral_wall_fan","textures":{"fan":"minecraft:block/tube_coral_fan"}},"tuff":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/tuff"}},"tuff_brick_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/tuff_bricks","side":"minecraft:block/tuff_bricks","top":"minecraft:block/tuff_bricks"}},"tuff_brick_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/tuff_bricks","side":"minecraft:block/tuff_bricks","top":"minecraft:block/tuff_bricks"}},"tuff_brick_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/tuff_bricks","side":"minecraft:block/tuff_bricks","top":"minecraft:block/tuff_bricks"}},"tuff_brick_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/tuff_bricks","side":"minecraft:block/tuff_bricks","top":"minecraft:block/tuff_bricks"}},"tuff_brick_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/tuff_bricks","side":"minecraft:block/tuff_bricks","top":"minecraft:block/tuff_bricks"}},"tuff_brick_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/tuff_bricks"}},"tuff_brick_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/tuff_bricks"}},"tuff_brick_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/tuff_bricks"}},"tuff_brick_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/tuff_bricks"}},"tuff_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/tuff_bricks"}},"tuff_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/tuff","side":"minecraft:block/tuff","top":"minecraft:block/tuff"}},"tuff_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/tuff","side":"minecraft:block/tuff","top":"minecraft:block/tuff"}},"tuff_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/tuff","side":"minecraft:block/tuff","top":"minecraft:block/tuff"}},"tuff_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/tuff","side":"minecraft:block/tuff","top":"minecraft:block/tuff"}},"tuff_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/tuff","side":"minecraft:block/tuff","top":"minecraft:block/tuff"}},"tuff_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/tuff"}},"tuff_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/tuff"}},"tuff_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/tuff"}},"tuff_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/tuff"}},"turtle_egg":{"parent":"minecraft:block/template_turtle_egg","textures":{"all":"minecraft:block/turtle_egg"}},"twisting_vines":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/twisting_vines"}},"twisting_vines_plant":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/twisting_vines_plant"}},"two_dead_sea_pickles":{"parent":"block/block","textures":{"particle":"block/sea_pickle","all":"block/sea_pickle"},"elements":[{"from":[3,0,3],"to":[7,6,7],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,11],"texture":"#all"},"south":{"uv":[0,5,4,11],"texture":"#all"},"west":{"uv":[8,5,12,11],"texture":"#all"},"east":{"uv":[12,5,16,11],"texture":"#all"}}},{"from":[3,5.95,3],"to":[7,5.95,7],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[8,0,8],"to":[12,4,12],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,9],"texture":"#all"},"south":{"uv":[0,5,4,9],"texture":"#all"},"west":{"uv":[8,5,12,9],"texture":"#all"},"east":{"uv":[12,5,16,9],"texture":"#all"}}},{"from":[8,3.95,8],"to":[12,3.95,12],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}}]},"two_sea_pickles":{"parent":"block/block","textures":{"particle":"block/sea_pickle","all":"block/sea_pickle"},"elements":[{"from":[3,0,3],"to":[7,6,7],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,11],"texture":"#all"},"south":{"uv":[0,5,4,11],"texture":"#all"},"west":{"uv":[8,5,12,11],"texture":"#all"},"east":{"uv":[12,5,16,11],"texture":"#all"}}},{"from":[3,5.95,3],"to":[7,5.95,7],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[8,0,8],"to":[12,4,12],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,9],"texture":"#all"},"south":{"uv":[0,5,4,9],"texture":"#all"},"west":{"uv":[8,5,12,9],"texture":"#all"},"east":{"uv":[12,5,16,9],"texture":"#all"}}},{"from":[8,3.95,8],"to":[12,3.95,12],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[4.5,5.2,5],"to":[5.5,8.7,5],"rotation":{"origin":[5,5.6,5],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[1,0,3,5],"texture":"#all"},"south":{"uv":[3,0,1,5],"texture":"#all"}}},{"from":[5,5.2,4.5],"to":[5,8.7,5.5],"rotation":{"origin":[5,5.6,5],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[13,0,15,5],"texture":"#all"},"east":{"uv":[15,0,13,5],"texture":"#all"}}},{"from":[9.5,3.2,10],"to":[10.5,6.7,10],"rotation":{"origin":[10,8,10],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[1,0,3,5],"texture":"#all"},"south":{"uv":[3,0,1,5],"texture":"#all"}}},{"from":[10,3.2,9.5],"to":[10,6.7,10.5],"rotation":{"origin":[10,8,10],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[13,0,15,5],"texture":"#all"},"east":{"uv":[15,0,13,5],"texture":"#all"}}}]},"two_slightly_cracked_turtle_eggs":{"parent":"minecraft:block/template_two_turtle_eggs","textures":{"all":"minecraft:block/turtle_egg_slightly_cracked"}},"two_turtle_eggs":{"parent":"minecraft:block/template_two_turtle_eggs","textures":{"all":"minecraft:block/turtle_egg"}},"two_very_cracked_turtle_eggs":{"parent":"minecraft:block/template_two_turtle_eggs","textures":{"all":"minecraft:block/turtle_egg_very_cracked"}},"vault":{"parent":"minecraft:block/template_vault","textures":{"bottom":"minecraft:block/vault_bottom","front":"minecraft:block/vault_front_off","side":"minecraft:block/vault_side_off","top":"minecraft:block/vault_top"}},"vault_active":{"parent":"minecraft:block/template_vault","textures":{"bottom":"minecraft:block/vault_bottom","front":"minecraft:block/vault_front_on","side":"minecraft:block/vault_side_on","top":"minecraft:block/vault_top"}},"vault_active_ominous":{"parent":"minecraft:block/template_vault","textures":{"bottom":"minecraft:block/vault_bottom_ominous","front":"minecraft:block/vault_front_on_ominous","side":"minecraft:block/vault_side_on_ominous","top":"minecraft:block/vault_top_ominous"}},"vault_ejecting_reward":{"parent":"minecraft:block/template_vault","textures":{"bottom":"minecraft:block/vault_bottom","front":"minecraft:block/vault_front_ejecting","side":"minecraft:block/vault_side_on","top":"minecraft:block/vault_top_ejecting"}},"vault_ejecting_reward_ominous":{"parent":"minecraft:block/template_vault","textures":{"bottom":"minecraft:block/vault_bottom_ominous","front":"minecraft:block/vault_front_ejecting_ominous","side":"minecraft:block/vault_side_on_ominous","top":"minecraft:block/vault_top_ejecting_ominous"}},"vault_ominous":{"parent":"minecraft:block/template_vault","textures":{"bottom":"minecraft:block/vault_bottom_ominous","front":"minecraft:block/vault_front_off_ominous","side":"minecraft:block/vault_side_off_ominous","top":"minecraft:block/vault_top_ominous"}},"vault_unlocking":{"parent":"minecraft:block/template_vault","textures":{"bottom":"minecraft:block/vault_bottom","front":"minecraft:block/vault_front_ejecting","side":"minecraft:block/vault_side_on","top":"minecraft:block/vault_top"}},"vault_unlocking_ominous":{"parent":"minecraft:block/template_vault","textures":{"bottom":"minecraft:block/vault_bottom_ominous","front":"minecraft:block/vault_front_ejecting_ominous","side":"minecraft:block/vault_side_on_ominous","top":"minecraft:block/vault_top_ominous"}},"verdant_froglight":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/verdant_froglight_top","side":"minecraft:block/verdant_froglight_side"}},"verdant_froglight_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/verdant_froglight_top","side":"minecraft:block/verdant_froglight_side"}},"very_cracked_turtle_egg":{"parent":"minecraft:block/template_turtle_egg","textures":{"all":"minecraft:block/turtle_egg_very_cracked"}},"vine":{"ambientocclusion":false,"textures":{"particle":"block/vine","vine":"block/vine"},"elements":[{"from":[0,0,0.8],"to":[16,16,0.8],"shade":false,"faces":{"north":{"uv":[16,0,0,16],"texture":"#vine","tintindex":0},"south":{"uv":[0,0,16,16],"texture":"#vine","tintindex":0}}}]},"wall_inventory":{"parent":"block/block","display":{"gui":{"rotation":[30,135,0],"translation":[0,0,0],"scale":[0.625,0.625,0.625]},"fixed":{"rotation":[0,90,0],"translation":[0,0,0],"scale":[0.5,0.5,0.5]}},"textures":{"particle":"#wall"},"elements":[{"from":[4,0,4],"to":[12,16,12],"faces":{"down":{"uv":[4,4,12,12],"texture":"#wall","cullface":"down"},"up":{"uv":[4,4,12,12],"texture":"#wall"},"north":{"uv":[4,0,12,16],"texture":"#wall"},"south":{"uv":[4,0,12,16],"texture":"#wall"},"west":{"uv":[4,0,12,16],"texture":"#wall"},"east":{"uv":[4,0,12,16],"texture":"#wall"}},"__comment":"Center post"},{"from":[5,0,0],"to":[11,13,16],"faces":{"down":{"uv":[5,0,11,16],"texture":"#wall","cullface":"down"},"up":{"uv":[5,0,11,16],"texture":"#wall"},"north":{"uv":[5,3,11,16],"texture":"#wall","cullface":"north"},"south":{"uv":[5,3,11,16],"texture":"#wall","cullface":"south"},"west":{"uv":[0,3,16,16],"texture":"#wall"},"east":{"uv":[0,3,16,16],"texture":"#wall"}},"__comment":"Full wall"}]},"wall_torch":{"parent":"minecraft:block/template_torch_wall","textures":{"torch":"minecraft:block/torch"}},"warped_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/warped_planks"}},"warped_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/warped_planks"}},"warped_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/warped_planks"}},"warped_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/warped_door_bottom","top":"minecraft:block/warped_door_top"}},"warped_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/warped_door_bottom","top":"minecraft:block/warped_door_top"}},"warped_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/warped_door_bottom","top":"minecraft:block/warped_door_top"}},"warped_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/warped_door_bottom","top":"minecraft:block/warped_door_top"}},"warped_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/warped_door_bottom","top":"minecraft:block/warped_door_top"}},"warped_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/warped_door_bottom","top":"minecraft:block/warped_door_top"}},"warped_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/warped_door_bottom","top":"minecraft:block/warped_door_top"}},"warped_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/warped_door_bottom","top":"minecraft:block/warped_door_top"}},"warped_fence_gate":{"parent":"minecraft:block/template_fence_gate","textures":{"texture":"minecraft:block/warped_planks"}},"warped_fence_gate_open":{"parent":"minecraft:block/template_fence_gate_open","textures":{"texture":"minecraft:block/warped_planks"}},"warped_fence_gate_wall":{"parent":"minecraft:block/template_fence_gate_wall","textures":{"texture":"minecraft:block/warped_planks"}},"warped_fence_gate_wall_open":{"parent":"minecraft:block/template_fence_gate_wall_open","textures":{"texture":"minecraft:block/warped_planks"}},"warped_fence_inventory":{"parent":"minecraft:block/fence_inventory","textures":{"texture":"minecraft:block/warped_planks"}},"warped_fence_post":{"parent":"minecraft:block/fence_post","textures":{"texture":"minecraft:block/warped_planks"}},"warped_fence_side":{"parent":"minecraft:block/fence_side","textures":{"texture":"minecraft:block/warped_planks"}},"warped_fungus":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/warped_fungus"}},"warped_hanging_sign":{"textures":{"particle":"minecraft:block/stripped_warped_stem"}},"warped_hyphae":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/warped_stem","side":"minecraft:block/warped_stem"}},"warped_nylium":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/netherrack","side":"minecraft:block/warped_nylium_side","top":"minecraft:block/warped_nylium"}},"warped_planks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/warped_planks"}},"warped_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/warped_planks"}},"warped_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/warped_planks"}},"warped_roots":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/warped_roots"}},"warped_sign":{"textures":{"particle":"minecraft:block/warped_planks"}},"warped_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/warped_planks","side":"minecraft:block/warped_planks","top":"minecraft:block/warped_planks"}},"warped_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/warped_planks","side":"minecraft:block/warped_planks","top":"minecraft:block/warped_planks"}},"warped_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/warped_planks","side":"minecraft:block/warped_planks","top":"minecraft:block/warped_planks"}},"warped_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/warped_planks","side":"minecraft:block/warped_planks","top":"minecraft:block/warped_planks"}},"warped_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/warped_planks","side":"minecraft:block/warped_planks","top":"minecraft:block/warped_planks"}},"warped_stem":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/warped_stem_top","side":"minecraft:block/warped_stem"}},"warped_trapdoor_bottom":{"parent":"minecraft:block/template_orientable_trapdoor_bottom","textures":{"texture":"minecraft:block/warped_trapdoor"}},"warped_trapdoor_open":{"parent":"minecraft:block/template_orientable_trapdoor_open","textures":{"texture":"minecraft:block/warped_trapdoor"}},"warped_trapdoor_top":{"parent":"minecraft:block/template_orientable_trapdoor_top","textures":{"texture":"minecraft:block/warped_trapdoor"}},"warped_wart_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/warped_wart_block"}},"water":{"textures":{"particle":"block/water_still"}},"water_cauldron_full":{"parent":"minecraft:block/template_cauldron_full","textures":{"bottom":"minecraft:block/cauldron_bottom","content":"minecraft:block/water_still","inside":"minecraft:block/cauldron_inner","particle":"minecraft:block/cauldron_side","side":"minecraft:block/cauldron_side","top":"minecraft:block/cauldron_top"}},"water_cauldron_level1":{"parent":"minecraft:block/template_cauldron_level1","textures":{"bottom":"minecraft:block/cauldron_bottom","content":"minecraft:block/water_still","inside":"minecraft:block/cauldron_inner","particle":"minecraft:block/cauldron_side","side":"minecraft:block/cauldron_side","top":"minecraft:block/cauldron_top"}},"water_cauldron_level2":{"parent":"minecraft:block/template_cauldron_level2","textures":{"bottom":"minecraft:block/cauldron_bottom","content":"minecraft:block/water_still","inside":"minecraft:block/cauldron_inner","particle":"minecraft:block/cauldron_side","side":"minecraft:block/cauldron_side","top":"minecraft:block/cauldron_top"}},"weathered_chiseled_copper":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/weathered_chiseled_copper"}},"weathered_copper":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/weathered_copper"}},"weathered_copper_bulb":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/weathered_copper_bulb"}},"weathered_copper_bulb_lit":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/weathered_copper_bulb_lit"}},"weathered_copper_bulb_lit_powered":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/weathered_copper_bulb_lit_powered"}},"weathered_copper_bulb_powered":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/weathered_copper_bulb_powered"}},"weathered_copper_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/weathered_copper_door_bottom","top":"minecraft:block/weathered_copper_door_top"}},"weathered_copper_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/weathered_copper_door_bottom","top":"minecraft:block/weathered_copper_door_top"}},"weathered_copper_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/weathered_copper_door_bottom","top":"minecraft:block/weathered_copper_door_top"}},"weathered_copper_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/weathered_copper_door_bottom","top":"minecraft:block/weathered_copper_door_top"}},"weathered_copper_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/weathered_copper_door_bottom","top":"minecraft:block/weathered_copper_door_top"}},"weathered_copper_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/weathered_copper_door_bottom","top":"minecraft:block/weathered_copper_door_top"}},"weathered_copper_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/weathered_copper_door_bottom","top":"minecraft:block/weathered_copper_door_top"}},"weathered_copper_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/weathered_copper_door_bottom","top":"minecraft:block/weathered_copper_door_top"}},"weathered_copper_grate":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/weathered_copper_grate"}},"weathered_copper_trapdoor_bottom":{"parent":"minecraft:block/template_trapdoor_bottom","textures":{"texture":"minecraft:block/weathered_copper_trapdoor"}},"weathered_copper_trapdoor_open":{"parent":"minecraft:block/template_trapdoor_open","textures":{"texture":"minecraft:block/weathered_copper_trapdoor"}},"weathered_copper_trapdoor_top":{"parent":"minecraft:block/template_trapdoor_top","textures":{"texture":"minecraft:block/weathered_copper_trapdoor"}},"weathered_cut_copper":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/weathered_cut_copper"}},"weathered_cut_copper_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/weathered_cut_copper","side":"minecraft:block/weathered_cut_copper","top":"minecraft:block/weathered_cut_copper"}},"weathered_cut_copper_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/weathered_cut_copper","side":"minecraft:block/weathered_cut_copper","top":"minecraft:block/weathered_cut_copper"}},"weathered_cut_copper_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/weathered_cut_copper","side":"minecraft:block/weathered_cut_copper","top":"minecraft:block/weathered_cut_copper"}},"weathered_cut_copper_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/weathered_cut_copper","side":"minecraft:block/weathered_cut_copper","top":"minecraft:block/weathered_cut_copper"}},"weathered_cut_copper_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/weathered_cut_copper","side":"minecraft:block/weathered_cut_copper","top":"minecraft:block/weathered_cut_copper"}},"weeping_vines":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/weeping_vines"}},"weeping_vines_plant":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/weeping_vines_plant"}},"wet_sponge":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/wet_sponge"}},"wheat_stage0":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/wheat_stage0"}},"wheat_stage1":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/wheat_stage1"}},"wheat_stage2":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/wheat_stage2"}},"wheat_stage3":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/wheat_stage3"}},"wheat_stage4":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/wheat_stage4"}},"wheat_stage5":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/wheat_stage5"}},"wheat_stage6":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/wheat_stage6"}},"wheat_stage7":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/wheat_stage7"}},"white_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/white_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"white_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/white_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"white_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/white_candle","particle":"minecraft:block/white_candle"}},"white_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/white_candle_lit","particle":"minecraft:block/white_candle_lit"}},"white_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/white_candle","particle":"minecraft:block/white_candle"}},"white_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/white_candle_lit","particle":"minecraft:block/white_candle_lit"}},"white_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/white_candle","particle":"minecraft:block/white_candle"}},"white_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/white_candle_lit","particle":"minecraft:block/white_candle_lit"}},"white_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/white_candle","particle":"minecraft:block/white_candle"}},"white_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/white_candle_lit","particle":"minecraft:block/white_candle_lit"}},"white_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/white_wool"}},"white_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/white_concrete"}},"white_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/white_concrete_powder"}},"white_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/white_glazed_terracotta"}},"white_shulker_box":{"textures":{"particle":"minecraft:block/white_shulker_box"}},"white_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/white_stained_glass"}},"white_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/white_stained_glass"}},"white_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/white_stained_glass"}},"white_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/white_stained_glass_pane_top","pane":"minecraft:block/white_stained_glass"}},"white_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/white_stained_glass_pane_top","pane":"minecraft:block/white_stained_glass"}},"white_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/white_stained_glass_pane_top","pane":"minecraft:block/white_stained_glass"}},"white_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/white_terracotta"}},"white_tulip":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/white_tulip"}},"white_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/white_wool"}},"wildflowers_1":{"parent":"minecraft:block/flowerbed_1","textures":{"flowerbed":"minecraft:block/wildflowers","stem":"minecraft:block/wildflowers_stem"}},"wildflowers_2":{"parent":"minecraft:block/flowerbed_2","textures":{"flowerbed":"minecraft:block/wildflowers","stem":"minecraft:block/wildflowers_stem"}},"wildflowers_3":{"parent":"minecraft:block/flowerbed_3","textures":{"flowerbed":"minecraft:block/wildflowers","stem":"minecraft:block/wildflowers_stem"}},"wildflowers_4":{"parent":"minecraft:block/flowerbed_4","textures":{"flowerbed":"minecraft:block/wildflowers","stem":"minecraft:block/wildflowers_stem"}},"wither_rose":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/wither_rose"}},"yellow_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/yellow_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"yellow_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/yellow_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"yellow_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/yellow_candle","particle":"minecraft:block/yellow_candle"}},"yellow_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/yellow_candle_lit","particle":"minecraft:block/yellow_candle_lit"}},"yellow_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/yellow_candle","particle":"minecraft:block/yellow_candle"}},"yellow_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/yellow_candle_lit","particle":"minecraft:block/yellow_candle_lit"}},"yellow_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/yellow_candle","particle":"minecraft:block/yellow_candle"}},"yellow_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/yellow_candle_lit","particle":"minecraft:block/yellow_candle_lit"}},"yellow_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/yellow_candle","particle":"minecraft:block/yellow_candle"}},"yellow_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/yellow_candle_lit","particle":"minecraft:block/yellow_candle_lit"}},"yellow_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/yellow_wool"}},"yellow_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/yellow_concrete"}},"yellow_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/yellow_concrete_powder"}},"yellow_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/yellow_glazed_terracotta"}},"yellow_shulker_box":{"textures":{"particle":"minecraft:block/yellow_shulker_box"}},"yellow_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/yellow_stained_glass"}},"yellow_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/yellow_stained_glass"}},"yellow_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/yellow_stained_glass"}},"yellow_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/yellow_stained_glass_pane_top","pane":"minecraft:block/yellow_stained_glass"}},"yellow_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/yellow_stained_glass_pane_top","pane":"minecraft:block/yellow_stained_glass"}},"yellow_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/yellow_stained_glass_pane_top","pane":"minecraft:block/yellow_stained_glass"}},"yellow_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/yellow_terracotta"}},"yellow_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/yellow_wool"}}} \ No newline at end of file +{"acacia_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/acacia_planks"}},"acacia_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/acacia_planks"}},"acacia_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/acacia_planks"}},"acacia_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/acacia_door_bottom","top":"minecraft:block/acacia_door_top"}},"acacia_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/acacia_door_bottom","top":"minecraft:block/acacia_door_top"}},"acacia_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/acacia_door_bottom","top":"minecraft:block/acacia_door_top"}},"acacia_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/acacia_door_bottom","top":"minecraft:block/acacia_door_top"}},"acacia_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/acacia_door_bottom","top":"minecraft:block/acacia_door_top"}},"acacia_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/acacia_door_bottom","top":"minecraft:block/acacia_door_top"}},"acacia_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/acacia_door_bottom","top":"minecraft:block/acacia_door_top"}},"acacia_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/acacia_door_bottom","top":"minecraft:block/acacia_door_top"}},"acacia_fence_gate":{"parent":"minecraft:block/template_fence_gate","textures":{"texture":"minecraft:block/acacia_planks"}},"acacia_fence_gate_open":{"parent":"minecraft:block/template_fence_gate_open","textures":{"texture":"minecraft:block/acacia_planks"}},"acacia_fence_gate_wall":{"parent":"minecraft:block/template_fence_gate_wall","textures":{"texture":"minecraft:block/acacia_planks"}},"acacia_fence_gate_wall_open":{"parent":"minecraft:block/template_fence_gate_wall_open","textures":{"texture":"minecraft:block/acacia_planks"}},"acacia_fence_inventory":{"parent":"minecraft:block/fence_inventory","textures":{"texture":"minecraft:block/acacia_planks"}},"acacia_fence_post":{"parent":"minecraft:block/fence_post","textures":{"texture":"minecraft:block/acacia_planks"}},"acacia_fence_side":{"parent":"minecraft:block/fence_side","textures":{"texture":"minecraft:block/acacia_planks"}},"acacia_hanging_sign":{"textures":{"particle":"minecraft:block/stripped_acacia_log"}},"acacia_leaves":{"parent":"minecraft:block/leaves","textures":{"all":"minecraft:block/acacia_leaves"}},"acacia_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/acacia_log_top","side":"minecraft:block/acacia_log"}},"acacia_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/acacia_log_top","side":"minecraft:block/acacia_log"}},"acacia_planks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/acacia_planks"}},"acacia_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/acacia_planks"}},"acacia_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/acacia_planks"}},"acacia_sapling":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/acacia_sapling"}},"acacia_shelf":{"parent":"minecraft:block/template_shelf_body","textures":{"all":"minecraft:block/acacia_shelf","particle":"minecraft:block/stripped_acacia_log"}},"acacia_shelf_center":{"parent":"minecraft:block/template_shelf_center","textures":{"all":"minecraft:block/acacia_shelf","particle":"minecraft:block/stripped_acacia_log"}},"acacia_shelf_inventory":{"parent":"minecraft:block/template_shelf_inventory","textures":{"all":"minecraft:block/acacia_shelf","particle":"minecraft:block/stripped_acacia_log"}},"acacia_shelf_left":{"parent":"minecraft:block/template_shelf_left","textures":{"all":"minecraft:block/acacia_shelf","particle":"minecraft:block/stripped_acacia_log"}},"acacia_shelf_right":{"parent":"minecraft:block/template_shelf_right","textures":{"all":"minecraft:block/acacia_shelf","particle":"minecraft:block/stripped_acacia_log"}},"acacia_shelf_unconnected":{"parent":"minecraft:block/template_shelf_unconnected","textures":{"all":"minecraft:block/acacia_shelf","particle":"minecraft:block/stripped_acacia_log"}},"acacia_shelf_unpowered":{"parent":"minecraft:block/template_shelf_unpowered","textures":{"all":"minecraft:block/acacia_shelf","particle":"minecraft:block/stripped_acacia_log"}},"acacia_sign":{"textures":{"particle":"minecraft:block/acacia_planks"}},"acacia_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/acacia_planks","side":"minecraft:block/acacia_planks","top":"minecraft:block/acacia_planks"}},"acacia_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/acacia_planks","side":"minecraft:block/acacia_planks","top":"minecraft:block/acacia_planks"}},"acacia_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/acacia_planks","side":"minecraft:block/acacia_planks","top":"minecraft:block/acacia_planks"}},"acacia_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/acacia_planks","side":"minecraft:block/acacia_planks","top":"minecraft:block/acacia_planks"}},"acacia_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/acacia_planks","side":"minecraft:block/acacia_planks","top":"minecraft:block/acacia_planks"}},"acacia_trapdoor_bottom":{"parent":"minecraft:block/template_orientable_trapdoor_bottom","textures":{"texture":"minecraft:block/acacia_trapdoor"}},"acacia_trapdoor_open":{"parent":"minecraft:block/template_orientable_trapdoor_open","textures":{"texture":"minecraft:block/acacia_trapdoor"}},"acacia_trapdoor_top":{"parent":"minecraft:block/template_orientable_trapdoor_top","textures":{"texture":"minecraft:block/acacia_trapdoor"}},"acacia_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/acacia_log","side":"minecraft:block/acacia_log"}},"activator_rail":{"parent":"minecraft:block/rail_flat","textures":{"rail":"minecraft:block/activator_rail"}},"activator_rail_on":{"parent":"minecraft:block/rail_flat","textures":{"rail":"minecraft:block/activator_rail_on"}},"activator_rail_on_raised_ne":{"parent":"minecraft:block/template_rail_raised_ne","textures":{"rail":"minecraft:block/activator_rail_on"}},"activator_rail_on_raised_sw":{"parent":"minecraft:block/template_rail_raised_sw","textures":{"rail":"minecraft:block/activator_rail_on"}},"activator_rail_raised_ne":{"parent":"minecraft:block/template_rail_raised_ne","textures":{"rail":"minecraft:block/activator_rail"}},"activator_rail_raised_sw":{"parent":"minecraft:block/template_rail_raised_sw","textures":{"rail":"minecraft:block/activator_rail"}},"air":{"textures":{"particle":"minecraft:missingno"}},"allium":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/allium"}},"amethyst_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/amethyst_block"}},"amethyst_cluster":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/amethyst_cluster"}},"ancient_debris":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/ancient_debris_top","side":"minecraft:block/ancient_debris_side"}},"andesite":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/andesite"}},"andesite_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/andesite","side":"minecraft:block/andesite","top":"minecraft:block/andesite"}},"andesite_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/andesite","side":"minecraft:block/andesite","top":"minecraft:block/andesite"}},"andesite_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/andesite","side":"minecraft:block/andesite","top":"minecraft:block/andesite"}},"andesite_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/andesite","side":"minecraft:block/andesite","top":"minecraft:block/andesite"}},"andesite_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/andesite","side":"minecraft:block/andesite","top":"minecraft:block/andesite"}},"andesite_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/andesite"}},"andesite_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/andesite"}},"andesite_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/andesite"}},"andesite_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/andesite"}},"anvil":{"parent":"minecraft:block/template_anvil","textures":{"top":"minecraft:block/anvil_top"}},"attached_melon_stem":{"parent":"minecraft:block/stem_fruit","textures":{"stem":"minecraft:block/melon_stem","upperstem":"minecraft:block/attached_melon_stem"}},"attached_pumpkin_stem":{"parent":"minecraft:block/stem_fruit","textures":{"stem":"minecraft:block/pumpkin_stem","upperstem":"minecraft:block/attached_pumpkin_stem"}},"azalea":{"parent":"minecraft:block/template_azalea","textures":{"side":"minecraft:block/azalea_side","top":"minecraft:block/azalea_top"}},"azalea_leaves":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/azalea_leaves"}},"azure_bluet":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/azure_bluet"}},"bamboo1_age0":{"textures":{"all":"block/bamboo_stalk","particle":"block/bamboo_stalk"},"elements":[{"from":[7,0,7],"to":[9,16,9],"faces":{"down":{"uv":[13,4,15,6],"texture":"#all","cullface":"down"},"up":{"uv":[13,0,15,2],"texture":"#all","cullface":"up"},"north":{"uv":[0,0,2,16],"texture":"#all"},"south":{"uv":[0,0,2,16],"texture":"#all"},"west":{"uv":[0,0,2,16],"texture":"#all"},"east":{"uv":[0,0,2,16],"texture":"#all"}}}]},"bamboo1_age1":{"textures":{"all":"block/bamboo_stalk","particle":"block/bamboo_stalk"},"elements":[{"from":[6.5,0,6.5],"to":[9.5,16,9.5],"faces":{"down":{"uv":[13,4,16,7],"texture":"#all","cullface":"down"},"up":{"uv":[13,0,16,3],"texture":"#all","cullface":"up"},"north":{"uv":[0,0,3,16],"texture":"#all"},"south":{"uv":[0,0,3,16],"texture":"#all"},"west":{"uv":[0,0,3,16],"texture":"#all"},"east":{"uv":[0,0,3,16],"texture":"#all"}}}]},"bamboo2_age0":{"textures":{"all":"block/bamboo_stalk","particle":"block/bamboo_stalk"},"elements":[{"from":[7,0,7],"to":[9,16,9],"faces":{"down":{"uv":[13,4,15,6],"texture":"#all","cullface":"down"},"up":{"uv":[13,0,15,2],"texture":"#all","cullface":"up"},"north":{"uv":[3,0,5,16],"texture":"#all"},"south":{"uv":[3,0,5,16],"texture":"#all"},"west":{"uv":[3,0,5,16],"texture":"#all"},"east":{"uv":[3,0,5,16],"texture":"#all"}}}]},"bamboo2_age1":{"textures":{"all":"block/bamboo_stalk","particle":"block/bamboo_stalk"},"elements":[{"from":[6.5,0,6.5],"to":[9.5,16,9.5],"faces":{"down":{"uv":[13,4,16,7],"texture":"#all","cullface":"down"},"up":{"uv":[13,0,16,3],"texture":"#all","cullface":"up"},"north":{"uv":[3,0,6,16],"texture":"#all"},"south":{"uv":[3,0,6,16],"texture":"#all"},"west":{"uv":[3,0,6,16],"texture":"#all"},"east":{"uv":[3,0,6,16],"texture":"#all"}}}]},"bamboo3_age0":{"textures":{"all":"block/bamboo_stalk","particle":"block/bamboo_stalk"},"elements":[{"from":[7,0,7],"to":[9,16,9],"faces":{"down":{"uv":[13,4,15,6],"texture":"#all","cullface":"down"},"up":{"uv":[13,0,15,2],"texture":"#all","cullface":"up"},"north":{"uv":[6,0,8,16],"texture":"#all"},"south":{"uv":[6,0,8,16],"texture":"#all"},"west":{"uv":[6,0,8,16],"texture":"#all"},"east":{"uv":[6,0,8,16],"texture":"#all"}}}]},"bamboo3_age1":{"textures":{"all":"block/bamboo_stalk","particle":"block/bamboo_stalk"},"elements":[{"from":[6.5,0,6.5],"to":[9.5,16,9.5],"faces":{"down":{"uv":[13,4,16,7],"texture":"#all","cullface":"down"},"up":{"uv":[13,0,16,3],"texture":"#all","cullface":"up"},"north":{"uv":[6,0,9,16],"texture":"#all"},"south":{"uv":[6,0,9,16],"texture":"#all"},"west":{"uv":[6,0,9,16],"texture":"#all"},"east":{"uv":[6,0,9,16],"texture":"#all"}}}]},"bamboo4_age0":{"textures":{"all":"block/bamboo_stalk","particle":"block/bamboo_stalk"},"elements":[{"from":[7,0,7],"to":[9,16,9],"faces":{"down":{"uv":[13,4,15,6],"texture":"#all","cullface":"down"},"up":{"uv":[13,0,15,2],"texture":"#all","cullface":"up"},"north":{"uv":[9,0,11,16],"texture":"#all"},"south":{"uv":[9,0,11,16],"texture":"#all"},"west":{"uv":[9,0,11,16],"texture":"#all"},"east":{"uv":[9,0,11,16],"texture":"#all"}}}]},"bamboo4_age1":{"textures":{"all":"block/bamboo_stalk","particle":"block/bamboo_stalk"},"elements":[{"from":[6.5,0,6.5],"to":[9.5,16,9.5],"faces":{"down":{"uv":[13,4,16,7],"texture":"#all","cullface":"down"},"up":{"uv":[13,0,16,3],"texture":"#all","cullface":"up"},"north":{"uv":[9,0,12,16],"texture":"#all"},"south":{"uv":[9,0,12,16],"texture":"#all"},"west":{"uv":[9,0,12,16],"texture":"#all"},"east":{"uv":[9,0,12,16],"texture":"#all"}}}]},"bamboo_block":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/bamboo_block_top","side":"minecraft:block/bamboo_block"}},"bamboo_block_x":{"parent":"minecraft:block/cube_column_uv_locked_x","textures":{"end":"minecraft:block/bamboo_block_top","side":"minecraft:block/bamboo_block"}},"bamboo_block_y":{"parent":"minecraft:block/cube_column_uv_locked_y","textures":{"end":"minecraft:block/bamboo_block_top","side":"minecraft:block/bamboo_block"}},"bamboo_block_z":{"parent":"minecraft:block/cube_column_uv_locked_z","textures":{"end":"minecraft:block/bamboo_block_top","side":"minecraft:block/bamboo_block"}},"bamboo_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/bamboo_planks"}},"bamboo_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/bamboo_planks"}},"bamboo_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/bamboo_planks"}},"bamboo_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/bamboo_door_bottom","top":"minecraft:block/bamboo_door_top"}},"bamboo_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/bamboo_door_bottom","top":"minecraft:block/bamboo_door_top"}},"bamboo_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/bamboo_door_bottom","top":"minecraft:block/bamboo_door_top"}},"bamboo_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/bamboo_door_bottom","top":"minecraft:block/bamboo_door_top"}},"bamboo_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/bamboo_door_bottom","top":"minecraft:block/bamboo_door_top"}},"bamboo_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/bamboo_door_bottom","top":"minecraft:block/bamboo_door_top"}},"bamboo_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/bamboo_door_bottom","top":"minecraft:block/bamboo_door_top"}},"bamboo_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/bamboo_door_bottom","top":"minecraft:block/bamboo_door_top"}},"bamboo_fence_gate":{"parent":"minecraft:block/template_custom_fence_gate","textures":{"particle":"minecraft:block/bamboo_fence_gate_particle","texture":"minecraft:block/bamboo_fence_gate"}},"bamboo_fence_gate_open":{"parent":"minecraft:block/template_custom_fence_gate_open","textures":{"particle":"minecraft:block/bamboo_fence_gate_particle","texture":"minecraft:block/bamboo_fence_gate"}},"bamboo_fence_gate_wall":{"parent":"minecraft:block/template_custom_fence_gate_wall","textures":{"particle":"minecraft:block/bamboo_fence_gate_particle","texture":"minecraft:block/bamboo_fence_gate"}},"bamboo_fence_gate_wall_open":{"parent":"minecraft:block/template_custom_fence_gate_wall_open","textures":{"particle":"minecraft:block/bamboo_fence_gate_particle","texture":"minecraft:block/bamboo_fence_gate"}},"bamboo_fence_inventory":{"parent":"minecraft:block/custom_fence_inventory","textures":{"texture":"minecraft:block/bamboo_fence"}},"bamboo_fence_post":{"parent":"minecraft:block/custom_fence_post","textures":{"particle":"minecraft:block/bamboo_fence_particle","texture":"minecraft:block/bamboo_fence"}},"bamboo_fence_side_east":{"parent":"minecraft:block/custom_fence_side_east","textures":{"texture":"minecraft:block/bamboo_fence"}},"bamboo_fence_side_north":{"parent":"minecraft:block/custom_fence_side_north","textures":{"texture":"minecraft:block/bamboo_fence"}},"bamboo_fence_side_south":{"parent":"minecraft:block/custom_fence_side_south","textures":{"texture":"minecraft:block/bamboo_fence"}},"bamboo_fence_side_west":{"parent":"minecraft:block/custom_fence_side_west","textures":{"texture":"minecraft:block/bamboo_fence"}},"bamboo_hanging_sign":{"textures":{"particle":"minecraft:block/bamboo_planks"}},"bamboo_large_leaves":{"ambientocclusion":false,"textures":{"texture":"block/bamboo_large_leaves","particle":"block/bamboo_large_leaves"},"elements":[{"from":[0.8,0,8],"to":[15.2,16,8],"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#texture","tintindex":0},"south":{"uv":[0,0,16,16],"texture":"#texture","tintindex":0}}},{"from":[8,0,0.8],"to":[8,16,15.2],"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#texture","tintindex":0},"east":{"uv":[0,0,16,16],"texture":"#texture","tintindex":0}}}]},"bamboo_mosaic":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/bamboo_mosaic"}},"bamboo_mosaic_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/bamboo_mosaic","side":"minecraft:block/bamboo_mosaic","top":"minecraft:block/bamboo_mosaic"}},"bamboo_mosaic_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/bamboo_mosaic","side":"minecraft:block/bamboo_mosaic","top":"minecraft:block/bamboo_mosaic"}},"bamboo_mosaic_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/bamboo_mosaic","side":"minecraft:block/bamboo_mosaic","top":"minecraft:block/bamboo_mosaic"}},"bamboo_mosaic_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/bamboo_mosaic","side":"minecraft:block/bamboo_mosaic","top":"minecraft:block/bamboo_mosaic"}},"bamboo_mosaic_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/bamboo_mosaic","side":"minecraft:block/bamboo_mosaic","top":"minecraft:block/bamboo_mosaic"}},"bamboo_planks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/bamboo_planks"}},"bamboo_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/bamboo_planks"}},"bamboo_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/bamboo_planks"}},"bamboo_sapling":{"parent":"minecraft:block/tinted_cross","textures":{"cross":"minecraft:block/bamboo_stage0"}},"bamboo_shelf":{"parent":"minecraft:block/template_shelf_body","textures":{"all":"minecraft:block/bamboo_shelf","particle":"minecraft:block/stripped_bamboo_block"}},"bamboo_shelf_center":{"parent":"minecraft:block/template_shelf_center","textures":{"all":"minecraft:block/bamboo_shelf","particle":"minecraft:block/stripped_bamboo_block"}},"bamboo_shelf_inventory":{"parent":"minecraft:block/template_shelf_inventory","textures":{"all":"minecraft:block/bamboo_shelf","particle":"minecraft:block/stripped_bamboo_block"}},"bamboo_shelf_left":{"parent":"minecraft:block/template_shelf_left","textures":{"all":"minecraft:block/bamboo_shelf","particle":"minecraft:block/stripped_bamboo_block"}},"bamboo_shelf_right":{"parent":"minecraft:block/template_shelf_right","textures":{"all":"minecraft:block/bamboo_shelf","particle":"minecraft:block/stripped_bamboo_block"}},"bamboo_shelf_unconnected":{"parent":"minecraft:block/template_shelf_unconnected","textures":{"all":"minecraft:block/bamboo_shelf","particle":"minecraft:block/stripped_bamboo_block"}},"bamboo_shelf_unpowered":{"parent":"minecraft:block/template_shelf_unpowered","textures":{"all":"minecraft:block/bamboo_shelf","particle":"minecraft:block/stripped_bamboo_block"}},"bamboo_sign":{"textures":{"particle":"minecraft:block/bamboo_planks"}},"bamboo_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/bamboo_planks","side":"minecraft:block/bamboo_planks","top":"minecraft:block/bamboo_planks"}},"bamboo_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/bamboo_planks","side":"minecraft:block/bamboo_planks","top":"minecraft:block/bamboo_planks"}},"bamboo_small_leaves":{"ambientocclusion":false,"textures":{"texture":"block/bamboo_small_leaves","particle":"block/bamboo_small_leaves"},"elements":[{"from":[0.8,0,8],"to":[15.2,16,8],"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#texture","tintindex":0},"south":{"uv":[0,0,16,16],"texture":"#texture","tintindex":0}}},{"from":[8,0,0.8],"to":[8,16,15.2],"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#texture","tintindex":0},"east":{"uv":[0,0,16,16],"texture":"#texture","tintindex":0}}}]},"bamboo_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/bamboo_planks","side":"minecraft:block/bamboo_planks","top":"minecraft:block/bamboo_planks"}},"bamboo_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/bamboo_planks","side":"minecraft:block/bamboo_planks","top":"minecraft:block/bamboo_planks"}},"bamboo_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/bamboo_planks","side":"minecraft:block/bamboo_planks","top":"minecraft:block/bamboo_planks"}},"bamboo_trapdoor_bottom":{"parent":"minecraft:block/template_orientable_trapdoor_bottom","textures":{"texture":"minecraft:block/bamboo_trapdoor"}},"bamboo_trapdoor_open":{"parent":"minecraft:block/template_orientable_trapdoor_open","textures":{"texture":"minecraft:block/bamboo_trapdoor"}},"bamboo_trapdoor_top":{"parent":"minecraft:block/template_orientable_trapdoor_top","textures":{"texture":"minecraft:block/bamboo_trapdoor"}},"banner":{"textures":{"particle":"minecraft:block/oak_planks"}},"barrel":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/barrel_bottom","side":"minecraft:block/barrel_side","top":"minecraft:block/barrel_top"}},"barrel_open":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/barrel_bottom","side":"minecraft:block/barrel_side","top":"minecraft:block/barrel_top_open"}},"barrier":{"textures":{"particle":"minecraft:item/barrier"}},"basalt":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/basalt_top","side":"minecraft:block/basalt_side"}},"beacon":{"parent":"block/block","textures":{"particle":"block/glass","glass":"block/glass","obsidian":"block/obsidian","beacon":"block/beacon"},"elements":[{"__comment":"Glass shell","from":[0,0,0],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#glass"},"up":{"uv":[0,0,16,16],"texture":"#glass"},"north":{"uv":[0,0,16,16],"texture":"#glass"},"south":{"uv":[0,0,16,16],"texture":"#glass"},"west":{"uv":[0,0,16,16],"texture":"#glass"},"east":{"uv":[0,0,16,16],"texture":"#glass"}}},{"__comment":"Obsidian base","from":[2,0.1,2],"to":[14,3,14],"faces":{"down":{"uv":[2,2,14,14],"texture":"#obsidian"},"up":{"uv":[2,2,14,14],"texture":"#obsidian"},"north":{"uv":[2,13,14,16],"texture":"#obsidian"},"south":{"uv":[2,13,14,16],"texture":"#obsidian"},"west":{"uv":[2,13,14,16],"texture":"#obsidian"},"east":{"uv":[2,13,14,16],"texture":"#obsidian"}}},{"__comment":"Inner beacon texture","from":[3,3,3],"to":[13,14,13],"faces":{"down":{"uv":[3,3,13,13],"texture":"#beacon"},"up":{"uv":[3,3,13,13],"texture":"#beacon"},"north":{"uv":[3,2,13,13],"texture":"#beacon"},"south":{"uv":[3,2,13,13],"texture":"#beacon"},"west":{"uv":[3,2,13,13],"texture":"#beacon"},"east":{"uv":[3,2,13,13],"texture":"#beacon"}}}]},"bed":{"textures":{"particle":"minecraft:block/oak_planks"}},"bedrock":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/bedrock"}},"bedrock_mirrored":{"parent":"minecraft:block/cube_mirrored_all","textures":{"all":"minecraft:block/bedrock"}},"bee_nest_empty":{"parent":"minecraft:block/orientable_with_bottom","textures":{"bottom":"minecraft:block/bee_nest_bottom","front":"minecraft:block/bee_nest_front","particle":"minecraft:block/bee_nest_side","side":"minecraft:block/bee_nest_side","top":"minecraft:block/bee_nest_top"}},"bee_nest_honey":{"parent":"minecraft:block/orientable_with_bottom","textures":{"bottom":"minecraft:block/bee_nest_bottom","front":"minecraft:block/bee_nest_front_honey","particle":"minecraft:block/bee_nest_side","side":"minecraft:block/bee_nest_side","top":"minecraft:block/bee_nest_top"}},"beehive_empty":{"parent":"minecraft:block/orientable_with_bottom","textures":{"bottom":"minecraft:block/beehive_end","front":"minecraft:block/beehive_front","particle":"minecraft:block/beehive_side","side":"minecraft:block/beehive_side","top":"minecraft:block/beehive_end"}},"beehive_honey":{"parent":"minecraft:block/orientable_with_bottom","textures":{"bottom":"minecraft:block/beehive_end","front":"minecraft:block/beehive_front_honey","particle":"minecraft:block/beehive_side","side":"minecraft:block/beehive_side","top":"minecraft:block/beehive_end"}},"beetroots_stage0":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/beetroots_stage0"}},"beetroots_stage1":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/beetroots_stage1"}},"beetroots_stage2":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/beetroots_stage2"}},"beetroots_stage3":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/beetroots_stage3"}},"bell_between_walls":{"textures":{"particle":"block/bell_bottom","bar":"block/dark_oak_planks"},"elements":[{"from":[0,13,7],"to":[16,15,9],"faces":{"north":{"uv":[2,2,14,4],"texture":"#bar"},"east":{"uv":[5,4,7,6],"texture":"#bar","cullface":"east"},"south":{"uv":[2,3,14,5],"texture":"#bar"},"west":{"uv":[5,4,7,6],"texture":"#bar","cullface":"west"},"up":{"uv":[2,3,14,5],"texture":"#bar"},"down":{"uv":[2,3,14,5],"texture":"#bar"}}}]},"bell_ceiling":{"textures":{"particle":"block/bell_bottom","bar":"block/dark_oak_planks"},"elements":[{"from":[7,13,7],"to":[9,16,9],"faces":{"north":{"uv":[7,2,9,5],"texture":"#bar"},"east":{"uv":[1,2,3,5],"texture":"#bar"},"south":{"uv":[6,2,8,5],"texture":"#bar"},"west":{"uv":[4,2,6,5],"texture":"#bar"},"up":{"uv":[1,3,3,5],"texture":"#bar","cullface":"up"}}}]},"bell_floor":{"textures":{"particle":"block/bell_bottom","bar":"block/dark_oak_planks","post":"block/stone"},"elements":[{"from":[2,13,7],"to":[14,15,9],"faces":{"north":{"uv":[2,2,14,4],"texture":"#bar"},"south":{"uv":[2,3,14,5],"texture":"#bar"},"up":{"uv":[2,3,14,5],"texture":"#bar"},"down":{"uv":[2,3,14,5],"texture":"#bar"}}},{"from":[14,0,6],"to":[16,16,10],"faces":{"north":{"uv":[0,1,2,16],"texture":"#post"},"east":{"uv":[0,1,4,16],"texture":"#post"},"south":{"uv":[0,1,2,16],"texture":"#post"},"west":{"uv":[0,1,4,16],"texture":"#post"},"up":{"uv":[0,0,2,4],"texture":"#post","cullface":"up"},"down":{"uv":[0,0,2,4],"texture":"#post","cullface":"down"}}},{"from":[0,0,6],"to":[2,16,10],"faces":{"north":{"uv":[0,1,2,16],"texture":"#post"},"east":{"uv":[0,1,4,16],"texture":"#post"},"south":{"uv":[0,1,2,16],"texture":"#post"},"west":{"uv":[0,1,4,16],"texture":"#post"},"up":{"uv":[0,0,2,4],"texture":"#post","cullface":"up"},"down":{"uv":[0,0,2,4],"texture":"#post","cullface":"down"}}}]},"bell_wall":{"textures":{"particle":"block/bell_bottom","bar":"block/dark_oak_planks"},"elements":[{"from":[3,13,7],"to":[16,15,9],"faces":{"north":{"uv":[2,2,14,4],"texture":"#bar"},"east":{"uv":[5,4,7,6],"texture":"#bar","cullface":"east"},"south":{"uv":[2,3,14,5],"texture":"#bar"},"west":{"uv":[5,4,7,6],"texture":"#bar"},"up":{"uv":[2,3,14,5],"texture":"#bar"},"down":{"uv":[2,3,14,5],"texture":"#bar"}}}]},"big_dripleaf":{"parent":"block/block","textures":{"top":"minecraft:block/big_dripleaf_top","stem":"minecraft:block/big_dripleaf_stem","side":"minecraft:block/big_dripleaf_side","tip":"minecraft:block/big_dripleaf_tip","particle":"block/big_dripleaf_top"},"elements":[{"from":[0,15,0],"to":[16,15,16],"shade":false,"faces":{"down":{"uv":[0,16,16,0],"texture":"#top"},"up":{"uv":[0,0,16,16],"texture":"#top"}}},{"from":[0,11,0],"to":[16,15,0.002],"shade":false,"faces":{"north":{"uv":[0,0,16,4],"texture":"#tip","cullface":"north"},"south":{"uv":[16,0,0,4],"texture":"#tip"}}},{"from":[0,11,0],"to":[0.002,15,16],"shade":false,"faces":{"east":{"uv":[16,0,0,4],"texture":"#side"},"west":{"uv":[0,0,16,4],"texture":"#side","cullface":"west"}}},{"from":[15.998,11,0],"to":[16,15,16],"shade":false,"faces":{"east":{"uv":[16,0,0,4],"texture":"#side","cullface":"east"},"west":{"uv":[0,0,16,4],"texture":"#side"}}},{"from":[5,0,12],"to":[11,15,12],"rotation":{"origin":[8,8,12],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[3,0,14,16],"texture":"#stem"},"south":{"uv":[3,0,14,16],"texture":"#stem"}}},{"from":[5,0,12],"to":[11,15,12],"rotation":{"origin":[8,8,12],"axis":"y","angle":-45,"rescale":true},"shade":false,"faces":{"north":{"uv":[3,0,14,16],"texture":"#stem"},"south":{"uv":[3,0,14,16],"texture":"#stem"}}}]},"big_dripleaf_full_tilt":{"parent":"block/block","textures":{"top":"minecraft:block/big_dripleaf_top","stem":"minecraft:block/big_dripleaf_stem","side":"minecraft:block/big_dripleaf_side","tip":"minecraft:block/big_dripleaf_tip","particle":"block/big_dripleaf_top"},"elements":[{"from":[0,15,0],"to":[16,15,16],"rotation":{"origin":[8,15,16],"axis":"x","angle":-45},"shade":false,"faces":{"down":{"uv":[16,16,0,0],"texture":"#top"},"up":{"uv":[0,0,16,16],"texture":"#top"}}},{"from":[0,11,0],"to":[16,15,0],"rotation":{"origin":[8,15,16],"axis":"x","angle":-45},"shade":false,"faces":{"north":{"uv":[0,0,16,4],"texture":"#tip"},"south":{"uv":[0,0,16,4],"texture":"#tip"}}},{"from":[0,11,0],"to":[0.002,15,16],"rotation":{"origin":[8,15,16],"axis":"x","angle":-45},"shade":false,"faces":{"east":{"uv":[16,0,0,4],"texture":"#side"},"west":{"uv":[0,0,16,4],"texture":"#side","cullface":"west"}}},{"from":[15.998,11,0],"to":[16,15,16],"rotation":{"origin":[8,15,16],"axis":"x","angle":-45},"shade":false,"faces":{"east":{"uv":[16,0,0,4],"texture":"#side","cullface":"east"},"west":{"uv":[0,0,16,4],"texture":"#side"}}},{"from":[5,0,12],"to":[11,15,12],"rotation":{"origin":[8,8,12],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[3,0,14,16],"texture":"#stem"},"south":{"uv":[3,0,14,16],"texture":"#stem"}}},{"from":[5,0,12],"to":[11,15,12],"rotation":{"origin":[8,8,12],"axis":"y","angle":-45,"rescale":true},"shade":false,"faces":{"north":{"uv":[3,0,14,16],"texture":"#stem"},"south":{"uv":[3,0,14,16],"texture":"#stem"}}}]},"big_dripleaf_partial_tilt":{"parent":"block/block","textures":{"top":"minecraft:block/big_dripleaf_top","stem":"minecraft:block/big_dripleaf_stem","side":"minecraft:block/big_dripleaf_side","tip":"minecraft:block/big_dripleaf_tip","particle":"block/big_dripleaf_top"},"elements":[{"from":[0,15,0],"to":[16,15,16],"rotation":{"origin":[8,15,16],"axis":"x","angle":-22.5},"shade":false,"faces":{"down":{"uv":[16,16,0,0],"texture":"#top"},"up":{"uv":[0,0,16,16],"texture":"#top"}}},{"from":[0,11,0],"to":[16,15,0],"rotation":{"origin":[8,15,16],"axis":"x","angle":-22.5},"shade":false,"faces":{"north":{"uv":[0,0,16,4],"texture":"#tip"},"south":{"uv":[0,0,16,4],"texture":"#tip"}}},{"from":[0,11,0],"to":[0.002,15,16],"rotation":{"origin":[8,15,16],"axis":"x","angle":-22.5},"shade":false,"faces":{"east":{"uv":[16,0,0,4],"texture":"#side"},"west":{"uv":[0,0,16,4],"texture":"#side","cullface":"west"}}},{"from":[15.998,11,0],"to":[16,15,16],"rotation":{"origin":[8,15,16],"axis":"x","angle":-22.5},"shade":false,"faces":{"east":{"uv":[16,0,0,4],"texture":"#side","cullface":"east"},"west":{"uv":[0,0,16,4],"texture":"#side"}}},{"from":[5,0,12],"to":[11,15,12],"rotation":{"origin":[8,8,12],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[3,0,14,16],"texture":"#stem"},"south":{"uv":[3,0,14,16],"texture":"#stem"}}},{"from":[5,0,12],"to":[11,15,12],"rotation":{"origin":[8,8,12],"axis":"y","angle":-45,"rescale":true},"shade":false,"faces":{"north":{"uv":[3,0,14,16],"texture":"#stem"},"south":{"uv":[3,0,14,16],"texture":"#stem"}}}]},"big_dripleaf_stem":{"parent":"block/block","textures":{"stem":"block/big_dripleaf_stem","particle":"block/big_dripleaf_stem"},"elements":[{"from":[5,0,12],"to":[11,16,12],"rotation":{"origin":[8,8,12],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[3,0,14,16],"texture":"#stem"},"south":{"uv":[3,0,14,16],"texture":"#stem"}}},{"from":[5,0,12],"to":[11,16,12],"rotation":{"origin":[8,8,12],"axis":"y","angle":-45,"rescale":true},"shade":false,"faces":{"north":{"uv":[3,0,14,16],"texture":"#stem"},"south":{"uv":[3,0,14,16],"texture":"#stem"}}}]},"birch_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/birch_planks"}},"birch_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/birch_planks"}},"birch_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/birch_planks"}},"birch_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/birch_door_bottom","top":"minecraft:block/birch_door_top"}},"birch_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/birch_door_bottom","top":"minecraft:block/birch_door_top"}},"birch_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/birch_door_bottom","top":"minecraft:block/birch_door_top"}},"birch_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/birch_door_bottom","top":"minecraft:block/birch_door_top"}},"birch_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/birch_door_bottom","top":"minecraft:block/birch_door_top"}},"birch_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/birch_door_bottom","top":"minecraft:block/birch_door_top"}},"birch_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/birch_door_bottom","top":"minecraft:block/birch_door_top"}},"birch_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/birch_door_bottom","top":"minecraft:block/birch_door_top"}},"birch_fence_gate":{"parent":"minecraft:block/template_fence_gate","textures":{"texture":"minecraft:block/birch_planks"}},"birch_fence_gate_open":{"parent":"minecraft:block/template_fence_gate_open","textures":{"texture":"minecraft:block/birch_planks"}},"birch_fence_gate_wall":{"parent":"minecraft:block/template_fence_gate_wall","textures":{"texture":"minecraft:block/birch_planks"}},"birch_fence_gate_wall_open":{"parent":"minecraft:block/template_fence_gate_wall_open","textures":{"texture":"minecraft:block/birch_planks"}},"birch_fence_inventory":{"parent":"minecraft:block/fence_inventory","textures":{"texture":"minecraft:block/birch_planks"}},"birch_fence_post":{"parent":"minecraft:block/fence_post","textures":{"texture":"minecraft:block/birch_planks"}},"birch_fence_side":{"parent":"minecraft:block/fence_side","textures":{"texture":"minecraft:block/birch_planks"}},"birch_hanging_sign":{"textures":{"particle":"minecraft:block/stripped_birch_log"}},"birch_leaves":{"parent":"minecraft:block/leaves","textures":{"all":"minecraft:block/birch_leaves"}},"birch_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/birch_log_top","side":"minecraft:block/birch_log"}},"birch_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/birch_log_top","side":"minecraft:block/birch_log"}},"birch_planks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/birch_planks"}},"birch_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/birch_planks"}},"birch_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/birch_planks"}},"birch_sapling":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/birch_sapling"}},"birch_shelf":{"parent":"minecraft:block/template_shelf_body","textures":{"all":"minecraft:block/birch_shelf","particle":"minecraft:block/stripped_birch_log"}},"birch_shelf_center":{"parent":"minecraft:block/template_shelf_center","textures":{"all":"minecraft:block/birch_shelf","particle":"minecraft:block/stripped_birch_log"}},"birch_shelf_inventory":{"parent":"minecraft:block/template_shelf_inventory","textures":{"all":"minecraft:block/birch_shelf","particle":"minecraft:block/stripped_birch_log"}},"birch_shelf_left":{"parent":"minecraft:block/template_shelf_left","textures":{"all":"minecraft:block/birch_shelf","particle":"minecraft:block/stripped_birch_log"}},"birch_shelf_right":{"parent":"minecraft:block/template_shelf_right","textures":{"all":"minecraft:block/birch_shelf","particle":"minecraft:block/stripped_birch_log"}},"birch_shelf_unconnected":{"parent":"minecraft:block/template_shelf_unconnected","textures":{"all":"minecraft:block/birch_shelf","particle":"minecraft:block/stripped_birch_log"}},"birch_shelf_unpowered":{"parent":"minecraft:block/template_shelf_unpowered","textures":{"all":"minecraft:block/birch_shelf","particle":"minecraft:block/stripped_birch_log"}},"birch_sign":{"textures":{"particle":"minecraft:block/birch_planks"}},"birch_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/birch_planks","side":"minecraft:block/birch_planks","top":"minecraft:block/birch_planks"}},"birch_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/birch_planks","side":"minecraft:block/birch_planks","top":"minecraft:block/birch_planks"}},"birch_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/birch_planks","side":"minecraft:block/birch_planks","top":"minecraft:block/birch_planks"}},"birch_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/birch_planks","side":"minecraft:block/birch_planks","top":"minecraft:block/birch_planks"}},"birch_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/birch_planks","side":"minecraft:block/birch_planks","top":"minecraft:block/birch_planks"}},"birch_trapdoor_bottom":{"parent":"minecraft:block/template_orientable_trapdoor_bottom","textures":{"texture":"minecraft:block/birch_trapdoor"}},"birch_trapdoor_open":{"parent":"minecraft:block/template_orientable_trapdoor_open","textures":{"texture":"minecraft:block/birch_trapdoor"}},"birch_trapdoor_top":{"parent":"minecraft:block/template_orientable_trapdoor_top","textures":{"texture":"minecraft:block/birch_trapdoor"}},"birch_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/birch_log","side":"minecraft:block/birch_log"}},"black_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/black_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"black_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/black_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"black_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/black_candle","particle":"minecraft:block/black_candle"}},"black_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/black_candle_lit","particle":"minecraft:block/black_candle_lit"}},"black_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/black_candle","particle":"minecraft:block/black_candle"}},"black_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/black_candle_lit","particle":"minecraft:block/black_candle_lit"}},"black_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/black_candle","particle":"minecraft:block/black_candle"}},"black_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/black_candle_lit","particle":"minecraft:block/black_candle_lit"}},"black_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/black_candle","particle":"minecraft:block/black_candle"}},"black_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/black_candle_lit","particle":"minecraft:block/black_candle_lit"}},"black_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/black_wool"}},"black_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/black_concrete"}},"black_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/black_concrete_powder"}},"black_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/black_glazed_terracotta"}},"black_shulker_box":{"textures":{"particle":"minecraft:block/black_shulker_box"}},"black_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/black_stained_glass"}},"black_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/black_stained_glass"}},"black_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/black_stained_glass"}},"black_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/black_stained_glass_pane_top","pane":"minecraft:block/black_stained_glass"}},"black_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/black_stained_glass_pane_top","pane":"minecraft:block/black_stained_glass"}},"black_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/black_stained_glass_pane_top","pane":"minecraft:block/black_stained_glass"}},"black_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/black_terracotta"}},"black_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/black_wool"}},"blackstone":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/blackstone_top","side":"minecraft:block/blackstone"}},"blackstone_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/blackstone_top","side":"minecraft:block/blackstone","top":"minecraft:block/blackstone_top"}},"blackstone_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/blackstone_top","side":"minecraft:block/blackstone","top":"minecraft:block/blackstone_top"}},"blackstone_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/blackstone_top","side":"minecraft:block/blackstone","top":"minecraft:block/blackstone_top"}},"blackstone_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/blackstone_top","side":"minecraft:block/blackstone","top":"minecraft:block/blackstone_top"}},"blackstone_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/blackstone_top","side":"minecraft:block/blackstone","top":"minecraft:block/blackstone_top"}},"blackstone_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/blackstone"}},"blackstone_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/blackstone"}},"blackstone_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/blackstone"}},"blackstone_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/blackstone"}},"blast_furnace":{"parent":"minecraft:block/orientable","textures":{"front":"minecraft:block/blast_furnace_front","side":"minecraft:block/blast_furnace_side","top":"minecraft:block/blast_furnace_top"}},"blast_furnace_on":{"parent":"minecraft:block/orientable","textures":{"front":"minecraft:block/blast_furnace_front_on","side":"minecraft:block/blast_furnace_side","top":"minecraft:block/blast_furnace_top"}},"block":{"gui_light":"side","display":{"gui":{"rotation":[30,225,0],"translation":[0,0,0],"scale":[0.625,0.625,0.625]},"ground":{"rotation":[0,0,0],"translation":[0,3,0],"scale":[0.25,0.25,0.25]},"fixed":{"rotation":[0,0,0],"translation":[0,0,0],"scale":[0.5,0.5,0.5]},"on_shelf":{"rotation":[0,180,0],"translation":[0,0,0],"scale":[1,1,1]},"thirdperson_righthand":{"rotation":[75,45,0],"translation":[0,2.5,0],"scale":[0.375,0.375,0.375]},"firstperson_righthand":{"rotation":[0,45,0],"translation":[0,0,0],"scale":[0.40,0.40,0.40]},"firstperson_lefthand":{"rotation":[0,225,0],"translation":[0,0,0],"scale":[0.40,0.40,0.40]}}},"blue_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/blue_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"blue_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/blue_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"blue_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/blue_candle","particle":"minecraft:block/blue_candle"}},"blue_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/blue_candle_lit","particle":"minecraft:block/blue_candle_lit"}},"blue_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/blue_candle","particle":"minecraft:block/blue_candle"}},"blue_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/blue_candle_lit","particle":"minecraft:block/blue_candle_lit"}},"blue_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/blue_candle","particle":"minecraft:block/blue_candle"}},"blue_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/blue_candle_lit","particle":"minecraft:block/blue_candle_lit"}},"blue_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/blue_candle","particle":"minecraft:block/blue_candle"}},"blue_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/blue_candle_lit","particle":"minecraft:block/blue_candle_lit"}},"blue_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/blue_wool"}},"blue_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/blue_concrete"}},"blue_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/blue_concrete_powder"}},"blue_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/blue_glazed_terracotta"}},"blue_ice":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/blue_ice"}},"blue_orchid":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/blue_orchid"}},"blue_shulker_box":{"textures":{"particle":"minecraft:block/blue_shulker_box"}},"blue_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/blue_stained_glass"}},"blue_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/blue_stained_glass"}},"blue_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/blue_stained_glass"}},"blue_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/blue_stained_glass_pane_top","pane":"minecraft:block/blue_stained_glass"}},"blue_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/blue_stained_glass_pane_top","pane":"minecraft:block/blue_stained_glass"}},"blue_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/blue_stained_glass_pane_top","pane":"minecraft:block/blue_stained_glass"}},"blue_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/blue_terracotta"}},"blue_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/blue_wool"}},"bone_block":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/bone_block_top","side":"minecraft:block/bone_block_side"}},"bookshelf":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/oak_planks","side":"minecraft:block/bookshelf"}},"brain_coral":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/brain_coral"}},"brain_coral_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/brain_coral_block"}},"brain_coral_fan":{"parent":"minecraft:block/coral_fan","textures":{"fan":"minecraft:block/brain_coral_fan"}},"brain_coral_wall_fan":{"parent":"minecraft:block/coral_wall_fan","textures":{"fan":"minecraft:block/brain_coral_fan"}},"brewing_stand":{"textures":{"particle":"block/brewing_stand","base":"block/brewing_stand_base","stand":"block/brewing_stand"},"elements":[{"from":[7,0,7],"to":[9,14,9],"faces":{"down":{"uv":[7,7,9,9],"texture":"#stand"},"up":{"uv":[7,7,9,9],"texture":"#stand"},"north":{"uv":[7,2,9,16],"texture":"#stand"},"south":{"uv":[7,2,9,16],"texture":"#stand"},"west":{"uv":[7,2,9,16],"texture":"#stand"},"east":{"uv":[7,2,9,16],"texture":"#stand"}}},{"from":[9,0,5],"to":[15,2,11],"faces":{"down":{"uv":[9,5,15,11],"texture":"#base","cullface":"down"},"up":{"uv":[9,5,15,11],"texture":"#base"},"north":{"uv":[9,14,15,16],"texture":"#base"},"south":{"uv":[9,14,15,16],"texture":"#base"},"west":{"uv":[5,14,11,16],"texture":"#base"},"east":{"uv":[5,14,11,16],"texture":"#base"}}},{"from":[1,0,1],"to":[7,2,7],"faces":{"down":{"uv":[1,1,7,7],"texture":"#base","cullface":"down"},"up":{"uv":[1,1,7,7],"texture":"#base"},"north":{"uv":[1,14,7,16],"texture":"#base"},"south":{"uv":[1,14,7,16],"texture":"#base"},"west":{"uv":[1,14,7,16],"texture":"#base"},"east":{"uv":[1,14,7,16],"texture":"#base"}}},{"from":[1,0,9],"to":[7,2,15],"faces":{"down":{"uv":[1,9,7,15],"texture":"#base","cullface":"down"},"up":{"uv":[1,9,7,15],"texture":"#base"},"north":{"uv":[1,14,7,16],"texture":"#base"},"south":{"uv":[1,14,7,16],"texture":"#base"},"west":{"uv":[9,14,15,16],"texture":"#base"},"east":{"uv":[9,14,15,16],"texture":"#base"}}}]},"brewing_stand_bottle0":{"textures":{"particle":"block/brewing_stand","stand":"block/brewing_stand"},"elements":[{"from":[8,0,8],"to":[16,16,8],"faces":{"north":{"uv":[0,0,8,16],"texture":"#stand"},"south":{"uv":[8,0,0,16],"texture":"#stand"}}}]},"brewing_stand_bottle1":{"textures":{"particle":"block/brewing_stand","stand":"block/brewing_stand"},"elements":[{"from":[-0.41,0,8],"to":[7.59,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":-45},"faces":{"north":{"uv":[8,0,0,16],"texture":"#stand"},"south":{"uv":[0,0,8,16],"texture":"#stand"}}}]},"brewing_stand_bottle2":{"textures":{"particle":"block/brewing_stand","stand":"block/brewing_stand"},"elements":[{"from":[-0.41,0,8],"to":[7.59,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45},"faces":{"north":{"uv":[8,0,0,16],"texture":"#stand"},"south":{"uv":[0,0,8,16],"texture":"#stand"}}}]},"brewing_stand_empty0":{"textures":{"particle":"block/brewing_stand","stand":"block/brewing_stand"},"elements":[{"from":[8,0,8],"to":[16,16,8],"faces":{"north":{"uv":[16,0,8,16],"texture":"#stand"},"south":{"uv":[8,0,16,16],"texture":"#stand"}}}]},"brewing_stand_empty1":{"textures":{"particle":"block/brewing_stand","stand":"block/brewing_stand"},"elements":[{"from":[-0.41,0,8],"to":[7.59,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":-45},"faces":{"north":{"uv":[8,0,16,16],"texture":"#stand"},"south":{"uv":[16,0,8,16],"texture":"#stand"}}}]},"brewing_stand_empty2":{"textures":{"particle":"block/brewing_stand","stand":"block/brewing_stand"},"elements":[{"from":[-0.41,0,8],"to":[7.59,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45},"faces":{"north":{"uv":[8,0,16,16],"texture":"#stand"},"south":{"uv":[16,0,8,16],"texture":"#stand"}}}]},"brick_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/bricks","side":"minecraft:block/bricks","top":"minecraft:block/bricks"}},"brick_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/bricks","side":"minecraft:block/bricks","top":"minecraft:block/bricks"}},"brick_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/bricks","side":"minecraft:block/bricks","top":"minecraft:block/bricks"}},"brick_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/bricks","side":"minecraft:block/bricks","top":"minecraft:block/bricks"}},"brick_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/bricks","side":"minecraft:block/bricks","top":"minecraft:block/bricks"}},"brick_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/bricks"}},"brick_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/bricks"}},"brick_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/bricks"}},"brick_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/bricks"}},"bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/bricks"}},"brown_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/brown_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"brown_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/brown_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"brown_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/brown_candle","particle":"minecraft:block/brown_candle"}},"brown_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/brown_candle_lit","particle":"minecraft:block/brown_candle_lit"}},"brown_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/brown_candle","particle":"minecraft:block/brown_candle"}},"brown_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/brown_candle_lit","particle":"minecraft:block/brown_candle_lit"}},"brown_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/brown_candle","particle":"minecraft:block/brown_candle"}},"brown_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/brown_candle_lit","particle":"minecraft:block/brown_candle_lit"}},"brown_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/brown_candle","particle":"minecraft:block/brown_candle"}},"brown_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/brown_candle_lit","particle":"minecraft:block/brown_candle_lit"}},"brown_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/brown_wool"}},"brown_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/brown_concrete"}},"brown_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/brown_concrete_powder"}},"brown_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/brown_glazed_terracotta"}},"brown_mushroom":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/brown_mushroom"}},"brown_mushroom_block":{"parent":"minecraft:block/template_single_face","textures":{"texture":"minecraft:block/brown_mushroom_block"}},"brown_mushroom_block_inventory":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/brown_mushroom_block"}},"brown_shulker_box":{"textures":{"particle":"minecraft:block/brown_shulker_box"}},"brown_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/brown_stained_glass"}},"brown_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/brown_stained_glass"}},"brown_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/brown_stained_glass"}},"brown_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/brown_stained_glass_pane_top","pane":"minecraft:block/brown_stained_glass"}},"brown_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/brown_stained_glass_pane_top","pane":"minecraft:block/brown_stained_glass"}},"brown_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/brown_stained_glass_pane_top","pane":"minecraft:block/brown_stained_glass"}},"brown_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/brown_terracotta"}},"brown_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/brown_wool"}},"bubble_coral":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/bubble_coral"}},"bubble_coral_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/bubble_coral_block"}},"bubble_coral_fan":{"parent":"minecraft:block/coral_fan","textures":{"fan":"minecraft:block/bubble_coral_fan"}},"bubble_coral_wall_fan":{"parent":"minecraft:block/coral_wall_fan","textures":{"fan":"minecraft:block/bubble_coral_fan"}},"budding_amethyst":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/budding_amethyst"}},"bush":{"parent":"minecraft:block/tinted_cross","textures":{"cross":"minecraft:block/bush"}},"button":{"textures":{"particle":"#texture"},"elements":[{"from":[5,0,6],"to":[11,2,10],"faces":{"down":{"uv":[5,6,11,10],"texture":"#texture","cullface":"down"},"up":{"uv":[5,6,11,10],"texture":"#texture"},"north":{"uv":[5,14,11,16],"texture":"#texture"},"south":{"uv":[5,14,11,16],"texture":"#texture"},"west":{"uv":[6,14,10,16],"texture":"#texture"},"east":{"uv":[6,14,10,16],"texture":"#texture"}}}]},"button_inventory":{"parent":"block/block","textures":{"particle":"#texture"},"elements":[{"from":[5,6,6],"to":[11,10,10],"faces":{"down":{"uv":[5,6,11,10],"texture":"#texture"},"up":{"uv":[5,10,11,6],"texture":"#texture"},"north":{"uv":[5,12,11,16],"texture":"#texture"},"south":{"uv":[5,12,11,16],"texture":"#texture"},"west":{"uv":[6,12,10,16],"texture":"#texture"},"east":{"uv":[6,12,10,16],"texture":"#texture"}}}]},"button_pressed":{"textures":{"particle":"#texture"},"elements":[{"from":[5,0,6],"to":[11,1.02,10],"faces":{"down":{"uv":[5,6,11,10],"texture":"#texture","cullface":"down"},"up":{"uv":[5,6,11,10],"texture":"#texture"},"north":{"uv":[5,14,11,15],"texture":"#texture"},"south":{"uv":[5,14,11,15],"texture":"#texture"},"west":{"uv":[6,14,10,15],"texture":"#texture"},"east":{"uv":[6,14,10,15],"texture":"#texture"}}}]},"cactus":{"parent":"block/block","textures":{"particle":"block/cactus_side","bottom":"block/cactus_bottom","top":"block/cactus_top","side":"block/cactus_side"},"elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top","cullface":"up"}}},{"from":[0,0,1],"to":[16,16,15],"faces":{"north":{"uv":[0,0,16,16],"texture":"#side"},"south":{"uv":[0,0,16,16],"texture":"#side"}}},{"from":[1,0,0],"to":[15,16,16],"faces":{"west":{"uv":[0,0,16,16],"texture":"#side"},"east":{"uv":[0,0,16,16],"texture":"#side"}}}]},"cactus_flower":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/cactus_flower"}},"cake":{"textures":{"particle":"block/cake_side","bottom":"block/cake_bottom","top":"block/cake_top","side":"block/cake_side"},"elements":[{"from":[1,0,1],"to":[15,8,15],"faces":{"down":{"texture":"#bottom","cullface":"down"},"up":{"texture":"#top"},"north":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side"},"east":{"texture":"#side"}}}]},"cake_slice1":{"textures":{"particle":"block/cake_side","bottom":"block/cake_bottom","top":"block/cake_top","side":"block/cake_side","inside":"block/cake_inner"},"elements":[{"from":[3,0,1],"to":[15,8,15],"faces":{"down":{"texture":"#bottom","cullface":"down"},"up":{"texture":"#top"},"north":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#inside"},"east":{"texture":"#side"}}}]},"cake_slice2":{"textures":{"particle":"block/cake_side","bottom":"block/cake_bottom","top":"block/cake_top","side":"block/cake_side","inside":"block/cake_inner"},"elements":[{"from":[5,0,1],"to":[15,8,15],"faces":{"down":{"texture":"#bottom","cullface":"down"},"up":{"texture":"#top"},"north":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#inside"},"east":{"texture":"#side"}}}]},"cake_slice3":{"textures":{"particle":"block/cake_side","bottom":"block/cake_bottom","top":"block/cake_top","side":"block/cake_side","inside":"block/cake_inner"},"elements":[{"from":[7,0,1],"to":[15,8,15],"faces":{"down":{"texture":"#bottom","cullface":"down"},"up":{"texture":"#top"},"north":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#inside"},"east":{"texture":"#side"}}}]},"cake_slice4":{"textures":{"particle":"block/cake_side","bottom":"block/cake_bottom","top":"block/cake_top","side":"block/cake_side","inside":"block/cake_inner"},"elements":[{"from":[9,0,1],"to":[15,8,15],"faces":{"down":{"texture":"#bottom","cullface":"down"},"up":{"texture":"#top"},"north":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#inside"},"east":{"texture":"#side"}}}]},"cake_slice5":{"textures":{"particle":"block/cake_side","bottom":"block/cake_bottom","top":"block/cake_top","side":"block/cake_side","inside":"block/cake_inner"},"elements":[{"from":[11,0,1],"to":[15,8,15],"faces":{"down":{"texture":"#bottom","cullface":"down"},"up":{"texture":"#top"},"north":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#inside"},"east":{"texture":"#side"}}}]},"cake_slice6":{"textures":{"particle":"block/cake_side","bottom":"block/cake_bottom","top":"block/cake_top","side":"block/cake_side","inside":"block/cake_inner"},"elements":[{"from":[13,0,1],"to":[15,8,15],"faces":{"down":{"texture":"#bottom","cullface":"down"},"up":{"texture":"#top"},"north":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#inside"},"east":{"texture":"#side"}}}]},"calcite":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/calcite"}},"calibrated_sculk_sensor":{"parent":"block/block","gui_light":"front","display":{"gui":{"rotation":[30,45,0],"translation":[0,0,0],"scale":[0.625,0.625,0.625]},"head":{"rotation":[0,-180,0],"translation":[0,0,0],"scale":[1,1,1]},"thirdperson_lefthand":{"rotation":[75,-45,0],"translation":[0,2.5,0],"scale":[0.375,0.375,0.375]}},"textures":{"amethyst":"block/calibrated_sculk_sensor_amethyst","bottom":"block/sculk_sensor_bottom","side":"block/sculk_sensor_side","calibrated_side":"block/calibrated_sculk_sensor_input_side","tendrils":"block/sculk_sensor_tendril_inactive","top":"block/calibrated_sculk_sensor_top","particle":"block/sculk_sensor_bottom"},"elements":[{"from":[0,0,0],"to":[16,8,16],"faces":{"north":{"uv":[0,8,16,16],"texture":"#side","cullface":"north"},"east":{"uv":[0,8,16,16],"texture":"#side","cullface":"east"},"south":{"uv":[0,8,16,16],"texture":"#calibrated_side","cullface":"south"},"west":{"uv":[0,8,16,16],"texture":"#side","cullface":"west"},"up":{"uv":[0,0,16,16],"texture":"#top"},"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"}}},{"from":[-1,8,3],"to":[7,16,3],"rotation":{"angle":45,"axis":"y","origin":[3,12,3]},"faces":{"north":{"uv":[4,8,12,16],"texture":"#tendrils"},"south":{"uv":[12,8,4,16],"texture":"#tendrils"}}},{"from":[9,8,3],"to":[17,16,3],"rotation":{"angle":-45,"axis":"y","origin":[13,12,3]},"faces":{"north":{"uv":[12,8,4,16],"texture":"#tendrils"},"south":{"uv":[4,8,12,16],"texture":"#tendrils"}}},{"from":[9,8,13],"to":[17,16,13],"rotation":{"angle":45,"axis":"y","origin":[13,12,13]},"faces":{"north":{"uv":[12,8,4,16],"texture":"#tendrils"},"south":{"uv":[4,8,12,16],"texture":"#tendrils"}}},{"from":[-1,8,13],"to":[7,16,13],"rotation":{"angle":-45,"axis":"y","origin":[3,12,13]},"faces":{"north":{"uv":[4,8,12,16],"texture":"#tendrils"},"south":{"uv":[12,8,4,16],"texture":"#tendrils"}}},{"from":[8,8,0],"to":[8,20,16],"rotation":{"angle":45,"axis":"y","origin":[8,9,8],"rescale":true},"shade":false,"faces":{"east":{"uv":[0,4,16,16],"texture":"#amethyst"},"west":{"uv":[0,4,16,16],"texture":"#amethyst"}}},{"from":[0,8,8],"to":[16,20,8],"rotation":{"angle":45,"axis":"y","origin":[8,9,8],"rescale":true},"shade":false,"faces":{"north":{"uv":[0,4,16,16],"texture":"#amethyst"},"south":{"uv":[0,4,16,16],"texture":"#amethyst"}}}]},"calibrated_sculk_sensor_active":{"parent":"block/calibrated_sculk_sensor","textures":{"tendrils":"block/sculk_sensor_tendril_active"}},"calibrated_sculk_sensor_inactive":{"parent":"block/calibrated_sculk_sensor","textures":{"tendrils":"block/sculk_sensor_tendril_inactive"}},"campfire":{"parent":"minecraft:block/template_campfire","textures":{"fire":"minecraft:block/campfire_fire","lit_log":"minecraft:block/campfire_log_lit"}},"campfire_off":{"parent":"block/block","display":{"head":{"rotation":[0,0,0],"translation":[0,10.5,0],"scale":[1,1,1]}},"textures":{"particle":"block/campfire_log","log":"block/campfire_log"},"elements":[{"from":[1,0,0],"to":[5,4,16],"faces":{"north":{"uv":[0,4,4,8],"texture":"#log","cullface":"north"},"east":{"uv":[0,1,16,5],"texture":"#log"},"south":{"uv":[0,4,4,8],"texture":"#log","cullface":"south"},"west":{"uv":[16,0,0,4],"texture":"#log"},"up":{"uv":[0,0,16,4],"rotation":90,"texture":"#log"},"down":{"uv":[0,0,16,4],"rotation":90,"texture":"#log","cullface":"down"}}},{"from":[0,3,11],"to":[16,7,15],"faces":{"north":{"uv":[16,0,0,4],"texture":"#log"},"east":{"uv":[0,4,4,8],"texture":"#log","cullface":"east"},"south":{"uv":[0,0,16,4],"texture":"#log"},"west":{"uv":[0,4,4,8],"texture":"#log","cullface":"west"},"up":{"uv":[0,0,16,4],"rotation":180,"texture":"#log"},"down":{"uv":[0,0,16,4],"texture":"#log"}}},{"from":[11,0,0],"to":[15,4,16],"faces":{"north":{"uv":[0,4,4,8],"texture":"#log","cullface":"north"},"east":{"uv":[0,0,16,4],"texture":"#log"},"south":{"uv":[0,4,4,8],"texture":"#log","cullface":"south"},"west":{"uv":[16,1,0,5],"texture":"#log"},"up":{"uv":[0,0,16,4],"rotation":90,"texture":"#log"},"down":{"uv":[0,0,16,4],"rotation":90,"texture":"#log","cullface":"down"}}},{"from":[0,3,1],"to":[16,7,5],"faces":{"north":{"uv":[0,0,16,4],"texture":"#log"},"east":{"uv":[0,4,4,8],"texture":"#log","cullface":"east"},"south":{"uv":[16,0,0,4],"texture":"#log"},"west":{"uv":[0,4,4,8],"texture":"#log","cullface":"west"},"up":{"uv":[0,0,16,4],"rotation":180,"texture":"#log"},"down":{"uv":[0,0,16,4],"texture":"#log"}}},{"from":[5,0,0],"to":[11,1,16],"faces":{"north":{"uv":[0,15,6,16],"texture":"#log","cullface":"north"},"south":{"uv":[10,15,16,16],"texture":"#log","cullface":"south"},"up":{"uv":[0,8,16,14],"rotation":90,"texture":"#log"},"down":{"uv":[0,8,16,14],"rotation":90,"texture":"#log","cullface":"down"}}}]},"candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/candle","particle":"minecraft:block/candle"}},"candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/candle_lit","particle":"minecraft:block/candle_lit"}},"candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/candle","particle":"minecraft:block/candle"}},"candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/candle_lit","particle":"minecraft:block/candle_lit"}},"candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/candle","particle":"minecraft:block/candle"}},"candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/candle_lit","particle":"minecraft:block/candle_lit"}},"candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/candle","particle":"minecraft:block/candle"}},"candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/candle_lit","particle":"minecraft:block/candle_lit"}},"carpet":{"parent":"block/thin_block","textures":{"particle":"#wool"},"elements":[{"from":[0,0,0],"to":[16,1,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#wool","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#wool"},"north":{"uv":[0,15,16,16],"texture":"#wool","cullface":"north"},"south":{"uv":[0,15,16,16],"texture":"#wool","cullface":"south"},"west":{"uv":[0,15,16,16],"texture":"#wool","cullface":"west"},"east":{"uv":[0,15,16,16],"texture":"#wool","cullface":"east"}}}]},"carrots_stage0":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/carrots_stage0"}},"carrots_stage1":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/carrots_stage1"}},"carrots_stage2":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/carrots_stage2"}},"carrots_stage3":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/carrots_stage3"}},"cartography_table":{"parent":"minecraft:block/cube","textures":{"down":"minecraft:block/dark_oak_planks","east":"minecraft:block/cartography_table_side3","north":"minecraft:block/cartography_table_side3","particle":"minecraft:block/cartography_table_side3","south":"minecraft:block/cartography_table_side1","up":"minecraft:block/cartography_table_top","west":"minecraft:block/cartography_table_side2"}},"carved_pumpkin":{"parent":"minecraft:block/orientable","textures":{"front":"minecraft:block/carved_pumpkin","side":"minecraft:block/pumpkin_side","top":"minecraft:block/pumpkin_top"}},"cauldron":{"ambientocclusion":false,"textures":{"particle":"block/cauldron_side","top":"block/cauldron_top","bottom":"block/cauldron_bottom","side":"block/cauldron_side","inside":"block/cauldron_inner"},"elements":[{"from":[0,3,0],"to":[2,16,16],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[2,3,2],"to":[14,4,14],"faces":{"up":{"texture":"#inside"},"down":{"texture":"#inside"}}},{"from":[14,3,0],"to":[16,16,16],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[2,3,0],"to":[14,16,2],"faces":{"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[2,3,14],"to":[14,16,16],"faces":{"north":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[0,0,0],"to":[4,3,2],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,2],"to":[2,3,4],"faces":{"east":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[12,0,0],"to":[16,3,2],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,2],"to":[16,3,4],"faces":{"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,14],"to":[4,3,16],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,12],"to":[2,3,14],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[12,0,14],"to":[16,3,16],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,12],"to":[16,3,14],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side","cullface":"east"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}}]},"cave_vines":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/cave_vines"}},"cave_vines_lit":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/cave_vines_lit"}},"cave_vines_plant":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/cave_vines_plant"}},"cave_vines_plant_lit":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/cave_vines_plant_lit"}},"chain_command_block":{"parent":"minecraft:block/template_command_block","textures":{"back":"minecraft:block/chain_command_block_back","front":"minecraft:block/chain_command_block_front","side":"minecraft:block/chain_command_block_side"}},"chain_command_block_conditional":{"parent":"minecraft:block/template_command_block","textures":{"back":"minecraft:block/chain_command_block_back","front":"minecraft:block/chain_command_block_front","side":"minecraft:block/chain_command_block_conditional"}},"cherry_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/cherry_planks"}},"cherry_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/cherry_planks"}},"cherry_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/cherry_planks"}},"cherry_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/cherry_door_bottom","top":"minecraft:block/cherry_door_top"}},"cherry_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/cherry_door_bottom","top":"minecraft:block/cherry_door_top"}},"cherry_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/cherry_door_bottom","top":"minecraft:block/cherry_door_top"}},"cherry_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/cherry_door_bottom","top":"minecraft:block/cherry_door_top"}},"cherry_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/cherry_door_bottom","top":"minecraft:block/cherry_door_top"}},"cherry_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/cherry_door_bottom","top":"minecraft:block/cherry_door_top"}},"cherry_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/cherry_door_bottom","top":"minecraft:block/cherry_door_top"}},"cherry_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/cherry_door_bottom","top":"minecraft:block/cherry_door_top"}},"cherry_fence_gate":{"parent":"minecraft:block/template_fence_gate","textures":{"texture":"minecraft:block/cherry_planks"}},"cherry_fence_gate_open":{"parent":"minecraft:block/template_fence_gate_open","textures":{"texture":"minecraft:block/cherry_planks"}},"cherry_fence_gate_wall":{"parent":"minecraft:block/template_fence_gate_wall","textures":{"texture":"minecraft:block/cherry_planks"}},"cherry_fence_gate_wall_open":{"parent":"minecraft:block/template_fence_gate_wall_open","textures":{"texture":"minecraft:block/cherry_planks"}},"cherry_fence_inventory":{"parent":"minecraft:block/fence_inventory","textures":{"texture":"minecraft:block/cherry_planks"}},"cherry_fence_post":{"parent":"minecraft:block/fence_post","textures":{"texture":"minecraft:block/cherry_planks"}},"cherry_fence_side":{"parent":"minecraft:block/fence_side","textures":{"texture":"minecraft:block/cherry_planks"}},"cherry_hanging_sign":{"textures":{"particle":"minecraft:block/stripped_cherry_log"}},"cherry_leaves":{"parent":"minecraft:block/leaves","textures":{"all":"minecraft:block/cherry_leaves"}},"cherry_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/cherry_log_top","side":"minecraft:block/cherry_log"}},"cherry_log_x":{"parent":"minecraft:block/cube_column_uv_locked_x","textures":{"end":"minecraft:block/cherry_log_top","side":"minecraft:block/cherry_log"}},"cherry_log_y":{"parent":"minecraft:block/cube_column_uv_locked_y","textures":{"end":"minecraft:block/cherry_log_top","side":"minecraft:block/cherry_log"}},"cherry_log_z":{"parent":"minecraft:block/cube_column_uv_locked_z","textures":{"end":"minecraft:block/cherry_log_top","side":"minecraft:block/cherry_log"}},"cherry_planks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cherry_planks"}},"cherry_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/cherry_planks"}},"cherry_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/cherry_planks"}},"cherry_sapling":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/cherry_sapling"}},"cherry_shelf":{"parent":"minecraft:block/template_shelf_body","textures":{"all":"minecraft:block/cherry_shelf","particle":"minecraft:block/stripped_cherry_log"}},"cherry_shelf_center":{"parent":"minecraft:block/template_shelf_center","textures":{"all":"minecraft:block/cherry_shelf","particle":"minecraft:block/stripped_cherry_log"}},"cherry_shelf_inventory":{"parent":"minecraft:block/template_shelf_inventory","textures":{"all":"minecraft:block/cherry_shelf","particle":"minecraft:block/stripped_cherry_log"}},"cherry_shelf_left":{"parent":"minecraft:block/template_shelf_left","textures":{"all":"minecraft:block/cherry_shelf","particle":"minecraft:block/stripped_cherry_log"}},"cherry_shelf_right":{"parent":"minecraft:block/template_shelf_right","textures":{"all":"minecraft:block/cherry_shelf","particle":"minecraft:block/stripped_cherry_log"}},"cherry_shelf_unconnected":{"parent":"minecraft:block/template_shelf_unconnected","textures":{"all":"minecraft:block/cherry_shelf","particle":"minecraft:block/stripped_cherry_log"}},"cherry_shelf_unpowered":{"parent":"minecraft:block/template_shelf_unpowered","textures":{"all":"minecraft:block/cherry_shelf","particle":"minecraft:block/stripped_cherry_log"}},"cherry_sign":{"textures":{"particle":"minecraft:block/cherry_planks"}},"cherry_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/cherry_planks","side":"minecraft:block/cherry_planks","top":"minecraft:block/cherry_planks"}},"cherry_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/cherry_planks","side":"minecraft:block/cherry_planks","top":"minecraft:block/cherry_planks"}},"cherry_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/cherry_planks","side":"minecraft:block/cherry_planks","top":"minecraft:block/cherry_planks"}},"cherry_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/cherry_planks","side":"minecraft:block/cherry_planks","top":"minecraft:block/cherry_planks"}},"cherry_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/cherry_planks","side":"minecraft:block/cherry_planks","top":"minecraft:block/cherry_planks"}},"cherry_trapdoor_bottom":{"parent":"minecraft:block/template_orientable_trapdoor_bottom","textures":{"texture":"minecraft:block/cherry_trapdoor"}},"cherry_trapdoor_open":{"parent":"minecraft:block/template_orientable_trapdoor_open","textures":{"texture":"minecraft:block/cherry_trapdoor"}},"cherry_trapdoor_top":{"parent":"minecraft:block/template_orientable_trapdoor_top","textures":{"texture":"minecraft:block/cherry_trapdoor"}},"cherry_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/cherry_log","side":"minecraft:block/cherry_log"}},"chest":{"textures":{"particle":"minecraft:block/oak_planks"}},"chipped_anvil":{"parent":"minecraft:block/template_anvil","textures":{"top":"minecraft:block/chipped_anvil_top"}},"chiseled_bookshelf":{"parent":"block/block","textures":{"top":"block/chiseled_bookshelf_top","side":"block/chiseled_bookshelf_side","particle":"#top"},"elements":[{"name":"chiseled_bookshelf_body","from":[0,0,0],"to":[16,16,16],"faces":{"east":{"uv":[0,0,16,16],"texture":"#side","cullface":"east"},"south":{"uv":[0,0,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#side","cullface":"west"},"up":{"uv":[0,0,16,16],"texture":"#top","cullface":"up"},"down":{"uv":[0,0,16,16],"texture":"#top","cullface":"down"}}}]},"chiseled_bookshelf_empty_slot_bottom_left":{"parent":"minecraft:block/template_chiseled_bookshelf_slot_bottom_left","textures":{"texture":"minecraft:block/chiseled_bookshelf_empty"}},"chiseled_bookshelf_empty_slot_bottom_mid":{"parent":"minecraft:block/template_chiseled_bookshelf_slot_bottom_mid","textures":{"texture":"minecraft:block/chiseled_bookshelf_empty"}},"chiseled_bookshelf_empty_slot_bottom_right":{"parent":"minecraft:block/template_chiseled_bookshelf_slot_bottom_right","textures":{"texture":"minecraft:block/chiseled_bookshelf_empty"}},"chiseled_bookshelf_empty_slot_top_left":{"parent":"minecraft:block/template_chiseled_bookshelf_slot_top_left","textures":{"texture":"minecraft:block/chiseled_bookshelf_empty"}},"chiseled_bookshelf_empty_slot_top_mid":{"parent":"minecraft:block/template_chiseled_bookshelf_slot_top_mid","textures":{"texture":"minecraft:block/chiseled_bookshelf_empty"}},"chiseled_bookshelf_empty_slot_top_right":{"parent":"minecraft:block/template_chiseled_bookshelf_slot_top_right","textures":{"texture":"minecraft:block/chiseled_bookshelf_empty"}},"chiseled_bookshelf_inventory":{"parent":"block/block","textures":{"top":"block/chiseled_bookshelf_top","side":"block/chiseled_bookshelf_side","front":"block/chiseled_bookshelf_empty","particle":"#top"},"elements":[{"name":"chiseled_bookshelf_body","from":[0,0,0],"to":[16,16,16],"faces":{"north":{"uv":[0,0,16,16],"texture":"#front"},"east":{"uv":[0,0,16,16],"texture":"#side"},"south":{"uv":[0,0,16,16],"texture":"#side"},"west":{"uv":[0,0,16,16],"texture":"#side"},"up":{"uv":[0,0,16,16],"texture":"#top"},"down":{"uv":[0,0,16,16],"texture":"#top"}}}]},"chiseled_bookshelf_occupied_slot_bottom_left":{"parent":"minecraft:block/template_chiseled_bookshelf_slot_bottom_left","textures":{"texture":"minecraft:block/chiseled_bookshelf_occupied"}},"chiseled_bookshelf_occupied_slot_bottom_mid":{"parent":"minecraft:block/template_chiseled_bookshelf_slot_bottom_mid","textures":{"texture":"minecraft:block/chiseled_bookshelf_occupied"}},"chiseled_bookshelf_occupied_slot_bottom_right":{"parent":"minecraft:block/template_chiseled_bookshelf_slot_bottom_right","textures":{"texture":"minecraft:block/chiseled_bookshelf_occupied"}},"chiseled_bookshelf_occupied_slot_top_left":{"parent":"minecraft:block/template_chiseled_bookshelf_slot_top_left","textures":{"texture":"minecraft:block/chiseled_bookshelf_occupied"}},"chiseled_bookshelf_occupied_slot_top_mid":{"parent":"minecraft:block/template_chiseled_bookshelf_slot_top_mid","textures":{"texture":"minecraft:block/chiseled_bookshelf_occupied"}},"chiseled_bookshelf_occupied_slot_top_right":{"parent":"minecraft:block/template_chiseled_bookshelf_slot_top_right","textures":{"texture":"minecraft:block/chiseled_bookshelf_occupied"}},"chiseled_copper":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/chiseled_copper"}},"chiseled_deepslate":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/chiseled_deepslate"}},"chiseled_nether_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/chiseled_nether_bricks"}},"chiseled_polished_blackstone":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/chiseled_polished_blackstone"}},"chiseled_quartz_block":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/chiseled_quartz_block_top","side":"minecraft:block/chiseled_quartz_block"}},"chiseled_red_sandstone":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/red_sandstone_top","side":"minecraft:block/chiseled_red_sandstone"}},"chiseled_resin_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/chiseled_resin_bricks"}},"chiseled_sandstone":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/sandstone_top","side":"minecraft:block/chiseled_sandstone"}},"chiseled_stone_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/chiseled_stone_bricks"}},"chiseled_tuff":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/chiseled_tuff_top","side":"minecraft:block/chiseled_tuff"}},"chiseled_tuff_bricks":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/chiseled_tuff_bricks_top","side":"minecraft:block/chiseled_tuff_bricks"}},"chorus_flower":{"parent":"minecraft:block/template_chorus_flower","textures":{"texture":"minecraft:block/chorus_flower"}},"chorus_flower_dead":{"parent":"minecraft:block/template_chorus_flower","textures":{"texture":"minecraft:block/chorus_flower_dead"}},"chorus_plant":{"parent":"block/block","textures":{"texture":"block/chorus_plant","inside":"block/chorus_plant","particle":"block/chorus_plant"},"elements":[{"from":[2,14,2],"to":[14,16,14],"faces":{"up":{"uv":[2,2,14,14],"texture":"#texture","cullface":"up"},"north":{"uv":[2,0,14,2],"texture":"#texture","cullface":"up"},"south":{"uv":[2,0,14,2],"texture":"#texture","cullface":"up"},"west":{"uv":[2,0,14,2],"texture":"#texture","cullface":"up"},"east":{"uv":[2,0,14,2],"texture":"#texture","cullface":"up"}}},{"from":[0,2,2],"to":[2,14,14],"faces":{"down":{"uv":[16,14,14,2],"texture":"#texture","cullface":"west"},"up":{"uv":[0,2,2,14],"texture":"#texture","cullface":"west"},"north":{"uv":[14,2,16,14],"texture":"#texture","cullface":"west"},"south":{"uv":[0,2,2,14],"texture":"#texture","cullface":"west"},"west":{"uv":[2,2,14,14],"texture":"#texture","cullface":"west"}}},{"from":[2,2,0],"to":[14,14,2],"faces":{"down":{"uv":[14,2,2,0],"texture":"#texture","cullface":"north"},"up":{"uv":[2,0,14,2],"texture":"#texture","cullface":"north"},"north":{"uv":[2,2,14,14],"texture":"#texture","cullface":"north"},"west":{"uv":[0,2,2,14],"texture":"#texture","cullface":"north"},"east":{"uv":[14,2,16,14],"texture":"#texture","cullface":"north"}}},{"from":[2,2,14],"to":[14,14,16],"faces":{"down":{"uv":[14,16,2,14],"texture":"#texture","cullface":"south"},"up":{"uv":[2,14,14,16],"texture":"#texture","cullface":"south"},"south":{"uv":[2,2,14,14],"texture":"#texture","cullface":"south"},"west":{"uv":[14,2,16,14],"texture":"#texture","cullface":"south"},"east":{"uv":[0,2,2,14],"texture":"#texture","cullface":"south"}}},{"from":[14,2,2],"to":[16,14,14],"faces":{"down":{"uv":[2,14,0,2],"texture":"#texture","cullface":"east"},"up":{"uv":[14,2,16,14],"texture":"#texture","cullface":"east"},"north":{"uv":[0,2,2,14],"texture":"#texture","cullface":"east"},"south":{"uv":[14,2,16,14],"texture":"#texture","cullface":"east"},"east":{"uv":[2,2,14,14],"texture":"#texture","cullface":"east"}}},{"from":[2,0,2],"to":[14,2,14],"faces":{"down":{"uv":[14,14,2,2],"texture":"#texture","cullface":"down"},"north":{"uv":[2,14,14,16],"texture":"#texture","cullface":"down"},"south":{"uv":[2,14,14,16],"texture":"#texture","cullface":"down"},"west":{"uv":[2,14,14,16],"texture":"#texture","cullface":"down"},"east":{"uv":[2,14,14,16],"texture":"#texture","cullface":"down"}}},{"from":[2,2,2],"to":[14,14,14],"faces":{"down":{"uv":[14,14,2,2],"texture":"#inside"},"up":{"uv":[2,2,14,14],"texture":"#inside"},"north":{"uv":[2,2,14,14],"texture":"#inside"},"south":{"uv":[2,2,14,14],"texture":"#inside"},"west":{"uv":[2,2,14,14],"texture":"#inside"},"east":{"uv":[2,2,14,14],"texture":"#inside"}}}]},"chorus_plant_noside":{"ambientocclusion":false,"textures":{"texture":"block/chorus_plant","inside":"block/chorus_plant","particle":"block/chorus_plant"},"elements":[{"from":[4,4,4],"to":[12,12,12],"faces":{"north":{"texture":"#inside"}}}]},"chorus_plant_noside1":{"ambientocclusion":false,"textures":{"texture":"block/chorus_plant","inside":"block/chorus_plant","particle":"block/chorus_plant"},"elements":[{"from":[4,4,4],"to":[12,12,12],"faces":{"north":{"texture":"#inside"}}},{"from":[4,4,3],"to":[12,12,4],"faces":{"down":{"texture":"#texture"},"up":{"texture":"#texture"},"north":{"texture":"#texture"},"west":{"texture":"#texture"},"east":{"texture":"#texture"}}}]},"chorus_plant_noside2":{"ambientocclusion":false,"textures":{"texture":"block/chorus_plant","inside":"block/chorus_plant","particle":"block/chorus_plant"},"elements":[{"from":[4,4,4],"to":[12,12,12],"faces":{"north":{"texture":"#inside"}}},{"from":[5,5,2],"to":[11,11,4],"faces":{"down":{"texture":"#texture"},"up":{"texture":"#texture"},"north":{"texture":"#texture"},"west":{"texture":"#texture"},"east":{"texture":"#texture"}}}]},"chorus_plant_noside3":{"ambientocclusion":false,"textures":{"texture":"block/chorus_plant","inside":"block/chorus_plant","particle":"block/chorus_plant"},"elements":[{"from":[4,4,4],"to":[12,12,12],"faces":{"north":{"texture":"#inside"}}},{"from":[4,4,3],"to":[12,12,4],"faces":{"down":{"texture":"#texture"},"up":{"texture":"#texture"},"north":{"texture":"#texture"},"west":{"texture":"#texture"},"east":{"texture":"#texture"}}}]},"chorus_plant_side":{"ambientocclusion":false,"textures":{"texture":"block/chorus_plant","inside":"block/chorus_plant","particle":"block/chorus_plant"},"elements":[{"from":[4,4,0],"to":[12,12,4],"faces":{"down":{"texture":"#texture"},"up":{"texture":"#texture"},"north":{"texture":"#texture","cullface":"north"},"west":{"texture":"#texture"},"east":{"texture":"#texture"}}}]},"clay":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/clay"}},"closed_eyeblossom":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/closed_eyeblossom"}},"coal_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/coal_block"}},"coal_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/coal_ore"}},"coarse_dirt":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/coarse_dirt"}},"cobbled_deepslate":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cobbled_deepslate"}},"cobbled_deepslate_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/cobbled_deepslate","side":"minecraft:block/cobbled_deepslate","top":"minecraft:block/cobbled_deepslate"}},"cobbled_deepslate_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/cobbled_deepslate","side":"minecraft:block/cobbled_deepslate","top":"minecraft:block/cobbled_deepslate"}},"cobbled_deepslate_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/cobbled_deepslate","side":"minecraft:block/cobbled_deepslate","top":"minecraft:block/cobbled_deepslate"}},"cobbled_deepslate_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/cobbled_deepslate","side":"minecraft:block/cobbled_deepslate","top":"minecraft:block/cobbled_deepslate"}},"cobbled_deepslate_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/cobbled_deepslate","side":"minecraft:block/cobbled_deepslate","top":"minecraft:block/cobbled_deepslate"}},"cobbled_deepslate_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/cobbled_deepslate"}},"cobbled_deepslate_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/cobbled_deepslate"}},"cobbled_deepslate_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/cobbled_deepslate"}},"cobbled_deepslate_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/cobbled_deepslate"}},"cobblestone":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cobblestone"}},"cobblestone_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/cobblestone","side":"minecraft:block/cobblestone","top":"minecraft:block/cobblestone"}},"cobblestone_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/cobblestone","side":"minecraft:block/cobblestone","top":"minecraft:block/cobblestone"}},"cobblestone_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/cobblestone","side":"minecraft:block/cobblestone","top":"minecraft:block/cobblestone"}},"cobblestone_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/cobblestone","side":"minecraft:block/cobblestone","top":"minecraft:block/cobblestone"}},"cobblestone_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/cobblestone","side":"minecraft:block/cobblestone","top":"minecraft:block/cobblestone"}},"cobblestone_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/cobblestone"}},"cobblestone_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/cobblestone"}},"cobblestone_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/cobblestone"}},"cobblestone_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/cobblestone"}},"cobweb":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/cobweb"}},"cocoa_stage0":{"ambientocclusion":false,"textures":{"particle":"block/cocoa_stage0","cocoa":"block/cocoa_stage0"},"elements":[{"from":[6,7,11],"to":[10,12,15],"faces":{"down":{"uv":[0,0,4,4],"texture":"#cocoa"},"up":{"uv":[0,0,4,4],"texture":"#cocoa"},"north":{"uv":[11,4,15,9],"texture":"#cocoa"},"south":{"uv":[11,4,15,9],"texture":"#cocoa"},"west":{"uv":[11,4,15,9],"texture":"#cocoa"},"east":{"uv":[11,4,15,9],"texture":"#cocoa"}}},{"from":[8,12,12],"to":[8,16,16],"faces":{"west":{"uv":[12,0,16,4],"texture":"#cocoa"},"east":{"uv":[16,0,12,4],"texture":"#cocoa"}}}]},"cocoa_stage1":{"ambientocclusion":false,"textures":{"particle":"block/cocoa_stage1","cocoa":"block/cocoa_stage1"},"elements":[{"from":[5,5,9],"to":[11,12,15],"faces":{"down":{"uv":[0,0,6,6],"texture":"#cocoa"},"up":{"uv":[0,0,6,6],"texture":"#cocoa"},"north":{"uv":[9,4,15,11],"texture":"#cocoa"},"south":{"uv":[9,4,15,11],"texture":"#cocoa"},"west":{"uv":[9,4,15,11],"texture":"#cocoa"},"east":{"uv":[9,4,15,11],"texture":"#cocoa"}}},{"from":[8,12,12],"to":[8,16,16],"faces":{"west":{"uv":[12,0,16,4],"texture":"#cocoa"},"east":{"uv":[16,0,12,4],"texture":"#cocoa"}}}]},"cocoa_stage2":{"ambientocclusion":false,"textures":{"particle":"block/cocoa_stage2","cocoa":"block/cocoa_stage2"},"elements":[{"from":[4,3,7],"to":[12,12,15],"faces":{"up":{"uv":[0,0,8,8],"texture":"#cocoa"},"down":{"uv":[0,0,8,8],"texture":"#cocoa"},"north":{"uv":[8,4,16,13],"texture":"#cocoa"},"south":{"uv":[8,4,16,13],"texture":"#cocoa"},"west":{"uv":[8,4,16,13],"texture":"#cocoa"},"east":{"uv":[8,4,16,13],"texture":"#cocoa"}}},{"from":[8,12,12],"to":[8,16,16],"faces":{"east":{"uv":[16,0,12,4],"texture":"#cocoa"},"west":{"uv":[12,0,16,4],"texture":"#cocoa"}}}]},"command_block":{"parent":"minecraft:block/template_command_block","textures":{"back":"minecraft:block/command_block_back","front":"minecraft:block/command_block_front","side":"minecraft:block/command_block_side"}},"command_block_conditional":{"parent":"minecraft:block/template_command_block","textures":{"back":"minecraft:block/command_block_back","front":"minecraft:block/command_block_front","side":"minecraft:block/command_block_conditional"}},"comparator":{"ambientocclusion":false,"textures":{"particle":"block/comparator","slab":"block/smooth_stone","top":"block/comparator","unlit":"block/redstone_torch_off","lit":"block/redstone_torch"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[4,2,11],"to":[6,7,13],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}},{"from":[10,2,11],"to":[12,7,13],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}},{"from":[7,2,2],"to":[9,5,4],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,9],"texture":"#unlit"},"south":{"uv":[7,6,9,9],"texture":"#unlit"},"west":{"uv":[7,6,9,9],"texture":"#unlit"},"east":{"uv":[7,6,9,9],"texture":"#unlit"}}}]},"comparator_on":{"ambientocclusion":false,"textures":{"particle":"block/comparator_on","slab":"block/smooth_stone","top":"block/comparator_on","unlit":"block/redstone_torch_off","lit":"block/redstone_torch"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[4,2,11],"to":[6,7,13],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[7,2,2],"to":[9,5,4],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,9],"texture":"#unlit"},"south":{"uv":[7,6,9,9],"texture":"#unlit"},"west":{"uv":[7,6,9,9],"texture":"#unlit"},"east":{"uv":[7,6,9,9],"texture":"#unlit"}}},{"from":[10,2,11],"to":[12,7,13],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[3.5,1.5,10.5],"to":[6.5,4.5,13.5],"shade":false,"faces":{"up":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[3.5,7.5,10.5],"to":[6.5,10.5,13.5],"shade":false,"faces":{"down":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[3.5,4.5,7.5],"to":[6.5,7.5,10.5],"shade":false,"faces":{"south":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[3.5,4.5,13.5],"to":[6.5,7.5,16.5],"shade":false,"faces":{"north":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[0.5,4.5,10.5],"to":[3.5,7.5,13.5],"shade":false,"faces":{"east":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[6.5,4.5,10.5],"to":[9.5,7.5,13.5],"shade":false,"faces":{"west":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[9.5,1.5,10.5],"to":[12.5,4.5,13.5],"shade":false,"faces":{"up":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[9.5,7.5,10.5],"to":[12.5,10.5,13.5],"shade":false,"faces":{"down":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[9.5,4.5,7.5],"to":[12.5,7.5,10.5],"shade":false,"faces":{"south":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[9.5,4.5,13.5],"to":[12.5,7.5,16.5],"shade":false,"faces":{"north":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[6.5,4.5,10.5],"to":[9.5,7.5,13.5],"shade":false,"faces":{"east":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[12.5,4.5,10.5],"to":[15.5,7.5,13.5],"shade":false,"faces":{"west":{"uv":[6,5,7,6],"texture":"#lit"}}}]},"comparator_on_subtract":{"ambientocclusion":false,"textures":{"particle":"block/comparator_on","slab":"block/smooth_stone","top":"block/comparator_on","unlit":"block/redstone_torch_off","lit":"block/redstone_torch"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[7,2,2],"to":[9,5,4],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,9],"texture":"#lit"},"south":{"uv":[7,6,9,9],"texture":"#lit"},"west":{"uv":[7,6,9,9],"texture":"#lit"},"east":{"uv":[7,6,9,9],"texture":"#lit"}}},{"from":[4,2,11],"to":[6,7,13],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[10,2,11],"to":[12,7,13],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[3.5,1.5,10.5],"to":[6.5,4.5,13.5],"shade":false,"faces":{"up":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[3.5,7.5,10.5],"to":[6.5,10.5,13.5],"shade":false,"faces":{"down":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[3.5,4.5,7.5],"to":[6.5,7.5,10.5],"shade":false,"faces":{"south":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[3.5,4.5,13.5],"to":[6.5,7.5,16.5],"shade":false,"faces":{"north":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[0.5,4.5,10.5],"to":[3.5,7.5,13.5],"shade":false,"faces":{"east":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[6.5,4.5,10.5],"to":[9.5,7.5,13.5],"shade":false,"faces":{"west":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[9.5,1.5,10.5],"to":[12.5,4.5,13.5],"shade":false,"faces":{"up":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[9.5,7.5,10.5],"to":[12.5,10.5,13.5],"shade":false,"faces":{"down":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[9.5,4.5,7.5],"to":[12.5,7.5,10.5],"shade":false,"faces":{"south":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[9.5,4.5,13.5],"to":[12.5,7.5,16.5],"shade":false,"faces":{"north":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[6.5,4.5,10.5],"to":[9.5,7.5,13.5],"shade":false,"faces":{"east":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[12.5,4.5,10.5],"to":[15.5,7.5,13.5],"shade":false,"faces":{"west":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[6.5,-0.5,1.5],"to":[9.5,2.5,4.5],"shade":false,"faces":{"up":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[6.5,5.5,1.5],"to":[9.5,8.5,4.5],"shade":false,"faces":{"down":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[6.5,2.5,-1.5],"to":[9.5,5.5,1.5],"shade":false,"faces":{"south":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[6.5,2.5,4.5],"to":[9.5,5.5,7.5],"shade":false,"faces":{"north":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[3.5,2.5,1.5],"to":[6.5,5.5,4.5],"shade":false,"faces":{"east":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[9.5,2.5,1.5],"to":[12.5,5.5,4.5],"shade":false,"faces":{"west":{"uv":[6,5,7,6],"texture":"#lit"}}}]},"comparator_subtract":{"ambientocclusion":false,"textures":{"particle":"block/comparator","slab":"block/smooth_stone","top":"block/comparator","unlit":"block/redstone_torch_off","lit":"block/redstone_torch"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[4,2,11],"to":[6,7,13],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}},{"from":[10,2,11],"to":[12,7,13],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}},{"from":[7,2,2],"to":[9,5,4],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,9],"texture":"#lit"},"south":{"uv":[7,6,9,9],"texture":"#lit"},"west":{"uv":[7,6,9,9],"texture":"#lit"},"east":{"uv":[7,6,9,9],"texture":"#lit"}}},{"from":[6.5,-0.5,1.5],"to":[9.5,2.5,4.5],"shade":false,"faces":{"up":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[6.5,5.5,1.5],"to":[9.5,8.5,4.5],"shade":false,"faces":{"down":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[6.5,2.5,-1.5],"to":[9.5,5.5,1.5],"shade":false,"faces":{"south":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[6.5,2.5,4.5],"to":[9.5,5.5,7.5],"shade":false,"faces":{"north":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[3.5,2.5,1.5],"to":[6.5,5.5,4.5],"shade":false,"faces":{"east":{"uv":[6,5,7,6],"texture":"#lit"}}},{"from":[9.5,2.5,1.5],"to":[12.5,5.5,4.5],"shade":false,"faces":{"west":{"uv":[6,5,7,6],"texture":"#lit"}}}]},"composter":{"parent":"block/block","textures":{"particle":"block/composter_side","top":"block/composter_top","bottom":"block/composter_bottom","side":"block/composter_side","inside":"block/composter_bottom"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"up":{"texture":"#inside"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,0],"to":[2,16,16],"faces":{"up":{"texture":"#top","cullface":"up"},"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"east":{"texture":"#side"}}},{"from":[14,0,0],"to":[16,16,16],"faces":{"up":{"texture":"#top","cullface":"up"},"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side"},"east":{"texture":"#side","cullface":"east"}}},{"from":[2,0,0],"to":[14,16,2],"faces":{"up":{"texture":"#top","cullface":"up"},"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side"}}},{"from":[2,0,14],"to":[14,16,16],"faces":{"up":{"texture":"#top","cullface":"up"},"north":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"}}}]},"composter_contents1":{"textures":{"particle":"block/composter_compost","inside":"block/composter_compost"},"elements":[{"from":[2,0,2],"to":[14,3,14],"faces":{"up":{"texture":"#inside"}}}]},"composter_contents2":{"textures":{"particle":"block/composter_compost","inside":"block/composter_compost"},"elements":[{"from":[2,0,2],"to":[14,5,14],"faces":{"up":{"texture":"#inside"}}}]},"composter_contents3":{"textures":{"particle":"block/composter_compost","inside":"block/composter_compost"},"elements":[{"from":[2,0,2],"to":[14,7,14],"faces":{"up":{"texture":"#inside"}}}]},"composter_contents4":{"textures":{"particle":"block/composter_compost","inside":"block/composter_compost"},"elements":[{"from":[2,0,2],"to":[14,9,14],"faces":{"up":{"texture":"#inside"}}}]},"composter_contents5":{"textures":{"particle":"block/composter_compost","inside":"block/composter_compost"},"elements":[{"from":[2,0,2],"to":[14,11,14],"faces":{"up":{"texture":"#inside"}}}]},"composter_contents6":{"textures":{"particle":"block/composter_compost","inside":"block/composter_compost"},"elements":[{"from":[2,0,2],"to":[14,13,14],"faces":{"up":{"texture":"#inside"}}}]},"composter_contents7":{"textures":{"particle":"block/composter_compost","inside":"block/composter_compost"},"elements":[{"from":[2,0,2],"to":[14,15,14],"faces":{"up":{"texture":"#inside"}}}]},"composter_contents_ready":{"textures":{"particle":"block/composter_compost","inside":"block/composter_ready"},"elements":[{"from":[2,0,2],"to":[14,15,14],"faces":{"up":{"texture":"#inside"}}}]},"conduit":{"textures":{"particle":"minecraft:block/conduit"}},"copper_bars_cap":{"parent":"minecraft:block/template_bars_cap","textures":{"bars":"minecraft:block/copper_bars","edge":"minecraft:block/copper_bars"}},"copper_bars_cap_alt":{"parent":"minecraft:block/template_bars_cap_alt","textures":{"bars":"minecraft:block/copper_bars","edge":"minecraft:block/copper_bars"}},"copper_bars_post":{"parent":"minecraft:block/template_bars_post","textures":{"bars":"minecraft:block/copper_bars","edge":"minecraft:block/copper_bars"}},"copper_bars_post_ends":{"parent":"minecraft:block/template_bars_post_ends","textures":{"bars":"minecraft:block/copper_bars","edge":"minecraft:block/copper_bars"}},"copper_bars_side":{"parent":"minecraft:block/template_bars_side","textures":{"bars":"minecraft:block/copper_bars","edge":"minecraft:block/copper_bars"}},"copper_bars_side_alt":{"parent":"minecraft:block/template_bars_side_alt","textures":{"bars":"minecraft:block/copper_bars","edge":"minecraft:block/copper_bars"}},"copper_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/copper_block"}},"copper_bulb":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/copper_bulb"}},"copper_bulb_lit":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/copper_bulb_lit"}},"copper_bulb_lit_powered":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/copper_bulb_lit_powered"}},"copper_bulb_powered":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/copper_bulb_powered"}},"copper_chain":{"parent":"minecraft:block/template_chain","textures":{"texture":"minecraft:block/copper_chain"}},"copper_chest":{"textures":{"particle":"minecraft:block/copper_block"}},"copper_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/copper_door_bottom","top":"minecraft:block/copper_door_top"}},"copper_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/copper_door_bottom","top":"minecraft:block/copper_door_top"}},"copper_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/copper_door_bottom","top":"minecraft:block/copper_door_top"}},"copper_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/copper_door_bottom","top":"minecraft:block/copper_door_top"}},"copper_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/copper_door_bottom","top":"minecraft:block/copper_door_top"}},"copper_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/copper_door_bottom","top":"minecraft:block/copper_door_top"}},"copper_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/copper_door_bottom","top":"minecraft:block/copper_door_top"}},"copper_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/copper_door_bottom","top":"minecraft:block/copper_door_top"}},"copper_golem_statue":{"textures":{"particle":"minecraft:block/copper_block"}},"copper_grate":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/copper_grate"}},"copper_lantern":{"parent":"minecraft:block/template_lantern","textures":{"lantern":"minecraft:block/copper_lantern"}},"copper_lantern_hanging":{"parent":"minecraft:block/template_hanging_lantern","textures":{"lantern":"minecraft:block/copper_lantern"}},"copper_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/copper_ore"}},"copper_torch":{"parent":"minecraft:block/template_torch","textures":{"torch":"minecraft:block/copper_torch"}},"copper_trapdoor_bottom":{"parent":"minecraft:block/template_trapdoor_bottom","textures":{"texture":"minecraft:block/copper_trapdoor"}},"copper_trapdoor_open":{"parent":"minecraft:block/template_trapdoor_open","textures":{"texture":"minecraft:block/copper_trapdoor"}},"copper_trapdoor_top":{"parent":"minecraft:block/template_trapdoor_top","textures":{"texture":"minecraft:block/copper_trapdoor"}},"copper_wall_torch":{"parent":"minecraft:block/template_torch_wall","textures":{"torch":"minecraft:block/copper_torch"}},"coral_fan":{"ambientocclusion":false,"textures":{"particle":"#fan"},"elements":[{"from":[8,0,0],"to":[24,0,16],"rotation":{"origin":[8,0,0],"axis":"z","angle":22.5,"rescale":false},"shade":false,"faces":{"up":{"uv":[0,0,16,16],"texture":"#fan","rotation":90},"down":{"uv":[0,16,16,0],"texture":"#fan","rotation":270}}},{"from":[-8,0,0],"to":[8,0,16],"rotation":{"origin":[8,0,0],"axis":"z","angle":-22.5,"rescale":false},"shade":false,"faces":{"up":{"uv":[0,0,16,16],"texture":"#fan","rotation":270},"down":{"uv":[0,16,16,0],"texture":"#fan","rotation":90}}},{"from":[0,0,8],"to":[16,0,24],"rotation":{"origin":[0,0,8],"axis":"x","angle":-22.5,"rescale":false},"shade":false,"faces":{"up":{"uv":[16,16,0,0],"texture":"#fan"},"down":{"uv":[16,0,0,16],"texture":"#fan"}}},{"from":[0,0,-8],"to":[16,0,8],"rotation":{"origin":[0,0,8],"axis":"x","angle":22.5,"rescale":false},"shade":false,"faces":{"up":{"uv":[0,0,16,16],"texture":"#fan"},"down":{"uv":[0,16,16,0],"texture":"#fan"}}}]},"coral_wall_fan":{"ambientocclusion":false,"textures":{"particle":"#fan"},"elements":[{"from":[0,8,0],"to":[16,8,16],"rotation":{"origin":[8,8,14],"axis":"x","angle":22.5,"rescale":true},"shade":false,"faces":{"up":{"uv":[0,0,16,16],"texture":"#fan"},"down":{"uv":[16,16,0,0],"texture":"#fan"}}},{"from":[0,8,0],"to":[16,8,16],"rotation":{"origin":[8,8,14],"axis":"x","angle":-22.5,"rescale":true},"shade":false,"faces":{"up":{"uv":[0,0,16,16],"texture":"#fan"},"down":{"uv":[16,16,0,0],"texture":"#fan"}}}]},"cornflower":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/cornflower"}},"cracked_deepslate_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cracked_deepslate_bricks"}},"cracked_deepslate_tiles":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cracked_deepslate_tiles"}},"cracked_nether_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cracked_nether_bricks"}},"cracked_polished_blackstone_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cracked_polished_blackstone_bricks"}},"cracked_stone_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cracked_stone_bricks"}},"crafter":{"parent":"block/block","textures":{"bottom":"block/crafter_bottom","top":"block/crafter_top","north":"block/crafter_north","south":"block/crafter_south","west":"block/crafter_west","east":"block/crafter_east","particle":"#north"},"elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"},"up":{"uv":[0,0,16,16],"rotation":180,"texture":"#top","cullface":"up"},"north":{"uv":[0,0,16,16],"texture":"#north","cullface":"north"},"south":{"uv":[0,0,16,16],"texture":"#south","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#west","cullface":"west"},"east":{"uv":[0,0,16,16],"texture":"#east","cullface":"east"}}}]},"crafter_crafting":{"parent":"block/crafter_triggered","textures":{"top":"block/crafter_top_crafting","north":"block/crafter_north_crafting","east":"block/crafter_east_crafting","west":"block/crafter_west_crafting"}},"crafter_crafting_triggered":{"parent":"block/crafter_crafting"},"crafter_triggered":{"parent":"block/crafter","textures":{"top":"block/crafter_top_triggered","south":"block/crafter_south_triggered","west":"block/crafter_west_triggered","east":"block/crafter_east_triggered"}},"crafting_table":{"parent":"minecraft:block/cube","textures":{"down":"minecraft:block/oak_planks","east":"minecraft:block/crafting_table_side","north":"minecraft:block/crafting_table_front","particle":"minecraft:block/crafting_table_front","south":"minecraft:block/crafting_table_side","up":"minecraft:block/crafting_table_top","west":"minecraft:block/crafting_table_front"}},"creaking_heart":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/creaking_heart_top","side":"minecraft:block/creaking_heart"}},"creaking_heart_awake":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/creaking_heart_top_awake","side":"minecraft:block/creaking_heart_awake"}},"creaking_heart_awake_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/creaking_heart_top_awake","side":"minecraft:block/creaking_heart_awake"}},"creaking_heart_dormant":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/creaking_heart_top_dormant","side":"minecraft:block/creaking_heart_dormant"}},"creaking_heart_dormant_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/creaking_heart_top_dormant","side":"minecraft:block/creaking_heart_dormant"}},"creaking_heart_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/creaking_heart_top","side":"minecraft:block/creaking_heart"}},"crimson_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/crimson_planks"}},"crimson_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/crimson_planks"}},"crimson_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/crimson_planks"}},"crimson_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/crimson_door_bottom","top":"minecraft:block/crimson_door_top"}},"crimson_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/crimson_door_bottom","top":"minecraft:block/crimson_door_top"}},"crimson_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/crimson_door_bottom","top":"minecraft:block/crimson_door_top"}},"crimson_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/crimson_door_bottom","top":"minecraft:block/crimson_door_top"}},"crimson_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/crimson_door_bottom","top":"minecraft:block/crimson_door_top"}},"crimson_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/crimson_door_bottom","top":"minecraft:block/crimson_door_top"}},"crimson_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/crimson_door_bottom","top":"minecraft:block/crimson_door_top"}},"crimson_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/crimson_door_bottom","top":"minecraft:block/crimson_door_top"}},"crimson_fence_gate":{"parent":"minecraft:block/template_fence_gate","textures":{"texture":"minecraft:block/crimson_planks"}},"crimson_fence_gate_open":{"parent":"minecraft:block/template_fence_gate_open","textures":{"texture":"minecraft:block/crimson_planks"}},"crimson_fence_gate_wall":{"parent":"minecraft:block/template_fence_gate_wall","textures":{"texture":"minecraft:block/crimson_planks"}},"crimson_fence_gate_wall_open":{"parent":"minecraft:block/template_fence_gate_wall_open","textures":{"texture":"minecraft:block/crimson_planks"}},"crimson_fence_inventory":{"parent":"minecraft:block/fence_inventory","textures":{"texture":"minecraft:block/crimson_planks"}},"crimson_fence_post":{"parent":"minecraft:block/fence_post","textures":{"texture":"minecraft:block/crimson_planks"}},"crimson_fence_side":{"parent":"minecraft:block/fence_side","textures":{"texture":"minecraft:block/crimson_planks"}},"crimson_fungus":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/crimson_fungus"}},"crimson_hanging_sign":{"textures":{"particle":"minecraft:block/stripped_crimson_stem"}},"crimson_hyphae":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/crimson_stem","side":"minecraft:block/crimson_stem"}},"crimson_nylium":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/netherrack","side":"minecraft:block/crimson_nylium_side","top":"minecraft:block/crimson_nylium"}},"crimson_planks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/crimson_planks"}},"crimson_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/crimson_planks"}},"crimson_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/crimson_planks"}},"crimson_roots":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/crimson_roots"}},"crimson_shelf":{"parent":"minecraft:block/template_shelf_body","textures":{"all":"minecraft:block/crimson_shelf","particle":"minecraft:block/stripped_crimson_stem"}},"crimson_shelf_center":{"parent":"minecraft:block/template_shelf_center","textures":{"all":"minecraft:block/crimson_shelf","particle":"minecraft:block/stripped_crimson_stem"}},"crimson_shelf_inventory":{"parent":"minecraft:block/template_shelf_inventory","textures":{"all":"minecraft:block/crimson_shelf","particle":"minecraft:block/stripped_crimson_stem"}},"crimson_shelf_left":{"parent":"minecraft:block/template_shelf_left","textures":{"all":"minecraft:block/crimson_shelf","particle":"minecraft:block/stripped_crimson_stem"}},"crimson_shelf_right":{"parent":"minecraft:block/template_shelf_right","textures":{"all":"minecraft:block/crimson_shelf","particle":"minecraft:block/stripped_crimson_stem"}},"crimson_shelf_unconnected":{"parent":"minecraft:block/template_shelf_unconnected","textures":{"all":"minecraft:block/crimson_shelf","particle":"minecraft:block/stripped_crimson_stem"}},"crimson_shelf_unpowered":{"parent":"minecraft:block/template_shelf_unpowered","textures":{"all":"minecraft:block/crimson_shelf","particle":"minecraft:block/stripped_crimson_stem"}},"crimson_sign":{"textures":{"particle":"minecraft:block/crimson_planks"}},"crimson_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/crimson_planks","side":"minecraft:block/crimson_planks","top":"minecraft:block/crimson_planks"}},"crimson_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/crimson_planks","side":"minecraft:block/crimson_planks","top":"minecraft:block/crimson_planks"}},"crimson_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/crimson_planks","side":"minecraft:block/crimson_planks","top":"minecraft:block/crimson_planks"}},"crimson_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/crimson_planks","side":"minecraft:block/crimson_planks","top":"minecraft:block/crimson_planks"}},"crimson_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/crimson_planks","side":"minecraft:block/crimson_planks","top":"minecraft:block/crimson_planks"}},"crimson_stem":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/crimson_stem_top","side":"minecraft:block/crimson_stem"}},"crimson_trapdoor_bottom":{"parent":"minecraft:block/template_orientable_trapdoor_bottom","textures":{"texture":"minecraft:block/crimson_trapdoor"}},"crimson_trapdoor_open":{"parent":"minecraft:block/template_orientable_trapdoor_open","textures":{"texture":"minecraft:block/crimson_trapdoor"}},"crimson_trapdoor_top":{"parent":"minecraft:block/template_orientable_trapdoor_top","textures":{"texture":"minecraft:block/crimson_trapdoor"}},"crop":{"ambientocclusion":false,"textures":{"particle":"#crop"},"elements":[{"from":[4,-1,0],"to":[4,15,16],"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#crop"},"east":{"uv":[16,0,0,16],"texture":"#crop"}}},{"from":[12,-1,0],"to":[12,15,16],"shade":false,"faces":{"west":{"uv":[16,0,0,16],"texture":"#crop"},"east":{"uv":[0,0,16,16],"texture":"#crop"}}},{"from":[0,-1,4],"to":[16,15,4],"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#crop"},"south":{"uv":[16,0,0,16],"texture":"#crop"}}},{"from":[0,-1,12],"to":[16,15,12],"shade":false,"faces":{"north":{"uv":[16,0,0,16],"texture":"#crop"},"south":{"uv":[0,0,16,16],"texture":"#crop"}}}]},"cross":{"ambientocclusion":false,"textures":{"particle":"#cross"},"elements":[{"from":[0.8,0,8],"to":[15.2,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#cross"},"south":{"uv":[0,0,16,16],"texture":"#cross"}}},{"from":[8,0,0.8],"to":[8,16,15.2],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#cross"},"east":{"uv":[0,0,16,16],"texture":"#cross"}}}]},"cross_emissive":{"ambientocclusion":false,"textures":{"particle":"#cross"},"elements":[{"from":[0.8,0,8],"to":[15.2,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#cross"},"south":{"uv":[0,0,16,16],"texture":"#cross"}}},{"from":[8,0,0.8],"to":[8,16,15.2],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#cross"},"east":{"uv":[0,0,16,16],"texture":"#cross"}}},{"from":[0.8,0,8],"to":[15.2,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"light_emission":15,"faces":{"north":{"uv":[0,0,16,16],"texture":"#cross_emissive"},"south":{"uv":[0,0,16,16],"texture":"#cross_emissive"}}},{"from":[8,0,0.8],"to":[8,16,15.2],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"light_emission":15,"faces":{"west":{"uv":[0,0,16,16],"texture":"#cross_emissive"},"east":{"uv":[0,0,16,16],"texture":"#cross_emissive"}}}]},"crying_obsidian":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/crying_obsidian"}},"cube":{"parent":"block/block","elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"texture":"#down","cullface":"down"},"up":{"texture":"#up","cullface":"up"},"north":{"texture":"#north","cullface":"north"},"south":{"texture":"#south","cullface":"south"},"west":{"texture":"#west","cullface":"west"},"east":{"texture":"#east","cullface":"east"}}}]},"cube_all":{"parent":"block/cube","textures":{"particle":"#all","down":"#all","up":"#all","north":"#all","east":"#all","south":"#all","west":"#all"}},"cube_all_inner_faces":{"parent":"block/cube_all","elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"north":{"uv":[0,0,16,16],"texture":"#all","cullface":"north"},"east":{"uv":[0,0,16,16],"texture":"#all","cullface":"east"},"south":{"uv":[0,0,16,16],"texture":"#all","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#all","cullface":"west"},"up":{"uv":[0,0,16,16],"texture":"#all","cullface":"up"},"down":{"uv":[0,0,16,16],"texture":"#all","cullface":"down"}}},{"from":[15.998,0.002,0.002],"to":[0.002,15.998,15.998],"faces":{"north":{"uv":[16,0,0,16],"texture":"#all","cullface":"south"},"east":{"uv":[16,0,0,16],"texture":"#all","cullface":"west"},"south":{"uv":[16,0,0,16],"texture":"#all","cullface":"north"},"west":{"uv":[16,0,0,16],"texture":"#all","cullface":"east"},"up":{"uv":[16,0,0,16],"texture":"#all","cullface":"up"},"down":{"uv":[16,0,0,16],"texture":"#all","cullface":"down"}}}]},"cube_bottom_top":{"parent":"block/cube","textures":{"particle":"#side","down":"#bottom","up":"#top","north":"#side","east":"#side","south":"#side","west":"#side"}},"cube_bottom_top_inner_faces":{"parent":"block/cube_bottom_top","elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"north":{"uv":[0,0,16,16],"texture":"#side","cullface":"north"},"east":{"uv":[0,0,16,16],"texture":"#side","cullface":"east"},"south":{"uv":[0,0,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#side","cullface":"west"},"up":{"uv":[0,0,16,16],"texture":"#top","cullface":"up"},"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"}}},{"from":[15.998,0.002,0.002],"to":[0.002,15.998,15.998],"faces":{"north":{"uv":[16,0,0,16],"texture":"#side","cullface":"south"},"east":{"uv":[16,0,0,16],"texture":"#side","cullface":"west"},"south":{"uv":[16,0,0,16],"texture":"#side","cullface":"north"},"west":{"uv":[16,0,0,16],"texture":"#side","cullface":"east"},"up":{"uv":[16,0,0,16],"texture":"#top","cullface":"up"},"down":{"uv":[16,0,0,16],"texture":"#bottom","cullface":"down"}}}]},"cube_column":{"parent":"block/cube","textures":{"particle":"#side","down":"#end","up":"#end","north":"#side","east":"#side","south":"#side","west":"#side"}},"cube_column_horizontal":{"parent":"block/block","elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"texture":"#down","cullface":"down"},"up":{"texture":"#up","rotation":180,"cullface":"up"},"north":{"texture":"#north","cullface":"north"},"south":{"texture":"#south","cullface":"south"},"west":{"texture":"#west","cullface":"west"},"east":{"texture":"#east","cullface":"east"}}}],"textures":{"particle":"#side","down":"#end","up":"#end","north":"#side","east":"#side","south":"#side","west":"#side"}},"cube_column_mirrored":{"parent":"block/cube_mirrored","textures":{"particle":"#side","down":"#end","up":"#end","north":"#side","east":"#side","south":"#side","west":"#side"}},"cube_column_uv_locked_x":{"parent":"block/block","elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"texture":"#down","rotation":90,"cullface":"down"},"up":{"texture":"#up","rotation":90,"cullface":"up"},"north":{"texture":"#north","rotation":90,"cullface":"north"},"south":{"texture":"#south","rotation":90,"cullface":"south"},"west":{"texture":"#west","cullface":"west"},"east":{"texture":"#east","cullface":"east"}}}],"textures":{"particle":"#side","down":"#side","up":"#side","north":"#side","east":"#end","south":"#side","west":"#end"}},"cube_column_uv_locked_y":{"parent":"block/block","elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"texture":"#down","cullface":"down"},"up":{"texture":"#up","cullface":"up"},"north":{"texture":"#north","cullface":"north"},"south":{"texture":"#south","cullface":"south"},"west":{"texture":"#west","cullface":"west"},"east":{"texture":"#east","cullface":"east"}}}],"textures":{"particle":"#side","down":"#end","up":"#end","north":"#side","east":"#side","south":"#side","west":"#side"}},"cube_column_uv_locked_z":{"parent":"block/block","elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"texture":"#down","cullface":"down"},"up":{"texture":"#up","cullface":"up"},"north":{"texture":"#north","cullface":"north"},"south":{"texture":"#south","cullface":"south"},"west":{"texture":"#west","rotation":90,"cullface":"west"},"east":{"texture":"#east","rotation":90,"cullface":"east"}}}],"textures":{"particle":"#side","down":"#side","up":"#side","north":"#end","east":"#side","south":"#end","west":"#side"}},"cube_directional":{"parent":"block/block","elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"texture":"#down","cullface":"down","rotation":180},"up":{"texture":"#up","cullface":"up"},"north":{"texture":"#north","cullface":"north"},"south":{"texture":"#south","cullface":"south"},"west":{"texture":"#west","cullface":"west","rotation":270},"east":{"texture":"#east","cullface":"east","rotation":90}}}]},"cube_mirrored":{"elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"uv":[16,0,0,16],"texture":"#down","cullface":"down"},"up":{"uv":[16,0,0,16],"texture":"#up","cullface":"up"},"north":{"uv":[16,0,0,16],"texture":"#north","cullface":"north"},"south":{"uv":[16,0,0,16],"texture":"#south","cullface":"south"},"west":{"uv":[16,0,0,16],"texture":"#west","cullface":"west"},"east":{"uv":[16,0,0,16],"texture":"#east","cullface":"east"}}}]},"cube_mirrored_all":{"parent":"block/cube_mirrored","textures":{"particle":"#all","down":"#all","up":"#all","north":"#all","east":"#all","south":"#all","west":"#all"}},"cube_north_west_mirrored":{"elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"texture":"#down","cullface":"down"},"up":{"texture":"#up","cullface":"up"},"north":{"uv":[16,0,0,16],"texture":"#north","cullface":"north"},"south":{"texture":"#south","cullface":"south"},"west":{"uv":[16,0,0,16],"texture":"#west","cullface":"west"},"east":{"texture":"#east","cullface":"east"}}}]},"cube_north_west_mirrored_all":{"parent":"block/cube_north_west_mirrored","textures":{"particle":"#all","down":"#all","up":"#all","north":"#all","east":"#all","south":"#all","west":"#all"}},"cube_top":{"parent":"block/cube","textures":{"particle":"#side","down":"#side","up":"#top","north":"#side","east":"#side","south":"#side","west":"#side"}},"custom_fence_inventory":{"parent":"block/block","display":{"gui":{"rotation":[30,135,0],"translation":[0,0,0],"scale":[0.625,0.625,0.625]},"fixed":{"rotation":[0,90,0],"translation":[0,0,0],"scale":[0.5,0.5,0.5]},"on_shelf":{"rotation":[0,90,0],"translation":[0,0,0],"scale":[1,1,1]}},"textures":{"particle":"#texture"},"elements":[{"from":[6,0,0],"to":[10,16,4],"faces":{"north":{"uv":[0,0,4,16],"texture":"#texture"},"east":{"uv":[0,0,4,16],"texture":"#texture"},"south":{"uv":[0,0,4,16],"texture":"#texture"},"west":{"uv":[0,0,4,16],"texture":"#texture"},"up":{"uv":[4,0,8,4],"texture":"#texture"},"down":{"uv":[4,0,8,4],"texture":"#texture","cullface":"down"}},"__comment":"Left post"},{"from":[6,0,12],"to":[10,16,16],"faces":{"north":{"uv":[0,0,4,16],"texture":"#texture"},"east":{"uv":[0,0,4,16],"texture":"#texture"},"south":{"uv":[0,0,4,16],"texture":"#texture"},"west":{"uv":[0,0,4,16],"texture":"#texture"},"up":{"uv":[4,0,8,4],"texture":"#texture"},"down":{"uv":[4,0,8,4],"texture":"#texture","cullface":"down"}},"__comment":"Right post"},{"from":[7,12,4],"to":[9,15,12],"faces":{"east":{"uv":[8,0,16,3],"texture":"#texture"},"west":{"uv":[8,0,16,3],"texture":"#texture"},"up":{"uv":[11,7,13,15],"texture":"#texture"},"down":{"uv":[11,15,13,7],"texture":"#texture"}},"__comment":"Top bar"},{"from":[7,12,-2],"to":[9,15,0],"faces":{"north":{"uv":[13,4,15,7],"texture":"#texture"},"east":{"uv":[8,0,10,3],"texture":"#texture"},"west":{"uv":[8,0,10,3],"texture":"#texture"},"up":{"uv":[11,7,13,9],"texture":"#texture"},"down":{"uv":[11,7,13,9],"texture":"#texture"}},"__comment":"Top bar left"},{"from":[7,12,16],"to":[9,15,18],"faces":{"east":{"uv":[14,0,16,3],"texture":"#texture"},"south":{"uv":[13,4,15,7],"texture":"#texture"},"west":{"uv":[14,0,16,3],"texture":"#texture"},"up":{"uv":[11,13,13,15],"texture":"#texture"},"down":{"uv":[11,13,13,15],"texture":"#texture"}},"__comment":"Top bar right"},{"from":[7,6,4],"to":[9,9,12],"faces":{"east":{"uv":[8,0,16,3],"texture":"#texture"},"west":{"uv":[8,0,16,3],"texture":"#texture"},"up":{"uv":[11,7,13,15],"texture":"#texture"},"down":{"uv":[11,15,13,7],"texture":"#texture"}},"__comment":"Lower bar"},{"from":[7,6,-2],"to":[9,9,0],"faces":{"north":{"uv":[13,4,15,7],"texture":"#texture"},"east":{"uv":[8,0,10,3],"texture":"#texture"},"west":{"uv":[8,0,10,3],"texture":"#texture"},"up":{"uv":[11,13,13,15],"texture":"#texture"},"down":{"uv":[11,13,13,15],"texture":"#texture"}},"__comment":"Lower bar left"},{"from":[7,6,16],"to":[9,9,18],"faces":{"east":{"uv":[14,0,16,3],"texture":"#texture"},"south":{"uv":[13,4,15,7],"texture":"#texture"},"west":{"uv":[14,0,16,3],"texture":"#texture"},"up":{"uv":[11,13,13,15],"texture":"#texture"},"down":{"uv":[11,13,13,15],"texture":"#texture"}},"__comment":"Lower bar right"}]},"custom_fence_post":{"textures":{"particle":"#particle"},"elements":[{"from":[6,0,6],"to":[10,16,10],"faces":{"up":{"uv":[4,0,8,4],"texture":"#texture","cullface":"up"},"down":{"uv":[4,0,8,4],"texture":"#texture","cullface":"down"},"north":{"uv":[0,0,4,16],"texture":"#texture"},"east":{"uv":[0,0,4,16],"texture":"#texture"},"south":{"uv":[0,0,4,16],"texture":"#texture"},"west":{"uv":[0,0,4,16],"texture":"#texture"}},"__comment":"Center post special"}]},"custom_fence_side_east":{"textures":{"particle":"#texture"},"elements":[{"name":"top bar","from":[7,12,7],"to":[16,15,9],"faces":{"north":{"uv":[4,4,13,7],"texture":"#texture"},"east":{"uv":[13,4,15,7],"texture":"#texture","cullface":"east"},"south":{"uv":[4,4,13,7],"texture":"#texture"},"up":{"uv":[13,7,15,16],"rotation":270,"texture":"#texture"},"down":{"uv":[13,7,15,16],"rotation":90,"texture":"#texture"}}},{"name":"lower bar","from":[7,6,7],"to":[16,9,9],"faces":{"north":{"uv":[4,4,13,7],"texture":"#texture"},"east":{"uv":[13,4,15,7],"texture":"#texture","cullface":"east"},"south":{"uv":[4,4,13,7],"texture":"#texture"},"up":{"uv":[13,7,15,16],"rotation":270,"texture":"#texture"},"down":{"uv":[13,7,15,16],"rotation":90,"texture":"#texture"}}}],"groups":[{"name":"east","origin":[0,0,0],"color":0,"children":[0,1]}]},"custom_fence_side_north":{"textures":{"particle":"#texture"},"elements":[{"name":"top bar","from":[7,12,0],"to":[9,15,9],"faces":{"north":{"uv":[13,4,15,7],"rotation":180,"texture":"#texture","cullface":"north"},"east":{"uv":[4,4,13,7],"texture":"#texture"},"west":{"uv":[4,4,13,7],"texture":"#texture"},"up":{"uv":[13,7,15,16],"texture":"#texture"},"down":{"uv":[13,7,15,16],"texture":"#texture"}}},{"name":"lower bar","from":[7,6,0],"to":[9,9,9],"faces":{"north":{"uv":[13,4,15,7],"rotation":180,"texture":"#texture","cullface":"north"},"east":{"uv":[4,4,13,7],"texture":"#texture"},"west":{"uv":[4,4,13,7],"texture":"#texture"},"up":{"uv":[13,7,15,16],"texture":"#texture"},"down":{"uv":[13,7,15,16],"texture":"#texture"}}}],"groups":[{"name":"north","origin":[0,0,0],"color":0,"children":[0,1]}]},"custom_fence_side_south":{"textures":{"particle":"#texture"},"elements":[{"name":"top bar","from":[7,12,7],"to":[9,15,16],"faces":{"east":{"uv":[4,4,13,7],"texture":"#texture"},"south":{"uv":[13,4,15,7],"texture":"#texture","cullface":"south"},"west":{"uv":[4,4,13,7],"texture":"#texture"},"up":{"uv":[13,7,15,16],"texture":"#texture"},"down":{"uv":[13,7,15,16],"texture":"#texture"}}},{"name":"lower bar","from":[7,6,7],"to":[9,9,16],"faces":{"east":{"uv":[4,4,13,7],"texture":"#texture"},"south":{"uv":[13,4,15,7],"texture":"#texture","cullface":"south"},"west":{"uv":[4,4,13,7],"texture":"#texture"},"up":{"uv":[13,7,15,16],"texture":"#texture"},"down":{"uv":[13,7,15,16],"texture":"#texture"}}}],"groups":[{"name":"south","origin":[0,0,0],"color":0,"children":[0,1]}]},"custom_fence_side_west":{"textures":{"particle":"#texture"},"elements":[{"name":"top bar","from":[0,12,7],"to":[9,15,9],"faces":{"north":{"uv":[4,4,13,7],"texture":"#texture"},"south":{"uv":[4,4,13,7],"texture":"#texture"},"west":{"uv":[15,4,13,7],"texture":"#texture","cullface":"west"},"up":{"uv":[13,7,15,16],"rotation":270,"texture":"#texture"},"down":{"uv":[13,7,15,16],"rotation":90,"texture":"#texture"}}},{"name":"lower bar","from":[0,6,7],"to":[9,9,9],"faces":{"north":{"uv":[4,4,13,7],"texture":"#texture"},"south":{"uv":[4,4,13,7],"texture":"#texture"},"west":{"uv":[15,4,13,7],"texture":"#texture","cullface":"west"},"up":{"uv":[13,7,15,16],"rotation":270,"texture":"#texture"},"down":{"uv":[13,7,15,16],"rotation":90,"texture":"#texture"}}}],"groups":[{"name":"west","origin":[0,0,0],"color":0,"children":[0,1]}]},"cut_copper":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cut_copper"}},"cut_copper_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/cut_copper","side":"minecraft:block/cut_copper","top":"minecraft:block/cut_copper"}},"cut_copper_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/cut_copper","side":"minecraft:block/cut_copper","top":"minecraft:block/cut_copper"}},"cut_copper_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/cut_copper","side":"minecraft:block/cut_copper","top":"minecraft:block/cut_copper"}},"cut_copper_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/cut_copper","side":"minecraft:block/cut_copper","top":"minecraft:block/cut_copper"}},"cut_copper_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/cut_copper","side":"minecraft:block/cut_copper","top":"minecraft:block/cut_copper"}},"cut_red_sandstone":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/red_sandstone_top","side":"minecraft:block/cut_red_sandstone"}},"cut_red_sandstone_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/red_sandstone_top","side":"minecraft:block/cut_red_sandstone","top":"minecraft:block/red_sandstone_top"}},"cut_red_sandstone_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/red_sandstone_top","side":"minecraft:block/cut_red_sandstone","top":"minecraft:block/red_sandstone_top"}},"cut_sandstone":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/sandstone_top","side":"minecraft:block/cut_sandstone"}},"cut_sandstone_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/sandstone_top","side":"minecraft:block/cut_sandstone","top":"minecraft:block/sandstone_top"}},"cut_sandstone_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/sandstone_top","side":"minecraft:block/cut_sandstone","top":"minecraft:block/sandstone_top"}},"cyan_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/cyan_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"cyan_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/cyan_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"cyan_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/cyan_candle","particle":"minecraft:block/cyan_candle"}},"cyan_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/cyan_candle_lit","particle":"minecraft:block/cyan_candle_lit"}},"cyan_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/cyan_candle","particle":"minecraft:block/cyan_candle"}},"cyan_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/cyan_candle_lit","particle":"minecraft:block/cyan_candle_lit"}},"cyan_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/cyan_candle","particle":"minecraft:block/cyan_candle"}},"cyan_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/cyan_candle_lit","particle":"minecraft:block/cyan_candle_lit"}},"cyan_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/cyan_candle","particle":"minecraft:block/cyan_candle"}},"cyan_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/cyan_candle_lit","particle":"minecraft:block/cyan_candle_lit"}},"cyan_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/cyan_wool"}},"cyan_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cyan_concrete"}},"cyan_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cyan_concrete_powder"}},"cyan_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/cyan_glazed_terracotta"}},"cyan_shulker_box":{"textures":{"particle":"minecraft:block/cyan_shulker_box"}},"cyan_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cyan_stained_glass"}},"cyan_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/cyan_stained_glass"}},"cyan_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/cyan_stained_glass"}},"cyan_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/cyan_stained_glass_pane_top","pane":"minecraft:block/cyan_stained_glass"}},"cyan_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/cyan_stained_glass_pane_top","pane":"minecraft:block/cyan_stained_glass"}},"cyan_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/cyan_stained_glass_pane_top","pane":"minecraft:block/cyan_stained_glass"}},"cyan_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cyan_terracotta"}},"cyan_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/cyan_wool"}},"damaged_anvil":{"parent":"minecraft:block/template_anvil","textures":{"top":"minecraft:block/damaged_anvil_top"}},"dandelion":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/dandelion"}},"dark_oak_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/dark_oak_planks"}},"dark_oak_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/dark_oak_planks"}},"dark_oak_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/dark_oak_planks"}},"dark_oak_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/dark_oak_door_bottom","top":"minecraft:block/dark_oak_door_top"}},"dark_oak_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/dark_oak_door_bottom","top":"minecraft:block/dark_oak_door_top"}},"dark_oak_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/dark_oak_door_bottom","top":"minecraft:block/dark_oak_door_top"}},"dark_oak_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/dark_oak_door_bottom","top":"minecraft:block/dark_oak_door_top"}},"dark_oak_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/dark_oak_door_bottom","top":"minecraft:block/dark_oak_door_top"}},"dark_oak_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/dark_oak_door_bottom","top":"minecraft:block/dark_oak_door_top"}},"dark_oak_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/dark_oak_door_bottom","top":"minecraft:block/dark_oak_door_top"}},"dark_oak_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/dark_oak_door_bottom","top":"minecraft:block/dark_oak_door_top"}},"dark_oak_fence_gate":{"parent":"minecraft:block/template_fence_gate","textures":{"texture":"minecraft:block/dark_oak_planks"}},"dark_oak_fence_gate_open":{"parent":"minecraft:block/template_fence_gate_open","textures":{"texture":"minecraft:block/dark_oak_planks"}},"dark_oak_fence_gate_wall":{"parent":"minecraft:block/template_fence_gate_wall","textures":{"texture":"minecraft:block/dark_oak_planks"}},"dark_oak_fence_gate_wall_open":{"parent":"minecraft:block/template_fence_gate_wall_open","textures":{"texture":"minecraft:block/dark_oak_planks"}},"dark_oak_fence_inventory":{"parent":"minecraft:block/fence_inventory","textures":{"texture":"minecraft:block/dark_oak_planks"}},"dark_oak_fence_post":{"parent":"minecraft:block/fence_post","textures":{"texture":"minecraft:block/dark_oak_planks"}},"dark_oak_fence_side":{"parent":"minecraft:block/fence_side","textures":{"texture":"minecraft:block/dark_oak_planks"}},"dark_oak_hanging_sign":{"textures":{"particle":"minecraft:block/stripped_dark_oak_log"}},"dark_oak_leaves":{"parent":"minecraft:block/leaves","textures":{"all":"minecraft:block/dark_oak_leaves"}},"dark_oak_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/dark_oak_log_top","side":"minecraft:block/dark_oak_log"}},"dark_oak_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/dark_oak_log_top","side":"minecraft:block/dark_oak_log"}},"dark_oak_planks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/dark_oak_planks"}},"dark_oak_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/dark_oak_planks"}},"dark_oak_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/dark_oak_planks"}},"dark_oak_sapling":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/dark_oak_sapling"}},"dark_oak_shelf":{"parent":"minecraft:block/template_shelf_body","textures":{"all":"minecraft:block/dark_oak_shelf","particle":"minecraft:block/stripped_dark_oak_log"}},"dark_oak_shelf_center":{"parent":"minecraft:block/template_shelf_center","textures":{"all":"minecraft:block/dark_oak_shelf","particle":"minecraft:block/stripped_dark_oak_log"}},"dark_oak_shelf_inventory":{"parent":"minecraft:block/template_shelf_inventory","textures":{"all":"minecraft:block/dark_oak_shelf","particle":"minecraft:block/stripped_dark_oak_log"}},"dark_oak_shelf_left":{"parent":"minecraft:block/template_shelf_left","textures":{"all":"minecraft:block/dark_oak_shelf","particle":"minecraft:block/stripped_dark_oak_log"}},"dark_oak_shelf_right":{"parent":"minecraft:block/template_shelf_right","textures":{"all":"minecraft:block/dark_oak_shelf","particle":"minecraft:block/stripped_dark_oak_log"}},"dark_oak_shelf_unconnected":{"parent":"minecraft:block/template_shelf_unconnected","textures":{"all":"minecraft:block/dark_oak_shelf","particle":"minecraft:block/stripped_dark_oak_log"}},"dark_oak_shelf_unpowered":{"parent":"minecraft:block/template_shelf_unpowered","textures":{"all":"minecraft:block/dark_oak_shelf","particle":"minecraft:block/stripped_dark_oak_log"}},"dark_oak_sign":{"textures":{"particle":"minecraft:block/dark_oak_planks"}},"dark_oak_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/dark_oak_planks","side":"minecraft:block/dark_oak_planks","top":"minecraft:block/dark_oak_planks"}},"dark_oak_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/dark_oak_planks","side":"minecraft:block/dark_oak_planks","top":"minecraft:block/dark_oak_planks"}},"dark_oak_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/dark_oak_planks","side":"minecraft:block/dark_oak_planks","top":"minecraft:block/dark_oak_planks"}},"dark_oak_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/dark_oak_planks","side":"minecraft:block/dark_oak_planks","top":"minecraft:block/dark_oak_planks"}},"dark_oak_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/dark_oak_planks","side":"minecraft:block/dark_oak_planks","top":"minecraft:block/dark_oak_planks"}},"dark_oak_trapdoor_bottom":{"parent":"minecraft:block/template_trapdoor_bottom","textures":{"texture":"minecraft:block/dark_oak_trapdoor"}},"dark_oak_trapdoor_open":{"parent":"minecraft:block/template_trapdoor_open","textures":{"texture":"minecraft:block/dark_oak_trapdoor"}},"dark_oak_trapdoor_top":{"parent":"minecraft:block/template_trapdoor_top","textures":{"texture":"minecraft:block/dark_oak_trapdoor"}},"dark_oak_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/dark_oak_log","side":"minecraft:block/dark_oak_log"}},"dark_prismarine":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/dark_prismarine"}},"dark_prismarine_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/dark_prismarine","side":"minecraft:block/dark_prismarine","top":"minecraft:block/dark_prismarine"}},"dark_prismarine_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/dark_prismarine","side":"minecraft:block/dark_prismarine","top":"minecraft:block/dark_prismarine"}},"dark_prismarine_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/dark_prismarine","side":"minecraft:block/dark_prismarine","top":"minecraft:block/dark_prismarine"}},"dark_prismarine_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/dark_prismarine","side":"minecraft:block/dark_prismarine","top":"minecraft:block/dark_prismarine"}},"dark_prismarine_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/dark_prismarine","side":"minecraft:block/dark_prismarine","top":"minecraft:block/dark_prismarine"}},"daylight_detector":{"parent":"minecraft:block/template_daylight_detector","textures":{"side":"minecraft:block/daylight_detector_side","top":"minecraft:block/daylight_detector_top"}},"daylight_detector_inverted":{"parent":"minecraft:block/template_daylight_detector","textures":{"side":"minecraft:block/daylight_detector_side","top":"minecraft:block/daylight_detector_inverted_top"}},"dead_brain_coral":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/dead_brain_coral"}},"dead_brain_coral_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/dead_brain_coral_block"}},"dead_brain_coral_fan":{"parent":"minecraft:block/coral_fan","textures":{"fan":"minecraft:block/dead_brain_coral_fan"}},"dead_brain_coral_wall_fan":{"parent":"minecraft:block/coral_wall_fan","textures":{"fan":"minecraft:block/dead_brain_coral_fan"}},"dead_bubble_coral":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/dead_bubble_coral"}},"dead_bubble_coral_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/dead_bubble_coral_block"}},"dead_bubble_coral_fan":{"parent":"minecraft:block/coral_fan","textures":{"fan":"minecraft:block/dead_bubble_coral_fan"}},"dead_bubble_coral_wall_fan":{"parent":"minecraft:block/coral_wall_fan","textures":{"fan":"minecraft:block/dead_bubble_coral_fan"}},"dead_bush":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/dead_bush"}},"dead_fire_coral":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/dead_fire_coral"}},"dead_fire_coral_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/dead_fire_coral_block"}},"dead_fire_coral_fan":{"parent":"minecraft:block/coral_fan","textures":{"fan":"minecraft:block/dead_fire_coral_fan"}},"dead_fire_coral_wall_fan":{"parent":"minecraft:block/coral_wall_fan","textures":{"fan":"minecraft:block/dead_fire_coral_fan"}},"dead_horn_coral":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/dead_horn_coral"}},"dead_horn_coral_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/dead_horn_coral_block"}},"dead_horn_coral_fan":{"parent":"minecraft:block/coral_fan","textures":{"fan":"minecraft:block/dead_horn_coral_fan"}},"dead_horn_coral_wall_fan":{"parent":"minecraft:block/coral_wall_fan","textures":{"fan":"minecraft:block/dead_horn_coral_fan"}},"dead_sea_pickle":{"parent":"block/block","textures":{"particle":"block/sea_pickle","all":"block/sea_pickle"},"elements":[{"from":[6,0,6],"to":[10,6,10],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,11],"texture":"#all"},"south":{"uv":[0,5,4,11],"texture":"#all"},"west":{"uv":[8,5,12,11],"texture":"#all"},"east":{"uv":[12,5,16,11],"texture":"#all"}}},{"from":[6,5.95,6],"to":[10,5.95,10],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}}]},"dead_tube_coral":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/dead_tube_coral"}},"dead_tube_coral_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/dead_tube_coral_block"}},"dead_tube_coral_fan":{"parent":"minecraft:block/coral_fan","textures":{"fan":"minecraft:block/dead_tube_coral_fan"}},"dead_tube_coral_wall_fan":{"parent":"minecraft:block/coral_wall_fan","textures":{"fan":"minecraft:block/dead_tube_coral_fan"}},"decorated_pot":{"textures":{"particle":"minecraft:block/terracotta"}},"deepslate":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/deepslate_top","side":"minecraft:block/deepslate"}},"deepslate_brick_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/deepslate_bricks","side":"minecraft:block/deepslate_bricks","top":"minecraft:block/deepslate_bricks"}},"deepslate_brick_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/deepslate_bricks","side":"minecraft:block/deepslate_bricks","top":"minecraft:block/deepslate_bricks"}},"deepslate_brick_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/deepslate_bricks","side":"minecraft:block/deepslate_bricks","top":"minecraft:block/deepslate_bricks"}},"deepslate_brick_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/deepslate_bricks","side":"minecraft:block/deepslate_bricks","top":"minecraft:block/deepslate_bricks"}},"deepslate_brick_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/deepslate_bricks","side":"minecraft:block/deepslate_bricks","top":"minecraft:block/deepslate_bricks"}},"deepslate_brick_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/deepslate_bricks"}},"deepslate_brick_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/deepslate_bricks"}},"deepslate_brick_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/deepslate_bricks"}},"deepslate_brick_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/deepslate_bricks"}},"deepslate_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/deepslate_bricks"}},"deepslate_coal_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/deepslate_coal_ore"}},"deepslate_copper_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/deepslate_copper_ore"}},"deepslate_diamond_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/deepslate_diamond_ore"}},"deepslate_emerald_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/deepslate_emerald_ore"}},"deepslate_gold_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/deepslate_gold_ore"}},"deepslate_iron_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/deepslate_iron_ore"}},"deepslate_lapis_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/deepslate_lapis_ore"}},"deepslate_mirrored":{"parent":"minecraft:block/cube_column_mirrored","textures":{"end":"minecraft:block/deepslate_top","side":"minecraft:block/deepslate"}},"deepslate_redstone_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/deepslate_redstone_ore"}},"deepslate_tile_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/deepslate_tiles","side":"minecraft:block/deepslate_tiles","top":"minecraft:block/deepslate_tiles"}},"deepslate_tile_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/deepslate_tiles","side":"minecraft:block/deepslate_tiles","top":"minecraft:block/deepslate_tiles"}},"deepslate_tile_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/deepslate_tiles","side":"minecraft:block/deepslate_tiles","top":"minecraft:block/deepslate_tiles"}},"deepslate_tile_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/deepslate_tiles","side":"minecraft:block/deepslate_tiles","top":"minecraft:block/deepslate_tiles"}},"deepslate_tile_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/deepslate_tiles","side":"minecraft:block/deepslate_tiles","top":"minecraft:block/deepslate_tiles"}},"deepslate_tile_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/deepslate_tiles"}},"deepslate_tile_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/deepslate_tiles"}},"deepslate_tile_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/deepslate_tiles"}},"deepslate_tile_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/deepslate_tiles"}},"deepslate_tiles":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/deepslate_tiles"}},"detector_rail":{"parent":"minecraft:block/rail_flat","textures":{"rail":"minecraft:block/detector_rail"}},"detector_rail_on":{"parent":"minecraft:block/rail_flat","textures":{"rail":"minecraft:block/detector_rail_on"}},"detector_rail_on_raised_ne":{"parent":"minecraft:block/template_rail_raised_ne","textures":{"rail":"minecraft:block/detector_rail_on"}},"detector_rail_on_raised_sw":{"parent":"minecraft:block/template_rail_raised_sw","textures":{"rail":"minecraft:block/detector_rail_on"}},"detector_rail_raised_ne":{"parent":"minecraft:block/template_rail_raised_ne","textures":{"rail":"minecraft:block/detector_rail"}},"detector_rail_raised_sw":{"parent":"minecraft:block/template_rail_raised_sw","textures":{"rail":"minecraft:block/detector_rail"}},"diamond_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/diamond_block"}},"diamond_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/diamond_ore"}},"diorite":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/diorite"}},"diorite_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/diorite","side":"minecraft:block/diorite","top":"minecraft:block/diorite"}},"diorite_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/diorite","side":"minecraft:block/diorite","top":"minecraft:block/diorite"}},"diorite_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/diorite","side":"minecraft:block/diorite","top":"minecraft:block/diorite"}},"diorite_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/diorite","side":"minecraft:block/diorite","top":"minecraft:block/diorite"}},"diorite_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/diorite","side":"minecraft:block/diorite","top":"minecraft:block/diorite"}},"diorite_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/diorite"}},"diorite_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/diorite"}},"diorite_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/diorite"}},"diorite_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/diorite"}},"dirt":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/dirt"}},"dirt_path":{"parent":"block/block","textures":{"particle":"block/dirt","top":"block/dirt_path_top","side":"block/dirt_path_side","bottom":"block/dirt"},"elements":[{"from":[0,0,0],"to":[16,15,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,1,16,16],"texture":"#side","cullface":"north"},"south":{"uv":[0,1,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,1,16,16],"texture":"#side","cullface":"west"},"east":{"uv":[0,1,16,16],"texture":"#side","cullface":"east"}}}]},"dispenser":{"parent":"minecraft:block/orientable","textures":{"front":"minecraft:block/dispenser_front","side":"minecraft:block/furnace_side","top":"minecraft:block/furnace_top"}},"dispenser_vertical":{"parent":"minecraft:block/orientable_vertical","textures":{"front":"minecraft:block/dispenser_front_vertical","side":"minecraft:block/furnace_top"}},"door_bottom_left":{"ambientocclusion":false,"textures":{"particle":"#bottom"},"elements":[{"from":[0,0,0],"to":[3,16,16],"faces":{"down":{"uv":[16,13,0,16],"texture":"#bottom","cullface":"down","rotation":90},"north":{"uv":[3,0,0,16],"texture":"#bottom","cullface":"north"},"south":{"uv":[0,0,3,16],"texture":"#bottom","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"west"},"east":{"uv":[16,0,0,16],"texture":"#bottom"}}}]},"door_bottom_left_open":{"ambientocclusion":false,"textures":{"particle":"#bottom"},"elements":[{"from":[0,0,0],"to":[3,16,16],"faces":{"down":{"uv":[0,16,16,13],"texture":"#bottom","cullface":"down","rotation":90},"north":{"uv":[0,0,3,16],"texture":"#bottom","cullface":"north"},"south":{"uv":[0,0,3,16],"texture":"#bottom","cullface":"south"},"west":{"uv":[16,0,0,16],"texture":"#bottom","cullface":"west"},"east":{"uv":[0,0,16,16],"texture":"#bottom"}}}]},"door_bottom_right":{"ambientocclusion":false,"textures":{"particle":"#bottom"},"elements":[{"from":[0,0,0],"to":[3,16,16],"faces":{"down":{"uv":[0,13,16,16],"texture":"#bottom","cullface":"down","rotation":90},"north":{"uv":[3,0,0,16],"texture":"#bottom","cullface":"north"},"south":{"uv":[0,0,3,16],"texture":"#bottom","cullface":"south"},"west":{"uv":[16,0,0,16],"texture":"#bottom","cullface":"west"},"east":{"uv":[0,0,16,16],"texture":"#bottom"}}}]},"door_bottom_right_open":{"ambientocclusion":false,"textures":{"particle":"#bottom"},"elements":[{"from":[0,0,0],"to":[3,16,16],"faces":{"down":{"uv":[16,16,0,13],"texture":"#bottom","cullface":"down","rotation":90},"north":{"uv":[3,0,0,16],"texture":"#bottom","cullface":"north"},"south":{"uv":[3,0,0,16],"texture":"#bottom","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"west"},"east":{"uv":[16,0,0,16],"texture":"#bottom"}}}]},"door_top_left":{"ambientocclusion":false,"textures":{"particle":"#top"},"elements":[{"from":[0,0,0],"to":[3,16,16],"faces":{"up":{"uv":[0,3,16,0],"texture":"#top","cullface":"up","rotation":90},"north":{"uv":[3,0,0,16],"texture":"#top","cullface":"north"},"south":{"uv":[0,0,3,16],"texture":"#top","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#top","cullface":"west"},"east":{"uv":[16,0,0,16],"texture":"#top"}}}]},"door_top_left_open":{"ambientocclusion":false,"textures":{"particle":"#top"},"elements":[{"from":[0,0,0],"to":[3,16,16],"faces":{"up":{"uv":[0,3,16,0],"texture":"#top","cullface":"up","rotation":270},"north":{"uv":[0,0,3,16],"texture":"#top","cullface":"north"},"south":{"uv":[0,0,3,16],"texture":"#top","cullface":"south"},"west":{"uv":[16,0,0,16],"texture":"#top","cullface":"west"},"east":{"uv":[0,0,16,16],"texture":"#top"}}}]},"door_top_right":{"ambientocclusion":false,"textures":{"particle":"#top"},"elements":[{"from":[0,0,0],"to":[3,16,16],"faces":{"up":{"uv":[0,0,16,3],"texture":"#top","cullface":"up","rotation":270},"north":{"uv":[3,0,0,16],"texture":"#top","cullface":"north"},"south":{"uv":[0,0,3,16],"texture":"#top","cullface":"south"},"west":{"uv":[16,0,0,16],"texture":"#top","cullface":"west"},"east":{"uv":[0,0,16,16],"texture":"#top"}}}]},"door_top_right_open":{"ambientocclusion":false,"textures":{"particle":"#top"},"elements":[{"from":[0,0,0],"to":[3,16,16],"faces":{"up":{"uv":[0,0,16,3],"texture":"#top","cullface":"up","rotation":90},"north":{"uv":[3,0,0,16],"texture":"#top","cullface":"north"},"south":{"uv":[3,0,0,16],"texture":"#top","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#top","cullface":"west"},"east":{"uv":[16,0,0,16],"texture":"#top"}}}]},"dragon_egg":{"parent":"block/block","textures":{"particle":"block/dragon_egg","all":"block/dragon_egg"},"elements":[{"from":[6,15,6],"to":[10,16,10],"faces":{"north":{"uv":[6,0,10,1],"texture":"#all"},"east":{"uv":[6,0,10,1],"texture":"#all"},"south":{"uv":[6,0,10,1],"texture":"#all"},"west":{"uv":[6,0,10,1],"texture":"#all"},"up":{"uv":[6,6,10,10],"texture":"#all","cullface":"up"}}},{"from":[5,14,5],"to":[11,15,11],"faces":{"north":{"uv":[5,1,11,2],"texture":"#all"},"east":{"uv":[5,1,11,2],"texture":"#all"},"south":{"uv":[5,1,11,2],"texture":"#all"},"west":{"uv":[5,1,11,2],"texture":"#all"},"up":{"uv":[5,5,11,11],"texture":"#all"}}},{"from":[4,13,4],"to":[12,14,12],"rotation":{"angle":0,"axis":"y","origin":[0,-1,0]},"faces":{"north":{"uv":[4,2,12,3],"texture":"#all"},"east":{"uv":[4,2,12,3],"texture":"#all"},"south":{"uv":[4,2,12,3],"texture":"#all"},"west":{"uv":[4,2,12,3],"texture":"#all"},"up":{"uv":[4,4,12,12],"texture":"#all"}}},{"from":[3,0,3],"to":[13,13,13],"faces":{"north":{"uv":[3,3,13,16],"texture":"#all"},"east":{"uv":[3,3,13,16],"texture":"#all"},"south":{"uv":[3,3,13,16],"texture":"#all"},"west":{"uv":[3,3,13,16],"texture":"#all"},"up":{"uv":[3,3,13,13],"texture":"#all"},"down":{"uv":[3,3,13,13],"texture":"#all","cullface":"down"}}},{"from":[2,1,2],"to":[14,11,14],"faces":{"north":{"uv":[2,5,14,15],"texture":"#all"},"east":{"uv":[2,5,14,15],"texture":"#all"},"south":{"uv":[2,5,14,15],"texture":"#all"},"west":{"uv":[2,5,14,15],"texture":"#all"},"up":{"uv":[2,2,14,14],"texture":"#all"},"down":{"uv":[2,2,14,14],"texture":"#all"}}},{"from":[1,3,1],"to":[15,8,15],"faces":{"north":{"uv":[1,8,15,13],"texture":"#all"},"east":{"uv":[1,8,15,13],"texture":"#all"},"south":{"uv":[1,8,15,13],"texture":"#all"},"west":{"uv":[1,8,15,13],"texture":"#all"},"up":{"uv":[1,1,15,15],"texture":"#all"},"down":{"uv":[1,1,15,15],"texture":"#all"}}}]},"dried_ghast":{"parent":"block/block","display":{"gui":{"rotation":[30,225,0],"translation":[0.4,1.6,0],"scale":[0.8,0.8,0.8]}},"elements":[{"name":"body","from":[3,0,3],"to":[13,10,13],"rotation":{"angle":0,"axis":"y","origin":[11,0,11]},"faces":{"north":{"uv":[0,0,10,10],"texture":"#north"},"east":{"uv":[0,0,10,10],"texture":"#east"},"south":{"uv":[0,0,10,10],"texture":"#south"},"west":{"uv":[0,0,10,10],"texture":"#west"},"up":{"uv":[0,0,10,10],"rotation":180,"texture":"#top"},"down":{"uv":[10,0,0,10],"texture":"#bottom","cullface":"down"}}},{"name":"left_tent_1","from":[0,0,5],"to":[3,1,7],"rotation":{"angle":0,"axis":"y","origin":[8,0,13]},"faces":{"north":{"uv":[1,1.5,2.5,2],"texture":"#tentacles"},"east":{"uv":[0,1.5,1,2],"texture":"#tentacles"},"south":{"uv":[3.5,1.5,5,2],"texture":"#tentacles"},"west":{"uv":[2.5,1.5,3.5,2],"texture":"#tentacles","cullface":"west"},"up":{"uv":[2.5,1.5,1.5,0],"rotation":90,"texture":"#tentacles"},"down":{"uv":[2.5,1.5,3.5,0],"rotation":90,"texture":"#tentacles","cullface":"down"}}},{"name":"left_tent_2","from":[0,0,9],"to":[3,1,11],"rotation":{"angle":0,"axis":"y","origin":[8,0,17]},"faces":{"north":{"uv":[1,3.5,2.5,4],"texture":"#tentacles"},"east":{"uv":[0,3.5,1,4],"texture":"#tentacles"},"south":{"uv":[3.5,3.5,5,4],"texture":"#tentacles"},"west":{"uv":[2.5,3.5,3.5,4],"texture":"#tentacles","cullface":"west"},"up":{"uv":[2.5,3.5,1.5,2],"rotation":90,"texture":"#tentacles"},"down":{"uv":[2.5,3.5,3.5,2],"rotation":90,"texture":"#tentacles","cullface":"down"}}},{"name":"right_tent_1","from":[13,0,5],"to":[16,1,7],"rotation":{"angle":0,"axis":"y","origin":[8,0,13]},"faces":{"north":{"uv":[2.5,7.5,1,8],"texture":"#tentacles"},"east":{"uv":[3.5,7.5,2.5,8],"texture":"#tentacles","cullface":"east"},"south":{"uv":[5,7.5,3.5,8],"texture":"#tentacles"},"west":{"uv":[1,7.5,0,8],"texture":"#tentacles"},"up":{"uv":[2.5,6,1.5,7.5],"rotation":90,"texture":"#tentacles"},"down":{"uv":[2.5,6,3.5,7.5],"rotation":90,"texture":"#tentacles","cullface":"down"}}},{"name":"right_tent_2","from":[13,0,9],"to":[16,1,11],"rotation":{"angle":0,"axis":"y","origin":[8,0,17]},"faces":{"north":{"uv":[2.5,5.5,1,6],"texture":"#tentacles"},"east":{"uv":[3.5,5.5,2.5,6],"texture":"#tentacles","cullface":"east"},"south":{"uv":[5,5.5,3.5,6],"texture":"#tentacles"},"west":{"uv":[1,5.5,0,6],"texture":"#tentacles"},"up":{"uv":[2.5,4,1.5,5.5],"rotation":90,"texture":"#tentacles"},"down":{"uv":[2.5,4,3.5,5.5],"rotation":90,"texture":"#tentacles","cullface":"down"}}},{"name":"back_tent_2","from":[9,0,13],"to":[11,1,16],"rotation":{"angle":0,"axis":"y","origin":[10.5,0.5,14.5]},"faces":{"north":{"uv":[6,2.5,5,3],"texture":"#tentacles"},"east":{"uv":[7.5,2.5,6,3],"texture":"#tentacles"},"south":{"uv":[8.5,2.5,7.5,3],"texture":"#tentacles","cullface":"south"},"west":{"uv":[10,2.5,8.5,3],"texture":"#tentacles"},"up":{"uv":[6,2.5,7.5,1.5],"rotation":90,"texture":"#tentacles"},"down":{"uv":[7.5,1.5,9,2.5],"rotation":270,"texture":"#tentacles","cullface":"down"}}},{"name":"back_tent_1","from":[5,0,13],"to":[7,1,16],"rotation":{"angle":0,"axis":"y","origin":[5.5,0.5,14.5]},"faces":{"north":{"uv":[6,1,5,1.5],"texture":"#tentacles"},"east":{"uv":[7.5,1,6,1.5],"texture":"#tentacles"},"south":{"uv":[8.5,1,7.5,1.5],"texture":"#tentacles","cullface":"south"},"west":{"uv":[10,1,8.5,1.5],"texture":"#tentacles"},"up":{"uv":[6,1,7.5,0],"rotation":90,"texture":"#tentacles"},"down":{"uv":[7.5,0,9,1],"rotation":270,"texture":"#tentacles","cullface":"down"}}}]},"dried_ghast_hydration_0":{"parent":"minecraft:block/dried_ghast","textures":{"bottom":"minecraft:block/dried_ghast_hydration_0_bottom","east":"minecraft:block/dried_ghast_hydration_0_east","north":"minecraft:block/dried_ghast_hydration_0_north","particle":"minecraft:block/dried_ghast_hydration_0_north","south":"minecraft:block/dried_ghast_hydration_0_south","tentacles":"minecraft:block/dried_ghast_hydration_0_tentacles","top":"minecraft:block/dried_ghast_hydration_0_top","west":"minecraft:block/dried_ghast_hydration_0_west"}},"dried_ghast_hydration_1":{"parent":"minecraft:block/dried_ghast","textures":{"bottom":"minecraft:block/dried_ghast_hydration_1_bottom","east":"minecraft:block/dried_ghast_hydration_1_east","north":"minecraft:block/dried_ghast_hydration_1_north","particle":"minecraft:block/dried_ghast_hydration_1_north","south":"minecraft:block/dried_ghast_hydration_1_south","tentacles":"minecraft:block/dried_ghast_hydration_1_tentacles","top":"minecraft:block/dried_ghast_hydration_1_top","west":"minecraft:block/dried_ghast_hydration_1_west"}},"dried_ghast_hydration_2":{"parent":"minecraft:block/dried_ghast","textures":{"bottom":"minecraft:block/dried_ghast_hydration_2_bottom","east":"minecraft:block/dried_ghast_hydration_2_east","north":"minecraft:block/dried_ghast_hydration_2_north","particle":"minecraft:block/dried_ghast_hydration_2_north","south":"minecraft:block/dried_ghast_hydration_2_south","tentacles":"minecraft:block/dried_ghast_hydration_2_tentacles","top":"minecraft:block/dried_ghast_hydration_2_top","west":"minecraft:block/dried_ghast_hydration_2_west"}},"dried_ghast_hydration_3":{"parent":"minecraft:block/dried_ghast","textures":{"bottom":"minecraft:block/dried_ghast_hydration_3_bottom","east":"minecraft:block/dried_ghast_hydration_3_east","north":"minecraft:block/dried_ghast_hydration_3_north","particle":"minecraft:block/dried_ghast_hydration_3_north","south":"minecraft:block/dried_ghast_hydration_3_south","tentacles":"minecraft:block/dried_ghast_hydration_3_tentacles","top":"minecraft:block/dried_ghast_hydration_3_top","west":"minecraft:block/dried_ghast_hydration_3_west"}},"dried_kelp_block":{"parent":"block/block","textures":{"particle":"block/dried_kelp_side","down":"block/dried_kelp_bottom","up":"block/dried_kelp_top","north":"block/dried_kelp_side","east":"block/dried_kelp_side","south":"block/dried_kelp_side","west":"block/dried_kelp_side"},"elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"texture":"#down","cullface":"down"},"up":{"texture":"#up","cullface":"up"},"north":{"texture":"#north","cullface":"north"},"south":{"uv":[16,0,0,16],"texture":"#south","cullface":"south"},"west":{"texture":"#west","cullface":"west"},"east":{"uv":[16,0,0,16],"texture":"#east","cullface":"east"}}}]},"dripstone_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/dripstone_block"}},"dropper":{"parent":"minecraft:block/orientable","textures":{"front":"minecraft:block/dropper_front","side":"minecraft:block/furnace_side","top":"minecraft:block/furnace_top"}},"dropper_vertical":{"parent":"minecraft:block/orientable_vertical","textures":{"front":"minecraft:block/dropper_front_vertical","side":"minecraft:block/furnace_top"}},"emerald_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/emerald_block"}},"emerald_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/emerald_ore"}},"enchanting_table":{"parent":"block/block","textures":{"particle":"block/enchanting_table_bottom","bottom":"block/enchanting_table_bottom","top":"block/enchanting_table_top","side":"block/enchanting_table_side"},"elements":[{"from":[0,0,0],"to":[16,12,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,4,16,16],"texture":"#side","cullface":"north"},"south":{"uv":[0,4,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,4,16,16],"texture":"#side","cullface":"west"},"east":{"uv":[0,4,16,16],"texture":"#side","cullface":"east"}}}]},"end_gateway":{"textures":{"particle":"minecraft:block/obsidian"}},"end_portal":{"textures":{"particle":"minecraft:block/obsidian"}},"end_portal_frame":{"parent":"block/block","textures":{"particle":"block/end_portal_frame_side","bottom":"block/end_stone","top":"block/end_portal_frame_top","side":"block/end_portal_frame_side"},"elements":[{"from":[0,0,0],"to":[16,13,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,3,16,16],"texture":"#side","cullface":"north"},"south":{"uv":[0,3,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,3,16,16],"texture":"#side","cullface":"west"},"east":{"uv":[0,3,16,16],"texture":"#side","cullface":"east"}}}]},"end_portal_frame_filled":{"textures":{"particle":"block/end_portal_frame_side","bottom":"block/end_stone","top":"block/end_portal_frame_top","side":"block/end_portal_frame_side","eye":"block/end_portal_frame_eye"},"elements":[{"from":[0,0,0],"to":[16,13,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,3,16,16],"texture":"#side","cullface":"north"},"south":{"uv":[0,3,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,3,16,16],"texture":"#side","cullface":"west"},"east":{"uv":[0,3,16,16],"texture":"#side","cullface":"east"}}},{"from":[4,13,4],"to":[12,16,12],"faces":{"up":{"uv":[4,4,12,12],"texture":"#eye","cullface":"up"},"north":{"uv":[4,0,12,3],"texture":"#eye"},"south":{"uv":[4,0,12,3],"texture":"#eye"},"west":{"uv":[4,0,12,3],"texture":"#eye"},"east":{"uv":[4,0,12,3],"texture":"#eye"}}}]},"end_rod":{"parent":"block/block","display":{"head":{"rotation":[-60,0,0],"translation":[0,5,-9],"scale":[1,1,1]},"thirdperson_righthand":{"rotation":[0,0,0],"translation":[0,0,0],"scale":[0.375,0.375,0.375]}},"textures":{"end_rod":"block/end_rod","particle":"block/end_rod"},"elements":[{"from":[6,0,6],"to":[10,1,10],"faces":{"down":{"uv":[6,6,2,2],"texture":"#end_rod","cullface":"down"},"up":{"uv":[2,2,6,6],"texture":"#end_rod"},"north":{"uv":[2,6,6,7],"texture":"#end_rod"},"south":{"uv":[2,6,6,7],"texture":"#end_rod"},"west":{"uv":[2,6,6,7],"texture":"#end_rod"},"east":{"uv":[2,6,6,7],"texture":"#end_rod"}}},{"from":[7,1,7],"to":[9,16,9],"faces":{"up":{"uv":[2,0,4,2],"texture":"#end_rod","cullface":"up"},"north":{"uv":[0,0,2,15],"texture":"#end_rod"},"south":{"uv":[0,0,2,15],"texture":"#end_rod"},"west":{"uv":[0,0,2,15],"texture":"#end_rod"},"east":{"uv":[0,0,2,15],"texture":"#end_rod"}}}]},"end_stone":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/end_stone"}},"end_stone_brick_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/end_stone_bricks","side":"minecraft:block/end_stone_bricks","top":"minecraft:block/end_stone_bricks"}},"end_stone_brick_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/end_stone_bricks","side":"minecraft:block/end_stone_bricks","top":"minecraft:block/end_stone_bricks"}},"end_stone_brick_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/end_stone_bricks","side":"minecraft:block/end_stone_bricks","top":"minecraft:block/end_stone_bricks"}},"end_stone_brick_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/end_stone_bricks","side":"minecraft:block/end_stone_bricks","top":"minecraft:block/end_stone_bricks"}},"end_stone_brick_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/end_stone_bricks","side":"minecraft:block/end_stone_bricks","top":"minecraft:block/end_stone_bricks"}},"end_stone_brick_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/end_stone_bricks"}},"end_stone_brick_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/end_stone_bricks"}},"end_stone_brick_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/end_stone_bricks"}},"end_stone_brick_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/end_stone_bricks"}},"end_stone_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/end_stone_bricks"}},"ender_chest":{"textures":{"particle":"minecraft:block/obsidian"}},"exposed_chiseled_copper":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/exposed_chiseled_copper"}},"exposed_copper":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/exposed_copper"}},"exposed_copper_bars_cap":{"parent":"minecraft:block/template_bars_cap","textures":{"bars":"minecraft:block/exposed_copper_bars","edge":"minecraft:block/exposed_copper_bars"}},"exposed_copper_bars_cap_alt":{"parent":"minecraft:block/template_bars_cap_alt","textures":{"bars":"minecraft:block/exposed_copper_bars","edge":"minecraft:block/exposed_copper_bars"}},"exposed_copper_bars_post":{"parent":"minecraft:block/template_bars_post","textures":{"bars":"minecraft:block/exposed_copper_bars","edge":"minecraft:block/exposed_copper_bars"}},"exposed_copper_bars_post_ends":{"parent":"minecraft:block/template_bars_post_ends","textures":{"bars":"minecraft:block/exposed_copper_bars","edge":"minecraft:block/exposed_copper_bars"}},"exposed_copper_bars_side":{"parent":"minecraft:block/template_bars_side","textures":{"bars":"minecraft:block/exposed_copper_bars","edge":"minecraft:block/exposed_copper_bars"}},"exposed_copper_bars_side_alt":{"parent":"minecraft:block/template_bars_side_alt","textures":{"bars":"minecraft:block/exposed_copper_bars","edge":"minecraft:block/exposed_copper_bars"}},"exposed_copper_bulb":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/exposed_copper_bulb"}},"exposed_copper_bulb_lit":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/exposed_copper_bulb_lit"}},"exposed_copper_bulb_lit_powered":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/exposed_copper_bulb_lit_powered"}},"exposed_copper_bulb_powered":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/exposed_copper_bulb_powered"}},"exposed_copper_chain":{"parent":"minecraft:block/template_chain","textures":{"texture":"minecraft:block/exposed_copper_chain"}},"exposed_copper_chest":{"textures":{"particle":"minecraft:block/exposed_copper"}},"exposed_copper_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/exposed_copper_door_bottom","top":"minecraft:block/exposed_copper_door_top"}},"exposed_copper_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/exposed_copper_door_bottom","top":"minecraft:block/exposed_copper_door_top"}},"exposed_copper_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/exposed_copper_door_bottom","top":"minecraft:block/exposed_copper_door_top"}},"exposed_copper_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/exposed_copper_door_bottom","top":"minecraft:block/exposed_copper_door_top"}},"exposed_copper_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/exposed_copper_door_bottom","top":"minecraft:block/exposed_copper_door_top"}},"exposed_copper_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/exposed_copper_door_bottom","top":"minecraft:block/exposed_copper_door_top"}},"exposed_copper_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/exposed_copper_door_bottom","top":"minecraft:block/exposed_copper_door_top"}},"exposed_copper_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/exposed_copper_door_bottom","top":"minecraft:block/exposed_copper_door_top"}},"exposed_copper_golem_statue":{"textures":{"particle":"minecraft:block/exposed_copper"}},"exposed_copper_grate":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/exposed_copper_grate"}},"exposed_copper_lantern":{"parent":"minecraft:block/template_lantern","textures":{"lantern":"minecraft:block/exposed_copper_lantern"}},"exposed_copper_lantern_hanging":{"parent":"minecraft:block/template_hanging_lantern","textures":{"lantern":"minecraft:block/exposed_copper_lantern"}},"exposed_copper_trapdoor_bottom":{"parent":"minecraft:block/template_trapdoor_bottom","textures":{"texture":"minecraft:block/exposed_copper_trapdoor"}},"exposed_copper_trapdoor_open":{"parent":"minecraft:block/template_trapdoor_open","textures":{"texture":"minecraft:block/exposed_copper_trapdoor"}},"exposed_copper_trapdoor_top":{"parent":"minecraft:block/template_trapdoor_top","textures":{"texture":"minecraft:block/exposed_copper_trapdoor"}},"exposed_cut_copper":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/exposed_cut_copper"}},"exposed_cut_copper_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/exposed_cut_copper","side":"minecraft:block/exposed_cut_copper","top":"minecraft:block/exposed_cut_copper"}},"exposed_cut_copper_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/exposed_cut_copper","side":"minecraft:block/exposed_cut_copper","top":"minecraft:block/exposed_cut_copper"}},"exposed_cut_copper_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/exposed_cut_copper","side":"minecraft:block/exposed_cut_copper","top":"minecraft:block/exposed_cut_copper"}},"exposed_cut_copper_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/exposed_cut_copper","side":"minecraft:block/exposed_cut_copper","top":"minecraft:block/exposed_cut_copper"}},"exposed_cut_copper_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/exposed_cut_copper","side":"minecraft:block/exposed_cut_copper","top":"minecraft:block/exposed_cut_copper"}},"exposed_lightning_rod":{"parent":"minecraft:block/template_lightning_rod","textures":{"texture":"minecraft:block/exposed_lightning_rod"}},"farmland":{"parent":"minecraft:block/template_farmland","textures":{"dirt":"minecraft:block/dirt","top":"minecraft:block/farmland"}},"farmland_moist":{"parent":"minecraft:block/template_farmland","textures":{"dirt":"minecraft:block/dirt","top":"minecraft:block/farmland_moist"}},"fence_inventory":{"parent":"block/block","display":{"gui":{"rotation":[30,135,0],"translation":[0,0,0],"scale":[0.625,0.625,0.625]},"fixed":{"rotation":[0,90,0],"translation":[0,0,0],"scale":[0.5,0.5,0.5]},"on_shelf":{"rotation":[0,90,0],"translation":[0,0,0],"scale":[1,1,1]}},"textures":{"particle":"#texture"},"elements":[{"from":[6,0,0],"to":[10,16,4],"faces":{"down":{"uv":[6,0,10,4],"texture":"#texture","cullface":"down"},"up":{"uv":[6,0,10,4],"texture":"#texture"},"north":{"uv":[6,0,10,16],"texture":"#texture"},"south":{"uv":[6,0,10,16],"texture":"#texture"},"west":{"uv":[0,0,4,16],"texture":"#texture"},"east":{"uv":[0,0,4,16],"texture":"#texture"}},"__comment":"Left post"},{"from":[6,0,12],"to":[10,16,16],"faces":{"down":{"uv":[6,12,10,16],"texture":"#texture","cullface":"down"},"up":{"uv":[6,12,10,16],"texture":"#texture"},"north":{"uv":[6,0,10,16],"texture":"#texture"},"south":{"uv":[6,0,10,16],"texture":"#texture"},"west":{"uv":[12,0,16,16],"texture":"#texture"},"east":{"uv":[12,0,16,16],"texture":"#texture"}},"__comment":"Right post"},{"from":[7,12,0],"to":[9,15,16],"faces":{"down":{"uv":[7,0,9,16],"texture":"#texture"},"up":{"uv":[7,0,9,16],"texture":"#texture"},"west":{"uv":[0,1,16,4],"texture":"#texture"},"east":{"uv":[0,1,16,4],"texture":"#texture"}},"__comment":"Top bar"},{"from":[7,12,-2],"to":[9,15,0],"faces":{"down":{"uv":[7,0,9,2],"texture":"#texture"},"up":{"uv":[7,14,9,16],"texture":"#texture"},"north":{"uv":[7,1,9,4],"texture":"#texture"},"west":{"uv":[14,1,16,4],"texture":"#texture"},"east":{"uv":[0,1,2,4],"texture":"#texture"}},"__comment":"Top bar left"},{"from":[7,12,16],"to":[9,15,18],"faces":{"down":{"uv":[7,14,9,16],"texture":"#texture"},"up":{"uv":[7,0,9,2],"texture":"#texture"},"south":{"uv":[7,1,9,4],"texture":"#texture"},"west":{"uv":[0,1,2,4],"texture":"#texture"},"east":{"uv":[14,1,16,4],"texture":"#texture"}},"__comment":"Top bar right"},{"from":[7,6,0],"to":[9,9,16],"faces":{"down":{"uv":[7,0,9,16],"texture":"#texture"},"up":{"uv":[7,0,9,16],"texture":"#texture"},"west":{"uv":[0,7,16,10],"texture":"#texture"},"east":{"uv":[0,7,16,10],"texture":"#texture"}},"__comment":"Lower bar"},{"from":[7,6,-2],"to":[9,9,0],"faces":{"down":{"uv":[7,0,9,2],"texture":"#texture"},"up":{"uv":[7,14,9,16],"texture":"#texture"},"north":{"uv":[7,7,9,10],"texture":"#texture"},"west":{"uv":[14,7,16,10],"texture":"#texture"},"east":{"uv":[0,7,2,10],"texture":"#texture"}},"__comment":"Lower bar left"},{"from":[7,6,16],"to":[9,9,18],"faces":{"down":{"uv":[7,14,9,16],"texture":"#texture"},"up":{"uv":[7,0,9,2],"texture":"#texture"},"south":{"uv":[7,7,9,10],"texture":"#texture"},"west":{"uv":[0,7,2,10],"texture":"#texture"},"east":{"uv":[14,7,16,10],"texture":"#texture"}},"__comment":"Lower bar right"}]},"fence_post":{"textures":{"particle":"#texture"},"elements":[{"from":[6,0,6],"to":[10,16,10],"faces":{"down":{"uv":[6,6,10,10],"texture":"#texture","cullface":"down"},"up":{"uv":[6,6,10,10],"texture":"#texture","cullface":"up"},"north":{"uv":[6,0,10,16],"texture":"#texture"},"south":{"uv":[6,0,10,16],"texture":"#texture"},"west":{"uv":[6,0,10,16],"texture":"#texture"},"east":{"uv":[6,0,10,16],"texture":"#texture"}},"__comment":"Center post"}]},"fence_side":{"textures":{"particle":"#texture"},"elements":[{"from":[7,12,0],"to":[9,15,9],"faces":{"down":{"uv":[7,0,9,9],"texture":"#texture"},"up":{"uv":[7,0,9,9],"texture":"#texture"},"north":{"uv":[7,1,9,4],"texture":"#texture","cullface":"north"},"west":{"uv":[0,1,9,4],"texture":"#texture"},"east":{"uv":[0,1,9,4],"texture":"#texture"}},"__comment":"top bar"},{"from":[7,6,0],"to":[9,9,9],"faces":{"down":{"uv":[7,0,9,9],"texture":"#texture"},"up":{"uv":[7,0,9,9],"texture":"#texture"},"north":{"uv":[7,7,9,10],"texture":"#texture","cullface":"north"},"west":{"uv":[0,7,9,10],"texture":"#texture"},"east":{"uv":[0,7,9,10],"texture":"#texture"}},"__comment":"lower bar"}]},"fern":{"parent":"minecraft:block/tinted_cross","textures":{"cross":"minecraft:block/fern"}},"fire_coral":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/fire_coral"}},"fire_coral_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/fire_coral_block"}},"fire_coral_fan":{"parent":"minecraft:block/coral_fan","textures":{"fan":"minecraft:block/fire_coral_fan"}},"fire_coral_wall_fan":{"parent":"minecraft:block/coral_wall_fan","textures":{"fan":"minecraft:block/fire_coral_fan"}},"fire_floor0":{"parent":"minecraft:block/template_fire_floor","textures":{"fire":"minecraft:block/fire_0"}},"fire_floor1":{"parent":"minecraft:block/template_fire_floor","textures":{"fire":"minecraft:block/fire_1"}},"fire_side0":{"parent":"minecraft:block/template_fire_side","textures":{"fire":"minecraft:block/fire_0"}},"fire_side1":{"parent":"minecraft:block/template_fire_side","textures":{"fire":"minecraft:block/fire_1"}},"fire_side_alt0":{"parent":"minecraft:block/template_fire_side_alt","textures":{"fire":"minecraft:block/fire_0"}},"fire_side_alt1":{"parent":"minecraft:block/template_fire_side_alt","textures":{"fire":"minecraft:block/fire_1"}},"fire_up0":{"parent":"minecraft:block/template_fire_up","textures":{"fire":"minecraft:block/fire_0"}},"fire_up1":{"parent":"minecraft:block/template_fire_up","textures":{"fire":"minecraft:block/fire_1"}},"fire_up_alt0":{"parent":"minecraft:block/template_fire_up_alt","textures":{"fire":"minecraft:block/fire_0"}},"fire_up_alt1":{"parent":"minecraft:block/template_fire_up_alt","textures":{"fire":"minecraft:block/fire_1"}},"firefly_bush":{"parent":"minecraft:block/cross_emissive","textures":{"cross":"minecraft:block/firefly_bush","cross_emissive":"minecraft:block/firefly_bush_emissive"}},"fletching_table":{"parent":"minecraft:block/cube","textures":{"down":"minecraft:block/birch_planks","east":"minecraft:block/fletching_table_side","north":"minecraft:block/fletching_table_front","particle":"minecraft:block/fletching_table_front","south":"minecraft:block/fletching_table_front","up":"minecraft:block/fletching_table_top","west":"minecraft:block/fletching_table_side"}},"flower_pot":{"ambientocclusion":false,"textures":{"particle":"block/flower_pot","flowerpot":"block/flower_pot","dirt":"block/dirt"},"elements":[{"from":[5,0,5],"to":[6,6,11],"faces":{"down":{"uv":[5,5,6,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[5,5,6,11],"texture":"#flowerpot"},"north":{"uv":[10,10,11,16],"texture":"#flowerpot"},"south":{"uv":[5,10,6,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[10,0,5],"to":[11,6,11],"faces":{"down":{"uv":[10,5,11,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[10,5,11,11],"texture":"#flowerpot"},"north":{"uv":[5,10,6,16],"texture":"#flowerpot"},"south":{"uv":[10,10,11,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[6,0,5],"to":[10,6,6],"faces":{"down":{"uv":[6,10,10,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,5,10,6],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,10],"to":[10,6,11],"faces":{"down":{"uv":[6,5,10,6],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,10,10,11],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,6],"to":[10,4,10],"faces":{"down":{"uv":[6,12,10,16],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,6,10,10],"texture":"#dirt"}}}]},"flower_pot_cross":{"ambientocclusion":false,"textures":{"particle":"block/flower_pot","flowerpot":"block/flower_pot","dirt":"block/dirt"},"elements":[{"from":[5,0,5],"to":[6,6,11],"faces":{"down":{"uv":[5,5,6,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[5,5,6,11],"texture":"#flowerpot"},"north":{"uv":[10,10,11,16],"texture":"#flowerpot"},"south":{"uv":[5,10,6,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[10,0,5],"to":[11,6,11],"faces":{"down":{"uv":[10,5,11,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[10,5,11,11],"texture":"#flowerpot"},"north":{"uv":[5,10,6,16],"texture":"#flowerpot"},"south":{"uv":[10,10,11,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[6,0,5],"to":[10,6,6],"faces":{"down":{"uv":[6,10,10,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,5,10,6],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,10],"to":[10,6,11],"faces":{"down":{"uv":[6,5,10,6],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,10,10,11],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,6],"to":[10,4,10],"faces":{"down":{"uv":[6,12,10,16],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,6,10,10],"texture":"#dirt"}}},{"from":[2.6,4,8],"to":[13.4,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#plant"},"south":{"uv":[0,0,16,16],"texture":"#plant"}}},{"from":[8,4,2.6],"to":[8,16,13.4],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#plant"},"east":{"uv":[0,0,16,16],"texture":"#plant"}}}]},"flower_pot_cross_emissive":{"ambientocclusion":false,"textures":{"particle":"block/flower_pot","flowerpot":"block/flower_pot","dirt":"block/dirt"},"elements":[{"from":[5,0,5],"to":[6,6,11],"faces":{"down":{"uv":[5,5,6,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[5,5,6,11],"texture":"#flowerpot"},"north":{"uv":[10,10,11,16],"texture":"#flowerpot"},"south":{"uv":[5,10,6,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[10,0,5],"to":[11,6,11],"faces":{"down":{"uv":[10,5,11,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[10,5,11,11],"texture":"#flowerpot"},"north":{"uv":[5,10,6,16],"texture":"#flowerpot"},"south":{"uv":[10,10,11,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[6,0,5],"to":[10,6,6],"faces":{"down":{"uv":[6,10,10,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,5,10,6],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,10],"to":[10,6,11],"faces":{"down":{"uv":[6,5,10,6],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,10,10,11],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,6],"to":[10,4,10],"faces":{"down":{"uv":[6,12,10,16],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,6,10,10],"texture":"#dirt"}}},{"from":[2.6,4,8],"to":[13.4,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#plant"},"south":{"uv":[0,0,16,16],"texture":"#plant"}}},{"from":[8,4,2.6],"to":[8,16,13.4],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#plant"},"east":{"uv":[0,0,16,16],"texture":"#plant"}}},{"from":[2.6,4,8],"to":[13.4,16,8],"light_emission":15,"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#cross_emissive"},"south":{"uv":[0,0,16,16],"texture":"#cross_emissive"}}},{"from":[8,4,2.6],"to":[8,16,13.4],"light_emission":15,"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#cross_emissive"},"east":{"uv":[0,0,16,16],"texture":"#cross_emissive"}}}]},"flowerbed_1":{"ambientocclusion":false,"textures":{"particle":"#flowerbed"},"elements":[{"from":[0,2.99,0],"to":[8,2.99,8],"faces":{"up":{"uv":[0,0,8,8],"texture":"#flowerbed"},"down":{"uv":[0,8,8,0],"texture":"#flowerbed"}}},{"from":[4.25,0,-2.6],"to":[4.25,2.99,-1.6],"rotation":{"angle":-45,"axis":"y","origin":[0,0,0]},"faces":{"east":{"uv":[0,4,1,7],"texture":"#stem","tintindex":1},"west":{"uv":[0,4,1,7],"texture":"#stem","tintindex":1}}},{"from":[3.75,0,-2.1],"to":[4.75,2.99,-2.1],"rotation":{"angle":-45,"axis":"y","origin":[0,0,0]},"faces":{"north":{"uv":[0,4,1,7],"texture":"#stem","tintindex":1},"south":{"uv":[0,4,1,7],"texture":"#stem","tintindex":1}}},{"from":[4.9,0,2.3],"to":[4.9,2.99,3.3],"rotation":{"angle":-45,"axis":"y","origin":[0,0,0]},"faces":{"east":{"uv":[0,4,1,7],"texture":"#stem","tintindex":1},"west":{"uv":[0,4,1,7],"texture":"#stem","tintindex":1}}},{"from":[4.4,0,2.8],"to":[5.4,2.99,2.8],"rotation":{"angle":-45,"axis":"y","origin":[0,0,0]},"faces":{"north":{"uv":[0,4,1,7],"texture":"#stem","tintindex":1},"south":{"uv":[0,4,1,7],"texture":"#stem","tintindex":1}}},{"from":[9.15,0,-0.45],"to":[9.15,2.99,0.55],"rotation":{"angle":-45,"axis":"y","origin":[0,0,0]},"faces":{"east":{"uv":[0,4,1,7],"texture":"#stem","tintindex":1},"west":{"uv":[0,4,1,7],"texture":"#stem","tintindex":1}}},{"from":[8.65,0,0.05],"to":[9.65,2.99,0.05],"rotation":{"angle":-45,"axis":"y","origin":[0,0,0]},"faces":{"north":{"uv":[0,4,1,7],"texture":"#stem","tintindex":1},"south":{"uv":[0,4,1,7],"texture":"#stem","tintindex":1}}}]},"flowerbed_2":{"ambientocclusion":false,"textures":{"particle":"#flowerbed"},"elements":[{"from":[0,1,8],"to":[8,1,16],"faces":{"up":{"uv":[0,8,8,16],"texture":"#flowerbed"},"down":{"uv":[0,16,8,8],"texture":"#flowerbed"}}},{"from":[0,1,8],"to":[8,1,16],"faces":{"up":{"uv":[0,8,8,16],"texture":"#flowerbed"},"down":{"uv":[0,16,8,8],"texture":"#flowerbed"}}},{"from":[10.15,0,5.25],"to":[11.15,1,5.25],"rotation":{"angle":-45,"axis":"y","origin":[0,0,1]},"faces":{"north":{"uv":[0,6,1,7],"texture":"#stem","tintindex":1},"south":{"uv":[0,6,1,7],"texture":"#stem","tintindex":1}}},{"from":[10.65,0,4.75],"to":[10.65,1,5.75],"rotation":{"angle":-45,"axis":"y","origin":[0,0,1]},"faces":{"east":{"uv":[0,6,1,7],"texture":"#stem","tintindex":1},"west":{"uv":[0,6,1,7],"texture":"#stem","tintindex":1}}}]},"flowerbed_3":{"ambientocclusion":false,"textures":{"particle":"#flowerbed"},"elements":[{"from":[8,2,8],"to":[16,2,16],"faces":{"up":{"uv":[8,8,16,16],"texture":"#flowerbed"},"down":{"uv":[8,16,16,8],"texture":"#flowerbed"}}},{"from":[17.65,0,1.9],"to":[18.65,2,1.9],"rotation":{"angle":-45,"axis":"y","origin":[0.5,0,0.5]},"faces":{"north":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1},"south":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1}}},{"from":[18.15,0,1.4],"to":[18.15,2,2.4],"rotation":{"angle":-45,"axis":"y","origin":[0.5,0,0.5]},"faces":{"east":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1},"west":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1}}},{"from":[17.65,0,-3.35],"to":[17.65,2,-2.35],"rotation":{"angle":-45,"axis":"y","origin":[0,0,0]},"faces":{"east":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1},"west":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1}}},{"from":[17.15,0,-2.85],"to":[18.15,2,-2.85],"rotation":{"angle":-45,"axis":"y","origin":[0,0,0]},"faces":{"north":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1},"south":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1}}},{"from":[13.4,0,-0.5],"to":[13.4,2,0.5],"rotation":{"angle":-45,"axis":"y","origin":[0,0,0]},"faces":{"east":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1},"west":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1}}},{"from":[12.9,0,0],"to":[13.9,2,0],"rotation":{"angle":-45,"axis":"y","origin":[0,0,0]},"faces":{"north":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1},"south":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1}}}]},"flowerbed_4":{"ambientocclusion":false,"textures":{"particle":"#flowerbed"},"elements":[{"from":[8,2,0],"to":[16,2,8],"faces":{"up":{"uv":[8,0,16,8],"texture":"#flowerbed"},"down":{"uv":[8,8,16,0],"texture":"#flowerbed"}}},{"from":[12.4,0,-7.7],"to":[12.4,2,-6.7],"rotation":{"angle":-45,"axis":"y","origin":[-1,0,-3]},"faces":{"east":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1},"west":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1}}},{"from":[11.9,0,-7.2],"to":[12.9,2,-7.2],"rotation":{"angle":-45,"axis":"y","origin":[-1,0,-3]},"faces":{"north":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1},"south":{"uv":[0,5,1,7],"texture":"#stem","tintindex":1}}}]},"flowering_azalea":{"parent":"minecraft:block/template_azalea","textures":{"side":"minecraft:block/flowering_azalea_side","top":"minecraft:block/flowering_azalea_top"}},"flowering_azalea_leaves":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/flowering_azalea_leaves"}},"four_dead_sea_pickles":{"parent":"block/block","textures":{"particle":"block/sea_pickle","all":"block/sea_pickle"},"elements":[{"from":[2,0,2],"to":[6,6,6],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,11],"texture":"#all"},"south":{"uv":[0,5,4,11],"texture":"#all"},"west":{"uv":[8,5,12,11],"texture":"#all"},"east":{"uv":[12,5,16,11],"texture":"#all"}}},{"from":[2,5.95,2],"to":[6,5.95,6],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[9,0,10],"to":[13,4,14],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,9],"texture":"#all"},"south":{"uv":[0,5,4,9],"texture":"#all"},"west":{"uv":[8,5,12,9],"texture":"#all"},"east":{"uv":[12,5,16,9],"texture":"#all"}}},{"from":[9,3.95,10],"to":[13,3.95,14],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[9,0,2],"to":[13,6,6],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,11],"texture":"#all"},"south":{"uv":[0,5,4,11],"texture":"#all"},"west":{"uv":[8,5,12,11],"texture":"#all"},"east":{"uv":[12,5,16,11],"texture":"#all"}}},{"from":[9,5.95,2],"to":[13,5.95,6],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[2,0,8],"to":[6,7,12],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,12],"texture":"#all"},"south":{"uv":[0,5,4,12],"texture":"#all"},"west":{"uv":[8,5,12,12],"texture":"#all"},"east":{"uv":[12,5,16,12],"texture":"#all"}}},{"from":[2,6.95,8],"to":[6,6.95,12],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}}]},"four_sea_pickles":{"parent":"block/block","textures":{"particle":"block/sea_pickle","all":"block/sea_pickle"},"elements":[{"from":[2,0,2],"to":[6,6,6],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,11],"texture":"#all"},"south":{"uv":[0,5,4,11],"texture":"#all"},"west":{"uv":[8,5,12,11],"texture":"#all"},"east":{"uv":[12,5,16,11],"texture":"#all"}}},{"from":[2,5.95,2],"to":[6,5.95,6],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[9,0,10],"to":[13,4,14],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,9],"texture":"#all"},"south":{"uv":[0,5,4,9],"texture":"#all"},"west":{"uv":[8,5,12,9],"texture":"#all"},"east":{"uv":[12,5,16,9],"texture":"#all"}}},{"from":[9,3.95,10],"to":[13,3.95,14],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[9,0,2],"to":[13,6,6],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,11],"texture":"#all"},"south":{"uv":[0,5,4,11],"texture":"#all"},"west":{"uv":[8,5,12,11],"texture":"#all"},"east":{"uv":[12,5,16,11],"texture":"#all"}}},{"from":[9,5.95,2],"to":[13,5.95,6],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[2,0,8],"to":[6,7,12],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,12],"texture":"#all"},"south":{"uv":[0,5,4,12],"texture":"#all"},"west":{"uv":[8,5,12,12],"texture":"#all"},"east":{"uv":[12,5,16,12],"texture":"#all"}}},{"from":[2,6.95,8],"to":[6,6.95,12],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[3.5,5.2,4],"to":[4.5,8.7,4],"rotation":{"origin":[4,8,4],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[1,0,3,5],"texture":"#all"},"south":{"uv":[3,0,1,5],"texture":"#all"}}},{"from":[4,5.2,3.5],"to":[4,8.7,4.5],"rotation":{"origin":[4,8,4],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[13,0,15,5],"texture":"#all"},"east":{"uv":[15,0,13,5],"texture":"#all"}}},{"from":[10.5,3.2,12],"to":[11.5,6.7,12],"rotation":{"origin":[11,8,12],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[1,0,3,5],"texture":"#all"},"south":{"uv":[3,0,1,5],"texture":"#all"}}},{"from":[11,3.2,11.5],"to":[11,6.7,12.5],"rotation":{"origin":[11,8,12],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[13,0,15,5],"texture":"#all"},"east":{"uv":[15,0,13,5],"texture":"#all"}}},{"from":[10.5,5.2,4],"to":[11.5,8.7,4],"rotation":{"origin":[11,8,4],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[1,0,3,5],"texture":"#all"},"south":{"uv":[3,0,1,5],"texture":"#all"}}},{"from":[11,5.2,3.5],"to":[11,8.7,4.5],"rotation":{"origin":[11,8,4],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[13,0,15,5],"texture":"#all"},"east":{"uv":[15,0,13,5],"texture":"#all"}}},{"from":[3.5,6.2,10],"to":[4.5,9.7,10],"rotation":{"origin":[4,8,10],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[1,0,3,5],"texture":"#all"},"south":{"uv":[3,0,1,5],"texture":"#all"}}},{"from":[4,6.2,9.5],"to":[4,9.7,10.5],"rotation":{"origin":[4,8,10],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[13,0,15,5],"texture":"#all"},"east":{"uv":[15,0,13,5],"texture":"#all"}}}]},"four_slightly_cracked_turtle_eggs":{"parent":"minecraft:block/template_four_turtle_eggs","textures":{"all":"minecraft:block/turtle_egg_slightly_cracked"}},"four_turtle_eggs":{"parent":"minecraft:block/template_four_turtle_eggs","textures":{"all":"minecraft:block/turtle_egg"}},"four_very_cracked_turtle_eggs":{"parent":"minecraft:block/template_four_turtle_eggs","textures":{"all":"minecraft:block/turtle_egg_very_cracked"}},"frogspawn":{"ambientocclusion":false,"textures":{"particle":"block/frogspawn","texture":"block/frogspawn"},"elements":[{"from":[0,0.25,0],"to":[16,0.25,16],"faces":{"down":{"uv":[0,16,16,0],"texture":"#texture"},"up":{"uv":[0,0,16,16],"texture":"#texture"}}}]},"frosted_ice_0":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/frosted_ice_0"}},"frosted_ice_1":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/frosted_ice_1"}},"frosted_ice_2":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/frosted_ice_2"}},"frosted_ice_3":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/frosted_ice_3"}},"furnace":{"parent":"minecraft:block/orientable","textures":{"front":"minecraft:block/furnace_front","side":"minecraft:block/furnace_side","top":"minecraft:block/furnace_top"}},"furnace_on":{"parent":"minecraft:block/orientable","textures":{"front":"minecraft:block/furnace_front_on","side":"minecraft:block/furnace_side","top":"minecraft:block/furnace_top"}},"gilded_blackstone":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/gilded_blackstone"}},"glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/glass"}},"glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/glass"}},"glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/glass"}},"glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/glass_pane_top","pane":"minecraft:block/glass"}},"glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/glass_pane_top","pane":"minecraft:block/glass"}},"glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/glass_pane_top","pane":"minecraft:block/glass"}},"glow_item_frame":{"parent":"minecraft:block/template_item_frame","textures":{"particle":"block/birch_planks","wood":"block/birch_planks","back":"block/glow_item_frame"}},"glow_item_frame_map":{"parent":"minecraft:block/template_item_frame_map","textures":{"particle":"block/birch_planks","wood":"block/birch_planks","back":"block/glow_item_frame"}},"glow_lichen":{"ambientocclusion":false,"textures":{"particle":"block/glow_lichen","glow_lichen":"block/glow_lichen"},"elements":[{"from":[0,0,0.1],"to":[16,16,0.1],"faces":{"north":{"uv":[16,0,0,16],"texture":"#glow_lichen"},"south":{"uv":[0,0,16,16],"texture":"#glow_lichen"}}}]},"glowstone":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/glowstone"}},"gold_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/gold_block"}},"gold_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/gold_ore"}},"granite":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/granite"}},"granite_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/granite","side":"minecraft:block/granite","top":"minecraft:block/granite"}},"granite_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/granite","side":"minecraft:block/granite","top":"minecraft:block/granite"}},"granite_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/granite","side":"minecraft:block/granite","top":"minecraft:block/granite"}},"granite_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/granite","side":"minecraft:block/granite","top":"minecraft:block/granite"}},"granite_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/granite","side":"minecraft:block/granite","top":"minecraft:block/granite"}},"granite_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/granite"}},"granite_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/granite"}},"granite_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/granite"}},"granite_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/granite"}},"grass_block":{"parent":"block/block","textures":{"particle":"block/dirt","bottom":"block/dirt","top":"block/grass_block_top","side":"block/grass_block_side","overlay":"block/grass_block_side_overlay"},"elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top","cullface":"up","tintindex":0},"north":{"uv":[0,0,16,16],"texture":"#side","cullface":"north"},"south":{"uv":[0,0,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#side","cullface":"west"},"east":{"uv":[0,0,16,16],"texture":"#side","cullface":"east"}}},{"from":[0,0,0],"to":[16,16,16],"faces":{"north":{"uv":[0,0,16,16],"texture":"#overlay","tintindex":0,"cullface":"north"},"south":{"uv":[0,0,16,16],"texture":"#overlay","tintindex":0,"cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#overlay","tintindex":0,"cullface":"west"},"east":{"uv":[0,0,16,16],"texture":"#overlay","tintindex":0,"cullface":"east"}}}]},"grass_block_snow":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/dirt","particle":"minecraft:block/dirt","side":"minecraft:block/grass_block_snow","top":"minecraft:block/grass_block_top"}},"gravel":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/gravel"}},"gray_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/gray_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"gray_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/gray_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"gray_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/gray_candle","particle":"minecraft:block/gray_candle"}},"gray_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/gray_candle_lit","particle":"minecraft:block/gray_candle_lit"}},"gray_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/gray_candle","particle":"minecraft:block/gray_candle"}},"gray_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/gray_candle_lit","particle":"minecraft:block/gray_candle_lit"}},"gray_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/gray_candle","particle":"minecraft:block/gray_candle"}},"gray_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/gray_candle_lit","particle":"minecraft:block/gray_candle_lit"}},"gray_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/gray_candle","particle":"minecraft:block/gray_candle"}},"gray_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/gray_candle_lit","particle":"minecraft:block/gray_candle_lit"}},"gray_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/gray_wool"}},"gray_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/gray_concrete"}},"gray_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/gray_concrete_powder"}},"gray_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/gray_glazed_terracotta"}},"gray_shulker_box":{"textures":{"particle":"minecraft:block/gray_shulker_box"}},"gray_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/gray_stained_glass"}},"gray_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/gray_stained_glass"}},"gray_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/gray_stained_glass"}},"gray_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/gray_stained_glass_pane_top","pane":"minecraft:block/gray_stained_glass"}},"gray_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/gray_stained_glass_pane_top","pane":"minecraft:block/gray_stained_glass"}},"gray_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/gray_stained_glass_pane_top","pane":"minecraft:block/gray_stained_glass"}},"gray_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/gray_terracotta"}},"gray_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/gray_wool"}},"green_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/green_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"green_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/green_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"green_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/green_candle","particle":"minecraft:block/green_candle"}},"green_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/green_candle_lit","particle":"minecraft:block/green_candle_lit"}},"green_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/green_candle","particle":"minecraft:block/green_candle"}},"green_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/green_candle_lit","particle":"minecraft:block/green_candle_lit"}},"green_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/green_candle","particle":"minecraft:block/green_candle"}},"green_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/green_candle_lit","particle":"minecraft:block/green_candle_lit"}},"green_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/green_candle","particle":"minecraft:block/green_candle"}},"green_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/green_candle_lit","particle":"minecraft:block/green_candle_lit"}},"green_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/green_wool"}},"green_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/green_concrete"}},"green_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/green_concrete_powder"}},"green_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/green_glazed_terracotta"}},"green_shulker_box":{"textures":{"particle":"minecraft:block/green_shulker_box"}},"green_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/green_stained_glass"}},"green_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/green_stained_glass"}},"green_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/green_stained_glass"}},"green_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/green_stained_glass_pane_top","pane":"minecraft:block/green_stained_glass"}},"green_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/green_stained_glass_pane_top","pane":"minecraft:block/green_stained_glass"}},"green_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/green_stained_glass_pane_top","pane":"minecraft:block/green_stained_glass"}},"green_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/green_terracotta"}},"green_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/green_wool"}},"grindstone":{"parent":"block/block","textures":{"pivot":"block/grindstone_pivot","round":"block/grindstone_round","side":"block/grindstone_side","particle":"block/grindstone_side","leg":"block/dark_oak_log"},"elements":[{"from":[12,0,6],"to":[14,7,10],"faces":{"north":{"uv":[2,9,4,16],"texture":"#leg"},"east":{"uv":[10,16,6,9],"texture":"#leg"},"south":{"uv":[12,9,14,16],"texture":"#leg"},"west":{"uv":[6,9,10,16],"texture":"#leg"},"down":{"uv":[12,6,14,10],"texture":"#leg","cullface":"down"}}},{"from":[2,0,6],"to":[4,7,10],"faces":{"north":{"uv":[12,9,14,16],"texture":"#leg"},"east":{"uv":[10,16,6,9],"texture":"#leg"},"south":{"uv":[2,9,4,16],"texture":"#leg"},"west":{"uv":[6,9,10,16],"texture":"#leg"},"down":{"uv":[2,6,4,10],"texture":"#leg","cullface":"down"}}},{"from":[12,7,5],"to":[14,13,11],"faces":{"north":{"uv":[6,0,8,6],"texture":"#pivot"},"east":{"uv":[0,0,6,6],"texture":"#pivot"},"south":{"uv":[6,0,8,6],"texture":"#pivot"},"up":{"uv":[8,0,10,6],"texture":"#pivot"},"down":{"uv":[8,0,10,6],"texture":"#pivot"}}},{"from":[2,7,5],"to":[4,13,11],"faces":{"north":{"uv":[6,0,8,6],"texture":"#pivot"},"south":{"uv":[6,0,8,6],"texture":"#pivot"},"west":{"uv":[0,0,6,6],"texture":"#pivot"},"up":{"uv":[8,0,10,6],"texture":"#pivot"},"down":{"uv":[8,0,10,6],"texture":"#pivot"}}},{"from":[4,4,2],"to":[12,16,14],"faces":{"north":{"uv":[0,0,8,12],"texture":"#round"},"east":{"uv":[0,0,12,12],"texture":"#side"},"south":{"uv":[0,0,8,12],"texture":"#round"},"west":{"uv":[0,0,12,12],"texture":"#side"},"up":{"uv":[0,0,8,12],"texture":"#round","cullface":"up"},"down":{"uv":[0,0,8,12],"texture":"#round"}}}]},"hanging_roots":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/hanging_roots"}},"hay_block":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/hay_block_top","side":"minecraft:block/hay_block_side"}},"hay_block_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/hay_block_top","side":"minecraft:block/hay_block_side"}},"heavy_core":{"display":{"gui":{"rotation":[30,225,0],"translation":[0,3,0],"scale":[1,1,1]},"ground":{"rotation":[0,0,0],"translation":[0,3,0],"scale":[0.5,0.5,0.5]},"fixed":{"rotation":[0,180,0],"translation":[0,4,0],"scale":[1,1,1]},"thirdperson_righthand":{"rotation":[45,45,0],"translation":[0,3,0],"scale":[0.5,0.5,0.5]}},"texture_size":[16,16],"textures":{"all":"block/heavy_core","particle":"block/heavy_core"},"elements":[{"name":"heavy_core","from":[4,0,4],"to":[12,8,12],"faces":{"north":{"uv":[0,8,8,16],"texture":"all"},"east":{"uv":[0,8,8,16],"texture":"all"},"south":{"uv":[0,8,8,16],"texture":"all"},"west":{"uv":[0,8,8,16],"texture":"all"},"up":{"uv":[0,0,8,8],"texture":"all"},"down":{"uv":[8,0,16,8],"texture":"all"}}}]},"heavy_weighted_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/iron_block"}},"heavy_weighted_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/iron_block"}},"honey_block":{"parent":"block/block","textures":{"particle":"block/honey_block_top","down":"block/honey_block_bottom","up":"block/honey_block_top","side":"block/honey_block_side"},"elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"texture":"#down","cullface":"down"},"up":{"texture":"#down","cullface":"up"},"north":{"texture":"#down","cullface":"north"},"south":{"texture":"#down","cullface":"south"},"west":{"texture":"#down","cullface":"west"},"east":{"texture":"#down","cullface":"east"}}},{"from":[1,1,1],"to":[15,15,15],"faces":{"down":{"uv":[1,1,15,15],"texture":"#down"},"up":{"uv":[1,1,15,15],"texture":"#up"},"north":{"uv":[1,1,15,15],"texture":"#side"},"south":{"uv":[1,1,15,15],"texture":"#side"},"west":{"uv":[1,1,15,15],"texture":"#side"},"east":{"uv":[1,1,15,15],"texture":"#side"}}}]},"honeycomb_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/honeycomb_block"}},"hopper":{"ambientocclusion":false,"textures":{"particle":"block/hopper_outside","top":"block/hopper_top","side":"block/hopper_outside","inside":"block/hopper_inside"},"elements":[{"from":[0,10,0],"to":[16,11,16],"faces":{"down":{"texture":"#inside"},"up":{"texture":"#inside","cullface":"up"},"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"east":{"texture":"#side","cullface":"east"}}},{"from":[0,11,0],"to":[2,16,16],"faces":{"up":{"texture":"#top","cullface":"up"},"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"east":{"texture":"#side","cullface":"up"}}},{"from":[14,11,0],"to":[16,16,16],"faces":{"up":{"texture":"#top","cullface":"up"},"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"up"},"east":{"texture":"#side","cullface":"east"}}},{"from":[2,11,0],"to":[14,16,2],"faces":{"up":{"texture":"#top","cullface":"up"},"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side","cullface":"up"}}},{"from":[2,11,14],"to":[14,16,16],"faces":{"up":{"texture":"#top","cullface":"up"},"north":{"texture":"#side","cullface":"up"},"south":{"texture":"#side","cullface":"south"}}},{"from":[4,4,4],"to":[12,10,12],"faces":{"down":{"texture":"#inside"},"north":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side"},"east":{"texture":"#side"}}},{"from":[6,0,6],"to":[10,4,10],"faces":{"down":{"texture":"#inside","cullface":"down"},"north":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side"},"east":{"texture":"#side"}}}]},"hopper_side":{"ambientocclusion":false,"textures":{"particle":"block/hopper_outside","top":"block/hopper_top","side":"block/hopper_outside","inside":"block/hopper_inside"},"elements":[{"from":[0,10,0],"to":[16,11,16],"faces":{"down":{"texture":"#inside"},"up":{"texture":"#inside","cullface":"up"},"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"east":{"texture":"#side","cullface":"east"}}},{"from":[0,11,0],"to":[2,16,16],"faces":{"up":{"texture":"#top","cullface":"up"},"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"east":{"texture":"#side","cullface":"up"}}},{"from":[14,11,0],"to":[16,16,16],"faces":{"up":{"texture":"#top","cullface":"up"},"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"up"},"east":{"texture":"#side","cullface":"east"}}},{"from":[2,11,0],"to":[14,16,2],"faces":{"up":{"texture":"#top","cullface":"up"},"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side","cullface":"up"}}},{"from":[2,11,14],"to":[14,16,16],"faces":{"up":{"texture":"#top","cullface":"up"},"north":{"texture":"#side","cullface":"up"},"south":{"texture":"#side","cullface":"south"}}},{"from":[4,4,4],"to":[12,10,12],"faces":{"down":{"texture":"#inside"},"north":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side"},"east":{"texture":"#side"}}},{"from":[6,4,0],"to":[10,8,4],"faces":{"down":{"texture":"#inside"},"up":{"texture":"#side"},"north":{"texture":"#side","cullface":"north"},"west":{"texture":"#side"},"east":{"texture":"#side"}}}]},"horn_coral":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/horn_coral"}},"horn_coral_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/horn_coral_block"}},"horn_coral_fan":{"parent":"minecraft:block/coral_fan","textures":{"fan":"minecraft:block/horn_coral_fan"}},"horn_coral_wall_fan":{"parent":"minecraft:block/coral_wall_fan","textures":{"fan":"minecraft:block/horn_coral_fan"}},"ice":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/ice"}},"inner_stairs":{"textures":{"particle":"#side"},"elements":[{"from":[0,0,0],"to":[16,8,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,8,16,16],"texture":"#side","cullface":"north"},"south":{"uv":[0,8,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,8,16,16],"texture":"#side","cullface":"west"},"east":{"uv":[0,8,16,16],"texture":"#side","cullface":"east"}}},{"from":[8,8,0],"to":[16,16,16],"faces":{"up":{"uv":[8,0,16,16],"texture":"#top","cullface":"up"},"north":{"uv":[0,0,8,8],"texture":"#side","cullface":"north"},"south":{"uv":[8,0,16,8],"texture":"#side","cullface":"south"},"west":{"uv":[0,0,16,8],"texture":"#side"},"east":{"uv":[0,0,16,8],"texture":"#side","cullface":"east"}}},{"from":[0,8,8],"to":[8,16,16],"faces":{"up":{"uv":[0,8,8,16],"texture":"#top","cullface":"up"},"north":{"uv":[8,0,16,8],"texture":"#side"},"south":{"uv":[0,0,8,8],"texture":"#side","cullface":"south"},"west":{"uv":[8,0,16,8],"texture":"#side","cullface":"west"}}}]},"iron_bars_cap":{"parent":"minecraft:block/template_bars_cap","textures":{"bars":"minecraft:block/iron_bars","edge":"minecraft:block/iron_bars"}},"iron_bars_cap_alt":{"parent":"minecraft:block/template_bars_cap_alt","textures":{"bars":"minecraft:block/iron_bars","edge":"minecraft:block/iron_bars"}},"iron_bars_post":{"parent":"minecraft:block/template_bars_post","textures":{"bars":"minecraft:block/iron_bars","edge":"minecraft:block/iron_bars"}},"iron_bars_post_ends":{"parent":"minecraft:block/template_bars_post_ends","textures":{"bars":"minecraft:block/iron_bars","edge":"minecraft:block/iron_bars"}},"iron_bars_side":{"parent":"minecraft:block/template_bars_side","textures":{"bars":"minecraft:block/iron_bars","edge":"minecraft:block/iron_bars"}},"iron_bars_side_alt":{"parent":"minecraft:block/template_bars_side_alt","textures":{"bars":"minecraft:block/iron_bars","edge":"minecraft:block/iron_bars"}},"iron_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/iron_block"}},"iron_chain":{"parent":"minecraft:block/template_chain","textures":{"texture":"minecraft:block/iron_chain"}},"iron_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/iron_door_bottom","top":"minecraft:block/iron_door_top"}},"iron_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/iron_door_bottom","top":"minecraft:block/iron_door_top"}},"iron_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/iron_door_bottom","top":"minecraft:block/iron_door_top"}},"iron_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/iron_door_bottom","top":"minecraft:block/iron_door_top"}},"iron_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/iron_door_bottom","top":"minecraft:block/iron_door_top"}},"iron_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/iron_door_bottom","top":"minecraft:block/iron_door_top"}},"iron_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/iron_door_bottom","top":"minecraft:block/iron_door_top"}},"iron_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/iron_door_bottom","top":"minecraft:block/iron_door_top"}},"iron_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/iron_ore"}},"iron_trapdoor_bottom":{"parent":"minecraft:block/template_trapdoor_bottom","textures":{"texture":"minecraft:block/iron_trapdoor"}},"iron_trapdoor_open":{"parent":"minecraft:block/template_trapdoor_open","textures":{"texture":"minecraft:block/iron_trapdoor"}},"iron_trapdoor_top":{"parent":"minecraft:block/template_trapdoor_top","textures":{"texture":"minecraft:block/iron_trapdoor"}},"item_frame":{"parent":"minecraft:block/template_item_frame","textures":{"particle":"block/birch_planks","wood":"block/birch_planks","back":"block/item_frame"}},"item_frame_map":{"parent":"minecraft:block/template_item_frame_map","textures":{"particle":"block/birch_planks","wood":"block/birch_planks","back":"block/item_frame"}},"jack_o_lantern":{"parent":"minecraft:block/orientable","textures":{"front":"minecraft:block/jack_o_lantern","side":"minecraft:block/pumpkin_side","top":"minecraft:block/pumpkin_top"}},"jigsaw":{"parent":"minecraft:block/cube_directional","textures":{"down":"minecraft:block/jigsaw_side","east":"minecraft:block/jigsaw_side","north":"minecraft:block/jigsaw_top","particle":"minecraft:block/jigsaw_top","south":"minecraft:block/jigsaw_bottom","up":"minecraft:block/jigsaw_lock","west":"minecraft:block/jigsaw_side"}},"jukebox":{"parent":"minecraft:block/cube_top","textures":{"side":"minecraft:block/jukebox_side","top":"minecraft:block/jukebox_top"}},"jungle_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/jungle_planks"}},"jungle_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/jungle_planks"}},"jungle_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/jungle_planks"}},"jungle_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/jungle_door_bottom","top":"minecraft:block/jungle_door_top"}},"jungle_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/jungle_door_bottom","top":"minecraft:block/jungle_door_top"}},"jungle_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/jungle_door_bottom","top":"minecraft:block/jungle_door_top"}},"jungle_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/jungle_door_bottom","top":"minecraft:block/jungle_door_top"}},"jungle_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/jungle_door_bottom","top":"minecraft:block/jungle_door_top"}},"jungle_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/jungle_door_bottom","top":"minecraft:block/jungle_door_top"}},"jungle_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/jungle_door_bottom","top":"minecraft:block/jungle_door_top"}},"jungle_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/jungle_door_bottom","top":"minecraft:block/jungle_door_top"}},"jungle_fence_gate":{"parent":"minecraft:block/template_fence_gate","textures":{"texture":"minecraft:block/jungle_planks"}},"jungle_fence_gate_open":{"parent":"minecraft:block/template_fence_gate_open","textures":{"texture":"minecraft:block/jungle_planks"}},"jungle_fence_gate_wall":{"parent":"minecraft:block/template_fence_gate_wall","textures":{"texture":"minecraft:block/jungle_planks"}},"jungle_fence_gate_wall_open":{"parent":"minecraft:block/template_fence_gate_wall_open","textures":{"texture":"minecraft:block/jungle_planks"}},"jungle_fence_inventory":{"parent":"minecraft:block/fence_inventory","textures":{"texture":"minecraft:block/jungle_planks"}},"jungle_fence_post":{"parent":"minecraft:block/fence_post","textures":{"texture":"minecraft:block/jungle_planks"}},"jungle_fence_side":{"parent":"minecraft:block/fence_side","textures":{"texture":"minecraft:block/jungle_planks"}},"jungle_hanging_sign":{"textures":{"particle":"minecraft:block/stripped_jungle_log"}},"jungle_leaves":{"parent":"minecraft:block/leaves","textures":{"all":"minecraft:block/jungle_leaves"}},"jungle_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/jungle_log_top","side":"minecraft:block/jungle_log"}},"jungle_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/jungle_log_top","side":"minecraft:block/jungle_log"}},"jungle_planks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/jungle_planks"}},"jungle_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/jungle_planks"}},"jungle_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/jungle_planks"}},"jungle_sapling":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/jungle_sapling"}},"jungle_shelf":{"parent":"minecraft:block/template_shelf_body","textures":{"all":"minecraft:block/jungle_shelf","particle":"minecraft:block/stripped_jungle_log"}},"jungle_shelf_center":{"parent":"minecraft:block/template_shelf_center","textures":{"all":"minecraft:block/jungle_shelf","particle":"minecraft:block/stripped_jungle_log"}},"jungle_shelf_inventory":{"parent":"minecraft:block/template_shelf_inventory","textures":{"all":"minecraft:block/jungle_shelf","particle":"minecraft:block/stripped_jungle_log"}},"jungle_shelf_left":{"parent":"minecraft:block/template_shelf_left","textures":{"all":"minecraft:block/jungle_shelf","particle":"minecraft:block/stripped_jungle_log"}},"jungle_shelf_right":{"parent":"minecraft:block/template_shelf_right","textures":{"all":"minecraft:block/jungle_shelf","particle":"minecraft:block/stripped_jungle_log"}},"jungle_shelf_unconnected":{"parent":"minecraft:block/template_shelf_unconnected","textures":{"all":"minecraft:block/jungle_shelf","particle":"minecraft:block/stripped_jungle_log"}},"jungle_shelf_unpowered":{"parent":"minecraft:block/template_shelf_unpowered","textures":{"all":"minecraft:block/jungle_shelf","particle":"minecraft:block/stripped_jungle_log"}},"jungle_sign":{"textures":{"particle":"minecraft:block/jungle_planks"}},"jungle_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/jungle_planks","side":"minecraft:block/jungle_planks","top":"minecraft:block/jungle_planks"}},"jungle_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/jungle_planks","side":"minecraft:block/jungle_planks","top":"minecraft:block/jungle_planks"}},"jungle_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/jungle_planks","side":"minecraft:block/jungle_planks","top":"minecraft:block/jungle_planks"}},"jungle_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/jungle_planks","side":"minecraft:block/jungle_planks","top":"minecraft:block/jungle_planks"}},"jungle_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/jungle_planks","side":"minecraft:block/jungle_planks","top":"minecraft:block/jungle_planks"}},"jungle_trapdoor_bottom":{"parent":"minecraft:block/template_orientable_trapdoor_bottom","textures":{"texture":"minecraft:block/jungle_trapdoor"}},"jungle_trapdoor_open":{"parent":"minecraft:block/template_orientable_trapdoor_open","textures":{"texture":"minecraft:block/jungle_trapdoor"}},"jungle_trapdoor_top":{"parent":"minecraft:block/template_orientable_trapdoor_top","textures":{"texture":"minecraft:block/jungle_trapdoor"}},"jungle_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/jungle_log","side":"minecraft:block/jungle_log"}},"kelp":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/kelp"}},"kelp_plant":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/kelp_plant"}},"ladder":{"ambientocclusion":false,"textures":{"particle":"block/ladder","texture":"block/ladder"},"elements":[{"from":[0,0,15.2],"to":[16,16,15.2],"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#texture"},"south":{"uv":[16,0,0,16],"texture":"#texture"}}}]},"lantern":{"parent":"minecraft:block/template_lantern","textures":{"lantern":"minecraft:block/lantern"}},"lantern_hanging":{"parent":"minecraft:block/template_hanging_lantern","textures":{"lantern":"minecraft:block/lantern"}},"lapis_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/lapis_block"}},"lapis_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/lapis_ore"}},"large_amethyst_bud":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/large_amethyst_bud"}},"large_fern_bottom":{"parent":"minecraft:block/tinted_cross","textures":{"cross":"minecraft:block/large_fern_bottom"}},"large_fern_top":{"parent":"minecraft:block/tinted_cross","textures":{"cross":"minecraft:block/large_fern_top"}},"lava":{"textures":{"particle":"block/lava_still"}},"lava_cauldron":{"parent":"minecraft:block/template_cauldron_full","textures":{"bottom":"minecraft:block/cauldron_bottom","content":"minecraft:block/lava_still","inside":"minecraft:block/cauldron_inner","particle":"minecraft:block/cauldron_side","side":"minecraft:block/cauldron_side","top":"minecraft:block/cauldron_top"}},"leaf_litter_1":{"parent":"minecraft:block/template_leaf_litter_1","textures":{"texture":"minecraft:block/leaf_litter"}},"leaf_litter_2":{"parent":"minecraft:block/template_leaf_litter_2","textures":{"texture":"minecraft:block/leaf_litter"}},"leaf_litter_3":{"parent":"minecraft:block/template_leaf_litter_3","textures":{"texture":"minecraft:block/leaf_litter"}},"leaf_litter_4":{"parent":"minecraft:block/template_leaf_litter_4","textures":{"texture":"minecraft:block/leaf_litter"}},"leaves":{"parent":"block/block","textures":{"particle":"#all"},"elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#all","tintindex":0,"cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#all","tintindex":0,"cullface":"up"},"north":{"uv":[0,0,16,16],"texture":"#all","tintindex":0,"cullface":"north"},"south":{"uv":[0,0,16,16],"texture":"#all","tintindex":0,"cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#all","tintindex":0,"cullface":"west"},"east":{"uv":[0,0,16,16],"texture":"#all","tintindex":0,"cullface":"east"}}}]},"lectern":{"parent":"block/block","display":{"firstperson_righthand":{"rotation":[0,135,0],"translation":[0,0,0],"scale":[0.4,0.4,0.4]},"gui":{"rotation":[30,225,0],"translation":[0,0,0],"scale":[0.6,0.6,0.6]}},"textures":{"particle":"block/lectern_sides","bottom":"block/oak_planks","base":"block/lectern_base","front":"block/lectern_front","sides":"block/lectern_sides","top":"block/lectern_top"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"north":{"uv":[0,14,16,16],"texture":"#base","cullface":"north"},"east":{"uv":[0,6,16,8],"texture":"#base","cullface":"east"},"south":{"uv":[0,6,16,8],"texture":"#base","cullface":"south"},"west":{"uv":[0,6,16,8],"texture":"#base","cullface":"west"},"up":{"uv":[0,0,16,16],"rotation":180,"texture":"#base"},"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"}}},{"from":[4,2,4],"to":[12,15,12],"faces":{"north":{"uv":[0,0,8,13],"texture":"#front"},"east":{"uv":[2,16,15,8],"rotation":90,"texture":"#sides"},"south":{"uv":[8,3,16,16],"texture":"#front"},"west":{"uv":[2,8,15,16],"rotation":90,"texture":"#sides"}}},{"from":[0.0125,12,3],"to":[15.9875,16,16],"rotation":{"angle":-22.5,"axis":"x","origin":[8,8,8]},"faces":{"north":{"uv":[0,0,16,4],"texture":"#sides"},"east":{"uv":[0,4,13,8],"texture":"#sides"},"south":{"uv":[0,4,16,8],"texture":"#sides"},"west":{"uv":[0,4,13,8],"texture":"#sides"},"up":{"uv":[0,1,16,14],"rotation":180,"texture":"#top"},"down":{"uv":[0,0,16,13],"texture":"#bottom"}}}]},"lever":{"ambientocclusion":false,"textures":{"particle":"block/cobblestone","base":"block/cobblestone","lever":"block/lever"},"elements":[{"from":[5,-0.02,4],"to":[11,2.98,12],"faces":{"down":{"uv":[5,4,11,12],"texture":"#base","cullface":"down"},"up":{"uv":[5,4,11,12],"texture":"#base"},"north":{"uv":[5,0,11,3],"texture":"#base"},"south":{"uv":[5,0,11,3],"texture":"#base"},"west":{"uv":[4,0,12,3],"texture":"#base"},"east":{"uv":[4,0,12,3],"texture":"#base"}}},{"from":[7,1,7],"to":[9,11,9],"rotation":{"origin":[8,1,8],"axis":"x","angle":-45},"faces":{"up":{"uv":[7,6,9,8],"texture":"#lever"},"north":{"uv":[7,6,9,16],"texture":"#lever"},"south":{"uv":[7,6,9,16],"texture":"#lever"},"west":{"uv":[7,6,9,16],"texture":"#lever"},"east":{"uv":[7,6,9,16],"texture":"#lever"}}}]},"lever_on":{"ambientocclusion":false,"textures":{"particle":"block/cobblestone","base":"block/cobblestone","lever":"block/lever"},"elements":[{"from":[5,-0.02,4],"to":[11,2.98,12],"faces":{"down":{"uv":[5,4,11,12],"texture":"#base","cullface":"down"},"up":{"uv":[5,4,11,12],"texture":"#base"},"north":{"uv":[5,0,11,3],"texture":"#base"},"south":{"uv":[5,0,11,3],"texture":"#base"},"west":{"uv":[4,0,12,3],"texture":"#base"},"east":{"uv":[4,0,12,3],"texture":"#base"}}},{"from":[7,1,7],"to":[9,11,9],"rotation":{"origin":[8,1,8],"axis":"x","angle":45},"faces":{"up":{"uv":[7,6,9,8],"texture":"#lever"},"north":{"uv":[7,6,9,16],"texture":"#lever"},"south":{"uv":[7,6,9,16],"texture":"#lever"},"west":{"uv":[7,6,9,16],"texture":"#lever"},"east":{"uv":[7,6,9,16],"texture":"#lever"}}}]},"light_00":{"textures":{"particle":"minecraft:item/light_00"}},"light_01":{"textures":{"particle":"minecraft:item/light_01"}},"light_02":{"textures":{"particle":"minecraft:item/light_02"}},"light_03":{"textures":{"particle":"minecraft:item/light_03"}},"light_04":{"textures":{"particle":"minecraft:item/light_04"}},"light_05":{"textures":{"particle":"minecraft:item/light_05"}},"light_06":{"textures":{"particle":"minecraft:item/light_06"}},"light_07":{"textures":{"particle":"minecraft:item/light_07"}},"light_08":{"textures":{"particle":"minecraft:item/light_08"}},"light_09":{"textures":{"particle":"minecraft:item/light_09"}},"light_10":{"textures":{"particle":"minecraft:item/light_10"}},"light_11":{"textures":{"particle":"minecraft:item/light_11"}},"light_12":{"textures":{"particle":"minecraft:item/light_12"}},"light_13":{"textures":{"particle":"minecraft:item/light_13"}},"light_14":{"textures":{"particle":"minecraft:item/light_14"}},"light_15":{"textures":{"particle":"minecraft:item/light_15"}},"light_blue_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/light_blue_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"light_blue_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/light_blue_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"light_blue_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/light_blue_candle","particle":"minecraft:block/light_blue_candle"}},"light_blue_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/light_blue_candle_lit","particle":"minecraft:block/light_blue_candle_lit"}},"light_blue_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/light_blue_candle","particle":"minecraft:block/light_blue_candle"}},"light_blue_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/light_blue_candle_lit","particle":"minecraft:block/light_blue_candle_lit"}},"light_blue_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/light_blue_candle","particle":"minecraft:block/light_blue_candle"}},"light_blue_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/light_blue_candle_lit","particle":"minecraft:block/light_blue_candle_lit"}},"light_blue_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/light_blue_candle","particle":"minecraft:block/light_blue_candle"}},"light_blue_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/light_blue_candle_lit","particle":"minecraft:block/light_blue_candle_lit"}},"light_blue_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/light_blue_wool"}},"light_blue_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/light_blue_concrete"}},"light_blue_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/light_blue_concrete_powder"}},"light_blue_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/light_blue_glazed_terracotta"}},"light_blue_shulker_box":{"textures":{"particle":"minecraft:block/light_blue_shulker_box"}},"light_blue_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/light_blue_stained_glass"}},"light_blue_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/light_blue_stained_glass"}},"light_blue_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/light_blue_stained_glass"}},"light_blue_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/light_blue_stained_glass_pane_top","pane":"minecraft:block/light_blue_stained_glass"}},"light_blue_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/light_blue_stained_glass_pane_top","pane":"minecraft:block/light_blue_stained_glass"}},"light_blue_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/light_blue_stained_glass_pane_top","pane":"minecraft:block/light_blue_stained_glass"}},"light_blue_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/light_blue_terracotta"}},"light_blue_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/light_blue_wool"}},"light_gray_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/light_gray_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"light_gray_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/light_gray_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"light_gray_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/light_gray_candle","particle":"minecraft:block/light_gray_candle"}},"light_gray_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/light_gray_candle_lit","particle":"minecraft:block/light_gray_candle_lit"}},"light_gray_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/light_gray_candle","particle":"minecraft:block/light_gray_candle"}},"light_gray_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/light_gray_candle_lit","particle":"minecraft:block/light_gray_candle_lit"}},"light_gray_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/light_gray_candle","particle":"minecraft:block/light_gray_candle"}},"light_gray_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/light_gray_candle_lit","particle":"minecraft:block/light_gray_candle_lit"}},"light_gray_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/light_gray_candle","particle":"minecraft:block/light_gray_candle"}},"light_gray_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/light_gray_candle_lit","particle":"minecraft:block/light_gray_candle_lit"}},"light_gray_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/light_gray_wool"}},"light_gray_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/light_gray_concrete"}},"light_gray_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/light_gray_concrete_powder"}},"light_gray_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/light_gray_glazed_terracotta"}},"light_gray_shulker_box":{"textures":{"particle":"minecraft:block/light_gray_shulker_box"}},"light_gray_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/light_gray_stained_glass"}},"light_gray_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/light_gray_stained_glass"}},"light_gray_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/light_gray_stained_glass"}},"light_gray_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/light_gray_stained_glass_pane_top","pane":"minecraft:block/light_gray_stained_glass"}},"light_gray_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/light_gray_stained_glass_pane_top","pane":"minecraft:block/light_gray_stained_glass"}},"light_gray_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/light_gray_stained_glass_pane_top","pane":"minecraft:block/light_gray_stained_glass"}},"light_gray_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/light_gray_terracotta"}},"light_gray_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/light_gray_wool"}},"light_weighted_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/gold_block"}},"light_weighted_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/gold_block"}},"lightning_rod":{"parent":"minecraft:block/template_lightning_rod","textures":{"texture":"minecraft:block/lightning_rod"}},"lightning_rod_on":{"parent":"block/template_lightning_rod","textures":{"texture":"block/lightning_rod_on"}},"lilac_bottom":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/lilac_bottom"}},"lilac_top":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/lilac_top"}},"lily_of_the_valley":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/lily_of_the_valley"}},"lily_pad":{"ambientocclusion":false,"textures":{"particle":"block/lily_pad","texture":"block/lily_pad"},"elements":[{"from":[0,0.25,0],"to":[16,0.25,16],"faces":{"down":{"uv":[0,16,16,0],"texture":"#texture","tintindex":0},"up":{"uv":[0,0,16,16],"texture":"#texture","tintindex":0}}}]},"lime_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/lime_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"lime_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/lime_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"lime_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/lime_candle","particle":"minecraft:block/lime_candle"}},"lime_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/lime_candle_lit","particle":"minecraft:block/lime_candle_lit"}},"lime_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/lime_candle","particle":"minecraft:block/lime_candle"}},"lime_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/lime_candle_lit","particle":"minecraft:block/lime_candle_lit"}},"lime_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/lime_candle","particle":"minecraft:block/lime_candle"}},"lime_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/lime_candle_lit","particle":"minecraft:block/lime_candle_lit"}},"lime_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/lime_candle","particle":"minecraft:block/lime_candle"}},"lime_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/lime_candle_lit","particle":"minecraft:block/lime_candle_lit"}},"lime_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/lime_wool"}},"lime_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/lime_concrete"}},"lime_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/lime_concrete_powder"}},"lime_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/lime_glazed_terracotta"}},"lime_shulker_box":{"textures":{"particle":"minecraft:block/lime_shulker_box"}},"lime_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/lime_stained_glass"}},"lime_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/lime_stained_glass"}},"lime_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/lime_stained_glass"}},"lime_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/lime_stained_glass_pane_top","pane":"minecraft:block/lime_stained_glass"}},"lime_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/lime_stained_glass_pane_top","pane":"minecraft:block/lime_stained_glass"}},"lime_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/lime_stained_glass_pane_top","pane":"minecraft:block/lime_stained_glass"}},"lime_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/lime_terracotta"}},"lime_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/lime_wool"}},"lodestone":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/lodestone_top","side":"minecraft:block/lodestone_side"}},"loom":{"parent":"minecraft:block/orientable_with_bottom","textures":{"bottom":"minecraft:block/loom_bottom","front":"minecraft:block/loom_front","side":"minecraft:block/loom_side","top":"minecraft:block/loom_top"}},"magenta_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/magenta_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"magenta_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/magenta_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"magenta_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/magenta_candle","particle":"minecraft:block/magenta_candle"}},"magenta_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/magenta_candle_lit","particle":"minecraft:block/magenta_candle_lit"}},"magenta_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/magenta_candle","particle":"minecraft:block/magenta_candle"}},"magenta_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/magenta_candle_lit","particle":"minecraft:block/magenta_candle_lit"}},"magenta_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/magenta_candle","particle":"minecraft:block/magenta_candle"}},"magenta_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/magenta_candle_lit","particle":"minecraft:block/magenta_candle_lit"}},"magenta_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/magenta_candle","particle":"minecraft:block/magenta_candle"}},"magenta_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/magenta_candle_lit","particle":"minecraft:block/magenta_candle_lit"}},"magenta_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/magenta_wool"}},"magenta_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/magenta_concrete"}},"magenta_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/magenta_concrete_powder"}},"magenta_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/magenta_glazed_terracotta"}},"magenta_shulker_box":{"textures":{"particle":"minecraft:block/magenta_shulker_box"}},"magenta_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/magenta_stained_glass"}},"magenta_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/magenta_stained_glass"}},"magenta_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/magenta_stained_glass"}},"magenta_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/magenta_stained_glass_pane_top","pane":"minecraft:block/magenta_stained_glass"}},"magenta_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/magenta_stained_glass_pane_top","pane":"minecraft:block/magenta_stained_glass"}},"magenta_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/magenta_stained_glass_pane_top","pane":"minecraft:block/magenta_stained_glass"}},"magenta_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/magenta_terracotta"}},"magenta_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/magenta_wool"}},"magma_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/magma"}},"mangrove_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/mangrove_planks"}},"mangrove_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/mangrove_planks"}},"mangrove_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/mangrove_planks"}},"mangrove_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/mangrove_door_bottom","top":"minecraft:block/mangrove_door_top"}},"mangrove_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/mangrove_door_bottom","top":"minecraft:block/mangrove_door_top"}},"mangrove_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/mangrove_door_bottom","top":"minecraft:block/mangrove_door_top"}},"mangrove_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/mangrove_door_bottom","top":"minecraft:block/mangrove_door_top"}},"mangrove_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/mangrove_door_bottom","top":"minecraft:block/mangrove_door_top"}},"mangrove_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/mangrove_door_bottom","top":"minecraft:block/mangrove_door_top"}},"mangrove_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/mangrove_door_bottom","top":"minecraft:block/mangrove_door_top"}},"mangrove_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/mangrove_door_bottom","top":"minecraft:block/mangrove_door_top"}},"mangrove_fence_gate":{"parent":"minecraft:block/template_fence_gate","textures":{"texture":"minecraft:block/mangrove_planks"}},"mangrove_fence_gate_open":{"parent":"minecraft:block/template_fence_gate_open","textures":{"texture":"minecraft:block/mangrove_planks"}},"mangrove_fence_gate_wall":{"parent":"minecraft:block/template_fence_gate_wall","textures":{"texture":"minecraft:block/mangrove_planks"}},"mangrove_fence_gate_wall_open":{"parent":"minecraft:block/template_fence_gate_wall_open","textures":{"texture":"minecraft:block/mangrove_planks"}},"mangrove_fence_inventory":{"parent":"minecraft:block/fence_inventory","textures":{"texture":"minecraft:block/mangrove_planks"}},"mangrove_fence_post":{"parent":"minecraft:block/fence_post","textures":{"texture":"minecraft:block/mangrove_planks"}},"mangrove_fence_side":{"parent":"minecraft:block/fence_side","textures":{"texture":"minecraft:block/mangrove_planks"}},"mangrove_hanging_sign":{"textures":{"particle":"minecraft:block/stripped_mangrove_log"}},"mangrove_leaves":{"parent":"minecraft:block/leaves","textures":{"all":"minecraft:block/mangrove_leaves"}},"mangrove_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/mangrove_log_top","side":"minecraft:block/mangrove_log"}},"mangrove_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/mangrove_log_top","side":"minecraft:block/mangrove_log"}},"mangrove_planks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/mangrove_planks"}},"mangrove_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/mangrove_planks"}},"mangrove_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/mangrove_planks"}},"mangrove_propagule":{"ambientocclusion":false,"textures":{"particle":"block/mangrove_propagule","sapling":"block/mangrove_propagule"},"elements":[{"name":"leaves","from":[4.5,9,8],"to":[11.5,15,8],"rotation":{"angle":45,"axis":"y","origin":[8,0,8],"rescale":true},"faces":{"north":{"uv":[4,1,11,7],"texture":"#sapling"},"south":{"uv":[4,1,11,7],"texture":"#sapling"}}},{"name":"leaves","from":[8,9,4.5],"to":[8,15,11.5],"rotation":{"angle":45,"axis":"y","origin":[8,0,8],"rescale":true},"faces":{"east":{"uv":[4,1,11,7],"texture":"#sapling"},"west":{"uv":[4,1,11,7],"texture":"#sapling"}}},{"name":"hypocotyl","from":[8,0,7],"to":[8,9,9],"rotation":{"angle":45,"axis":"y","origin":[8,0,8],"rescale":true},"faces":{"east":{"uv":[7,7,9,16],"texture":"#sapling"},"west":{"uv":[7,7,9,16],"texture":"#sapling"}}},{"name":"hypocotyl","from":[7,0,8],"to":[9,9,8],"rotation":{"angle":45,"axis":"y","origin":[8,0,8],"rescale":true},"faces":{"north":{"uv":[7,7,9,16],"texture":"#sapling"},"south":{"uv":[7,7,9,16],"texture":"#sapling"}}}]},"mangrove_propagule_hanging_0":{"parent":"block/block","textures":{"propagule":"block/mangrove_propagule_hanging","particle":"block/mangrove_propagule_hanging"},"elements":[{"from":[7,13.61104,10.07193],"to":[9,13.61104,12.07193],"rotation":{"angle":22.5,"axis":"x","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":180,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"texture":"#propagule"}}},{"from":[10.07193,13.61104,7],"to":[12.07193,13.61104,9],"rotation":{"angle":-22.5,"axis":"z","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":90,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":90,"texture":"#propagule"}}},{"from":[7,13.61104,3.92807],"to":[9,13.61104,5.92807],"rotation":{"angle":-22.5,"axis":"x","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":180,"texture":"#propagule"}}},{"from":[3.92807,13.61104,7],"to":[5.92807,13.61104,9],"rotation":{"angle":22.5,"axis":"z","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":270,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":270,"texture":"#propagule"}}},{"from":[7,13,7],"to":[9,14,9],"rotation":{"angle":0,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,2,2,3],"texture":"#propagule"},"east":{"uv":[0,2,2,3],"texture":"#propagule"},"south":{"uv":[0,2,2,3],"texture":"#propagule"},"west":{"uv":[0,2,2,3],"texture":"#propagule"},"up":{"uv":[0,0,2,2],"texture":"#propagule"},"down":{"uv":[0,3,2,5],"texture":"#propagule"}}},{"from":[7,14,8],"to":[9,16,8],"rotation":{"angle":-45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,2],"texture":"#propagule"},"east":{"uv":[0,0,0,2],"texture":"#propagule"},"south":{"uv":[0,0,2,2],"texture":"#propagule"},"west":{"uv":[0,0,0,2],"texture":"#propagule"},"up":{"uv":[0,0,2,0],"texture":"#propagule"},"down":{"uv":[0,0,2,0],"texture":"#propagule"}}},{"from":[7,14,8],"to":[9,16,8],"rotation":{"angle":45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,2],"texture":"#propagule"},"east":{"uv":[0,0,0,2],"texture":"#propagule"},"south":{"uv":[0,0,2,2],"texture":"#propagule"},"west":{"uv":[0,0,0,2],"texture":"#propagule"},"up":{"uv":[0,0,2,0],"texture":"#propagule"},"down":{"uv":[0,0,2,0],"texture":"#propagule"}}}]},"mangrove_propagule_hanging_1":{"parent":"block/block","textures":{"propagule":"block/mangrove_propagule_hanging","particle":"block/mangrove_propagule_hanging"},"elements":[{"from":[7,10,7],"to":[9,13,9],"rotation":{"angle":0,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,7,2,10],"texture":"#propagule"},"east":{"uv":[0,7,2,10],"texture":"#propagule"},"south":{"uv":[0,7,2,10],"texture":"#propagule"},"west":{"uv":[0,7,2,10],"texture":"#propagule"},"up":{"uv":[0,5,2,7],"texture":"#propagule"},"down":{"uv":[0,5,2,7],"texture":"#propagule"}}},{"from":[7,13.61104,10.07193],"to":[9,13.61104,12.07193],"rotation":{"angle":22.5,"axis":"x","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":180,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"texture":"#propagule"}}},{"from":[10.07193,13.61104,7],"to":[12.07193,13.61104,9],"rotation":{"angle":-22.5,"axis":"z","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":90,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":90,"texture":"#propagule"}}},{"from":[7,13.61104,3.92807],"to":[9,13.61104,5.92807],"rotation":{"angle":-22.5,"axis":"x","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":180,"texture":"#propagule"}}},{"from":[3.92807,13.61104,7],"to":[5.92807,13.61104,9],"rotation":{"angle":22.5,"axis":"z","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":270,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":270,"texture":"#propagule"}}},{"from":[7,13,7],"to":[9,14,9],"rotation":{"angle":0,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,2,2,3],"texture":"#propagule"},"east":{"uv":[0,2,2,3],"texture":"#propagule"},"south":{"uv":[0,2,2,3],"texture":"#propagule"},"west":{"uv":[0,2,2,3],"texture":"#propagule"},"up":{"uv":[0,0,2,2],"texture":"#propagule"},"down":{"uv":[0,3,2,5],"texture":"#propagule"}}},{"from":[7,14,8],"to":[9,16,8],"rotation":{"angle":-45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,2],"texture":"#propagule"},"east":{"uv":[0,0,0,2],"texture":"#propagule"},"south":{"uv":[0,0,2,2],"texture":"#propagule"},"west":{"uv":[0,0,0,2],"texture":"#propagule"},"up":{"uv":[0,0,2,0],"texture":"#propagule"},"down":{"uv":[0,0,2,0],"texture":"#propagule"}}},{"from":[7,14,8],"to":[9,16,8],"rotation":{"angle":45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,2],"texture":"#propagule"},"east":{"uv":[0,0,0,2],"texture":"#propagule"},"south":{"uv":[0,0,2,2],"texture":"#propagule"},"west":{"uv":[0,0,0,2],"texture":"#propagule"},"up":{"uv":[0,0,2,0],"texture":"#propagule"},"down":{"uv":[0,0,2,0],"texture":"#propagule"}}}]},"mangrove_propagule_hanging_2":{"parent":"block/block","textures":{"propagule":"block/mangrove_propagule_hanging","particle":"block/mangrove_propagule_hanging"},"elements":[{"from":[7,10,7],"to":[9,13,9],"rotation":{"angle":0,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,7,2,10],"texture":"#propagule"},"east":{"uv":[0,7,2,10],"texture":"#propagule"},"south":{"uv":[0,7,2,10],"texture":"#propagule"},"west":{"uv":[0,7,2,10],"texture":"#propagule"},"up":{"uv":[0,5,2,7],"texture":"#propagule"},"down":{"uv":[0,10,2,12],"texture":"#propagule"}}},{"from":[7,13.61104,10.07193],"to":[9,13.61104,12.07193],"rotation":{"angle":22.5,"axis":"x","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":180,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"texture":"#propagule"}}},{"from":[10.07193,13.61104,7],"to":[12.07193,13.61104,9],"rotation":{"angle":-22.5,"axis":"z","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":90,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":90,"texture":"#propagule"}}},{"from":[7,13.61104,3.92807],"to":[9,13.61104,5.92807],"rotation":{"angle":-22.5,"axis":"x","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":180,"texture":"#propagule"}}},{"from":[3.92807,13.61104,7],"to":[5.92807,13.61104,9],"rotation":{"angle":22.5,"axis":"z","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":270,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":270,"texture":"#propagule"}}},{"from":[7,13,7],"to":[9,14,9],"rotation":{"angle":0,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,2,2,3],"texture":"#propagule"},"east":{"uv":[0,2,2,3],"texture":"#propagule"},"south":{"uv":[0,2,2,3],"texture":"#propagule"},"west":{"uv":[0,2,2,3],"texture":"#propagule"},"up":{"uv":[0,0,2,2],"texture":"#propagule"},"down":{"uv":[0,3,2,5],"texture":"#propagule"}}},{"from":[7,14,8],"to":[9,16,8],"rotation":{"angle":-45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,2],"texture":"#propagule"},"east":{"uv":[0,0,0,2],"texture":"#propagule"},"south":{"uv":[0,0,2,2],"texture":"#propagule"},"west":{"uv":[0,0,0,2],"texture":"#propagule"},"up":{"uv":[0,0,2,0],"texture":"#propagule"},"down":{"uv":[0,0,2,0],"texture":"#propagule"}}},{"from":[7,14,8],"to":[9,16,8],"rotation":{"angle":45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,2],"texture":"#propagule"},"east":{"uv":[0,0,0,2],"texture":"#propagule"},"south":{"uv":[0,0,2,2],"texture":"#propagule"},"west":{"uv":[0,0,0,2],"texture":"#propagule"},"up":{"uv":[0,0,2,0],"texture":"#propagule"},"down":{"uv":[0,0,2,0],"texture":"#propagule"}}},{"from":[7,7,8],"to":[9,10,8],"rotation":{"angle":45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[3,7,5,10],"texture":"#propagule"},"east":{"uv":[13,0,13,10],"texture":"#propagule"},"south":{"uv":[3,7,5,10],"texture":"#propagule"},"west":{"uv":[11,0,11,10],"texture":"#propagule"},"up":{"uv":[11,0,13,0],"texture":"#propagule"},"down":{"uv":[11,10,13,10],"texture":"#propagule"}}},{"from":[7,7,8],"to":[9,10,8],"rotation":{"angle":-45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[3,7,5,10],"texture":"#propagule"},"east":{"uv":[11,0,11,10],"texture":"#propagule"},"south":{"uv":[3,7,5,10],"texture":"#propagule"},"west":{"uv":[13,0,13,10],"texture":"#propagule"},"up":{"uv":[11,0,13,0],"rotation":180,"texture":"#propagule"},"down":{"uv":[11,10,13,10],"rotation":180,"texture":"#propagule"}}}]},"mangrove_propagule_hanging_3":{"parent":"block/block","textures":{"propagule":"block/mangrove_propagule_hanging","particle":"block/mangrove_propagule_hanging"},"elements":[{"from":[7,10,7],"to":[9,13,9],"rotation":{"angle":0,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,7,2,10],"texture":"#propagule"},"east":{"uv":[0,7,2,10],"texture":"#propagule"},"south":{"uv":[0,7,2,10],"texture":"#propagule"},"west":{"uv":[0,7,2,10],"texture":"#propagule"},"up":{"uv":[0,5,2,7],"texture":"#propagule"},"down":{"uv":[0,10,2,12],"texture":"#propagule"}}},{"from":[7,13.61104,10.07193],"to":[9,13.61104,12.07193],"rotation":{"angle":22.5,"axis":"x","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":180,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"texture":"#propagule"}}},{"from":[10.07193,13.61104,7],"to":[12.07193,13.61104,9],"rotation":{"angle":-22.5,"axis":"z","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":90,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":90,"texture":"#propagule"}}},{"from":[7,13.61104,3.92807],"to":[9,13.61104,5.92807],"rotation":{"angle":-22.5,"axis":"x","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":180,"texture":"#propagule"}}},{"from":[3.92807,13.61104,7],"to":[5.92807,13.61104,9],"rotation":{"angle":22.5,"axis":"z","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":270,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":270,"texture":"#propagule"}}},{"from":[7,13,7],"to":[9,14,9],"rotation":{"angle":0,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,2,2,3],"texture":"#propagule"},"east":{"uv":[0,2,2,3],"texture":"#propagule"},"south":{"uv":[0,2,2,3],"texture":"#propagule"},"west":{"uv":[0,2,2,3],"texture":"#propagule"},"up":{"uv":[0,0,2,2],"texture":"#propagule"},"down":{"uv":[0,3,2,5],"texture":"#propagule"}}},{"from":[7,14,8],"to":[9,16,8],"rotation":{"angle":-45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,2],"texture":"#propagule"},"east":{"uv":[0,0,0,2],"texture":"#propagule"},"south":{"uv":[0,0,2,2],"texture":"#propagule"},"west":{"uv":[0,0,0,2],"texture":"#propagule"},"up":{"uv":[0,0,2,0],"texture":"#propagule"},"down":{"uv":[0,0,2,0],"texture":"#propagule"}}},{"from":[7,14,8],"to":[9,16,8],"rotation":{"angle":45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,2],"texture":"#propagule"},"east":{"uv":[0,0,0,2],"texture":"#propagule"},"south":{"uv":[0,0,2,2],"texture":"#propagule"},"west":{"uv":[0,0,0,2],"texture":"#propagule"},"up":{"uv":[0,0,2,0],"texture":"#propagule"},"down":{"uv":[0,0,2,0],"texture":"#propagule"}}},{"from":[7,3,8],"to":[9,10,8],"rotation":{"angle":45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[3,3,5,10],"texture":"#propagule"},"east":{"uv":[13,0,13,10],"texture":"#propagule"},"south":{"uv":[3,3,5,10],"texture":"#propagule"},"west":{"uv":[11,0,11,10],"texture":"#propagule"},"up":{"uv":[11,0,13,0],"texture":"#propagule"},"down":{"uv":[11,10,13,10],"texture":"#propagule"}}},{"from":[7,3,8],"to":[9,10,8],"rotation":{"angle":-45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[3,3,5,10],"texture":"#propagule"},"east":{"uv":[11,0,11,10],"texture":"#propagule"},"south":{"uv":[3,3,5,10],"texture":"#propagule"},"west":{"uv":[13,0,13,10],"texture":"#propagule"},"up":{"uv":[11,0,13,0],"rotation":180,"texture":"#propagule"},"down":{"uv":[11,10,13,10],"rotation":180,"texture":"#propagule"}}}]},"mangrove_propagule_hanging_4":{"parent":"block/block","textures":{"propagule":"block/mangrove_propagule_hanging","particle":"block/mangrove_propagule_hanging"},"elements":[{"from":[7,10,7],"to":[9,13,9],"rotation":{"angle":0,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,7,2,10],"texture":"#propagule"},"east":{"uv":[0,7,2,10],"texture":"#propagule"},"south":{"uv":[0,7,2,10],"texture":"#propagule"},"west":{"uv":[0,7,2,10],"texture":"#propagule"},"up":{"uv":[0,5,2,7],"texture":"#propagule"},"down":{"uv":[0,10,2,12],"texture":"#propagule"}}},{"from":[7,13.61104,10.07193],"to":[9,13.61104,12.07193],"rotation":{"angle":22.5,"axis":"x","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":180,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"texture":"#propagule"}}},{"from":[10.07193,13.61104,7],"to":[12.07193,13.61104,9],"rotation":{"angle":-22.5,"axis":"z","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":90,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":90,"texture":"#propagule"}}},{"from":[7,13.61104,3.92807],"to":[9,13.61104,5.92807],"rotation":{"angle":-22.5,"axis":"x","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":180,"texture":"#propagule"}}},{"from":[3.92807,13.61104,7],"to":[5.92807,13.61104,9],"rotation":{"angle":22.5,"axis":"z","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,0],"texture":"#propagule"},"east":{"uv":[0,0,2,0],"texture":"#propagule"},"south":{"uv":[0,0,2,0],"texture":"#propagule"},"west":{"uv":[0,0,2,0],"texture":"#propagule"},"up":{"uv":[8,3,10,5],"rotation":270,"texture":"#propagule"},"down":{"uv":[6,3,8,5],"rotation":270,"texture":"#propagule"}}},{"from":[7,13,7],"to":[9,14,9],"rotation":{"angle":0,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,2,2,3],"texture":"#propagule"},"east":{"uv":[0,2,2,3],"texture":"#propagule"},"south":{"uv":[0,2,2,3],"texture":"#propagule"},"west":{"uv":[0,2,2,3],"texture":"#propagule"},"up":{"uv":[0,0,2,2],"texture":"#propagule"},"down":{"uv":[0,3,2,5],"texture":"#propagule"}}},{"from":[7,14,8],"to":[9,16,8],"rotation":{"angle":-45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,2],"texture":"#propagule"},"east":{"uv":[0,0,0,2],"texture":"#propagule"},"south":{"uv":[0,0,2,2],"texture":"#propagule"},"west":{"uv":[0,0,0,2],"texture":"#propagule"},"up":{"uv":[0,0,2,0],"texture":"#propagule"},"down":{"uv":[0,0,2,0],"texture":"#propagule"}}},{"from":[7,14,8],"to":[9,16,8],"rotation":{"angle":45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,2,2],"texture":"#propagule"},"east":{"uv":[0,0,0,2],"texture":"#propagule"},"south":{"uv":[0,0,2,2],"texture":"#propagule"},"west":{"uv":[0,0,0,2],"texture":"#propagule"},"up":{"uv":[0,0,2,0],"texture":"#propagule"},"down":{"uv":[0,0,2,0],"texture":"#propagule"}}},{"from":[7,0,8],"to":[9,10,8],"rotation":{"angle":45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[3,0,5,10],"texture":"#propagule"},"east":{"uv":[13,0,13,10],"texture":"#propagule"},"south":{"uv":[3,0,5,10],"texture":"#propagule"},"west":{"uv":[11,0,11,10],"texture":"#propagule"},"up":{"uv":[11,0,13,0],"texture":"#propagule"},"down":{"uv":[11,10,13,10],"texture":"#propagule"}}},{"from":[7,0,8],"to":[9,10,8],"rotation":{"angle":-45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[3,0,5,10],"texture":"#propagule"},"east":{"uv":[11,0,11,10],"texture":"#propagule"},"south":{"uv":[3,0,5,10],"texture":"#propagule"},"west":{"uv":[13,0,13,10],"texture":"#propagule"},"up":{"uv":[11,0,13,0],"rotation":180,"texture":"#propagule"},"down":{"uv":[11,10,13,10],"rotation":180,"texture":"#propagule"}}}]},"mangrove_roots":{"parent":"block/block","textures":{"side":"block/mangrove_roots_side","top":"block/mangrove_roots_top","particle":"#side"},"elements":[{"from":[0,0,8],"to":[16,16,8],"faces":{"north":{"uv":[0,0,16,16],"texture":"#side"},"south":{"uv":[0,0,16,16],"texture":"#side"}}},{"from":[8,0,0],"to":[8,16,16],"faces":{"west":{"uv":[0,0,16,16],"texture":"#side"},"east":{"uv":[0,0,16,16],"texture":"#side"}}},{"from":[0,15.998,0],"to":[16,16,16],"faces":{"down":{"uv":[0,16,16,0],"texture":"#top","cullface":"up"},"up":{"uv":[0,0,16,16],"texture":"#top","cullface":"up"}}},{"from":[0,0,0],"to":[16,0.002,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#top","cullface":"down"},"up":{"uv":[0,16,16,0],"texture":"#top","cullface":"down"}}},{"from":[0,0,0],"to":[16,16,0.002],"faces":{"north":{"uv":[0,0,16,16],"texture":"#side","cullface":"north"},"south":{"uv":[16,0,0,16],"texture":"#side","cullface":"north"}}},{"from":[0,0,15.998],"to":[16,16,16],"faces":{"north":{"uv":[16,0,0,16],"texture":"#side","cullface":"south"},"south":{"uv":[0,0,16,16],"texture":"#side","cullface":"south"}}},{"from":[0,0,0],"to":[0.002,16,16],"faces":{"east":{"uv":[16,0,0,16],"texture":"#side","cullface":"west"},"west":{"uv":[0,0,16,16],"texture":"#side","cullface":"west"}}},{"from":[15.998,0,0],"to":[16,16,16],"faces":{"east":{"uv":[0,0,16,16],"texture":"#side","cullface":"east"},"west":{"uv":[16,0,0,16],"texture":"#side","cullface":"east"}}}]},"mangrove_shelf":{"parent":"minecraft:block/template_shelf_body","textures":{"all":"minecraft:block/mangrove_shelf","particle":"minecraft:block/stripped_mangrove_log"}},"mangrove_shelf_center":{"parent":"minecraft:block/template_shelf_center","textures":{"all":"minecraft:block/mangrove_shelf","particle":"minecraft:block/stripped_mangrove_log"}},"mangrove_shelf_inventory":{"parent":"minecraft:block/template_shelf_inventory","textures":{"all":"minecraft:block/mangrove_shelf","particle":"minecraft:block/stripped_mangrove_log"}},"mangrove_shelf_left":{"parent":"minecraft:block/template_shelf_left","textures":{"all":"minecraft:block/mangrove_shelf","particle":"minecraft:block/stripped_mangrove_log"}},"mangrove_shelf_right":{"parent":"minecraft:block/template_shelf_right","textures":{"all":"minecraft:block/mangrove_shelf","particle":"minecraft:block/stripped_mangrove_log"}},"mangrove_shelf_unconnected":{"parent":"minecraft:block/template_shelf_unconnected","textures":{"all":"minecraft:block/mangrove_shelf","particle":"minecraft:block/stripped_mangrove_log"}},"mangrove_shelf_unpowered":{"parent":"minecraft:block/template_shelf_unpowered","textures":{"all":"minecraft:block/mangrove_shelf","particle":"minecraft:block/stripped_mangrove_log"}},"mangrove_sign":{"textures":{"particle":"minecraft:block/mangrove_planks"}},"mangrove_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/mangrove_planks","side":"minecraft:block/mangrove_planks","top":"minecraft:block/mangrove_planks"}},"mangrove_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/mangrove_planks","side":"minecraft:block/mangrove_planks","top":"minecraft:block/mangrove_planks"}},"mangrove_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/mangrove_planks","side":"minecraft:block/mangrove_planks","top":"minecraft:block/mangrove_planks"}},"mangrove_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/mangrove_planks","side":"minecraft:block/mangrove_planks","top":"minecraft:block/mangrove_planks"}},"mangrove_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/mangrove_planks","side":"minecraft:block/mangrove_planks","top":"minecraft:block/mangrove_planks"}},"mangrove_trapdoor_bottom":{"parent":"minecraft:block/template_orientable_trapdoor_bottom","textures":{"texture":"minecraft:block/mangrove_trapdoor"}},"mangrove_trapdoor_open":{"parent":"minecraft:block/template_orientable_trapdoor_open","textures":{"texture":"minecraft:block/mangrove_trapdoor"}},"mangrove_trapdoor_top":{"parent":"minecraft:block/template_orientable_trapdoor_top","textures":{"texture":"minecraft:block/mangrove_trapdoor"}},"mangrove_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/mangrove_log","side":"minecraft:block/mangrove_log"}},"medium_amethyst_bud":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/medium_amethyst_bud"}},"melon":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/melon_top","side":"minecraft:block/melon_side"}},"melon_stem_stage0":{"parent":"minecraft:block/stem_growth0","textures":{"stem":"minecraft:block/melon_stem"}},"melon_stem_stage1":{"parent":"minecraft:block/stem_growth1","textures":{"stem":"minecraft:block/melon_stem"}},"melon_stem_stage2":{"parent":"minecraft:block/stem_growth2","textures":{"stem":"minecraft:block/melon_stem"}},"melon_stem_stage3":{"parent":"minecraft:block/stem_growth3","textures":{"stem":"minecraft:block/melon_stem"}},"melon_stem_stage4":{"parent":"minecraft:block/stem_growth4","textures":{"stem":"minecraft:block/melon_stem"}},"melon_stem_stage5":{"parent":"minecraft:block/stem_growth5","textures":{"stem":"minecraft:block/melon_stem"}},"melon_stem_stage6":{"parent":"minecraft:block/stem_growth6","textures":{"stem":"minecraft:block/melon_stem"}},"melon_stem_stage7":{"parent":"minecraft:block/stem_growth7","textures":{"stem":"minecraft:block/melon_stem"}},"moss_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/moss_block"}},"moss_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/moss_block"}},"mossy_carpet_side":{"ambientocclusion":true,"textures":{"particle":"#side"},"elements":[{"from":[0,0,0.1],"to":[16,16,0.1],"shade":true,"faces":{"north":{"uv":[16,0,0,16],"texture":"#side"},"south":{"uv":[0,0,16,16],"texture":"#side"}}}]},"mossy_cobblestone":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/mossy_cobblestone"}},"mossy_cobblestone_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/mossy_cobblestone","side":"minecraft:block/mossy_cobblestone","top":"minecraft:block/mossy_cobblestone"}},"mossy_cobblestone_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/mossy_cobblestone","side":"minecraft:block/mossy_cobblestone","top":"minecraft:block/mossy_cobblestone"}},"mossy_cobblestone_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/mossy_cobblestone","side":"minecraft:block/mossy_cobblestone","top":"minecraft:block/mossy_cobblestone"}},"mossy_cobblestone_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/mossy_cobblestone","side":"minecraft:block/mossy_cobblestone","top":"minecraft:block/mossy_cobblestone"}},"mossy_cobblestone_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/mossy_cobblestone","side":"minecraft:block/mossy_cobblestone","top":"minecraft:block/mossy_cobblestone"}},"mossy_cobblestone_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/mossy_cobblestone"}},"mossy_cobblestone_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/mossy_cobblestone"}},"mossy_cobblestone_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/mossy_cobblestone"}},"mossy_cobblestone_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/mossy_cobblestone"}},"mossy_stone_brick_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/mossy_stone_bricks","side":"minecraft:block/mossy_stone_bricks","top":"minecraft:block/mossy_stone_bricks"}},"mossy_stone_brick_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/mossy_stone_bricks","side":"minecraft:block/mossy_stone_bricks","top":"minecraft:block/mossy_stone_bricks"}},"mossy_stone_brick_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/mossy_stone_bricks","side":"minecraft:block/mossy_stone_bricks","top":"minecraft:block/mossy_stone_bricks"}},"mossy_stone_brick_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/mossy_stone_bricks","side":"minecraft:block/mossy_stone_bricks","top":"minecraft:block/mossy_stone_bricks"}},"mossy_stone_brick_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/mossy_stone_bricks","side":"minecraft:block/mossy_stone_bricks","top":"minecraft:block/mossy_stone_bricks"}},"mossy_stone_brick_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/mossy_stone_bricks"}},"mossy_stone_brick_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/mossy_stone_bricks"}},"mossy_stone_brick_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/mossy_stone_bricks"}},"mossy_stone_brick_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/mossy_stone_bricks"}},"mossy_stone_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/mossy_stone_bricks"}},"moving_piston":{"textures":{"particle":"minecraft:block/piston_side"}},"mud":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/mud"}},"mud_brick_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/mud_bricks","side":"minecraft:block/mud_bricks","top":"minecraft:block/mud_bricks"}},"mud_brick_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/mud_bricks","side":"minecraft:block/mud_bricks","top":"minecraft:block/mud_bricks"}},"mud_brick_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/mud_bricks","side":"minecraft:block/mud_bricks","top":"minecraft:block/mud_bricks"}},"mud_brick_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/mud_bricks","side":"minecraft:block/mud_bricks","top":"minecraft:block/mud_bricks"}},"mud_brick_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/mud_bricks","side":"minecraft:block/mud_bricks","top":"minecraft:block/mud_bricks"}},"mud_brick_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/mud_bricks"}},"mud_brick_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/mud_bricks"}},"mud_brick_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/mud_bricks"}},"mud_brick_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/mud_bricks"}},"mud_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/mud_bricks"}},"mud_bricks_north_west_mirrored":{"parent":"minecraft:block/cube_north_west_mirrored_all","textures":{"all":"minecraft:block/mud_bricks"}},"muddy_mangrove_roots":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/muddy_mangrove_roots_top","side":"minecraft:block/muddy_mangrove_roots_side"}},"mushroom_block_inside":{"parent":"block/template_single_face","textures":{"texture":"block/mushroom_block_inside"}},"mushroom_stem":{"parent":"minecraft:block/template_single_face","textures":{"texture":"minecraft:block/mushroom_stem"}},"mushroom_stem_inventory":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/mushroom_stem"}},"mycelium":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/dirt","side":"minecraft:block/mycelium_side","top":"minecraft:block/mycelium_top"}},"nether_brick_fence_inventory":{"parent":"minecraft:block/fence_inventory","textures":{"texture":"minecraft:block/nether_bricks"}},"nether_brick_fence_post":{"parent":"minecraft:block/fence_post","textures":{"texture":"minecraft:block/nether_bricks"}},"nether_brick_fence_side":{"parent":"minecraft:block/fence_side","textures":{"texture":"minecraft:block/nether_bricks"}},"nether_brick_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/nether_bricks","side":"minecraft:block/nether_bricks","top":"minecraft:block/nether_bricks"}},"nether_brick_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/nether_bricks","side":"minecraft:block/nether_bricks","top":"minecraft:block/nether_bricks"}},"nether_brick_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/nether_bricks","side":"minecraft:block/nether_bricks","top":"minecraft:block/nether_bricks"}},"nether_brick_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/nether_bricks","side":"minecraft:block/nether_bricks","top":"minecraft:block/nether_bricks"}},"nether_brick_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/nether_bricks","side":"minecraft:block/nether_bricks","top":"minecraft:block/nether_bricks"}},"nether_brick_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/nether_bricks"}},"nether_brick_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/nether_bricks"}},"nether_brick_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/nether_bricks"}},"nether_brick_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/nether_bricks"}},"nether_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/nether_bricks"}},"nether_gold_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/nether_gold_ore"}},"nether_portal_ew":{"textures":{"particle":"block/nether_portal","portal":"block/nether_portal"},"elements":[{"from":[6,0,0],"to":[10,16,16],"faces":{"east":{"uv":[0,0,16,16],"texture":"#portal"},"west":{"uv":[0,0,16,16],"texture":"#portal"}}}]},"nether_portal_ns":{"textures":{"particle":"block/nether_portal","portal":"block/nether_portal"},"elements":[{"from":[0,0,6],"to":[16,16,10],"faces":{"north":{"uv":[0,0,16,16],"texture":"#portal"},"south":{"uv":[0,0,16,16],"texture":"#portal"}}}]},"nether_quartz_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/nether_quartz_ore"}},"nether_sprouts":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/nether_sprouts"}},"nether_wart_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/nether_wart_block"}},"nether_wart_stage0":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/nether_wart_stage0"}},"nether_wart_stage1":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/nether_wart_stage1"}},"nether_wart_stage2":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/nether_wart_stage2"}},"netherite_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/netherite_block"}},"netherrack":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/netherrack"}},"note_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/note_block"}},"oak_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/oak_planks"}},"oak_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/oak_planks"}},"oak_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/oak_planks"}},"oak_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/oak_door_bottom","top":"minecraft:block/oak_door_top"}},"oak_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/oak_door_bottom","top":"minecraft:block/oak_door_top"}},"oak_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/oak_door_bottom","top":"minecraft:block/oak_door_top"}},"oak_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/oak_door_bottom","top":"minecraft:block/oak_door_top"}},"oak_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/oak_door_bottom","top":"minecraft:block/oak_door_top"}},"oak_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/oak_door_bottom","top":"minecraft:block/oak_door_top"}},"oak_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/oak_door_bottom","top":"minecraft:block/oak_door_top"}},"oak_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/oak_door_bottom","top":"minecraft:block/oak_door_top"}},"oak_fence_gate":{"parent":"minecraft:block/template_fence_gate","textures":{"texture":"minecraft:block/oak_planks"}},"oak_fence_gate_open":{"parent":"minecraft:block/template_fence_gate_open","textures":{"texture":"minecraft:block/oak_planks"}},"oak_fence_gate_wall":{"parent":"minecraft:block/template_fence_gate_wall","textures":{"texture":"minecraft:block/oak_planks"}},"oak_fence_gate_wall_open":{"parent":"minecraft:block/template_fence_gate_wall_open","textures":{"texture":"minecraft:block/oak_planks"}},"oak_fence_inventory":{"parent":"minecraft:block/fence_inventory","textures":{"texture":"minecraft:block/oak_planks"}},"oak_fence_post":{"parent":"minecraft:block/fence_post","textures":{"texture":"minecraft:block/oak_planks"}},"oak_fence_side":{"parent":"minecraft:block/fence_side","textures":{"texture":"minecraft:block/oak_planks"}},"oak_hanging_sign":{"textures":{"particle":"minecraft:block/stripped_oak_log"}},"oak_leaves":{"parent":"minecraft:block/leaves","textures":{"all":"minecraft:block/oak_leaves"}},"oak_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/oak_log_top","side":"minecraft:block/oak_log"}},"oak_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/oak_log_top","side":"minecraft:block/oak_log"}},"oak_planks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/oak_planks"}},"oak_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/oak_planks"}},"oak_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/oak_planks"}},"oak_sapling":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/oak_sapling"}},"oak_shelf":{"parent":"minecraft:block/template_shelf_body","textures":{"all":"minecraft:block/oak_shelf","particle":"minecraft:block/stripped_oak_log"}},"oak_shelf_center":{"parent":"minecraft:block/template_shelf_center","textures":{"all":"minecraft:block/oak_shelf","particle":"minecraft:block/stripped_oak_log"}},"oak_shelf_inventory":{"parent":"minecraft:block/template_shelf_inventory","textures":{"all":"minecraft:block/oak_shelf","particle":"minecraft:block/stripped_oak_log"}},"oak_shelf_left":{"parent":"minecraft:block/template_shelf_left","textures":{"all":"minecraft:block/oak_shelf","particle":"minecraft:block/stripped_oak_log"}},"oak_shelf_right":{"parent":"minecraft:block/template_shelf_right","textures":{"all":"minecraft:block/oak_shelf","particle":"minecraft:block/stripped_oak_log"}},"oak_shelf_unconnected":{"parent":"minecraft:block/template_shelf_unconnected","textures":{"all":"minecraft:block/oak_shelf","particle":"minecraft:block/stripped_oak_log"}},"oak_shelf_unpowered":{"parent":"minecraft:block/template_shelf_unpowered","textures":{"all":"minecraft:block/oak_shelf","particle":"minecraft:block/stripped_oak_log"}},"oak_sign":{"textures":{"particle":"minecraft:block/oak_planks"}},"oak_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/oak_planks","side":"minecraft:block/oak_planks","top":"minecraft:block/oak_planks"}},"oak_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/oak_planks","side":"minecraft:block/oak_planks","top":"minecraft:block/oak_planks"}},"oak_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/oak_planks","side":"minecraft:block/oak_planks","top":"minecraft:block/oak_planks"}},"oak_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/oak_planks","side":"minecraft:block/oak_planks","top":"minecraft:block/oak_planks"}},"oak_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/oak_planks","side":"minecraft:block/oak_planks","top":"minecraft:block/oak_planks"}},"oak_trapdoor_bottom":{"parent":"minecraft:block/template_trapdoor_bottom","textures":{"texture":"minecraft:block/oak_trapdoor"}},"oak_trapdoor_open":{"parent":"minecraft:block/template_trapdoor_open","textures":{"texture":"minecraft:block/oak_trapdoor"}},"oak_trapdoor_top":{"parent":"minecraft:block/template_trapdoor_top","textures":{"texture":"minecraft:block/oak_trapdoor"}},"oak_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/oak_log","side":"minecraft:block/oak_log"}},"observer":{"parent":"block/block","textures":{"bottom":"block/observer_back","side":"block/observer_side","top":"block/observer_top","front":"block/observer_front","particle":"block/observer_front"},"elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#top","cullface":"down"},"up":{"uv":[0,16,16,0],"texture":"#top","cullface":"up"},"north":{"uv":[0,0,16,16],"texture":"#front","cullface":"north"},"south":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#side","cullface":"west"},"east":{"uv":[0,0,16,16],"texture":"#side","cullface":"east"}}}]},"observer_on":{"parent":"block/observer","textures":{"bottom":"block/observer_back_on"}},"obsidian":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/obsidian"}},"ochre_froglight":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/ochre_froglight_top","side":"minecraft:block/ochre_froglight_side"}},"ochre_froglight_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/ochre_froglight_top","side":"minecraft:block/ochre_froglight_side"}},"open_eyeblossom":{"parent":"minecraft:block/cross_emissive","textures":{"cross":"minecraft:block/open_eyeblossom","cross_emissive":"minecraft:block/open_eyeblossom_emissive"}},"orange_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/orange_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"orange_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/orange_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"orange_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/orange_candle","particle":"minecraft:block/orange_candle"}},"orange_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/orange_candle_lit","particle":"minecraft:block/orange_candle_lit"}},"orange_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/orange_candle","particle":"minecraft:block/orange_candle"}},"orange_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/orange_candle_lit","particle":"minecraft:block/orange_candle_lit"}},"orange_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/orange_candle","particle":"minecraft:block/orange_candle"}},"orange_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/orange_candle_lit","particle":"minecraft:block/orange_candle_lit"}},"orange_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/orange_candle","particle":"minecraft:block/orange_candle"}},"orange_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/orange_candle_lit","particle":"minecraft:block/orange_candle_lit"}},"orange_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/orange_wool"}},"orange_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/orange_concrete"}},"orange_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/orange_concrete_powder"}},"orange_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/orange_glazed_terracotta"}},"orange_shulker_box":{"textures":{"particle":"minecraft:block/orange_shulker_box"}},"orange_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/orange_stained_glass"}},"orange_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/orange_stained_glass"}},"orange_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/orange_stained_glass"}},"orange_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/orange_stained_glass_pane_top","pane":"minecraft:block/orange_stained_glass"}},"orange_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/orange_stained_glass_pane_top","pane":"minecraft:block/orange_stained_glass"}},"orange_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/orange_stained_glass_pane_top","pane":"minecraft:block/orange_stained_glass"}},"orange_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/orange_terracotta"}},"orange_tulip":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/orange_tulip"}},"orange_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/orange_wool"}},"orientable":{"parent":"block/orientable_with_bottom","textures":{"bottom":"#top"}},"orientable_vertical":{"parent":"block/cube","textures":{"particle":"#side","down":"#side","up":"#front","north":"#side","east":"#side","south":"#side","west":"#side"}},"orientable_with_bottom":{"parent":"block/cube","display":{"firstperson_righthand":{"rotation":[0,135,0],"translation":[0,0,0],"scale":[0.40,0.40,0.40]}},"textures":{"particle":"#front","down":"#bottom","up":"#top","north":"#front","east":"#side","south":"#side","west":"#side"}},"outer_stairs":{"textures":{"particle":"#side"},"elements":[{"from":[0,0,0],"to":[16,8,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,8,16,16],"texture":"#side","cullface":"north"},"south":{"uv":[0,8,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,8,16,16],"texture":"#side","cullface":"west"},"east":{"uv":[0,8,16,16],"texture":"#side","cullface":"east"}}},{"from":[8,8,8],"to":[16,16,16],"faces":{"up":{"uv":[8,8,16,16],"texture":"#top","cullface":"up"},"north":{"uv":[0,0,8,8],"texture":"#side"},"south":{"uv":[8,0,16,8],"texture":"#side","cullface":"south"},"west":{"uv":[8,0,16,8],"texture":"#side"},"east":{"uv":[0,0,8,8],"texture":"#side","cullface":"east"}}}]},"oxeye_daisy":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/oxeye_daisy"}},"oxidized_chiseled_copper":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/oxidized_chiseled_copper"}},"oxidized_copper":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/oxidized_copper"}},"oxidized_copper_bars_cap":{"parent":"minecraft:block/template_bars_cap","textures":{"bars":"minecraft:block/oxidized_copper_bars","edge":"minecraft:block/oxidized_copper_bars"}},"oxidized_copper_bars_cap_alt":{"parent":"minecraft:block/template_bars_cap_alt","textures":{"bars":"minecraft:block/oxidized_copper_bars","edge":"minecraft:block/oxidized_copper_bars"}},"oxidized_copper_bars_post":{"parent":"minecraft:block/template_bars_post","textures":{"bars":"minecraft:block/oxidized_copper_bars","edge":"minecraft:block/oxidized_copper_bars"}},"oxidized_copper_bars_post_ends":{"parent":"minecraft:block/template_bars_post_ends","textures":{"bars":"minecraft:block/oxidized_copper_bars","edge":"minecraft:block/oxidized_copper_bars"}},"oxidized_copper_bars_side":{"parent":"minecraft:block/template_bars_side","textures":{"bars":"minecraft:block/oxidized_copper_bars","edge":"minecraft:block/oxidized_copper_bars"}},"oxidized_copper_bars_side_alt":{"parent":"minecraft:block/template_bars_side_alt","textures":{"bars":"minecraft:block/oxidized_copper_bars","edge":"minecraft:block/oxidized_copper_bars"}},"oxidized_copper_bulb":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/oxidized_copper_bulb"}},"oxidized_copper_bulb_lit":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/oxidized_copper_bulb_lit"}},"oxidized_copper_bulb_lit_powered":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/oxidized_copper_bulb_lit_powered"}},"oxidized_copper_bulb_powered":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/oxidized_copper_bulb_powered"}},"oxidized_copper_chain":{"parent":"minecraft:block/template_chain","textures":{"texture":"minecraft:block/oxidized_copper_chain"}},"oxidized_copper_chest":{"textures":{"particle":"minecraft:block/oxidized_copper"}},"oxidized_copper_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/oxidized_copper_door_bottom","top":"minecraft:block/oxidized_copper_door_top"}},"oxidized_copper_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/oxidized_copper_door_bottom","top":"minecraft:block/oxidized_copper_door_top"}},"oxidized_copper_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/oxidized_copper_door_bottom","top":"minecraft:block/oxidized_copper_door_top"}},"oxidized_copper_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/oxidized_copper_door_bottom","top":"minecraft:block/oxidized_copper_door_top"}},"oxidized_copper_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/oxidized_copper_door_bottom","top":"minecraft:block/oxidized_copper_door_top"}},"oxidized_copper_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/oxidized_copper_door_bottom","top":"minecraft:block/oxidized_copper_door_top"}},"oxidized_copper_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/oxidized_copper_door_bottom","top":"minecraft:block/oxidized_copper_door_top"}},"oxidized_copper_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/oxidized_copper_door_bottom","top":"minecraft:block/oxidized_copper_door_top"}},"oxidized_copper_golem_statue":{"textures":{"particle":"minecraft:block/oxidized_copper"}},"oxidized_copper_grate":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/oxidized_copper_grate"}},"oxidized_copper_lantern":{"parent":"minecraft:block/template_lantern","textures":{"lantern":"minecraft:block/oxidized_copper_lantern"}},"oxidized_copper_lantern_hanging":{"parent":"minecraft:block/template_hanging_lantern","textures":{"lantern":"minecraft:block/oxidized_copper_lantern"}},"oxidized_copper_trapdoor_bottom":{"parent":"minecraft:block/template_trapdoor_bottom","textures":{"texture":"minecraft:block/oxidized_copper_trapdoor"}},"oxidized_copper_trapdoor_open":{"parent":"minecraft:block/template_trapdoor_open","textures":{"texture":"minecraft:block/oxidized_copper_trapdoor"}},"oxidized_copper_trapdoor_top":{"parent":"minecraft:block/template_trapdoor_top","textures":{"texture":"minecraft:block/oxidized_copper_trapdoor"}},"oxidized_cut_copper":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/oxidized_cut_copper"}},"oxidized_cut_copper_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/oxidized_cut_copper","side":"minecraft:block/oxidized_cut_copper","top":"minecraft:block/oxidized_cut_copper"}},"oxidized_cut_copper_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/oxidized_cut_copper","side":"minecraft:block/oxidized_cut_copper","top":"minecraft:block/oxidized_cut_copper"}},"oxidized_cut_copper_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/oxidized_cut_copper","side":"minecraft:block/oxidized_cut_copper","top":"minecraft:block/oxidized_cut_copper"}},"oxidized_cut_copper_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/oxidized_cut_copper","side":"minecraft:block/oxidized_cut_copper","top":"minecraft:block/oxidized_cut_copper"}},"oxidized_cut_copper_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/oxidized_cut_copper","side":"minecraft:block/oxidized_cut_copper","top":"minecraft:block/oxidized_cut_copper"}},"oxidized_lightning_rod":{"parent":"minecraft:block/template_lightning_rod","textures":{"texture":"minecraft:block/oxidized_lightning_rod"}},"packed_ice":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/packed_ice"}},"packed_mud":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/packed_mud"}},"pale_hanging_moss":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/pale_hanging_moss"}},"pale_hanging_moss_tip":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/pale_hanging_moss_tip"}},"pale_moss_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/pale_moss_block"}},"pale_moss_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/pale_moss_carpet"}},"pale_moss_carpet_side_small":{"parent":"minecraft:block/mossy_carpet_side","textures":{"side":"minecraft:block/pale_moss_carpet_side_small"}},"pale_moss_carpet_side_tall":{"parent":"minecraft:block/mossy_carpet_side","textures":{"side":"minecraft:block/pale_moss_carpet_side_tall"}},"pale_oak_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/pale_oak_planks"}},"pale_oak_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/pale_oak_planks"}},"pale_oak_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/pale_oak_planks"}},"pale_oak_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/pale_oak_door_bottom","top":"minecraft:block/pale_oak_door_top"}},"pale_oak_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/pale_oak_door_bottom","top":"minecraft:block/pale_oak_door_top"}},"pale_oak_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/pale_oak_door_bottom","top":"minecraft:block/pale_oak_door_top"}},"pale_oak_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/pale_oak_door_bottom","top":"minecraft:block/pale_oak_door_top"}},"pale_oak_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/pale_oak_door_bottom","top":"minecraft:block/pale_oak_door_top"}},"pale_oak_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/pale_oak_door_bottom","top":"minecraft:block/pale_oak_door_top"}},"pale_oak_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/pale_oak_door_bottom","top":"minecraft:block/pale_oak_door_top"}},"pale_oak_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/pale_oak_door_bottom","top":"minecraft:block/pale_oak_door_top"}},"pale_oak_fence_gate":{"parent":"minecraft:block/template_fence_gate","textures":{"texture":"minecraft:block/pale_oak_planks"}},"pale_oak_fence_gate_open":{"parent":"minecraft:block/template_fence_gate_open","textures":{"texture":"minecraft:block/pale_oak_planks"}},"pale_oak_fence_gate_wall":{"parent":"minecraft:block/template_fence_gate_wall","textures":{"texture":"minecraft:block/pale_oak_planks"}},"pale_oak_fence_gate_wall_open":{"parent":"minecraft:block/template_fence_gate_wall_open","textures":{"texture":"minecraft:block/pale_oak_planks"}},"pale_oak_fence_inventory":{"parent":"minecraft:block/fence_inventory","textures":{"texture":"minecraft:block/pale_oak_planks"}},"pale_oak_fence_post":{"parent":"minecraft:block/fence_post","textures":{"texture":"minecraft:block/pale_oak_planks"}},"pale_oak_fence_side":{"parent":"minecraft:block/fence_side","textures":{"texture":"minecraft:block/pale_oak_planks"}},"pale_oak_hanging_sign":{"textures":{"particle":"minecraft:block/stripped_pale_oak_log"}},"pale_oak_leaves":{"parent":"minecraft:block/leaves","textures":{"all":"minecraft:block/pale_oak_leaves"}},"pale_oak_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/pale_oak_log_top","side":"minecraft:block/pale_oak_log"}},"pale_oak_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/pale_oak_log_top","side":"minecraft:block/pale_oak_log"}},"pale_oak_planks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/pale_oak_planks"}},"pale_oak_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/pale_oak_planks"}},"pale_oak_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/pale_oak_planks"}},"pale_oak_sapling":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/pale_oak_sapling"}},"pale_oak_shelf":{"parent":"minecraft:block/template_shelf_body","textures":{"all":"minecraft:block/pale_oak_shelf","particle":"minecraft:block/stripped_pale_oak_log"}},"pale_oak_shelf_center":{"parent":"minecraft:block/template_shelf_center","textures":{"all":"minecraft:block/pale_oak_shelf","particle":"minecraft:block/stripped_pale_oak_log"}},"pale_oak_shelf_inventory":{"parent":"minecraft:block/template_shelf_inventory","textures":{"all":"minecraft:block/pale_oak_shelf","particle":"minecraft:block/stripped_pale_oak_log"}},"pale_oak_shelf_left":{"parent":"minecraft:block/template_shelf_left","textures":{"all":"minecraft:block/pale_oak_shelf","particle":"minecraft:block/stripped_pale_oak_log"}},"pale_oak_shelf_right":{"parent":"minecraft:block/template_shelf_right","textures":{"all":"minecraft:block/pale_oak_shelf","particle":"minecraft:block/stripped_pale_oak_log"}},"pale_oak_shelf_unconnected":{"parent":"minecraft:block/template_shelf_unconnected","textures":{"all":"minecraft:block/pale_oak_shelf","particle":"minecraft:block/stripped_pale_oak_log"}},"pale_oak_shelf_unpowered":{"parent":"minecraft:block/template_shelf_unpowered","textures":{"all":"minecraft:block/pale_oak_shelf","particle":"minecraft:block/stripped_pale_oak_log"}},"pale_oak_sign":{"textures":{"particle":"minecraft:block/pale_oak_planks"}},"pale_oak_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/pale_oak_planks","side":"minecraft:block/pale_oak_planks","top":"minecraft:block/pale_oak_planks"}},"pale_oak_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/pale_oak_planks","side":"minecraft:block/pale_oak_planks","top":"minecraft:block/pale_oak_planks"}},"pale_oak_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/pale_oak_planks","side":"minecraft:block/pale_oak_planks","top":"minecraft:block/pale_oak_planks"}},"pale_oak_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/pale_oak_planks","side":"minecraft:block/pale_oak_planks","top":"minecraft:block/pale_oak_planks"}},"pale_oak_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/pale_oak_planks","side":"minecraft:block/pale_oak_planks","top":"minecraft:block/pale_oak_planks"}},"pale_oak_trapdoor_bottom":{"parent":"minecraft:block/template_orientable_trapdoor_bottom","textures":{"texture":"minecraft:block/pale_oak_trapdoor"}},"pale_oak_trapdoor_open":{"parent":"minecraft:block/template_orientable_trapdoor_open","textures":{"texture":"minecraft:block/pale_oak_trapdoor"}},"pale_oak_trapdoor_top":{"parent":"minecraft:block/template_orientable_trapdoor_top","textures":{"texture":"minecraft:block/pale_oak_trapdoor"}},"pale_oak_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/pale_oak_log","side":"minecraft:block/pale_oak_log"}},"pearlescent_froglight":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/pearlescent_froglight_top","side":"minecraft:block/pearlescent_froglight_side"}},"pearlescent_froglight_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/pearlescent_froglight_top","side":"minecraft:block/pearlescent_froglight_side"}},"peony_bottom":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/peony_bottom"}},"peony_top":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/peony_top"}},"petrified_oak_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/oak_planks","side":"minecraft:block/oak_planks","top":"minecraft:block/oak_planks"}},"petrified_oak_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/oak_planks","side":"minecraft:block/oak_planks","top":"minecraft:block/oak_planks"}},"pink_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/pink_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"pink_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/pink_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"pink_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/pink_candle","particle":"minecraft:block/pink_candle"}},"pink_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/pink_candle_lit","particle":"minecraft:block/pink_candle_lit"}},"pink_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/pink_candle","particle":"minecraft:block/pink_candle"}},"pink_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/pink_candle_lit","particle":"minecraft:block/pink_candle_lit"}},"pink_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/pink_candle","particle":"minecraft:block/pink_candle"}},"pink_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/pink_candle_lit","particle":"minecraft:block/pink_candle_lit"}},"pink_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/pink_candle","particle":"minecraft:block/pink_candle"}},"pink_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/pink_candle_lit","particle":"minecraft:block/pink_candle_lit"}},"pink_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/pink_wool"}},"pink_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/pink_concrete"}},"pink_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/pink_concrete_powder"}},"pink_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/pink_glazed_terracotta"}},"pink_petals_1":{"parent":"minecraft:block/flowerbed_1","textures":{"flowerbed":"minecraft:block/pink_petals","stem":"minecraft:block/pink_petals_stem"}},"pink_petals_2":{"parent":"minecraft:block/flowerbed_2","textures":{"flowerbed":"minecraft:block/pink_petals","stem":"minecraft:block/pink_petals_stem"}},"pink_petals_3":{"parent":"minecraft:block/flowerbed_3","textures":{"flowerbed":"minecraft:block/pink_petals","stem":"minecraft:block/pink_petals_stem"}},"pink_petals_4":{"parent":"minecraft:block/flowerbed_4","textures":{"flowerbed":"minecraft:block/pink_petals","stem":"minecraft:block/pink_petals_stem"}},"pink_shulker_box":{"textures":{"particle":"minecraft:block/pink_shulker_box"}},"pink_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/pink_stained_glass"}},"pink_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/pink_stained_glass"}},"pink_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/pink_stained_glass"}},"pink_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/pink_stained_glass_pane_top","pane":"minecraft:block/pink_stained_glass"}},"pink_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/pink_stained_glass_pane_top","pane":"minecraft:block/pink_stained_glass"}},"pink_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/pink_stained_glass_pane_top","pane":"minecraft:block/pink_stained_glass"}},"pink_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/pink_terracotta"}},"pink_tulip":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/pink_tulip"}},"pink_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/pink_wool"}},"piston":{"parent":"minecraft:block/template_piston","textures":{"bottom":"minecraft:block/piston_bottom","platform":"minecraft:block/piston_top","side":"minecraft:block/piston_side"}},"piston_base":{"parent":"block/piston_extended","textures":{"bottom":"block/piston_bottom","side":"block/piston_side","inside":"block/piston_inner"}},"piston_extended":{"textures":{"particle":"#side"},"elements":[{"from":[0,0,4],"to":[16,16,16],"faces":{"down":{"uv":[0,4,16,16],"texture":"#side","cullface":"down","rotation":180},"up":{"uv":[0,4,16,16],"texture":"#side","cullface":"up"},"north":{"uv":[0,0,16,16],"texture":"#inside"},"south":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"south"},"west":{"uv":[0,4,16,16],"texture":"#side","cullface":"west","rotation":270},"east":{"uv":[0,4,16,16],"texture":"#side","cullface":"east","rotation":90}}}]},"piston_head":{"parent":"minecraft:block/template_piston_head","textures":{"platform":"minecraft:block/piston_top","side":"minecraft:block/piston_side","unsticky":"minecraft:block/piston_top"}},"piston_head_short":{"parent":"minecraft:block/template_piston_head_short","textures":{"platform":"minecraft:block/piston_top","side":"minecraft:block/piston_side","unsticky":"minecraft:block/piston_top"}},"piston_head_short_sticky":{"parent":"minecraft:block/template_piston_head_short","textures":{"platform":"minecraft:block/piston_top_sticky","side":"minecraft:block/piston_side","unsticky":"minecraft:block/piston_top"}},"piston_head_sticky":{"parent":"minecraft:block/template_piston_head","textures":{"platform":"minecraft:block/piston_top_sticky","side":"minecraft:block/piston_side","unsticky":"minecraft:block/piston_top"}},"piston_inventory":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/piston_bottom","side":"minecraft:block/piston_side","top":"minecraft:block/piston_top"}},"pitcher_crop_bottom_stage_0":{"ambientocclusion":false,"textures":{"particle":"block/pitcher_crop_top","pitcher_top":"block/pitcher_crop_top","pitcher_side":"block/pitcher_crop_side","pitcher_bottom":"block/pitcher_crop_bottom"},"elements":[{"name":"pitcher_crop_bottom_stage_0","from":[5,-1,5],"to":[11,3,11],"faces":{"north":{"uv":[3,10,9,14],"texture":"#pitcher_side"},"east":{"uv":[3,10,9,14],"texture":"#pitcher_side"},"south":{"uv":[3,10,9,14],"texture":"#pitcher_side"},"west":{"uv":[3,10,9,14],"texture":"#pitcher_side"},"up":{"uv":[5,5,11,11],"texture":"#pitcher_top"},"down":{"uv":[5,5,11,11],"texture":"#pitcher_bottom"}}}]},"pitcher_crop_bottom_stage_1":{"ambientocclusion":false,"textures":{"particle":"block/pitcher_crop_top","stage_1":"block/pitcher_crop_bottom_stage_1","pitcher_top":"block/pitcher_crop_top","pitcher_side":"block/pitcher_crop_side","pitcher_bottom":"block/pitcher_crop_bottom"},"elements":[{"name":"pitcher_crop_bottom_stage_1","from":[0,5,8],"to":[16,21,8],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,5,8]},"faces":{"north":{"uv":[0,0,16,16],"texture":"#stage_1"},"south":{"uv":[0,0,16,16],"texture":"#stage_1"}}},{"name":"pitcher_crop_bottom_stage_1","from":[0,5,8],"to":[16,21,8],"shade":false,"rotation":{"angle":-45,"axis":"y","origin":[8,5,8]},"faces":{"north":{"uv":[0,0,16,16],"texture":"#stage_1"},"south":{"uv":[0,0,16,16],"texture":"#stage_1"}}},{"name":"pitcher_crop_bottom_stage_1","from":[3,-1,3],"to":[13,5,13],"faces":{"north":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"east":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"south":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"west":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"up":{"uv":[3,3,13,13],"texture":"#pitcher_top"},"down":{"uv":[3,3,13,13],"texture":"#pitcher_bottom"}}}]},"pitcher_crop_bottom_stage_2":{"ambientocclusion":false,"textures":{"particle":"block/pitcher_crop_top","stage_2":"block/pitcher_crop_bottom_stage_2","pitcher_top":"block/pitcher_crop_top","pitcher_side":"block/pitcher_crop_side","pitcher_bottom":"block/pitcher_crop_bottom"},"elements":[{"name":"pitcher_crop_bottom_stage_2","from":[0,5,8],"to":[16,21,8],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,6,8]},"faces":{"north":{"uv":[0,0,16,16],"texture":"#stage_2"},"south":{"uv":[0,0,16,16],"texture":"#stage_2"}}},{"name":"pitcher_crop_bottom_stage_2","from":[8,5,0],"to":[8,21,16],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,6,8]},"faces":{"east":{"uv":[0,0,16,16],"texture":"#stage_2"},"west":{"uv":[0,0,16,16],"texture":"#stage_2"}}},{"name":"pitcher_crop_bottom_stage_1","from":[3,-1,3],"to":[13,5,13],"faces":{"north":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"east":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"south":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"west":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"up":{"uv":[3,3,13,13],"texture":"#pitcher_top"},"down":{"uv":[3,3,13,13],"texture":"#pitcher_bottom"}}}]},"pitcher_crop_bottom_stage_3":{"ambientocclusion":false,"textures":{"particle":"block/pitcher_crop_top","stage_3_bottom":"block/pitcher_crop_bottom_stage_3","pitcher_top":"block/pitcher_crop_top","pitcher_side":"block/pitcher_crop_side","pitcher_bottom":"block/pitcher_crop_bottom"},"elements":[{"name":"pitcher_crop_bottom_stage_3","from":[0,0,8],"to":[16,16,8],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,0,8]},"faces":{"north":{"uv":[0,0,16,16],"texture":"#stage_3_bottom"},"south":{"uv":[0,0,16,16],"texture":"#stage_3_bottom"}}},{"name":"pitcher_crop_bottom_stage_3","from":[0,0,8],"to":[16,16,8],"shade":false,"rotation":{"angle":-45,"axis":"y","origin":[8,0,8]},"faces":{"north":{"uv":[0,0,16,16],"texture":"#stage_3_bottom"},"south":{"uv":[0,0,16,16],"texture":"#stage_3_bottom"}}},{"name":"pitcher_crop_bottom_stage_1","from":[3,-1,3],"to":[13,5,13],"faces":{"north":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"east":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"south":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"west":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"up":{"uv":[3,3,13,13],"texture":"#pitcher_top"},"down":{"uv":[3,3,13,13],"texture":"#pitcher_bottom"}}}]},"pitcher_crop_bottom_stage_4":{"ambientocclusion":false,"textures":{"particle":"block/pitcher_crop_top","stage_4_bottom":"block/pitcher_crop_bottom_stage_4","pitcher_top":"block/pitcher_crop_top","pitcher_side":"block/pitcher_crop_side","pitcher_bottom":"block/pitcher_crop_bottom"},"elements":[{"name":"pitcher_crop_bottom_stage_4","from":[8,0,0],"to":[8,16,16],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,0,8]},"faces":{"east":{"uv":[0,0,16,16],"texture":"#stage_4_bottom"},"west":{"uv":[0,0,16,16],"texture":"#stage_4_bottom"}}},{"name":"pitcher_crop_bottom_stage_4","from":[0,0,8],"to":[16,16,8],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,0,8]},"faces":{"north":{"uv":[0,0,16,16],"texture":"#stage_4_bottom"},"south":{"uv":[0,0,16,16],"texture":"#stage_4_bottom"}}},{"name":"pitcher_crop_bottom_stage_1","from":[3,-1,3],"to":[13,5,13],"faces":{"north":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"east":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"south":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"west":{"uv":[3,10,13,16],"texture":"#pitcher_side"},"up":{"uv":[3,3,13,13],"texture":"#pitcher_top"},"down":{"uv":[3,3,13,13],"texture":"#pitcher_bottom"}}}]},"pitcher_crop_top_stage_0":{"ambientocclusion":false,"textures":{"particle":"block/pitcher_crop_top"}},"pitcher_crop_top_stage_1":{"ambientocclusion":false,"textures":{"particle":"block/pitcher_crop_top"}},"pitcher_crop_top_stage_2":{"ambientocclusion":false,"textures":{"particle":"block/pitcher_crop_top"}},"pitcher_crop_top_stage_3":{"ambientocclusion":false,"textures":{"particle":"block/pitcher_crop_top","stage_3_top":"block/pitcher_crop_top_stage_3"},"elements":[{"name":"pitcher_crop_top_stage_3","from":[0,0,8],"to":[16,16,8],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,16,16],"texture":"#stage_3_top"},"south":{"uv":[0,0,16,16],"texture":"#stage_3_top"}}},{"name":"pitcher_crop_top_stage_3","from":[0,0,8],"to":[16,16,8],"shade":false,"rotation":{"angle":-45,"axis":"y","origin":[8,16,8]},"faces":{"north":{"uv":[0,0,16,16],"texture":"#stage_3_top"},"south":{"uv":[0,0,16,16],"texture":"#stage_3_top"}}}]},"pitcher_crop_top_stage_4":{"ambientocclusion":false,"textures":{"particle":"block/pitcher_crop_top","stage_4_top":"block/pitcher_crop_top_stage_4","pitcher_top":"block/pitcher_crop_top","pitcher_side":"block/pitcher_crop_side"},"elements":[{"name":"pitcher_crop_top_stage_4","from":[8,0,0],"to":[8,16,16],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,0,8]},"faces":{"east":{"uv":[0,0,16,16],"texture":"#stage_4_top"},"west":{"uv":[0,0,16,16],"texture":"#stage_4_top"}}},{"name":"pitcher_crop_top_stage_4","from":[0,0,8],"to":[16,16,8],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,0,8]},"faces":{"north":{"uv":[0,0,16,16],"texture":"#stage_4_top"},"south":{"uv":[0,0,16,16],"texture":"#stage_4_top"}}}]},"pitcher_plant_bottom":{"ambientocclusion":false,"textures":{"particle":"block/pitcher_crop_bottom_stage_4","bottom":"block/pitcher_crop_bottom_stage_4"},"elements":[{"name":"pitcher_plant_bottom","from":[8,-5,0],"to":[8,11,16],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,3,8]},"faces":{"north":{"uv":[0,0,0,16],"texture":"#bottom"},"east":{"uv":[0,0,16,16],"texture":"#bottom"},"south":{"uv":[0,0,0,16],"texture":"#bottom"},"west":{"uv":[0,0,16,16],"texture":"#bottom"},"up":{"uv":[0,0,16,0],"rotation":90,"texture":"#bottom"},"down":{"uv":[0,0,16,0],"rotation":270,"texture":"#bottom"}}},{"name":"pitcher_plant_bottom","from":[0,-5,8],"to":[16,11,8],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,3,8]},"faces":{"north":{"uv":[0,0,16,16],"texture":"#bottom"},"east":{"uv":[0,0,0,16],"texture":"#bottom"},"south":{"uv":[0,0,16,16],"texture":"#bottom"},"west":{"uv":[0,0,0,16],"texture":"#bottom"},"up":{"uv":[0,0,16,0],"texture":"#bottom"},"down":{"uv":[0,0,16,0],"texture":"#bottom"}}}]},"pitcher_plant_top":{"ambientocclusion":false,"textures":{"particle":"block/pitcher_crop_top_stage_4","top":"block/pitcher_crop_top_stage_4"},"elements":[{"name":"pitcher_plant_top","from":[8,-5,0],"to":[8,11,16],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,19,8]},"faces":{"north":{"uv":[0,0,0,16],"texture":"#top"},"east":{"uv":[0,0,16,16],"texture":"#top"},"south":{"uv":[0,0,0,16],"texture":"#top"},"west":{"uv":[0,0,16,16],"texture":"#top"},"up":{"uv":[0,0,16,0],"rotation":90,"texture":"#top"},"down":{"uv":[0,0,16,0],"rotation":270,"texture":"#top"}}},{"name":"pitcher_plant_top","from":[0,-5,8],"to":[16,11,8],"shade":false,"rotation":{"angle":45,"axis":"y","origin":[8,19,8]},"faces":{"north":{"uv":[0,0,16,16],"texture":"#top"},"east":{"uv":[0,0,0,16],"texture":"#top"},"south":{"uv":[0,0,16,16],"texture":"#top"},"west":{"uv":[0,0,0,16],"texture":"#top"},"up":{"uv":[0,0,16,0],"texture":"#top"},"down":{"uv":[0,0,16,0],"texture":"#top"}}}]},"podzol":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/dirt","side":"minecraft:block/podzol_side","top":"minecraft:block/podzol_top"}},"pointed_dripstone":{"ambientocclusion":true,"textures":{"particle":"#cross"},"elements":[{"from":[0.8,0,8],"to":[15.2,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#cross"},"south":{"uv":[0,0,16,16],"texture":"#cross"}}},{"from":[8,0,0.8],"to":[8,16,15.2],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#cross"},"east":{"uv":[0,0,16,16],"texture":"#cross"}}}]},"pointed_dripstone_down_base":{"parent":"minecraft:block/pointed_dripstone","textures":{"cross":"minecraft:block/pointed_dripstone_down_base"}},"pointed_dripstone_down_frustum":{"parent":"minecraft:block/pointed_dripstone","textures":{"cross":"minecraft:block/pointed_dripstone_down_frustum"}},"pointed_dripstone_down_middle":{"parent":"minecraft:block/pointed_dripstone","textures":{"cross":"minecraft:block/pointed_dripstone_down_middle"}},"pointed_dripstone_down_tip":{"parent":"minecraft:block/pointed_dripstone","textures":{"cross":"minecraft:block/pointed_dripstone_down_tip"}},"pointed_dripstone_down_tip_merge":{"parent":"minecraft:block/pointed_dripstone","textures":{"cross":"minecraft:block/pointed_dripstone_down_tip_merge"}},"pointed_dripstone_up_base":{"parent":"minecraft:block/pointed_dripstone","textures":{"cross":"minecraft:block/pointed_dripstone_up_base"}},"pointed_dripstone_up_frustum":{"parent":"minecraft:block/pointed_dripstone","textures":{"cross":"minecraft:block/pointed_dripstone_up_frustum"}},"pointed_dripstone_up_middle":{"parent":"minecraft:block/pointed_dripstone","textures":{"cross":"minecraft:block/pointed_dripstone_up_middle"}},"pointed_dripstone_up_tip":{"parent":"minecraft:block/pointed_dripstone","textures":{"cross":"minecraft:block/pointed_dripstone_up_tip"}},"pointed_dripstone_up_tip_merge":{"parent":"minecraft:block/pointed_dripstone","textures":{"cross":"minecraft:block/pointed_dripstone_up_tip_merge"}},"polished_andesite":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/polished_andesite"}},"polished_andesite_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/polished_andesite","side":"minecraft:block/polished_andesite","top":"minecraft:block/polished_andesite"}},"polished_andesite_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/polished_andesite","side":"minecraft:block/polished_andesite","top":"minecraft:block/polished_andesite"}},"polished_andesite_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/polished_andesite","side":"minecraft:block/polished_andesite","top":"minecraft:block/polished_andesite"}},"polished_andesite_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/polished_andesite","side":"minecraft:block/polished_andesite","top":"minecraft:block/polished_andesite"}},"polished_andesite_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/polished_andesite","side":"minecraft:block/polished_andesite","top":"minecraft:block/polished_andesite"}},"polished_basalt":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/polished_basalt_top","side":"minecraft:block/polished_basalt_side"}},"polished_blackstone":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/polished_blackstone"}},"polished_blackstone_brick_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/polished_blackstone_bricks","side":"minecraft:block/polished_blackstone_bricks","top":"minecraft:block/polished_blackstone_bricks"}},"polished_blackstone_brick_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/polished_blackstone_bricks","side":"minecraft:block/polished_blackstone_bricks","top":"minecraft:block/polished_blackstone_bricks"}},"polished_blackstone_brick_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/polished_blackstone_bricks","side":"minecraft:block/polished_blackstone_bricks","top":"minecraft:block/polished_blackstone_bricks"}},"polished_blackstone_brick_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/polished_blackstone_bricks","side":"minecraft:block/polished_blackstone_bricks","top":"minecraft:block/polished_blackstone_bricks"}},"polished_blackstone_brick_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/polished_blackstone_bricks","side":"minecraft:block/polished_blackstone_bricks","top":"minecraft:block/polished_blackstone_bricks"}},"polished_blackstone_brick_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/polished_blackstone_bricks"}},"polished_blackstone_brick_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/polished_blackstone_bricks"}},"polished_blackstone_brick_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/polished_blackstone_bricks"}},"polished_blackstone_brick_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/polished_blackstone_bricks"}},"polished_blackstone_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/polished_blackstone_bricks"}},"polished_blackstone_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/polished_blackstone"}},"polished_blackstone_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/polished_blackstone"}},"polished_blackstone_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/polished_blackstone"}},"polished_blackstone_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/polished_blackstone"}},"polished_blackstone_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/polished_blackstone"}},"polished_blackstone_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/polished_blackstone","side":"minecraft:block/polished_blackstone","top":"minecraft:block/polished_blackstone"}},"polished_blackstone_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/polished_blackstone","side":"minecraft:block/polished_blackstone","top":"minecraft:block/polished_blackstone"}},"polished_blackstone_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/polished_blackstone","side":"minecraft:block/polished_blackstone","top":"minecraft:block/polished_blackstone"}},"polished_blackstone_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/polished_blackstone","side":"minecraft:block/polished_blackstone","top":"minecraft:block/polished_blackstone"}},"polished_blackstone_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/polished_blackstone","side":"minecraft:block/polished_blackstone","top":"minecraft:block/polished_blackstone"}},"polished_blackstone_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/polished_blackstone"}},"polished_blackstone_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/polished_blackstone"}},"polished_blackstone_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/polished_blackstone"}},"polished_blackstone_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/polished_blackstone"}},"polished_deepslate":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/polished_deepslate"}},"polished_deepslate_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/polished_deepslate","side":"minecraft:block/polished_deepslate","top":"minecraft:block/polished_deepslate"}},"polished_deepslate_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/polished_deepslate","side":"minecraft:block/polished_deepslate","top":"minecraft:block/polished_deepslate"}},"polished_deepslate_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/polished_deepslate","side":"minecraft:block/polished_deepslate","top":"minecraft:block/polished_deepslate"}},"polished_deepslate_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/polished_deepslate","side":"minecraft:block/polished_deepslate","top":"minecraft:block/polished_deepslate"}},"polished_deepslate_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/polished_deepslate","side":"minecraft:block/polished_deepslate","top":"minecraft:block/polished_deepslate"}},"polished_deepslate_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/polished_deepslate"}},"polished_deepslate_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/polished_deepslate"}},"polished_deepslate_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/polished_deepslate"}},"polished_deepslate_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/polished_deepslate"}},"polished_diorite":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/polished_diorite"}},"polished_diorite_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/polished_diorite","side":"minecraft:block/polished_diorite","top":"minecraft:block/polished_diorite"}},"polished_diorite_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/polished_diorite","side":"minecraft:block/polished_diorite","top":"minecraft:block/polished_diorite"}},"polished_diorite_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/polished_diorite","side":"minecraft:block/polished_diorite","top":"minecraft:block/polished_diorite"}},"polished_diorite_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/polished_diorite","side":"minecraft:block/polished_diorite","top":"minecraft:block/polished_diorite"}},"polished_diorite_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/polished_diorite","side":"minecraft:block/polished_diorite","top":"minecraft:block/polished_diorite"}},"polished_granite":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/polished_granite"}},"polished_granite_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/polished_granite","side":"minecraft:block/polished_granite","top":"minecraft:block/polished_granite"}},"polished_granite_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/polished_granite","side":"minecraft:block/polished_granite","top":"minecraft:block/polished_granite"}},"polished_granite_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/polished_granite","side":"minecraft:block/polished_granite","top":"minecraft:block/polished_granite"}},"polished_granite_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/polished_granite","side":"minecraft:block/polished_granite","top":"minecraft:block/polished_granite"}},"polished_granite_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/polished_granite","side":"minecraft:block/polished_granite","top":"minecraft:block/polished_granite"}},"polished_tuff":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/polished_tuff"}},"polished_tuff_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/polished_tuff","side":"minecraft:block/polished_tuff","top":"minecraft:block/polished_tuff"}},"polished_tuff_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/polished_tuff","side":"minecraft:block/polished_tuff","top":"minecraft:block/polished_tuff"}},"polished_tuff_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/polished_tuff","side":"minecraft:block/polished_tuff","top":"minecraft:block/polished_tuff"}},"polished_tuff_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/polished_tuff","side":"minecraft:block/polished_tuff","top":"minecraft:block/polished_tuff"}},"polished_tuff_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/polished_tuff","side":"minecraft:block/polished_tuff","top":"minecraft:block/polished_tuff"}},"polished_tuff_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/polished_tuff"}},"polished_tuff_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/polished_tuff"}},"polished_tuff_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/polished_tuff"}},"polished_tuff_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/polished_tuff"}},"poppy":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/poppy"}},"potatoes_stage0":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/potatoes_stage0"}},"potatoes_stage1":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/potatoes_stage1"}},"potatoes_stage2":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/potatoes_stage2"}},"potatoes_stage3":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/potatoes_stage3"}},"potted_acacia_sapling":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/acacia_sapling"}},"potted_allium":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/allium"}},"potted_azalea_bush":{"parent":"minecraft:block/template_potted_azalea_bush","textures":{"plant":"minecraft:block/potted_azalea_bush_plant","side":"minecraft:block/potted_azalea_bush_side","top":"minecraft:block/potted_azalea_bush_top"}},"potted_azure_bluet":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/azure_bluet"}},"potted_bamboo":{"ambientocclusion":false,"textures":{"particle":"block/flower_pot","flowerpot":"block/flower_pot","dirt":"block/dirt","bamboo":"block/bamboo_stalk","leaf":"block/bamboo_singleleaf"},"elements":[{"from":[5,0,5],"to":[6,6,11],"faces":{"down":{"uv":[5,5,6,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[5,5,6,11],"texture":"#flowerpot"},"north":{"uv":[10,10,11,16],"texture":"#flowerpot"},"south":{"uv":[5,10,6,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[10,0,5],"to":[11,6,11],"faces":{"down":{"uv":[10,5,11,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[10,5,11,11],"texture":"#flowerpot"},"north":{"uv":[5,10,6,16],"texture":"#flowerpot"},"south":{"uv":[10,10,11,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[6,0,5],"to":[10,6,6],"faces":{"down":{"uv":[6,10,10,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,5,10,6],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,10],"to":[10,6,11],"faces":{"down":{"uv":[6,5,10,6],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,10,10,11],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,6],"to":[10,4,10],"faces":{"down":{"uv":[6,12,10,16],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,6,10,10],"texture":"#dirt"}}},{"from":[7,0,7],"to":[9,16,9],"faces":{"up":{"uv":[13,0,15,2],"texture":"#bamboo","cullface":"up"},"north":{"uv":[6,0,8,16],"texture":"#bamboo"},"south":{"uv":[6,0,8,16],"texture":"#bamboo"},"west":{"uv":[6,0,8,16],"texture":"#bamboo"},"east":{"uv":[6,0,8,16],"texture":"#bamboo"}}},{"from":[0,2,8],"to":[16,18,8],"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#leaf"},"south":{"uv":[16,0,0,16],"texture":"#leaf"}}}]},"potted_birch_sapling":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/birch_sapling"}},"potted_blue_orchid":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/blue_orchid"}},"potted_brown_mushroom":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/brown_mushroom"}},"potted_cactus":{"ambientocclusion":false,"textures":{"particle":"block/flower_pot","flowerpot":"block/flower_pot","cactus_top":"block/cactus_top","cactus":"block/cactus_side"},"elements":[{"from":[5,0,5],"to":[11,6,11],"faces":{"down":{"uv":[5,5,6,11],"texture":"#flowerpot","cullface":"down"},"up":{"texture":"#flowerpot"},"north":{"texture":"#flowerpot"},"south":{"texture":"#flowerpot"},"west":{"texture":"#flowerpot"},"east":{"texture":"#flowerpot"}}},{"from":[6,5,6],"to":[10,16,10],"faces":{"up":{"texture":"#cactus_top","cullface":"up"},"north":{"uv":[6,0,10,11],"texture":"#cactus"},"south":{"uv":[6,0,10,11],"texture":"#cactus"},"west":{"uv":[6,0,10,11],"texture":"#cactus"},"east":{"uv":[6,0,10,11],"texture":"#cactus"}}}]},"potted_cherry_sapling":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/cherry_sapling"}},"potted_closed_eyeblossom":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/closed_eyeblossom"}},"potted_cornflower":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/cornflower"}},"potted_crimson_fungus":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/crimson_fungus"}},"potted_crimson_roots":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/crimson_roots_pot"}},"potted_dandelion":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/dandelion"}},"potted_dark_oak_sapling":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/dark_oak_sapling"}},"potted_dead_bush":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/dead_bush"}},"potted_fern":{"parent":"minecraft:block/tinted_flower_pot_cross","textures":{"plant":"minecraft:block/fern"}},"potted_flowering_azalea_bush":{"parent":"minecraft:block/template_potted_azalea_bush","textures":{"plant":"minecraft:block/potted_flowering_azalea_bush_plant","side":"minecraft:block/potted_flowering_azalea_bush_side","top":"minecraft:block/potted_flowering_azalea_bush_top"}},"potted_jungle_sapling":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/jungle_sapling"}},"potted_lily_of_the_valley":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/lily_of_the_valley"}},"potted_mangrove_propagule":{"ambientocclusion":false,"textures":{"particle":"block/flower_pot","sapling":"block/mangrove_propagule","flowerpot":"block/flower_pot","dirt":"block/dirt"},"elements":[{"name":"leaves","from":[4.5,9,8],"to":[11.5,15,8],"rotation":{"angle":45,"axis":"y","origin":[8,0,8],"rescale":true},"faces":{"north":{"uv":[4,1,11,7],"texture":"#sapling"},"south":{"uv":[4,1,11,7],"texture":"#sapling"}}},{"name":"leaves","from":[8,9,4.5],"to":[8,15,11.5],"rotation":{"angle":45,"axis":"y","origin":[8,0,8],"rescale":true},"faces":{"east":{"uv":[4,1,11,7],"texture":"#sapling"},"west":{"uv":[4,1,11,7],"texture":"#sapling"}}},{"name":"hypocotyl","from":[8,0,7],"to":[8,9,9],"rotation":{"angle":45,"axis":"y","origin":[8,0,8],"rescale":true},"faces":{"east":{"uv":[7,7,9,16],"texture":"#sapling"},"west":{"uv":[7,7,9,16],"texture":"#sapling"}}},{"name":"hypocotyl","from":[7,0,8],"to":[9,9,8],"rotation":{"angle":45,"axis":"y","origin":[8,0,8],"rescale":true},"faces":{"north":{"uv":[7,7,9,16],"texture":"#sapling"},"south":{"uv":[7,7,9,16],"texture":"#sapling"}}},{"from":[5,0,5],"to":[6,6,11],"faces":{"down":{"uv":[5,5,6,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[5,5,6,11],"texture":"#flowerpot"},"north":{"uv":[10,10,11,16],"texture":"#flowerpot"},"south":{"uv":[5,10,6,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[10,0,5],"to":[11,6,11],"faces":{"down":{"uv":[10,5,11,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[10,5,11,11],"texture":"#flowerpot"},"north":{"uv":[5,10,6,16],"texture":"#flowerpot"},"south":{"uv":[10,10,11,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[6,0,5],"to":[10,6,6],"faces":{"down":{"uv":[6,10,10,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,5,10,6],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,10],"to":[10,6,11],"faces":{"down":{"uv":[6,5,10,6],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,10,10,11],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,6],"to":[10,4,10],"faces":{"down":{"uv":[6,12,10,16],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,6,10,10],"texture":"#dirt"}}}]},"potted_oak_sapling":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/oak_sapling"}},"potted_open_eyeblossom":{"parent":"minecraft:block/flower_pot_cross_emissive","textures":{"cross_emissive":"minecraft:block/open_eyeblossom_emissive","plant":"minecraft:block/open_eyeblossom"}},"potted_orange_tulip":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/orange_tulip"}},"potted_oxeye_daisy":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/oxeye_daisy"}},"potted_pale_oak_sapling":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/pale_oak_sapling"}},"potted_pink_tulip":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/pink_tulip"}},"potted_poppy":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/poppy"}},"potted_red_mushroom":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/red_mushroom"}},"potted_red_tulip":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/red_tulip"}},"potted_spruce_sapling":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/spruce_sapling"}},"potted_torchflower":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/torchflower"}},"potted_warped_fungus":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/warped_fungus"}},"potted_warped_roots":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/warped_roots_pot"}},"potted_white_tulip":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/white_tulip"}},"potted_wither_rose":{"parent":"minecraft:block/flower_pot_cross","textures":{"plant":"minecraft:block/wither_rose"}},"powder_snow":{"parent":"block/block","textures":{"texture":"block/powder_snow","particle":"#texture"},"elements":[{"from":[0,15.998,0],"to":[16,16,16],"faces":{"down":{"uv":[0,16,16,0],"texture":"#texture","cullface":"up"},"up":{"uv":[0,0,16,16],"texture":"#texture","cullface":"up"}}},{"from":[0,0,0],"to":[16,0.002,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture","cullface":"down"},"up":{"uv":[0,16,16,0],"texture":"#texture","cullface":"down"}}},{"from":[0,0,0],"to":[16,16,0.002],"faces":{"north":{"uv":[0,0,16,16],"texture":"#texture","cullface":"north"},"south":{"uv":[16,0,0,16],"texture":"#texture","cullface":"north"}}},{"from":[0,0,15.998],"to":[16,16,16],"faces":{"north":{"uv":[16,0,0,16],"texture":"#texture","cullface":"south"},"south":{"uv":[0,0,16,16],"texture":"#texture","cullface":"south"}}},{"from":[0,0,0],"to":[0.002,16,16],"faces":{"east":{"uv":[16,0,0,16],"texture":"#texture","cullface":"west"},"west":{"uv":[0,0,16,16],"texture":"#texture","cullface":"west"}}},{"from":[15.998,0,0],"to":[16,16,16],"faces":{"east":{"uv":[0,0,16,16],"texture":"#texture","cullface":"east"},"west":{"uv":[16,0,0,16],"texture":"#texture","cullface":"east"}}}]},"powder_snow_cauldron_full":{"parent":"minecraft:block/template_cauldron_full","textures":{"bottom":"minecraft:block/cauldron_bottom","content":"minecraft:block/powder_snow","inside":"minecraft:block/cauldron_inner","particle":"minecraft:block/cauldron_side","side":"minecraft:block/cauldron_side","top":"minecraft:block/cauldron_top"}},"powder_snow_cauldron_level1":{"parent":"minecraft:block/template_cauldron_level1","textures":{"bottom":"minecraft:block/cauldron_bottom","content":"minecraft:block/powder_snow","inside":"minecraft:block/cauldron_inner","particle":"minecraft:block/cauldron_side","side":"minecraft:block/cauldron_side","top":"minecraft:block/cauldron_top"}},"powder_snow_cauldron_level2":{"parent":"minecraft:block/template_cauldron_level2","textures":{"bottom":"minecraft:block/cauldron_bottom","content":"minecraft:block/powder_snow","inside":"minecraft:block/cauldron_inner","particle":"minecraft:block/cauldron_side","side":"minecraft:block/cauldron_side","top":"minecraft:block/cauldron_top"}},"powered_rail":{"parent":"minecraft:block/rail_flat","textures":{"rail":"minecraft:block/powered_rail"}},"powered_rail_on":{"parent":"minecraft:block/rail_flat","textures":{"rail":"minecraft:block/powered_rail_on"}},"powered_rail_on_raised_ne":{"parent":"minecraft:block/template_rail_raised_ne","textures":{"rail":"minecraft:block/powered_rail_on"}},"powered_rail_on_raised_sw":{"parent":"minecraft:block/template_rail_raised_sw","textures":{"rail":"minecraft:block/powered_rail_on"}},"powered_rail_raised_ne":{"parent":"minecraft:block/template_rail_raised_ne","textures":{"rail":"minecraft:block/powered_rail"}},"powered_rail_raised_sw":{"parent":"minecraft:block/template_rail_raised_sw","textures":{"rail":"minecraft:block/powered_rail"}},"pressure_plate_down":{"textures":{"particle":"#texture"},"elements":[{"from":[1,0,1],"to":[15,0.5,15],"faces":{"down":{"uv":[1,1,15,15],"texture":"#texture","cullface":"down"},"up":{"uv":[1,1,15,15],"texture":"#texture"},"north":{"uv":[1,15,15,15.5],"texture":"#texture"},"south":{"uv":[1,15,15,15.5],"texture":"#texture"},"west":{"uv":[1,15,15,15.5],"texture":"#texture"},"east":{"uv":[1,15,15,15.5],"texture":"#texture"}}}]},"pressure_plate_up":{"parent":"block/thin_block","textures":{"particle":"#texture"},"elements":[{"from":[1,0,1],"to":[15,1,15],"faces":{"down":{"uv":[1,1,15,15],"texture":"#texture","cullface":"down"},"up":{"uv":[1,1,15,15],"texture":"#texture"},"north":{"uv":[1,15,15,16],"texture":"#texture"},"south":{"uv":[1,15,15,16],"texture":"#texture"},"west":{"uv":[1,15,15,16],"texture":"#texture"},"east":{"uv":[1,15,15,16],"texture":"#texture"}}}]},"prismarine":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/prismarine"}},"prismarine_brick_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/prismarine_bricks","side":"minecraft:block/prismarine_bricks","top":"minecraft:block/prismarine_bricks"}},"prismarine_brick_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/prismarine_bricks","side":"minecraft:block/prismarine_bricks","top":"minecraft:block/prismarine_bricks"}},"prismarine_brick_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/prismarine_bricks","side":"minecraft:block/prismarine_bricks","top":"minecraft:block/prismarine_bricks"}},"prismarine_brick_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/prismarine_bricks","side":"minecraft:block/prismarine_bricks","top":"minecraft:block/prismarine_bricks"}},"prismarine_brick_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/prismarine_bricks","side":"minecraft:block/prismarine_bricks","top":"minecraft:block/prismarine_bricks"}},"prismarine_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/prismarine_bricks"}},"prismarine_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/prismarine","side":"minecraft:block/prismarine","top":"minecraft:block/prismarine"}},"prismarine_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/prismarine","side":"minecraft:block/prismarine","top":"minecraft:block/prismarine"}},"prismarine_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/prismarine","side":"minecraft:block/prismarine","top":"minecraft:block/prismarine"}},"prismarine_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/prismarine","side":"minecraft:block/prismarine","top":"minecraft:block/prismarine"}},"prismarine_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/prismarine","side":"minecraft:block/prismarine","top":"minecraft:block/prismarine"}},"prismarine_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/prismarine"}},"prismarine_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/prismarine"}},"prismarine_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/prismarine"}},"prismarine_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/prismarine"}},"pumpkin":{"parent":"block/cube_column","display":{"firstperson_righthand":{"rotation":[0,135,0],"translation":[0,0,0],"scale":[0.40,0.40,0.40]}},"textures":{"end":"block/pumpkin_top","side":"block/pumpkin_side"}},"pumpkin_stem_stage0":{"parent":"minecraft:block/stem_growth0","textures":{"stem":"minecraft:block/pumpkin_stem"}},"pumpkin_stem_stage1":{"parent":"minecraft:block/stem_growth1","textures":{"stem":"minecraft:block/pumpkin_stem"}},"pumpkin_stem_stage2":{"parent":"minecraft:block/stem_growth2","textures":{"stem":"minecraft:block/pumpkin_stem"}},"pumpkin_stem_stage3":{"parent":"minecraft:block/stem_growth3","textures":{"stem":"minecraft:block/pumpkin_stem"}},"pumpkin_stem_stage4":{"parent":"minecraft:block/stem_growth4","textures":{"stem":"minecraft:block/pumpkin_stem"}},"pumpkin_stem_stage5":{"parent":"minecraft:block/stem_growth5","textures":{"stem":"minecraft:block/pumpkin_stem"}},"pumpkin_stem_stage6":{"parent":"minecraft:block/stem_growth6","textures":{"stem":"minecraft:block/pumpkin_stem"}},"pumpkin_stem_stage7":{"parent":"minecraft:block/stem_growth7","textures":{"stem":"minecraft:block/pumpkin_stem"}},"purple_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/purple_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"purple_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/purple_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"purple_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/purple_candle","particle":"minecraft:block/purple_candle"}},"purple_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/purple_candle_lit","particle":"minecraft:block/purple_candle_lit"}},"purple_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/purple_candle","particle":"minecraft:block/purple_candle"}},"purple_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/purple_candle_lit","particle":"minecraft:block/purple_candle_lit"}},"purple_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/purple_candle","particle":"minecraft:block/purple_candle"}},"purple_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/purple_candle_lit","particle":"minecraft:block/purple_candle_lit"}},"purple_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/purple_candle","particle":"minecraft:block/purple_candle"}},"purple_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/purple_candle_lit","particle":"minecraft:block/purple_candle_lit"}},"purple_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/purple_wool"}},"purple_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/purple_concrete"}},"purple_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/purple_concrete_powder"}},"purple_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/purple_glazed_terracotta"}},"purple_shulker_box":{"textures":{"particle":"minecraft:block/purple_shulker_box"}},"purple_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/purple_stained_glass"}},"purple_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/purple_stained_glass"}},"purple_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/purple_stained_glass"}},"purple_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/purple_stained_glass_pane_top","pane":"minecraft:block/purple_stained_glass"}},"purple_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/purple_stained_glass_pane_top","pane":"minecraft:block/purple_stained_glass"}},"purple_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/purple_stained_glass_pane_top","pane":"minecraft:block/purple_stained_glass"}},"purple_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/purple_terracotta"}},"purple_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/purple_wool"}},"purpur_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/purpur_block"}},"purpur_pillar":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/purpur_pillar_top","side":"minecraft:block/purpur_pillar"}},"purpur_pillar_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/purpur_pillar_top","side":"minecraft:block/purpur_pillar"}},"purpur_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/purpur_block","side":"minecraft:block/purpur_block","top":"minecraft:block/purpur_block"}},"purpur_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/purpur_block","side":"minecraft:block/purpur_block","top":"minecraft:block/purpur_block"}},"purpur_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/purpur_block","side":"minecraft:block/purpur_block","top":"minecraft:block/purpur_block"}},"purpur_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/purpur_block","side":"minecraft:block/purpur_block","top":"minecraft:block/purpur_block"}},"purpur_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/purpur_block","side":"minecraft:block/purpur_block","top":"minecraft:block/purpur_block"}},"quartz_block":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/quartz_block_top","side":"minecraft:block/quartz_block_side"}},"quartz_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/quartz_bricks"}},"quartz_pillar":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/quartz_pillar_top","side":"minecraft:block/quartz_pillar"}},"quartz_pillar_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/quartz_pillar_top","side":"minecraft:block/quartz_pillar"}},"quartz_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/quartz_block_top","side":"minecraft:block/quartz_block_side","top":"minecraft:block/quartz_block_top"}},"quartz_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/quartz_block_top","side":"minecraft:block/quartz_block_side","top":"minecraft:block/quartz_block_top"}},"quartz_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/quartz_block_top","side":"minecraft:block/quartz_block_side","top":"minecraft:block/quartz_block_top"}},"quartz_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/quartz_block_top","side":"minecraft:block/quartz_block_side","top":"minecraft:block/quartz_block_top"}},"quartz_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/quartz_block_top","side":"minecraft:block/quartz_block_side","top":"minecraft:block/quartz_block_top"}},"rail":{"parent":"minecraft:block/rail_flat","textures":{"rail":"minecraft:block/rail"}},"rail_corner":{"parent":"minecraft:block/rail_curved","textures":{"rail":"minecraft:block/rail_corner"}},"rail_curved":{"ambientocclusion":false,"textures":{"particle":"#rail"},"elements":[{"from":[0,1,0],"to":[16,1,16],"faces":{"down":{"uv":[0,16,16,0],"texture":"#rail"},"up":{"uv":[0,0,16,16],"texture":"#rail"}}}]},"rail_flat":{"ambientocclusion":false,"textures":{"particle":"#rail"},"elements":[{"from":[0,1,0],"to":[16,1,16],"faces":{"down":{"uv":[0,16,16,0],"texture":"#rail"},"up":{"uv":[0,0,16,16],"texture":"#rail"}}}]},"rail_raised_ne":{"parent":"minecraft:block/template_rail_raised_ne","textures":{"rail":"minecraft:block/rail"}},"rail_raised_sw":{"parent":"minecraft:block/template_rail_raised_sw","textures":{"rail":"minecraft:block/rail"}},"raw_copper_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/raw_copper_block"}},"raw_gold_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/raw_gold_block"}},"raw_iron_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/raw_iron_block"}},"red_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/red_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"red_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/red_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"red_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/red_candle","particle":"minecraft:block/red_candle"}},"red_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/red_candle_lit","particle":"minecraft:block/red_candle_lit"}},"red_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/red_candle","particle":"minecraft:block/red_candle"}},"red_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/red_candle_lit","particle":"minecraft:block/red_candle_lit"}},"red_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/red_candle","particle":"minecraft:block/red_candle"}},"red_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/red_candle_lit","particle":"minecraft:block/red_candle_lit"}},"red_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/red_candle","particle":"minecraft:block/red_candle"}},"red_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/red_candle_lit","particle":"minecraft:block/red_candle_lit"}},"red_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/red_wool"}},"red_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/red_concrete"}},"red_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/red_concrete_powder"}},"red_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/red_glazed_terracotta"}},"red_mushroom":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/red_mushroom"}},"red_mushroom_block":{"parent":"minecraft:block/template_single_face","textures":{"texture":"minecraft:block/red_mushroom_block"}},"red_mushroom_block_inventory":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/red_mushroom_block"}},"red_nether_brick_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/red_nether_bricks","side":"minecraft:block/red_nether_bricks","top":"minecraft:block/red_nether_bricks"}},"red_nether_brick_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/red_nether_bricks","side":"minecraft:block/red_nether_bricks","top":"minecraft:block/red_nether_bricks"}},"red_nether_brick_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/red_nether_bricks","side":"minecraft:block/red_nether_bricks","top":"minecraft:block/red_nether_bricks"}},"red_nether_brick_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/red_nether_bricks","side":"minecraft:block/red_nether_bricks","top":"minecraft:block/red_nether_bricks"}},"red_nether_brick_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/red_nether_bricks","side":"minecraft:block/red_nether_bricks","top":"minecraft:block/red_nether_bricks"}},"red_nether_brick_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/red_nether_bricks"}},"red_nether_brick_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/red_nether_bricks"}},"red_nether_brick_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/red_nether_bricks"}},"red_nether_brick_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/red_nether_bricks"}},"red_nether_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/red_nether_bricks"}},"red_sand":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/red_sand"}},"red_sandstone":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/red_sandstone_bottom","side":"minecraft:block/red_sandstone","top":"minecraft:block/red_sandstone_top"}},"red_sandstone_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/red_sandstone_bottom","side":"minecraft:block/red_sandstone","top":"minecraft:block/red_sandstone_top"}},"red_sandstone_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/red_sandstone_bottom","side":"minecraft:block/red_sandstone","top":"minecraft:block/red_sandstone_top"}},"red_sandstone_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/red_sandstone_bottom","side":"minecraft:block/red_sandstone","top":"minecraft:block/red_sandstone_top"}},"red_sandstone_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/red_sandstone_bottom","side":"minecraft:block/red_sandstone","top":"minecraft:block/red_sandstone_top"}},"red_sandstone_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/red_sandstone_bottom","side":"minecraft:block/red_sandstone","top":"minecraft:block/red_sandstone_top"}},"red_sandstone_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/red_sandstone"}},"red_sandstone_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/red_sandstone"}},"red_sandstone_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/red_sandstone"}},"red_sandstone_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/red_sandstone"}},"red_shulker_box":{"textures":{"particle":"minecraft:block/red_shulker_box"}},"red_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/red_stained_glass"}},"red_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/red_stained_glass"}},"red_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/red_stained_glass"}},"red_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/red_stained_glass_pane_top","pane":"minecraft:block/red_stained_glass"}},"red_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/red_stained_glass_pane_top","pane":"minecraft:block/red_stained_glass"}},"red_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/red_stained_glass_pane_top","pane":"minecraft:block/red_stained_glass"}},"red_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/red_terracotta"}},"red_tulip":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/red_tulip"}},"red_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/red_wool"}},"redstone_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/redstone_block"}},"redstone_dust_dot":{"ambientocclusion":false,"textures":{"particle":"block/redstone_dust_dot","line":"block/redstone_dust_dot","overlay":"block/redstone_dust_overlay"},"elements":[{"from":[0,0.25,0],"to":[16,0.25,16],"shade":false,"faces":{"up":{"uv":[0,0,16,16],"texture":"#line","tintindex":0},"down":{"uv":[0,16,16,0],"texture":"#line","tintindex":0}}},{"from":[0,0.25,0],"to":[16,0.25,16],"shade":false,"faces":{"up":{"uv":[0,0,16,16],"texture":"#overlay"},"down":{"uv":[0,16,16,0],"texture":"#overlay"}}}]},"redstone_dust_side":{"ambientocclusion":false,"textures":{"particle":"block/redstone_dust_dot","overlay":"block/redstone_dust_overlay"},"elements":[{"from":[0,0.25,0],"to":[16,0.25,8],"shade":false,"faces":{"up":{"uv":[0,0,16,8],"texture":"#line","tintindex":0},"down":{"uv":[0,8,16,0],"texture":"#line","tintindex":0}}},{"from":[0,0.25,0],"to":[16,0.25,8],"shade":false,"faces":{"up":{"uv":[0,0,16,8],"texture":"#overlay"},"down":{"uv":[0,8,16,0],"texture":"#overlay"}}}]},"redstone_dust_side0":{"parent":"block/redstone_dust_side","textures":{"line":"block/redstone_dust_line0"}},"redstone_dust_side1":{"parent":"block/redstone_dust_side","textures":{"line":"block/redstone_dust_line1"}},"redstone_dust_side_alt":{"ambientocclusion":false,"textures":{"particle":"block/redstone_dust_dot","overlay":"block/redstone_dust_overlay"},"elements":[{"from":[0,0.25,8],"to":[16,0.25,16],"shade":false,"faces":{"up":{"uv":[0,8,16,16],"texture":"#line","tintindex":0},"down":{"uv":[0,16,16,8],"texture":"#line","tintindex":0}}},{"from":[0,0.25,8],"to":[16,0.25,16],"shade":false,"faces":{"up":{"uv":[0,8,16,16],"texture":"#overlay"},"down":{"uv":[0,16,16,8],"texture":"#overlay"}}}]},"redstone_dust_side_alt0":{"parent":"block/redstone_dust_side_alt","textures":{"line":"block/redstone_dust_line0"}},"redstone_dust_side_alt1":{"parent":"block/redstone_dust_side_alt","textures":{"line":"block/redstone_dust_line1"}},"redstone_dust_up":{"ambientocclusion":false,"textures":{"particle":"block/redstone_dust_dot","line":"block/redstone_dust_line0","overlay":"block/redstone_dust_overlay"},"elements":[{"from":[0,0,0.25],"to":[16,16,0.25],"shade":false,"faces":{"south":{"uv":[0,0,16,16],"texture":"#line","tintindex":0},"north":{"uv":[16,0,0,16],"texture":"#line","tintindex":0}}},{"from":[0,0,0.25],"to":[16,16,0.25],"shade":false,"faces":{"south":{"uv":[0,0,16,16],"texture":"#overlay"},"north":{"uv":[16,0,0,16],"texture":"#overlay"}}}]},"redstone_lamp":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/redstone_lamp"}},"redstone_lamp_on":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/redstone_lamp_on"}},"redstone_ore":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/redstone_ore"}},"redstone_torch":{"parent":"minecraft:block/template_redstone_torch","textures":{"torch":"minecraft:block/redstone_torch"}},"redstone_torch_off":{"parent":"minecraft:block/template_torch_unlit","textures":{"torch":"minecraft:block/redstone_torch_off"}},"redstone_wall_torch":{"parent":"minecraft:block/template_redstone_torch_wall","textures":{"torch":"minecraft:block/redstone_torch"}},"redstone_wall_torch_off":{"parent":"minecraft:block/template_torch_wall_unlit","textures":{"torch":"minecraft:block/redstone_torch_off"}},"reinforced_deepslate":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/reinforced_deepslate_bottom","side":"minecraft:block/reinforced_deepslate_side","top":"minecraft:block/reinforced_deepslate_top"}},"repeater_1tick":{"ambientocclusion":false,"textures":{"particle":"block/repeater","slab":"block/smooth_stone","top":"block/repeater","unlit":"block/redstone_torch_off"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[7,2,6],"to":[9,7,8],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}},{"from":[7,2,2],"to":[9,7,4],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}}]},"repeater_1tick_locked":{"ambientocclusion":false,"textures":{"particle":"block/repeater","slab":"block/smooth_stone","top":"block/repeater","lock":"block/bedrock","unlit":"block/redstone_torch_off"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[2,2,6],"to":[14,4,8],"faces":{"up":{"uv":[7,2,9,14],"texture":"#lock","rotation":90},"north":{"uv":[2,7,14,9],"texture":"#lock"},"south":{"uv":[2,7,14,9],"texture":"#lock"},"west":{"uv":[6,7,8,9],"texture":"#lock"},"east":{"uv":[6,7,8,9],"texture":"#lock"}}},{"from":[7,2,2],"to":[9,7,4],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}}]},"repeater_1tick_on":{"ambientocclusion":false,"textures":{"particle":"block/repeater_on","slab":"block/smooth_stone","top":"block/repeater_on","lit":"block/redstone_torch"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[7,2,6],"to":[9,7,8],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[7,2,2],"to":[9,7,4],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[6.5,1.5,1.5],"to":[9.5,4.5,4.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#lit"}}},{"from":[6.5,7.5,1.5],"to":[9.5,10.5,4.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#lit"}}},{"from":[6.5,4.5,-1.5],"to":[9.5,7.5,1.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#lit"}}},{"from":[6.5,4.5,4.5],"to":[9.5,7.5,7.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#lit"}}},{"from":[3.5,4.5,1.5],"to":[6.5,7.5,4.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#lit"}}},{"from":[9.5,4.5,1.5],"to":[12.5,7.5,4.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#lit"}}},{"from":[6.5,1.5,5.5],"to":[9.5,4.5,8.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#lit"}}},{"from":[6.5,7.5,5.5],"to":[9.5,10.5,8.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#lit"}}},{"from":[6.5,4.5,2.5],"to":[9.5,7.5,5.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#lit"}}},{"from":[6.5,4.5,8.5],"to":[9.5,7.5,11.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#lit"}}},{"from":[3.5,4.5,5.5],"to":[6.5,7.5,8.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#lit"}}},{"from":[9.5,4.5,5.5],"to":[12.5,7.5,8.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#lit"}}}]},"repeater_1tick_on_locked":{"ambientocclusion":false,"textures":{"particle":"block/repeater_on","slab":"block/smooth_stone","top":"block/repeater_on","lit":"block/redstone_torch","lock":"block/bedrock"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[2,2,6],"to":[14,4,8],"faces":{"up":{"uv":[7,2,9,14],"texture":"#lock","rotation":90},"north":{"uv":[2,7,14,9],"texture":"#lock"},"south":{"uv":[2,7,14,9],"texture":"#lock"},"west":{"uv":[6,7,8,9],"texture":"#lock"},"east":{"uv":[6,7,8,9],"texture":"#lock"}}},{"from":[7,2,2],"to":[9,7,4],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[6.5,1.5,1.5],"to":[9.5,4.5,4.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#lit"}}},{"from":[6.5,7.5,1.5],"to":[9.5,10.5,4.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#lit"}}},{"from":[6.5,4.5,-1.5],"to":[9.5,7.5,1.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#lit"}}},{"from":[6.5,4.5,4.5],"to":[9.5,7.5,7.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#lit"}}},{"from":[3.5,4.5,1.5],"to":[6.5,7.5,4.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#lit"}}},{"from":[9.5,4.5,1.5],"to":[12.5,7.5,4.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#lit"}}}]},"repeater_2tick":{"ambientocclusion":false,"textures":{"particle":"block/repeater","slab":"block/smooth_stone","top":"block/repeater","unlit":"block/redstone_torch_off"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[7,2,8],"to":[9,7,10],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}},{"from":[7,2,2],"to":[9,7,4],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}}]},"repeater_2tick_locked":{"ambientocclusion":false,"textures":{"particle":"block/repeater","slab":"block/smooth_stone","top":"block/repeater","lock":"block/bedrock","unlit":"block/redstone_torch_off"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[2,2,8],"to":[14,4,10],"faces":{"up":{"uv":[7,2,9,14],"texture":"#lock","rotation":90},"north":{"uv":[2,7,14,9],"texture":"#lock"},"south":{"uv":[2,7,14,9],"texture":"#lock"},"west":{"uv":[6,7,8,9],"texture":"#lock"},"east":{"uv":[6,7,8,9],"texture":"#lock"}}},{"from":[7,2,2],"to":[9,7,4],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}}]},"repeater_2tick_on":{"ambientocclusion":false,"textures":{"particle":"block/repeater_on","slab":"block/smooth_stone","top":"block/repeater_on","lit":"block/redstone_torch"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[7,2,8],"to":[9,7,10],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[7,2,2],"to":[9,7,4],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[6.5,1.5,1.5],"to":[9.5,4.5,4.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#lit"}}},{"from":[6.5,7.5,1.5],"to":[9.5,10.5,4.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#lit"}}},{"from":[6.5,4.5,-1.5],"to":[9.5,7.5,1.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#lit"}}},{"from":[6.5,4.5,4.5],"to":[9.5,7.5,7.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#lit"}}},{"from":[3.5,4.5,1.5],"to":[6.5,7.5,4.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#lit"}}},{"from":[9.5,4.5,1.5],"to":[12.5,7.5,4.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#lit"}}},{"from":[6.5,1.5,7.5],"to":[9.5,4.5,10.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#lit"}}},{"from":[6.5,7.5,7.5],"to":[9.5,10.5,10.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#lit"}}},{"from":[6.5,4.5,4.5],"to":[9.5,7.5,7.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#lit"}}},{"from":[6.5,4.5,10.5],"to":[9.5,7.5,13.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#lit"}}},{"from":[3.5,4.5,7.5],"to":[6.5,7.5,10.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#lit"}}},{"from":[9.5,4.5,7.5],"to":[12.5,7.5,10.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#lit"}}}]},"repeater_2tick_on_locked":{"ambientocclusion":false,"textures":{"particle":"block/repeater_on","slab":"block/smooth_stone","top":"block/repeater_on","lit":"block/redstone_torch","lock":"block/bedrock"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[2,2,8],"to":[14,4,10],"faces":{"up":{"uv":[7,2,9,14],"texture":"#lock","rotation":90},"north":{"uv":[2,7,14,9],"texture":"#lock"},"south":{"uv":[2,7,14,9],"texture":"#lock"},"west":{"uv":[6,7,8,9],"texture":"#lock"},"east":{"uv":[6,7,8,9],"texture":"#lock"}}},{"from":[7,2,2],"to":[9,7,4],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[6.5,1.5,1.5],"to":[9.5,4.5,4.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#lit"}}},{"from":[6.5,7.5,1.5],"to":[9.5,10.5,4.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#lit"}}},{"from":[6.5,4.5,-1.5],"to":[9.5,7.5,1.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#lit"}}},{"from":[6.5,4.5,4.5],"to":[9.5,7.5,7.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#lit"}}},{"from":[3.5,4.5,1.5],"to":[6.5,7.5,4.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#lit"}}},{"from":[9.5,4.5,1.5],"to":[12.5,7.5,4.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#lit"}}}]},"repeater_3tick":{"ambientocclusion":false,"textures":{"particle":"block/repeater","slab":"block/smooth_stone","top":"block/repeater","unlit":"block/redstone_torch_off"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[7,2,10],"to":[9,7,12],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}},{"from":[7,2,2],"to":[9,7,4],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}}]},"repeater_3tick_locked":{"ambientocclusion":false,"textures":{"particle":"block/repeater","slab":"block/smooth_stone","top":"block/repeater","lock":"block/bedrock","unlit":"block/redstone_torch_off"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[2,2,10],"to":[14,4,12],"faces":{"up":{"uv":[7,2,9,14],"texture":"#lock","rotation":90},"north":{"uv":[2,7,14,9],"texture":"#lock"},"south":{"uv":[2,7,14,9],"texture":"#lock"},"west":{"uv":[6,7,8,9],"texture":"#lock"},"east":{"uv":[6,7,8,9],"texture":"#lock"}}},{"from":[7,2,2],"to":[9,7,4],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}}]},"repeater_3tick_on":{"ambientocclusion":false,"textures":{"particle":"block/repeater_on","slab":"block/smooth_stone","top":"block/repeater_on","lit":"block/redstone_torch"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[7,2,10],"to":[9,7,12],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[7,2,2],"to":[9,7,4],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[6.5,1.5,1.5],"to":[9.5,4.5,4.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#lit"}}},{"from":[6.5,7.5,1.5],"to":[9.5,10.5,4.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#lit"}}},{"from":[6.5,4.5,-1.5],"to":[9.5,7.5,1.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#lit"}}},{"from":[6.5,4.5,4.5],"to":[9.5,7.5,7.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#lit"}}},{"from":[3.5,4.5,1.5],"to":[6.5,7.5,4.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#lit"}}},{"from":[9.5,4.5,1.5],"to":[12.5,7.5,4.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#lit"}}},{"from":[6.5,1.5,9.5],"to":[9.5,4.5,12.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#lit"}}},{"from":[6.5,7.5,9.5],"to":[9.5,10.5,12.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#lit"}}},{"from":[6.5,4.5,6.5],"to":[9.5,7.5,9.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#lit"}}},{"from":[6.5,4.5,12.5],"to":[9.5,7.5,15.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#lit"}}},{"from":[3.5,4.5,9.5],"to":[6.5,7.5,12.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#lit"}}},{"from":[9.5,4.5,9.5],"to":[12.5,7.5,12.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#lit"}}}]},"repeater_3tick_on_locked":{"ambientocclusion":false,"textures":{"particle":"block/repeater_on","slab":"block/smooth_stone","top":"block/repeater_on","lit":"block/redstone_torch","lock":"block/bedrock"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[2,2,10],"to":[14,4,12],"faces":{"up":{"uv":[7,2,9,14],"texture":"#lock","rotation":90},"north":{"uv":[2,7,14,9],"texture":"#lock"},"south":{"uv":[2,7,14,9],"texture":"#lock"},"west":{"uv":[6,7,8,9],"texture":"#lock"},"east":{"uv":[6,7,8,9],"texture":"#lock"}}},{"from":[7,2,2],"to":[9,7,4],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[6.5,1.5,1.5],"to":[9.5,4.5,4.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#lit"}}},{"from":[6.5,7.5,1.5],"to":[9.5,10.5,4.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#lit"}}},{"from":[6.5,4.5,-1.5],"to":[9.5,7.5,1.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#lit"}}},{"from":[6.5,4.5,4.5],"to":[9.5,7.5,7.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#lit"}}},{"from":[3.5,4.5,1.5],"to":[6.5,7.5,4.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#lit"}}},{"from":[9.5,4.5,1.5],"to":[12.5,7.5,4.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#lit"}}}]},"repeater_4tick":{"ambientocclusion":false,"textures":{"particle":"block/repeater","slab":"block/smooth_stone","top":"block/repeater","unlit":"block/redstone_torch_off"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[7,2,12],"to":[9,7,14],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}},{"from":[7,2,2],"to":[9,7,4],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}}]},"repeater_4tick_locked":{"ambientocclusion":false,"textures":{"particle":"block/repeater","slab":"block/smooth_stone","top":"block/repeater","lock":"block/bedrock","unlit":"block/redstone_torch_off"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[2,2,12],"to":[14,4,14],"faces":{"up":{"uv":[7,2,9,14],"texture":"#lock","rotation":90},"north":{"uv":[2,7,14,9],"texture":"#lock"},"south":{"uv":[2,7,14,9],"texture":"#lock"},"west":{"uv":[6,7,8,9],"texture":"#lock"},"east":{"uv":[6,7,8,9],"texture":"#lock"}}},{"from":[7,2,2],"to":[9,7,4],"faces":{"up":{"uv":[7,6,9,8],"texture":"#unlit"},"north":{"uv":[7,6,9,11],"texture":"#unlit"},"south":{"uv":[7,6,9,11],"texture":"#unlit"},"west":{"uv":[7,6,9,11],"texture":"#unlit"},"east":{"uv":[7,6,9,11],"texture":"#unlit"}}}]},"repeater_4tick_on":{"ambientocclusion":false,"textures":{"particle":"block/repeater_on","slab":"block/smooth_stone","top":"block/repeater_on","lit":"block/redstone_torch"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[7,2,12],"to":[9,7,14],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[7,2,2],"to":[9,7,4],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[6.5,1.5,1.5],"to":[9.5,4.5,4.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#lit"}}},{"from":[6.5,7.5,1.5],"to":[9.5,10.5,4.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#lit"}}},{"from":[6.5,4.5,-1.5],"to":[9.5,7.5,1.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#lit"}}},{"from":[6.5,4.5,4.5],"to":[9.5,7.5,7.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#lit"}}},{"from":[3.5,4.5,1.5],"to":[6.5,7.5,4.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#lit"}}},{"from":[9.5,4.5,1.5],"to":[12.5,7.5,4.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#lit"}}},{"from":[6.5,1.5,11.5],"to":[9.5,4.5,14.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#lit"}}},{"from":[6.5,7.5,11.5],"to":[9.5,10.5,14.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#lit"}}},{"from":[6.5,4.5,8.5],"to":[9.5,7.5,11.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#lit"}}},{"from":[6.5,4.5,14.5],"to":[9.5,7.5,17.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#lit"}}},{"from":[3.5,4.5,11.5],"to":[6.5,7.5,14.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#lit"}}},{"from":[9.5,4.5,11.5],"to":[12.5,7.5,14.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#lit"}}}]},"repeater_4tick_on_locked":{"ambientocclusion":false,"textures":{"particle":"block/repeater_on","slab":"block/smooth_stone","top":"block/repeater_on","lit":"block/redstone_torch","lock":"block/bedrock"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#slab","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,14,16,16],"texture":"#slab","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#slab","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#slab","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#slab","cullface":"east"}}},{"from":[2,2,12],"to":[14,4,14],"faces":{"up":{"uv":[7,2,9,14],"texture":"#lock","rotation":90},"north":{"uv":[2,7,14,9],"texture":"#lock"},"south":{"uv":[2,7,14,9],"texture":"#lock"},"west":{"uv":[6,7,8,9],"texture":"#lock"},"east":{"uv":[6,7,8,9],"texture":"#lock"}}},{"from":[7,2,2],"to":[9,7,4],"shade":false,"faces":{"up":{"uv":[7,6,9,8],"texture":"#lit"},"north":{"uv":[7,6,9,11],"texture":"#lit"},"south":{"uv":[7,6,9,11],"texture":"#lit"},"west":{"uv":[7,6,9,11],"texture":"#lit"},"east":{"uv":[7,6,9,11],"texture":"#lit"}}},{"from":[6.5,1.5,1.5],"to":[9.5,4.5,4.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#lit"}}},{"from":[6.5,7.5,1.5],"to":[9.5,10.5,4.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#lit"}}},{"from":[6.5,4.5,-1.5],"to":[9.5,7.5,1.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#lit"}}},{"from":[6.5,4.5,4.5],"to":[9.5,7.5,7.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#lit"}}},{"from":[3.5,4.5,1.5],"to":[6.5,7.5,4.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#lit"}}},{"from":[9.5,4.5,1.5],"to":[12.5,7.5,4.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#lit"}}}]},"repeating_command_block":{"parent":"minecraft:block/template_command_block","textures":{"back":"minecraft:block/repeating_command_block_back","front":"minecraft:block/repeating_command_block_front","side":"minecraft:block/repeating_command_block_side"}},"repeating_command_block_conditional":{"parent":"minecraft:block/template_command_block","textures":{"back":"minecraft:block/repeating_command_block_back","front":"minecraft:block/repeating_command_block_front","side":"minecraft:block/repeating_command_block_conditional"}},"resin_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/resin_block"}},"resin_brick_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/resin_bricks","side":"minecraft:block/resin_bricks","top":"minecraft:block/resin_bricks"}},"resin_brick_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/resin_bricks","side":"minecraft:block/resin_bricks","top":"minecraft:block/resin_bricks"}},"resin_brick_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/resin_bricks","side":"minecraft:block/resin_bricks","top":"minecraft:block/resin_bricks"}},"resin_brick_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/resin_bricks","side":"minecraft:block/resin_bricks","top":"minecraft:block/resin_bricks"}},"resin_brick_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/resin_bricks","side":"minecraft:block/resin_bricks","top":"minecraft:block/resin_bricks"}},"resin_brick_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/resin_bricks"}},"resin_brick_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/resin_bricks"}},"resin_brick_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/resin_bricks"}},"resin_brick_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/resin_bricks"}},"resin_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/resin_bricks"}},"resin_clump":{"ambientocclusion":false,"textures":{"particle":"block/resin_clump","texture":"block/resin_clump"},"elements":[{"from":[0,0,0.1],"to":[16,16,0.1],"faces":{"north":{"uv":[16,0,0,16],"texture":"#texture"},"south":{"uv":[0,0,16,16],"texture":"#texture"}}}]},"respawn_anchor_0":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/respawn_anchor_bottom","side":"minecraft:block/respawn_anchor_side0","top":"minecraft:block/respawn_anchor_top_off"}},"respawn_anchor_1":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/respawn_anchor_bottom","side":"minecraft:block/respawn_anchor_side1","top":"minecraft:block/respawn_anchor_top"}},"respawn_anchor_2":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/respawn_anchor_bottom","side":"minecraft:block/respawn_anchor_side2","top":"minecraft:block/respawn_anchor_top"}},"respawn_anchor_3":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/respawn_anchor_bottom","side":"minecraft:block/respawn_anchor_side3","top":"minecraft:block/respawn_anchor_top"}},"respawn_anchor_4":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/respawn_anchor_bottom","side":"minecraft:block/respawn_anchor_side4","top":"minecraft:block/respawn_anchor_top"}},"rooted_dirt":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/rooted_dirt"}},"rose_bush_bottom":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/rose_bush_bottom"}},"rose_bush_top":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/rose_bush_top"}},"sand":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/sand"}},"sandstone":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/sandstone_bottom","side":"minecraft:block/sandstone","top":"minecraft:block/sandstone_top"}},"sandstone_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/sandstone_bottom","side":"minecraft:block/sandstone","top":"minecraft:block/sandstone_top"}},"sandstone_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/sandstone_bottom","side":"minecraft:block/sandstone","top":"minecraft:block/sandstone_top"}},"sandstone_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/sandstone_bottom","side":"minecraft:block/sandstone","top":"minecraft:block/sandstone_top"}},"sandstone_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/sandstone_bottom","side":"minecraft:block/sandstone","top":"minecraft:block/sandstone_top"}},"sandstone_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/sandstone_bottom","side":"minecraft:block/sandstone","top":"minecraft:block/sandstone_top"}},"sandstone_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/sandstone"}},"sandstone_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/sandstone"}},"sandstone_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/sandstone"}},"sandstone_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/sandstone"}},"scaffolding_stable":{"parent":"block/block","textures":{"particle":"block/scaffolding_top","top":"block/scaffolding_top","side":"block/scaffolding_side","bottom":"block/scaffolding_bottom"},"elements":[{"from":[0,15.99,0],"to":[16,16,16],"faces":{"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#top","uv":[0,16,16,0]}}},{"from":[0,0,0],"to":[2,16,2],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,14],"to":[2,16,16],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,14],"to":[16,16,16],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,0],"to":[16,16,2],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[2,14,0],"to":[14,16,2],"faces":{"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side","uv":[2,2,14,4]},"down":{"texture":"#bottom"}}},{"from":[2,14,14],"to":[14,16,16],"faces":{"north":{"texture":"#side","uv":[14,0,2,2]},"south":{"texture":"#side","cullface":"south"},"down":{"texture":"#bottom"}}},{"from":[14,14,2],"to":[16,16,14],"faces":{"east":{"texture":"#side","uv":[14,0,2,2],"cullface":"east"},"west":{"texture":"#side","uv":[14,2,2,4]},"down":{"texture":"#bottom"}}},{"from":[0,14,2],"to":[2,16,14],"faces":{"east":{"texture":"#side"},"west":{"texture":"#side","uv":[14,0,2,2],"cullface":"west"},"down":{"texture":"#bottom"}}}]},"scaffolding_unstable":{"parent":"block/block","textures":{"particle":"block/scaffolding_top","top":"block/scaffolding_top","side":"block/scaffolding_side","bottom":"block/scaffolding_bottom"},"elements":[{"from":[0,15.99,0],"to":[16,16,16],"faces":{"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#top","uv":[0,16,16,0]}}},{"from":[0,0,0],"to":[2,16,2],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,14],"to":[2,16,16],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,14],"to":[16,16,16],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,0],"to":[16,16,2],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[2,14,0],"to":[14,16,2],"faces":{"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side","uv":[2,2,14,4]},"down":{"texture":"#bottom"}}},{"from":[2,14,14],"to":[14,16,16],"faces":{"north":{"texture":"#side","uv":[14,0,2,2]},"south":{"texture":"#side","cullface":"south"},"down":{"texture":"#bottom"}}},{"from":[14,14,2],"to":[16,16,14],"faces":{"east":{"texture":"#side","uv":[14,0,2,2],"cullface":"east"},"west":{"texture":"#side","uv":[14,2,2,4]},"down":{"texture":"#bottom"}}},{"from":[0,14,2],"to":[2,16,14],"faces":{"east":{"texture":"#side"},"west":{"texture":"#side","uv":[14,0,2,2],"cullface":"west"},"down":{"texture":"#bottom"}}},{"from":[0,1.99,0],"to":[16,2,16],"faces":{"up":{"texture":"#top"},"down":{"uv":[0,16,16,0],"texture":"#top"}}},{"from":[2,0,0],"to":[14,2,2],"faces":{"north":{"texture":"#side","uv":[2,0,14,2],"cullface":"north"},"south":{"texture":"#side","uv":[2,2,14,4]},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[2,0,14],"to":[14,2,16],"faces":{"north":{"texture":"#side","uv":[14,0,2,2]},"south":{"texture":"#side","uv":[2,0,14,2],"cullface":"south"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,2],"to":[16,2,14],"faces":{"east":{"texture":"#side","uv":[14,0,2,2],"cullface":"east"},"west":{"texture":"#side","uv":[14,2,2,4]},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,2],"to":[2,2,14],"faces":{"east":{"texture":"#side","uv":[2,0,14,2]},"west":{"texture":"#side","uv":[14,0,2,2],"cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}}]},"sculk":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/sculk"}},"sculk_catalyst":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/sculk_catalyst_bottom","side":"minecraft:block/sculk_catalyst_side","top":"minecraft:block/sculk_catalyst_top"}},"sculk_catalyst_bloom":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/sculk_catalyst_bottom","side":"minecraft:block/sculk_catalyst_side_bloom","top":"minecraft:block/sculk_catalyst_top_bloom"}},"sculk_mirrored":{"parent":"minecraft:block/cube_mirrored_all","textures":{"all":"minecraft:block/sculk"}},"sculk_sensor":{"parent":"block/block","textures":{"bottom":"block/sculk_sensor_bottom","side":"block/sculk_sensor_side","tendrils":"block/sculk_sensor_tendril_inactive","top":"block/sculk_sensor_top","particle":"block/sculk_sensor_bottom"},"elements":[{"from":[0,0,0],"to":[16,8,16],"faces":{"north":{"uv":[0,8,16,16],"texture":"#side","cullface":"north"},"east":{"uv":[0,8,16,16],"texture":"#side","cullface":"east"},"south":{"uv":[0,8,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,8,16,16],"texture":"#side","cullface":"west"},"up":{"uv":[0,0,16,16],"texture":"#top"},"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"}}},{"from":[-1,8,3],"to":[7,16,3],"rotation":{"angle":45,"axis":"y","origin":[3,12,3]},"faces":{"north":{"uv":[4,8,12,16],"texture":"#tendrils"},"south":{"uv":[12,8,4,16],"texture":"#tendrils"}}},{"from":[9,8,3],"to":[17,16,3],"rotation":{"angle":-45,"axis":"y","origin":[13,12,3]},"faces":{"north":{"uv":[12,8,4,16],"texture":"#tendrils"},"south":{"uv":[4,8,12,16],"texture":"#tendrils"}}},{"from":[9,8,13],"to":[17,16,13],"rotation":{"angle":45,"axis":"y","origin":[13,12,13]},"faces":{"north":{"uv":[12,8,4,16],"texture":"#tendrils"},"south":{"uv":[4,8,12,16],"texture":"#tendrils"}}},{"from":[-1,8,13],"to":[7,16,13],"rotation":{"angle":-45,"axis":"y","origin":[3,12,13]},"faces":{"north":{"uv":[4,8,12,16],"texture":"#tendrils"},"south":{"uv":[12,8,4,16],"texture":"#tendrils"}}}]},"sculk_sensor_active":{"parent":"block/sculk_sensor","textures":{"tendrils":"block/sculk_sensor_tendril_active"}},"sculk_sensor_inactive":{"parent":"block/sculk_sensor","textures":{"tendrils":"block/sculk_sensor_tendril_inactive"}},"sculk_shrieker":{"parent":"minecraft:block/template_sculk_shrieker","textures":{"bottom":"minecraft:block/sculk_shrieker_bottom","inner_top":"minecraft:block/sculk_shrieker_inner_top","particle":"minecraft:block/sculk_shrieker_bottom","side":"minecraft:block/sculk_shrieker_side","top":"minecraft:block/sculk_shrieker_top"}},"sculk_shrieker_can_summon":{"parent":"minecraft:block/template_sculk_shrieker","textures":{"bottom":"minecraft:block/sculk_shrieker_bottom","inner_top":"minecraft:block/sculk_shrieker_can_summon_inner_top","particle":"minecraft:block/sculk_shrieker_bottom","side":"minecraft:block/sculk_shrieker_side","top":"minecraft:block/sculk_shrieker_top"}},"sculk_vein":{"ambientocclusion":false,"textures":{"particle":"block/sculk_vein","sculk_vein":"block/sculk_vein"},"elements":[{"from":[0,0,0.1],"to":[16,16,0.1],"faces":{"north":{"uv":[16,0,0,16],"texture":"#sculk_vein"},"south":{"uv":[0,0,16,16],"texture":"#sculk_vein"}}}]},"sea_lantern":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/sea_lantern"}},"sea_pickle":{"parent":"block/block","textures":{"particle":"block/sea_pickle","all":"block/sea_pickle"},"elements":[{"from":[6,0,6],"to":[10,6,10],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,11],"texture":"#all"},"south":{"uv":[0,5,4,11],"texture":"#all"},"west":{"uv":[8,5,12,11],"texture":"#all"},"east":{"uv":[12,5,16,11],"texture":"#all"}}},{"from":[6,5.95,6],"to":[10,5.95,10],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[7.5,5.2,8],"to":[8.5,8.7,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[1,0,3,5],"texture":"#all"},"south":{"uv":[3,0,1,5],"texture":"#all"}}},{"from":[8,5.2,7.5],"to":[8,8.7,8.5],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[13,0,15,5],"texture":"#all"},"east":{"uv":[15,0,13,5],"texture":"#all"}}}]},"seagrass":{"parent":"minecraft:block/template_seagrass","textures":{"texture":"minecraft:block/seagrass"}},"short_dry_grass":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/short_dry_grass"}},"short_grass":{"parent":"minecraft:block/tinted_cross","textures":{"cross":"minecraft:block/short_grass"}},"shroomlight":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/shroomlight"}},"shulker_box":{"textures":{"particle":"minecraft:block/shulker_box"}},"skull":{"textures":{"particle":"minecraft:block/soul_sand"}},"slab":{"parent":"block/block","textures":{"particle":"#side"},"elements":[{"from":[0,0,0],"to":[16,8,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,8,16,16],"texture":"#side","cullface":"north"},"south":{"uv":[0,8,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,8,16,16],"texture":"#side","cullface":"west"},"east":{"uv":[0,8,16,16],"texture":"#side","cullface":"east"}}}]},"slab_top":{"textures":{"particle":"#side"},"elements":[{"from":[0,8,0],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom"},"up":{"uv":[0,0,16,16],"texture":"#top","cullface":"up"},"north":{"uv":[0,0,16,8],"texture":"#side","cullface":"north"},"south":{"uv":[0,0,16,8],"texture":"#side","cullface":"south"},"west":{"uv":[0,0,16,8],"texture":"#side","cullface":"west"},"east":{"uv":[0,0,16,8],"texture":"#side","cullface":"east"}}}]},"slightly_cracked_turtle_egg":{"parent":"minecraft:block/template_turtle_egg","textures":{"all":"minecraft:block/turtle_egg_slightly_cracked"}},"slime_block":{"parent":"block/block","textures":{"particle":"block/slime_block","texture":"block/slime_block"},"elements":[{"from":[3,3,3],"to":[13,13,13],"faces":{"down":{"uv":[3,3,13,13],"texture":"#texture"},"up":{"uv":[3,3,13,13],"texture":"#texture"},"north":{"uv":[3,3,13,13],"texture":"#texture"},"south":{"uv":[3,3,13,13],"texture":"#texture"},"west":{"uv":[3,3,13,13],"texture":"#texture"},"east":{"uv":[3,3,13,13],"texture":"#texture"}}},{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#texture","cullface":"up"},"north":{"uv":[0,0,16,16],"texture":"#texture","cullface":"north"},"south":{"uv":[0,0,16,16],"texture":"#texture","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#texture","cullface":"west"},"east":{"uv":[0,0,16,16],"texture":"#texture","cullface":"east"}}}]},"small_amethyst_bud":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/small_amethyst_bud"}},"small_dripleaf_bottom":{"parent":"block/block","textures":{"stem":"block/small_dripleaf_stem_bottom","particle":"block/big_dripleaf_stem"},"elements":[{"from":[4.5,0,8],"to":[11.5,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":false},"shade":false,"faces":{"north":{"uv":[5,0,12,16],"texture":"#stem"},"south":{"uv":[5,0,12,16],"texture":"#stem"}}},{"from":[4.5,0,8],"to":[11.5,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":-45,"rescale":false},"shade":false,"faces":{"north":{"uv":[5,0,12,16],"texture":"#stem"},"south":{"uv":[5,0,12,16],"texture":"#stem"}}}]},"small_dripleaf_top":{"parent":"block/block","textures":{"top":"block/small_dripleaf_top","side":"block/small_dripleaf_side","stem":"block/small_dripleaf_stem_top","particle":"block/small_dripleaf_top"},"elements":[{"from":[8,3,8],"to":[15,3,15],"shade":false,"faces":{"down":{"uv":[8,0,0,8],"texture":"#top"},"up":{"uv":[8,8,0,0],"texture":"#top"}}},{"from":[1,8.02,1],"to":[8,8.02,8],"shade":false,"faces":{"down":{"uv":[0,8,8,0],"texture":"#top"},"up":{"uv":[0,0,8,8],"texture":"#top"}}},{"from":[1,12.02,8],"to":[8,12.02,15],"shade":false,"faces":{"down":{"uv":[8,0,0,8],"texture":"#top","rotation":270},"up":{"uv":[0,0,8,8],"texture":"#top","rotation":270}}},{"from":[8,2,8],"to":[15,3,15],"shade":false,"faces":{"east":{"uv":[0,0,8,1],"texture":"#side"},"west":{"uv":[0,0,8,1],"texture":"#side"},"north":{"uv":[0,0,8,1],"texture":"#side"},"south":{"uv":[0,0,8,1],"texture":"#side"}}},{"from":[1,7.02,1],"to":[8,8.02,8],"shade":false,"faces":{"east":{"uv":[0,0,8,1],"texture":"#side"},"west":{"uv":[0,0,8,1],"texture":"#side"},"north":{"uv":[0,0,8,1],"texture":"#side"},"south":{"uv":[0,0,8,1],"texture":"#side"}}},{"from":[1,11.02,8],"to":[8,12.02,15],"shade":false,"faces":{"east":{"uv":[0,0,8,1],"texture":"#side"},"west":{"uv":[0,0,8,1],"texture":"#side"},"north":{"uv":[0,0,8,1],"texture":"#side"},"south":{"uv":[0,0,8,1],"texture":"#side"}}},{"from":[4.5,0,8],"to":[11.5,14,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":false},"shade":false,"faces":{"north":{"uv":[4,0,12,14],"texture":"#stem"},"south":{"uv":[4,0,12,14],"texture":"#stem"}}},{"from":[4.5,0,8],"to":[11.5,14,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":-45,"rescale":false},"shade":false,"faces":{"north":{"uv":[4,0,12,14],"texture":"#stem"},"south":{"uv":[4,0,12,14],"texture":"#stem"}}}]},"smithing_table":{"parent":"minecraft:block/cube","textures":{"down":"minecraft:block/smithing_table_bottom","east":"minecraft:block/smithing_table_side","north":"minecraft:block/smithing_table_front","particle":"minecraft:block/smithing_table_front","south":"minecraft:block/smithing_table_front","up":"minecraft:block/smithing_table_top","west":"minecraft:block/smithing_table_side"}},"smoker":{"parent":"minecraft:block/orientable_with_bottom","textures":{"bottom":"minecraft:block/smoker_bottom","front":"minecraft:block/smoker_front","side":"minecraft:block/smoker_side","top":"minecraft:block/smoker_top"}},"smoker_on":{"parent":"minecraft:block/orientable_with_bottom","textures":{"bottom":"minecraft:block/smoker_bottom","front":"minecraft:block/smoker_front_on","side":"minecraft:block/smoker_side","top":"minecraft:block/smoker_top"}},"smooth_basalt":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/smooth_basalt"}},"smooth_quartz":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/quartz_block_bottom"}},"smooth_quartz_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/quartz_block_bottom","side":"minecraft:block/quartz_block_bottom","top":"minecraft:block/quartz_block_bottom"}},"smooth_quartz_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/quartz_block_bottom","side":"minecraft:block/quartz_block_bottom","top":"minecraft:block/quartz_block_bottom"}},"smooth_quartz_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/quartz_block_bottom","side":"minecraft:block/quartz_block_bottom","top":"minecraft:block/quartz_block_bottom"}},"smooth_quartz_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/quartz_block_bottom","side":"minecraft:block/quartz_block_bottom","top":"minecraft:block/quartz_block_bottom"}},"smooth_quartz_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/quartz_block_bottom","side":"minecraft:block/quartz_block_bottom","top":"minecraft:block/quartz_block_bottom"}},"smooth_red_sandstone":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/red_sandstone_top"}},"smooth_red_sandstone_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/red_sandstone_top","side":"minecraft:block/red_sandstone_top","top":"minecraft:block/red_sandstone_top"}},"smooth_red_sandstone_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/red_sandstone_top","side":"minecraft:block/red_sandstone_top","top":"minecraft:block/red_sandstone_top"}},"smooth_red_sandstone_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/red_sandstone_top","side":"minecraft:block/red_sandstone_top","top":"minecraft:block/red_sandstone_top"}},"smooth_red_sandstone_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/red_sandstone_top","side":"minecraft:block/red_sandstone_top","top":"minecraft:block/red_sandstone_top"}},"smooth_red_sandstone_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/red_sandstone_top","side":"minecraft:block/red_sandstone_top","top":"minecraft:block/red_sandstone_top"}},"smooth_sandstone":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/sandstone_top"}},"smooth_sandstone_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/sandstone_top","side":"minecraft:block/sandstone_top","top":"minecraft:block/sandstone_top"}},"smooth_sandstone_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/sandstone_top","side":"minecraft:block/sandstone_top","top":"minecraft:block/sandstone_top"}},"smooth_sandstone_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/sandstone_top","side":"minecraft:block/sandstone_top","top":"minecraft:block/sandstone_top"}},"smooth_sandstone_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/sandstone_top","side":"minecraft:block/sandstone_top","top":"minecraft:block/sandstone_top"}},"smooth_sandstone_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/sandstone_top","side":"minecraft:block/sandstone_top","top":"minecraft:block/sandstone_top"}},"smooth_stone":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/smooth_stone"}},"smooth_stone_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/smooth_stone","side":"minecraft:block/smooth_stone_slab_side","top":"minecraft:block/smooth_stone"}},"smooth_stone_slab_double":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/smooth_stone","side":"minecraft:block/smooth_stone_slab_side"}},"smooth_stone_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/smooth_stone","side":"minecraft:block/smooth_stone_slab_side","top":"minecraft:block/smooth_stone"}},"sniffer_egg":{"textures":{"particle":"#north"},"elements":[{"from":[1,0,2],"to":[15,16,14],"faces":{"north":{"uv":[0,0,14,16],"texture":"#north"},"east":{"uv":[0,0,12,16],"texture":"#east"},"south":{"uv":[0,0,14,16],"texture":"#south"},"west":{"uv":[0,0,12,16],"texture":"#west"},"up":{"uv":[0,0,14,12],"texture":"#top","cullface":"up"},"down":{"uv":[0,0,14,12],"texture":"#bottom","cullface":"down"}}}]},"sniffer_egg_not_cracked":{"parent":"minecraft:block/sniffer_egg","textures":{"bottom":"minecraft:block/sniffer_egg_not_cracked_bottom","east":"minecraft:block/sniffer_egg_not_cracked_east","north":"minecraft:block/sniffer_egg_not_cracked_north","south":"minecraft:block/sniffer_egg_not_cracked_south","top":"minecraft:block/sniffer_egg_not_cracked_top","west":"minecraft:block/sniffer_egg_not_cracked_west"}},"sniffer_egg_slightly_cracked":{"parent":"minecraft:block/sniffer_egg","textures":{"bottom":"minecraft:block/sniffer_egg_slightly_cracked_bottom","east":"minecraft:block/sniffer_egg_slightly_cracked_east","north":"minecraft:block/sniffer_egg_slightly_cracked_north","south":"minecraft:block/sniffer_egg_slightly_cracked_south","top":"minecraft:block/sniffer_egg_slightly_cracked_top","west":"minecraft:block/sniffer_egg_slightly_cracked_west"}},"sniffer_egg_very_cracked":{"parent":"minecraft:block/sniffer_egg","textures":{"bottom":"minecraft:block/sniffer_egg_very_cracked_bottom","east":"minecraft:block/sniffer_egg_very_cracked_east","north":"minecraft:block/sniffer_egg_very_cracked_north","south":"minecraft:block/sniffer_egg_very_cracked_south","top":"minecraft:block/sniffer_egg_very_cracked_top","west":"minecraft:block/sniffer_egg_very_cracked_west"}},"snow_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/snow"}},"snow_height10":{"textures":{"particle":"block/snow","texture":"block/snow"},"elements":[{"from":[0,0,0],"to":[16,10,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#texture"},"north":{"uv":[0,6,16,16],"texture":"#texture","cullface":"north"},"south":{"uv":[0,6,16,16],"texture":"#texture","cullface":"south"},"west":{"uv":[0,6,16,16],"texture":"#texture","cullface":"west"},"east":{"uv":[0,6,16,16],"texture":"#texture","cullface":"east"}}}]},"snow_height12":{"textures":{"particle":"block/snow","texture":"block/snow"},"elements":[{"from":[0,0,0],"to":[16,12,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#texture"},"north":{"uv":[0,4,16,16],"texture":"#texture","cullface":"north"},"south":{"uv":[0,4,16,16],"texture":"#texture","cullface":"south"},"west":{"uv":[0,4,16,16],"texture":"#texture","cullface":"west"},"east":{"uv":[0,4,16,16],"texture":"#texture","cullface":"east"}}}]},"snow_height14":{"textures":{"particle":"block/snow","texture":"block/snow"},"elements":[{"from":[0,0,0],"to":[16,14,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#texture"},"north":{"uv":[0,2,16,16],"texture":"#texture","cullface":"north"},"south":{"uv":[0,2,16,16],"texture":"#texture","cullface":"south"},"west":{"uv":[0,2,16,16],"texture":"#texture","cullface":"west"},"east":{"uv":[0,2,16,16],"texture":"#texture","cullface":"east"}}}]},"snow_height2":{"parent":"block/thin_block","textures":{"particle":"block/snow","texture":"block/snow"},"elements":[{"from":[0,0,0],"to":[16,2,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#texture"},"north":{"uv":[0,14,16,16],"texture":"#texture","cullface":"north"},"south":{"uv":[0,14,16,16],"texture":"#texture","cullface":"south"},"west":{"uv":[0,14,16,16],"texture":"#texture","cullface":"west"},"east":{"uv":[0,14,16,16],"texture":"#texture","cullface":"east"}}}]},"snow_height4":{"textures":{"particle":"block/snow","texture":"block/snow"},"elements":[{"from":[0,0,0],"to":[16,4,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#texture"},"north":{"uv":[0,12,16,16],"texture":"#texture","cullface":"north"},"south":{"uv":[0,12,16,16],"texture":"#texture","cullface":"south"},"west":{"uv":[0,12,16,16],"texture":"#texture","cullface":"west"},"east":{"uv":[0,12,16,16],"texture":"#texture","cullface":"east"}}}]},"snow_height6":{"textures":{"particle":"block/snow","texture":"block/snow"},"elements":[{"from":[0,0,0],"to":[16,6,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#texture"},"north":{"uv":[0,10,16,16],"texture":"#texture","cullface":"north"},"south":{"uv":[0,10,16,16],"texture":"#texture","cullface":"south"},"west":{"uv":[0,10,16,16],"texture":"#texture","cullface":"west"},"east":{"uv":[0,10,16,16],"texture":"#texture","cullface":"east"}}}]},"snow_height8":{"textures":{"particle":"block/snow","texture":"block/snow"},"elements":[{"from":[0,0,0],"to":[16,8,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#texture"},"north":{"uv":[0,8,16,16],"texture":"#texture","cullface":"north"},"south":{"uv":[0,8,16,16],"texture":"#texture","cullface":"south"},"west":{"uv":[0,8,16,16],"texture":"#texture","cullface":"west"},"east":{"uv":[0,8,16,16],"texture":"#texture","cullface":"east"}}}]},"soul_campfire":{"parent":"minecraft:block/template_campfire","textures":{"fire":"minecraft:block/soul_campfire_fire","lit_log":"minecraft:block/soul_campfire_log_lit"}},"soul_fire_floor0":{"parent":"minecraft:block/template_fire_floor","textures":{"fire":"minecraft:block/soul_fire_0"}},"soul_fire_floor1":{"parent":"minecraft:block/template_fire_floor","textures":{"fire":"minecraft:block/soul_fire_1"}},"soul_fire_side0":{"parent":"minecraft:block/template_fire_side","textures":{"fire":"minecraft:block/soul_fire_0"}},"soul_fire_side1":{"parent":"minecraft:block/template_fire_side","textures":{"fire":"minecraft:block/soul_fire_1"}},"soul_fire_side_alt0":{"parent":"minecraft:block/template_fire_side_alt","textures":{"fire":"minecraft:block/soul_fire_0"}},"soul_fire_side_alt1":{"parent":"minecraft:block/template_fire_side_alt","textures":{"fire":"minecraft:block/soul_fire_1"}},"soul_lantern":{"parent":"minecraft:block/template_lantern","textures":{"lantern":"minecraft:block/soul_lantern"}},"soul_lantern_hanging":{"parent":"minecraft:block/template_hanging_lantern","textures":{"lantern":"minecraft:block/soul_lantern"}},"soul_sand":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/soul_sand"}},"soul_soil":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/soul_soil"}},"soul_torch":{"parent":"minecraft:block/template_torch","textures":{"torch":"minecraft:block/soul_torch"}},"soul_wall_torch":{"parent":"minecraft:block/template_torch_wall","textures":{"torch":"minecraft:block/soul_torch"}},"spawner":{"parent":"minecraft:block/cube_all_inner_faces","textures":{"all":"minecraft:block/spawner"}},"sponge":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/sponge"}},"spore_blossom":{"parent":"block/block","textures":{"particle":"block/spore_blossom","flower":"block/spore_blossom","base":"block/spore_blossom_base"},"elements":[{"from":[1,15.9,1],"to":[15,15.9,15],"shade":false,"faces":{"up":{"uv":[1,1,15,15],"texture":"#base"},"down":{"uv":[1,1,15,15],"texture":"#base"}}},{"from":[8,15.7,0],"to":[24,15.7,16],"rotation":{"origin":[8,16,0],"axis":"z","angle":-22.5,"rescale":false},"shade":false,"faces":{"up":{"uv":[0,0,16,16],"texture":"#flower","rotation":90},"down":{"uv":[0,16,16,0],"texture":"#flower","rotation":270}}},{"from":[-8,15.7,0],"to":[8,15.7,16],"rotation":{"origin":[8,16,0],"axis":"z","angle":22.5,"rescale":false},"shade":false,"faces":{"up":{"uv":[0,0,16,16],"texture":"#flower","rotation":270},"down":{"uv":[0,16,16,0],"texture":"#flower","rotation":90}}},{"from":[0,15.7,8],"to":[16,15.7,24],"rotation":{"origin":[0,16,8],"axis":"x","angle":22.5,"rescale":false},"shade":false,"faces":{"up":{"uv":[16,16,0,0],"texture":"#flower"},"down":{"uv":[16,0,0,16],"texture":"#flower"}}},{"from":[0,15.7,-8],"to":[16,15.7,8],"rotation":{"origin":[0,16,8],"axis":"x","angle":-22.5,"rescale":false},"shade":false,"faces":{"up":{"uv":[0,0,16,16],"texture":"#flower"},"down":{"uv":[0,16,16,0],"texture":"#flower"}}}]},"spruce_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/spruce_planks"}},"spruce_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/spruce_planks"}},"spruce_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/spruce_planks"}},"spruce_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/spruce_door_bottom","top":"minecraft:block/spruce_door_top"}},"spruce_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/spruce_door_bottom","top":"minecraft:block/spruce_door_top"}},"spruce_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/spruce_door_bottom","top":"minecraft:block/spruce_door_top"}},"spruce_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/spruce_door_bottom","top":"minecraft:block/spruce_door_top"}},"spruce_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/spruce_door_bottom","top":"minecraft:block/spruce_door_top"}},"spruce_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/spruce_door_bottom","top":"minecraft:block/spruce_door_top"}},"spruce_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/spruce_door_bottom","top":"minecraft:block/spruce_door_top"}},"spruce_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/spruce_door_bottom","top":"minecraft:block/spruce_door_top"}},"spruce_fence_gate":{"parent":"minecraft:block/template_fence_gate","textures":{"texture":"minecraft:block/spruce_planks"}},"spruce_fence_gate_open":{"parent":"minecraft:block/template_fence_gate_open","textures":{"texture":"minecraft:block/spruce_planks"}},"spruce_fence_gate_wall":{"parent":"minecraft:block/template_fence_gate_wall","textures":{"texture":"minecraft:block/spruce_planks"}},"spruce_fence_gate_wall_open":{"parent":"minecraft:block/template_fence_gate_wall_open","textures":{"texture":"minecraft:block/spruce_planks"}},"spruce_fence_inventory":{"parent":"minecraft:block/fence_inventory","textures":{"texture":"minecraft:block/spruce_planks"}},"spruce_fence_post":{"parent":"minecraft:block/fence_post","textures":{"texture":"minecraft:block/spruce_planks"}},"spruce_fence_side":{"parent":"minecraft:block/fence_side","textures":{"texture":"minecraft:block/spruce_planks"}},"spruce_hanging_sign":{"textures":{"particle":"minecraft:block/stripped_spruce_log"}},"spruce_leaves":{"parent":"minecraft:block/leaves","textures":{"all":"minecraft:block/spruce_leaves"}},"spruce_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/spruce_log_top","side":"minecraft:block/spruce_log"}},"spruce_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/spruce_log_top","side":"minecraft:block/spruce_log"}},"spruce_planks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/spruce_planks"}},"spruce_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/spruce_planks"}},"spruce_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/spruce_planks"}},"spruce_sapling":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/spruce_sapling"}},"spruce_shelf":{"parent":"minecraft:block/template_shelf_body","textures":{"all":"minecraft:block/spruce_shelf","particle":"minecraft:block/stripped_spruce_log"}},"spruce_shelf_center":{"parent":"minecraft:block/template_shelf_center","textures":{"all":"minecraft:block/spruce_shelf","particle":"minecraft:block/stripped_spruce_log"}},"spruce_shelf_inventory":{"parent":"minecraft:block/template_shelf_inventory","textures":{"all":"minecraft:block/spruce_shelf","particle":"minecraft:block/stripped_spruce_log"}},"spruce_shelf_left":{"parent":"minecraft:block/template_shelf_left","textures":{"all":"minecraft:block/spruce_shelf","particle":"minecraft:block/stripped_spruce_log"}},"spruce_shelf_right":{"parent":"minecraft:block/template_shelf_right","textures":{"all":"minecraft:block/spruce_shelf","particle":"minecraft:block/stripped_spruce_log"}},"spruce_shelf_unconnected":{"parent":"minecraft:block/template_shelf_unconnected","textures":{"all":"minecraft:block/spruce_shelf","particle":"minecraft:block/stripped_spruce_log"}},"spruce_shelf_unpowered":{"parent":"minecraft:block/template_shelf_unpowered","textures":{"all":"minecraft:block/spruce_shelf","particle":"minecraft:block/stripped_spruce_log"}},"spruce_sign":{"textures":{"particle":"minecraft:block/spruce_planks"}},"spruce_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/spruce_planks","side":"minecraft:block/spruce_planks","top":"minecraft:block/spruce_planks"}},"spruce_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/spruce_planks","side":"minecraft:block/spruce_planks","top":"minecraft:block/spruce_planks"}},"spruce_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/spruce_planks","side":"minecraft:block/spruce_planks","top":"minecraft:block/spruce_planks"}},"spruce_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/spruce_planks","side":"minecraft:block/spruce_planks","top":"minecraft:block/spruce_planks"}},"spruce_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/spruce_planks","side":"minecraft:block/spruce_planks","top":"minecraft:block/spruce_planks"}},"spruce_trapdoor_bottom":{"parent":"minecraft:block/template_orientable_trapdoor_bottom","textures":{"texture":"minecraft:block/spruce_trapdoor"}},"spruce_trapdoor_open":{"parent":"minecraft:block/template_orientable_trapdoor_open","textures":{"texture":"minecraft:block/spruce_trapdoor"}},"spruce_trapdoor_top":{"parent":"minecraft:block/template_orientable_trapdoor_top","textures":{"texture":"minecraft:block/spruce_trapdoor"}},"spruce_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/spruce_log","side":"minecraft:block/spruce_log"}},"stairs":{"parent":"block/block","display":{"gui":{"rotation":[30,135,0],"translation":[0,0,0],"scale":[0.625,0.625,0.625]},"head":{"rotation":[0,-90,0],"translation":[0,0,0],"scale":[1,1,1]},"thirdperson_lefthand":{"rotation":[75,-135,0],"translation":[0,2.5,0],"scale":[0.375,0.375,0.375]}},"textures":{"particle":"#side"},"elements":[{"from":[0,0,0],"to":[16,8,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,8,16,16],"texture":"#side","cullface":"north"},"south":{"uv":[0,8,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,8,16,16],"texture":"#side","cullface":"west"},"east":{"uv":[0,8,16,16],"texture":"#side","cullface":"east"}}},{"from":[8,8,0],"to":[16,16,16],"faces":{"up":{"uv":[8,0,16,16],"texture":"#top","cullface":"up"},"north":{"uv":[0,0,8,8],"texture":"#side","cullface":"north"},"south":{"uv":[8,0,16,8],"texture":"#side","cullface":"south"},"west":{"uv":[0,0,16,8],"texture":"#side"},"east":{"uv":[0,0,16,8],"texture":"#side","cullface":"east"}}}]},"stem_fruit":{"ambientocclusion":false,"textures":{"particle":"#stem"},"elements":[{"from":[0,-1,8],"to":[16,7,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"north":{"uv":[0,0,16,8],"texture":"#stem","tintindex":0},"south":{"uv":[16,0,0,8],"texture":"#stem","tintindex":0}}},{"from":[8,-1,0],"to":[8,7,16],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"west":{"uv":[0,0,16,8],"texture":"#stem","tintindex":0},"east":{"uv":[16,0,0,8],"texture":"#stem","tintindex":0}}},{"from":[0,0,8],"to":[9,16,8],"faces":{"north":{"uv":[9,0,0,16],"texture":"#upperstem","tintindex":0},"south":{"uv":[0,0,9,16],"texture":"#upperstem","tintindex":0}}}]},"stem_growth0":{"ambientocclusion":false,"textures":{"particle":"#stem"},"elements":[{"from":[0,-1,8],"to":[16,1,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"north":{"uv":[0,0,16,2],"texture":"#stem","tintindex":0},"south":{"uv":[16,0,0,2],"texture":"#stem","tintindex":0}}},{"from":[8,-1,0],"to":[8,1,16],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"west":{"uv":[0,0,16,2],"texture":"#stem","tintindex":0},"east":{"uv":[16,0,0,2],"texture":"#stem","tintindex":0}}}]},"stem_growth1":{"ambientocclusion":false,"textures":{"particle":"#stem"},"elements":[{"from":[0,-1,8],"to":[16,3,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"north":{"uv":[0,0,16,4],"texture":"#stem","tintindex":0},"south":{"uv":[16,0,0,4],"texture":"#stem","tintindex":0}}},{"from":[8,-1,0],"to":[8,3,16],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"west":{"uv":[0,0,16,4],"texture":"#stem","tintindex":0},"east":{"uv":[16,0,0,4],"texture":"#stem","tintindex":0}}}]},"stem_growth2":{"ambientocclusion":false,"textures":{"particle":"#stem"},"elements":[{"from":[0,-1,8],"to":[16,5,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"north":{"uv":[0,0,16,6],"texture":"#stem","tintindex":0},"south":{"uv":[16,0,0,6],"texture":"#stem","tintindex":0}}},{"from":[8,-1,0],"to":[8,5,16],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"west":{"uv":[0,0,16,6],"texture":"#stem","tintindex":0},"east":{"uv":[16,0,0,6],"texture":"#stem","tintindex":0}}}]},"stem_growth3":{"ambientocclusion":false,"textures":{"particle":"#stem"},"elements":[{"from":[0,-1,8],"to":[16,7,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"north":{"uv":[0,0,16,8],"texture":"#stem","tintindex":0},"south":{"uv":[16,0,0,8],"texture":"#stem","tintindex":0}}},{"from":[8,-1,0],"to":[8,7,16],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"west":{"uv":[0,0,16,8],"texture":"#stem","tintindex":0},"east":{"uv":[16,0,0,8],"texture":"#stem","tintindex":0}}}]},"stem_growth4":{"ambientocclusion":false,"textures":{"particle":"#stem"},"elements":[{"from":[0,-1,8],"to":[16,9,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"north":{"uv":[0,0,16,10],"texture":"#stem","tintindex":0},"south":{"uv":[16,0,0,10],"texture":"#stem","tintindex":0}}},{"from":[8,-1,0],"to":[8,9,16],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"west":{"uv":[0,0,16,10],"texture":"#stem","tintindex":0},"east":{"uv":[16,0,0,10],"texture":"#stem","tintindex":0}}}]},"stem_growth5":{"ambientocclusion":false,"textures":{"particle":"#stem"},"elements":[{"from":[0,-1,8],"to":[16,11,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"north":{"uv":[0,0,16,12],"texture":"#stem","tintindex":0},"south":{"uv":[16,0,0,12],"texture":"#stem","tintindex":0}}},{"from":[8,-1,0],"to":[8,11,16],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"west":{"uv":[0,0,16,12],"texture":"#stem","tintindex":0},"east":{"uv":[16,0,0,12],"texture":"#stem","tintindex":0}}}]},"stem_growth6":{"ambientocclusion":false,"textures":{"particle":"#stem"},"elements":[{"from":[0,-1,8],"to":[16,13,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"north":{"uv":[0,0,16,14],"texture":"#stem","tintindex":0},"south":{"uv":[16,0,0,14],"texture":"#stem","tintindex":0}}},{"from":[8,-1,0],"to":[8,13,16],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"west":{"uv":[0,0,16,14],"texture":"#stem","tintindex":0},"east":{"uv":[16,0,0,14],"texture":"#stem","tintindex":0}}}]},"stem_growth7":{"ambientocclusion":false,"textures":{"particle":"#stem"},"elements":[{"from":[0,-1,8],"to":[16,15,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"north":{"uv":[0,0,16,16],"texture":"#stem","tintindex":0},"south":{"uv":[16,0,0,16],"texture":"#stem","tintindex":0}}},{"from":[8,-1,0],"to":[8,15,16],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"west":{"uv":[0,0,16,16],"texture":"#stem","tintindex":0},"east":{"uv":[16,0,0,16],"texture":"#stem","tintindex":0}}}]},"sticky_piston":{"parent":"minecraft:block/template_piston","textures":{"bottom":"minecraft:block/piston_bottom","platform":"minecraft:block/piston_top_sticky","side":"minecraft:block/piston_side"}},"sticky_piston_inventory":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/piston_bottom","side":"minecraft:block/piston_side","top":"minecraft:block/piston_top_sticky"}},"stone":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/stone"}},"stone_brick_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/stone_bricks","side":"minecraft:block/stone_bricks","top":"minecraft:block/stone_bricks"}},"stone_brick_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/stone_bricks","side":"minecraft:block/stone_bricks","top":"minecraft:block/stone_bricks"}},"stone_brick_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/stone_bricks","side":"minecraft:block/stone_bricks","top":"minecraft:block/stone_bricks"}},"stone_brick_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/stone_bricks","side":"minecraft:block/stone_bricks","top":"minecraft:block/stone_bricks"}},"stone_brick_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/stone_bricks","side":"minecraft:block/stone_bricks","top":"minecraft:block/stone_bricks"}},"stone_brick_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/stone_bricks"}},"stone_brick_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/stone_bricks"}},"stone_brick_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/stone_bricks"}},"stone_brick_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/stone_bricks"}},"stone_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/stone_bricks"}},"stone_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/stone"}},"stone_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/stone"}},"stone_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/stone"}},"stone_mirrored":{"parent":"minecraft:block/cube_mirrored_all","textures":{"all":"minecraft:block/stone"}},"stone_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/stone"}},"stone_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/stone"}},"stone_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/stone","side":"minecraft:block/stone","top":"minecraft:block/stone"}},"stone_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/stone","side":"minecraft:block/stone","top":"minecraft:block/stone"}},"stone_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/stone","side":"minecraft:block/stone","top":"minecraft:block/stone"}},"stone_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/stone","side":"minecraft:block/stone","top":"minecraft:block/stone"}},"stone_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/stone","side":"minecraft:block/stone","top":"minecraft:block/stone"}},"stonecutter":{"parent":"block/block","textures":{"particle":"block/stonecutter_bottom","bottom":"block/stonecutter_bottom","top":"block/stonecutter_top","side":"block/stonecutter_side","saw":"block/stonecutter_saw"},"elements":[{"from":[0,0,0],"to":[16,9,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,7,16,16],"texture":"#side","cullface":"north"},"south":{"uv":[0,7,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,7,16,16],"texture":"#side","cullface":"west"},"east":{"uv":[0,7,16,16],"texture":"#side","cullface":"east"}}},{"from":[1,9,8],"to":[15,16,8],"faces":{"north":{"uv":[1,9,15,16],"texture":"#saw","tintindex":0},"south":{"uv":[15,9,1,16],"texture":"#saw","tintindex":0}}}]},"stripped_acacia_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_acacia_log_top","side":"minecraft:block/stripped_acacia_log"}},"stripped_acacia_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/stripped_acacia_log_top","side":"minecraft:block/stripped_acacia_log"}},"stripped_acacia_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_acacia_log","side":"minecraft:block/stripped_acacia_log"}},"stripped_bamboo_block":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_bamboo_block_top","side":"minecraft:block/stripped_bamboo_block"}},"stripped_bamboo_block_x":{"parent":"minecraft:block/cube_column_uv_locked_x","textures":{"end":"minecraft:block/stripped_bamboo_block_top","side":"minecraft:block/stripped_bamboo_block"}},"stripped_bamboo_block_y":{"parent":"minecraft:block/cube_column_uv_locked_y","textures":{"end":"minecraft:block/stripped_bamboo_block_top","side":"minecraft:block/stripped_bamboo_block"}},"stripped_bamboo_block_z":{"parent":"minecraft:block/cube_column_uv_locked_z","textures":{"end":"minecraft:block/stripped_bamboo_block_top","side":"minecraft:block/stripped_bamboo_block"}},"stripped_birch_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_birch_log_top","side":"minecraft:block/stripped_birch_log"}},"stripped_birch_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/stripped_birch_log_top","side":"minecraft:block/stripped_birch_log"}},"stripped_birch_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_birch_log","side":"minecraft:block/stripped_birch_log"}},"stripped_cherry_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_cherry_log_top","side":"minecraft:block/stripped_cherry_log"}},"stripped_cherry_log_x":{"parent":"minecraft:block/cube_column_uv_locked_x","textures":{"end":"minecraft:block/stripped_cherry_log_top","side":"minecraft:block/stripped_cherry_log"}},"stripped_cherry_log_y":{"parent":"minecraft:block/cube_column_uv_locked_y","textures":{"end":"minecraft:block/stripped_cherry_log_top","side":"minecraft:block/stripped_cherry_log"}},"stripped_cherry_log_z":{"parent":"minecraft:block/cube_column_uv_locked_z","textures":{"end":"minecraft:block/stripped_cherry_log_top","side":"minecraft:block/stripped_cherry_log"}},"stripped_cherry_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_cherry_log","side":"minecraft:block/stripped_cherry_log"}},"stripped_crimson_hyphae":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_crimson_stem","side":"minecraft:block/stripped_crimson_stem"}},"stripped_crimson_stem":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_crimson_stem_top","side":"minecraft:block/stripped_crimson_stem"}},"stripped_dark_oak_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_dark_oak_log_top","side":"minecraft:block/stripped_dark_oak_log"}},"stripped_dark_oak_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/stripped_dark_oak_log_top","side":"minecraft:block/stripped_dark_oak_log"}},"stripped_dark_oak_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_dark_oak_log","side":"minecraft:block/stripped_dark_oak_log"}},"stripped_jungle_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_jungle_log_top","side":"minecraft:block/stripped_jungle_log"}},"stripped_jungle_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/stripped_jungle_log_top","side":"minecraft:block/stripped_jungle_log"}},"stripped_jungle_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_jungle_log","side":"minecraft:block/stripped_jungle_log"}},"stripped_mangrove_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_mangrove_log_top","side":"minecraft:block/stripped_mangrove_log"}},"stripped_mangrove_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/stripped_mangrove_log_top","side":"minecraft:block/stripped_mangrove_log"}},"stripped_mangrove_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_mangrove_log","side":"minecraft:block/stripped_mangrove_log"}},"stripped_oak_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_oak_log_top","side":"minecraft:block/stripped_oak_log"}},"stripped_oak_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/stripped_oak_log_top","side":"minecraft:block/stripped_oak_log"}},"stripped_oak_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_oak_log","side":"minecraft:block/stripped_oak_log"}},"stripped_pale_oak_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_pale_oak_log_top","side":"minecraft:block/stripped_pale_oak_log"}},"stripped_pale_oak_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/stripped_pale_oak_log_top","side":"minecraft:block/stripped_pale_oak_log"}},"stripped_pale_oak_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_pale_oak_log","side":"minecraft:block/stripped_pale_oak_log"}},"stripped_spruce_log":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_spruce_log_top","side":"minecraft:block/stripped_spruce_log"}},"stripped_spruce_log_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/stripped_spruce_log_top","side":"minecraft:block/stripped_spruce_log"}},"stripped_spruce_wood":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_spruce_log","side":"minecraft:block/stripped_spruce_log"}},"stripped_warped_hyphae":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_warped_stem","side":"minecraft:block/stripped_warped_stem"}},"stripped_warped_stem":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/stripped_warped_stem_top","side":"minecraft:block/stripped_warped_stem"}},"structure_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/structure_block"}},"structure_block_corner":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/structure_block_corner"}},"structure_block_data":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/structure_block_data"}},"structure_block_load":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/structure_block_load"}},"structure_block_save":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/structure_block_save"}},"structure_void":{"textures":{"particle":"minecraft:item/structure_void"}},"sugar_cane":{"parent":"minecraft:block/tinted_cross","textures":{"cross":"minecraft:block/sugar_cane"}},"sunflower_bottom":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/sunflower_bottom"}},"sunflower_top":{"ambientocclusion":false,"textures":{"particle":"block/sunflower_front","cross":"block/sunflower_top","back":"block/sunflower_back","front":"block/sunflower_front"},"elements":[{"from":[0.8,0,8],"to":[15.2,8,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[0,8,16,16],"texture":"#cross"},"south":{"uv":[0,8,16,16],"texture":"#cross"}}},{"from":[8,0,0.8],"to":[8,8,15.2],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[0,8,16,16],"texture":"#cross"},"east":{"uv":[0,8,16,16],"texture":"#cross"}}},{"from":[9.6,-1,1],"to":[9.6,15,15],"rotation":{"origin":[8,8,8],"axis":"z","angle":22.5,"rescale":true},"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#back"},"east":{"uv":[0,0,16,16],"texture":"#front"}}}]},"suspicious_gravel_0":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/suspicious_gravel_0"}},"suspicious_gravel_1":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/suspicious_gravel_1"}},"suspicious_gravel_2":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/suspicious_gravel_2"}},"suspicious_gravel_3":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/suspicious_gravel_3"}},"suspicious_sand_0":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/suspicious_sand_0"}},"suspicious_sand_1":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/suspicious_sand_1"}},"suspicious_sand_2":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/suspicious_sand_2"}},"suspicious_sand_3":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/suspicious_sand_3"}},"sweet_berry_bush_stage0":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/sweet_berry_bush_stage0"}},"sweet_berry_bush_stage1":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/sweet_berry_bush_stage1"}},"sweet_berry_bush_stage2":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/sweet_berry_bush_stage2"}},"sweet_berry_bush_stage3":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/sweet_berry_bush_stage3"}},"tall_dry_grass":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/tall_dry_grass"}},"tall_grass_bottom":{"parent":"minecraft:block/tinted_cross","textures":{"cross":"minecraft:block/tall_grass_bottom"}},"tall_grass_top":{"parent":"minecraft:block/tinted_cross","textures":{"cross":"minecraft:block/tall_grass_top"}},"tall_seagrass_bottom":{"parent":"minecraft:block/template_seagrass","textures":{"texture":"minecraft:block/tall_seagrass_bottom"}},"tall_seagrass_top":{"parent":"minecraft:block/template_seagrass","textures":{"texture":"minecraft:block/tall_seagrass_top"}},"target":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/target_top","side":"minecraft:block/target_side"}},"template_anvil":{"parent":"block/block","textures":{"particle":"block/anvil","body":"block/anvil"},"display":{"fixed":{"rotation":[0,90,0],"translation":[0,0,0],"scale":[0.5,0.5,0.5]},"on_shelf":{"rotation":[0,90,0],"translation":[0,0,0],"scale":[1,1,1]}},"elements":[{"__comment":"Anvil base","from":[2,0,2],"to":[14,4,14],"faces":{"down":{"uv":[2,2,14,14],"texture":"#body","rotation":180,"cullface":"down"},"up":{"uv":[2,2,14,14],"texture":"#body","rotation":180},"north":{"uv":[2,12,14,16],"texture":"#body"},"south":{"uv":[2,12,14,16],"texture":"#body"},"west":{"uv":[0,2,4,14],"texture":"#body","rotation":90},"east":{"uv":[4,2,0,14],"texture":"#body","rotation":270}}},{"__comment":"Lower narrow portion","from":[4,4,3],"to":[12,5,13],"faces":{"up":{"uv":[4,3,12,13],"texture":"#body","rotation":180},"north":{"uv":[4,11,12,12],"texture":"#body"},"south":{"uv":[4,11,12,12],"texture":"#body"},"west":{"uv":[4,3,5,13],"texture":"#body","rotation":90},"east":{"uv":[5,3,4,13],"texture":"#body","rotation":270}}},{"__comment":"Wider section beneath top portion","from":[6,5,4],"to":[10,10,12],"faces":{"north":{"uv":[6,6,10,11],"texture":"#body"},"south":{"uv":[6,6,10,11],"texture":"#body"},"west":{"uv":[5,4,10,12],"texture":"#body","rotation":90},"east":{"uv":[10,4,5,12],"texture":"#body","rotation":270}}},{"__comment":"Anvil top","from":[3,10,0],"to":[13,16,16],"faces":{"down":{"uv":[3,0,13,16],"texture":"#body","rotation":180},"up":{"uv":[3,0,13,16],"texture":"#top","rotation":180},"north":{"uv":[3,0,13,6],"texture":"#body"},"south":{"uv":[3,0,13,6],"texture":"#body"},"west":{"uv":[10,0,16,16],"texture":"#body","rotation":90},"east":{"uv":[16,0,10,16],"texture":"#body","rotation":270}}}]},"template_azalea":{"parent":"block/block","textures":{"particle":"block/azalea_plant","plant":"block/azalea_plant"},"elements":[{"from":[0,16,0],"to":[16,16,16],"faces":{"down":{"uv":[0,16,16,0],"texture":"#top"},"up":{"uv":[0,0,16,16],"texture":"#top","cullface":"up"}}},{"from":[0,5,0],"to":[16,16,0.01],"faces":{"north":{"uv":[0,0,16,11],"texture":"#side","cullface":"north"},"south":{"uv":[16,0,0,11],"texture":"#side"}}},{"from":[0,5,15.99],"to":[16,16,16],"faces":{"north":{"uv":[16,0,0,11],"texture":"#side"},"south":{"uv":[0,0,16,11],"texture":"#side","cullface":"south"}}},{"from":[0,5,0],"to":[0.01,16,16],"faces":{"west":{"uv":[0,0,16,11],"texture":"#side","cullface":"west"},"east":{"uv":[16,0,0,11],"texture":"#side"}}},{"from":[15.99,5,0],"to":[16,16,16],"faces":{"west":{"uv":[16,0,0,11],"texture":"#side"},"east":{"uv":[0,0,16,11],"texture":"#side","cullface":"east"}}},{"from":[0.1,0,8],"to":[15.9,15.9,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"north":{"uv":[0,0,16,16],"texture":"#plant"},"south":{"uv":[0,0,16,16],"texture":"#plant"}}},{"from":[8,0,0.1],"to":[8,15.9,15.9],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"west":{"uv":[0,0,16,16],"texture":"#plant"},"east":{"uv":[0,0,16,16],"texture":"#plant"}}}]},"template_bars_cap":{"ambientocclusion":false,"textures":{"particle":"#bars"},"elements":[{"from":[8,0,8],"to":[8,16,9],"faces":{"west":{"uv":[8,0,7,16],"texture":"#bars"},"east":{"uv":[7,0,8,16],"texture":"#bars"}}},{"from":[7,0,9],"to":[9,16,9],"faces":{"north":{"uv":[9,0,7,16],"texture":"#bars"},"south":{"uv":[7,0,9,16],"texture":"#bars"}}}]},"template_bars_cap_alt":{"ambientocclusion":false,"textures":{"particle":"#bars"},"elements":[{"from":[8,0,7],"to":[8,16,8],"faces":{"west":{"uv":[8,0,9,16],"texture":"#bars"},"east":{"uv":[9,0,8,16],"texture":"#bars"}}},{"from":[7,0,7],"to":[9,16,7],"faces":{"north":{"uv":[7,0,9,16],"texture":"#bars"},"south":{"uv":[9,0,7,16],"texture":"#bars"}}}]},"template_bars_post":{"ambientocclusion":false,"textures":{"particle":"#bars"},"elements":[{"from":[8,0,7],"to":[8,16,9],"faces":{"west":{"uv":[7,0,9,16],"texture":"#bars"},"east":{"uv":[9,0,7,16],"texture":"#bars"}}},{"from":[7,0,8],"to":[9,16,8],"faces":{"north":{"uv":[7,0,9,16],"texture":"#bars"},"south":{"uv":[9,0,7,16],"texture":"#bars"}}}]},"template_bars_post_ends":{"ambientocclusion":false,"textures":{"particle":"#bars"},"elements":[{"from":[7,0.001,7],"to":[9,0.001,9],"faces":{"down":{"uv":[7,7,9,9],"texture":"#edge"},"up":{"uv":[7,7,9,9],"texture":"#edge"}}},{"from":[7,15.999,7],"to":[9,15.999,9],"faces":{"down":{"uv":[7,7,9,9],"texture":"#edge"},"up":{"uv":[7,7,9,9],"texture":"#edge"}}}]},"template_bars_side":{"ambientocclusion":false,"textures":{"particle":"#bars"},"elements":[{"from":[8,0,0],"to":[8,16,8],"faces":{"west":{"uv":[16,0,8,16],"texture":"#bars"},"east":{"uv":[8,0,16,16],"texture":"#bars"}}},{"from":[7,0,0],"to":[9,16,7],"faces":{"north":{"uv":[7,0,9,16],"texture":"#edge","cullface":"north"}}},{"from":[7,0.001,0],"to":[9,0.001,7],"faces":{"down":{"uv":[9,0,7,7],"texture":"#edge"},"up":{"uv":[7,0,9,7],"texture":"#edge"}}},{"from":[7,15.999,0],"to":[9,15.999,7],"faces":{"down":{"uv":[9,0,7,7],"texture":"#edge"},"up":{"uv":[7,0,9,7],"texture":"#edge"}}}]},"template_bars_side_alt":{"ambientocclusion":false,"textures":{"particle":"#bars"},"elements":[{"from":[8,0,8],"to":[8,16,16],"faces":{"west":{"uv":[8,0,0,16],"texture":"#bars"},"east":{"uv":[0,0,8,16],"texture":"#bars"}}},{"from":[7,0,9],"to":[9,16,16],"faces":{"south":{"uv":[7,0,9,16],"texture":"#edge","cullface":"south"},"down":{"uv":[9,9,7,16],"texture":"#edge"},"up":{"uv":[7,9,9,16],"texture":"#edge"}}},{"from":[7,0.001,9],"to":[9,0.001,16],"faces":{"down":{"uv":[9,9,7,16],"texture":"#edge"},"up":{"uv":[7,9,9,16],"texture":"#edge"}}},{"from":[7,15.999,9],"to":[9,15.999,16],"faces":{"down":{"uv":[9,9,7,16],"texture":"#edge"},"up":{"uv":[7,9,9,16],"texture":"#edge"}}}]},"template_cake_with_candle":{"textures":{"particle":"block/cake_side","bottom":"block/cake_bottom","top":"block/cake_top","side":"block/cake_side"},"elements":[{"from":[1,0,1],"to":[15,8,15],"faces":{"down":{"texture":"#bottom","cullface":"down"},"up":{"texture":"#top"},"north":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side"},"east":{"texture":"#side"}}},{"from":[7,8,7],"to":[9,14,9],"faces":{"north":{"uv":[0,8,2,14],"texture":"#candle"},"east":{"uv":[0,8,2,14],"texture":"#candle"},"south":{"uv":[0,8,2,14],"texture":"#candle"},"west":{"uv":[0,8,2,14],"texture":"#candle"},"up":{"uv":[0,6,2,8],"texture":"#candle"},"down":{"uv":[0,14,2,16],"texture":"#candle","cullface":"down"}}},{"from":[7.5,14,8],"to":[8.5,15,8],"rotation":{"angle":-45,"axis":"y","origin":[8,14,8]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#candle"},"south":{"uv":[0,5,1,6],"texture":"#candle"}}},{"from":[7.5,14,8],"to":[8.5,15,8],"rotation":{"angle":45,"axis":"y","origin":[8,14,8]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#candle"},"south":{"uv":[0,5,1,6],"texture":"#candle"}}}]},"template_campfire":{"parent":"block/block","display":{"head":{"translation":[0,10.5,0]}},"textures":{"particle":"block/campfire_log","log":"block/campfire_log"},"elements":[{"from":[1,0,0],"to":[5,4,16],"faces":{"north":{"uv":[0,4,4,8],"texture":"#log","cullface":"north"},"east":{"uv":[0,1,16,5],"texture":"#lit_log"},"south":{"uv":[0,4,4,8],"texture":"#log","cullface":"south"},"west":{"uv":[16,0,0,4],"texture":"#log"},"up":{"uv":[0,0,16,4],"rotation":90,"texture":"#log"},"down":{"uv":[0,0,16,4],"rotation":90,"texture":"#log","cullface":"down"}}},{"from":[0,3,11],"to":[16,7,15],"faces":{"north":{"uv":[16,0,0,4],"texture":"#lit_log"},"east":{"uv":[0,4,4,8],"texture":"#log","cullface":"east"},"south":{"uv":[0,0,16,4],"texture":"#lit_log"},"west":{"uv":[0,4,4,8],"texture":"#log","cullface":"west"},"up":{"uv":[0,0,16,4],"rotation":180,"texture":"#log"},"down":{"uv":[0,4,16,8],"texture":"#lit_log"}}},{"from":[11,0,0],"to":[15,4,16],"faces":{"north":{"uv":[0,4,4,8],"texture":"#log","cullface":"north"},"east":{"uv":[0,0,16,4],"texture":"#log"},"south":{"uv":[0,4,4,8],"texture":"#log","cullface":"south"},"west":{"uv":[16,1,0,5],"texture":"#lit_log"},"up":{"uv":[0,0,16,4],"rotation":90,"texture":"#log"},"down":{"uv":[0,0,16,4],"rotation":90,"texture":"#log","cullface":"down"}}},{"from":[0,3,1],"to":[16,7,5],"faces":{"north":{"uv":[0,0,16,4],"texture":"#lit_log"},"east":{"uv":[0,4,4,8],"texture":"#log","cullface":"east"},"south":{"uv":[16,0,0,4],"texture":"#lit_log"},"west":{"uv":[0,4,4,8],"texture":"#log","cullface":"west"},"up":{"uv":[0,0,16,4],"rotation":180,"texture":"#log"},"down":{"uv":[0,4,16,8],"texture":"#lit_log"}}},{"from":[5,0,0],"to":[11,1,16],"faces":{"north":{"uv":[0,15,6,16],"texture":"#log","cullface":"north"},"south":{"uv":[10,15,16,16],"texture":"#log","cullface":"south"},"up":{"uv":[0,8,16,14],"rotation":90,"texture":"#lit_log"},"down":{"uv":[0,8,16,14],"rotation":90,"texture":"#log","cullface":"down"}}},{"from":[0.8,1,8],"to":[15.2,17,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#fire"},"south":{"uv":[0,0,16,16],"texture":"#fire"}}},{"from":[8,1,0.8],"to":[8,17,15.2],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#fire"},"east":{"uv":[0,0,16,16],"texture":"#fire"}}}]},"template_candle":{"parent":"block/block","elements":[{"from":[7,0,7],"to":[9,6,9],"faces":{"north":{"uv":[0,8,2,14],"texture":"#all"},"east":{"uv":[0,8,2,14],"texture":"#all"},"south":{"uv":[0,8,2,14],"texture":"#all"},"west":{"uv":[0,8,2,14],"texture":"#all"},"up":{"uv":[0,6,2,8],"texture":"#all"},"down":{"uv":[0,14,2,16],"texture":"#all","cullface":"down"}}},{"from":[7.5,6,8],"to":[8.5,7,8],"rotation":{"angle":45,"axis":"y","origin":[8,6,8]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[0,5,1,6],"texture":"#all"}}},{"from":[7.5,6,8],"to":[8.5,7,8],"rotation":{"angle":-45,"axis":"y","origin":[8,6,8]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[0,5,1,6],"texture":"#all"}}}]},"template_cauldron_full":{"ambientocclusion":false,"textures":{"particle":"block/cauldron_side","top":"block/cauldron_top","bottom":"block/cauldron_bottom","side":"block/cauldron_side","inside":"block/cauldron_inner"},"elements":[{"from":[0,3,0],"to":[2,16,16],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[2,3,2],"to":[14,4,14],"faces":{"up":{"texture":"#inside"},"down":{"texture":"#inside"}}},{"from":[14,3,0],"to":[16,16,16],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[2,3,0],"to":[14,16,2],"faces":{"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[2,3,14],"to":[14,16,16],"faces":{"north":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[0,0,0],"to":[4,3,2],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,2],"to":[2,3,4],"faces":{"east":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[12,0,0],"to":[16,3,2],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,2],"to":[16,3,4],"faces":{"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,14],"to":[4,3,16],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,12],"to":[2,3,14],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[12,0,14],"to":[16,3,16],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,12],"to":[16,3,14],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side","cullface":"east"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[2,4,2],"to":[14,15,14],"faces":{"up":{"texture":"#content","tintindex":0}}}]},"template_cauldron_level1":{"ambientocclusion":false,"textures":{"particle":"block/cauldron_side","top":"block/cauldron_top","bottom":"block/cauldron_bottom","side":"block/cauldron_side","inside":"block/cauldron_inner"},"elements":[{"from":[0,3,0],"to":[2,16,16],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[2,3,2],"to":[14,4,14],"faces":{"up":{"texture":"#inside"},"down":{"texture":"#inside"}}},{"from":[14,3,0],"to":[16,16,16],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[2,3,0],"to":[14,16,2],"faces":{"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[2,3,14],"to":[14,16,16],"faces":{"north":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[0,0,0],"to":[4,3,2],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,2],"to":[2,3,4],"faces":{"east":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[12,0,0],"to":[16,3,2],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,2],"to":[16,3,4],"faces":{"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,14],"to":[4,3,16],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,12],"to":[2,3,14],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[12,0,14],"to":[16,3,16],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,12],"to":[16,3,14],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side","cullface":"east"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[2,4,2],"to":[14,9,14],"faces":{"up":{"texture":"#content","tintindex":0}}}]},"template_cauldron_level2":{"ambientocclusion":false,"textures":{"particle":"block/cauldron_side","top":"block/cauldron_top","bottom":"block/cauldron_bottom","side":"block/cauldron_side","inside":"block/cauldron_inner"},"elements":[{"from":[0,3,0],"to":[2,16,16],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[2,3,2],"to":[14,4,14],"faces":{"up":{"texture":"#inside"},"down":{"texture":"#inside"}}},{"from":[14,3,0],"to":[16,16,16],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[2,3,0],"to":[14,16,2],"faces":{"north":{"texture":"#side","cullface":"north"},"south":{"texture":"#side"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[2,3,14],"to":[14,16,16],"faces":{"north":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"up":{"texture":"#top","cullface":"up"},"down":{"texture":"#inside"}}},{"from":[0,0,0],"to":[4,3,2],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,2],"to":[2,3,4],"faces":{"east":{"texture":"#side"},"south":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[12,0,0],"to":[16,3,2],"faces":{"north":{"texture":"#side","cullface":"north"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,2],"to":[16,3,4],"faces":{"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,14],"to":[4,3,16],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[0,0,12],"to":[2,3,14],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side"},"west":{"texture":"#side","cullface":"west"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[12,0,14],"to":[16,3,16],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side","cullface":"east"},"south":{"texture":"#side","cullface":"south"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[14,0,12],"to":[16,3,14],"faces":{"north":{"texture":"#side"},"east":{"texture":"#side","cullface":"east"},"west":{"texture":"#side"},"down":{"texture":"#bottom","cullface":"down"}}},{"from":[2,4,2],"to":[14,12,14],"faces":{"up":{"texture":"#content","tintindex":0}}}]},"template_chain":{"parent":"block/block","textures":{"particle":"#texture","all":"#texture"},"elements":[{"from":[6.5,0,8],"to":[9.5,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45},"shade":false,"faces":{"north":{"uv":[3,0,0,16],"texture":"#all"},"south":{"uv":[0,0,3,16],"texture":"#all"}}},{"from":[8,0,6.5],"to":[8,16,9.5],"rotation":{"origin":[8,8,8],"axis":"y","angle":45},"shade":false,"faces":{"west":{"uv":[6,0,3,16],"texture":"#all"},"east":{"uv":[3,0,6,16],"texture":"#all"}}}]},"template_chiseled_bookshelf_slot_bottom_left":{"textures":{"particle":"#texture"},"elements":[{"from":[10,0,0],"to":[16,8,0],"faces":{"north":{"uv":[0,8,6,16],"texture":"#texture","cullface":"north"}}}]},"template_chiseled_bookshelf_slot_bottom_mid":{"textures":{"particle":"#texture"},"elements":[{"from":[5,0,0],"to":[10,8,0],"faces":{"north":{"uv":[6,8,11,16],"texture":"#texture","cullface":"north"}}}]},"template_chiseled_bookshelf_slot_bottom_right":{"textures":{"particle":"#texture"},"elements":[{"from":[0,0,0],"to":[5,8,0],"faces":{"north":{"uv":[11,8,16,16],"texture":"#texture","cullface":"north"}}}]},"template_chiseled_bookshelf_slot_top_left":{"textures":{"particle":"#texture"},"elements":[{"from":[10,8,0],"to":[16,16,0],"faces":{"north":{"uv":[0,0,6,8],"texture":"#texture","cullface":"north"}}}]},"template_chiseled_bookshelf_slot_top_mid":{"textures":{"particle":"#texture"},"elements":[{"from":[5,8,0],"to":[10,16,0],"faces":{"north":{"uv":[6,0,11,8],"texture":"#texture","cullface":"north"}}}]},"template_chiseled_bookshelf_slot_top_right":{"textures":{"particle":"#texture"},"elements":[{"from":[0,8,0],"to":[5,16,0],"faces":{"north":{"uv":[11,0,16,8],"texture":"#texture","cullface":"north"}}}]},"template_chorus_flower":{"parent":"block/block","textures":{"bottom":"block/chorus_plant","particle":"#texture"},"elements":[{"from":[2,14,2],"to":[14,16,14],"faces":{"up":{"uv":[2,2,14,14],"texture":"#texture"},"north":{"uv":[2,0,14,2],"texture":"#bottom"},"south":{"uv":[2,0,14,2],"texture":"#bottom"},"west":{"uv":[2,0,14,2],"texture":"#bottom"},"east":{"uv":[2,0,14,2],"texture":"#bottom"}}},{"from":[0,2,2],"to":[2,14,14],"faces":{"down":{"uv":[16,14,14,2],"texture":"#bottom"},"up":{"uv":[0,2,2,14],"texture":"#bottom"},"north":{"uv":[14,2,16,14],"texture":"#bottom"},"south":{"uv":[0,2,2,14],"texture":"#bottom"},"west":{"uv":[2,2,14,14],"texture":"#texture"}}},{"from":[2,2,0],"to":[14,14,2],"faces":{"down":{"uv":[14,2,2,0],"texture":"#bottom"},"up":{"uv":[2,0,14,2],"texture":"#bottom"},"north":{"uv":[2,2,14,14],"texture":"#texture"},"west":{"uv":[0,2,2,14],"texture":"#bottom"},"east":{"uv":[14,2,16,14],"texture":"#bottom"}}},{"from":[2,2,14],"to":[14,14,16],"faces":{"down":{"uv":[14,16,2,14],"texture":"#bottom"},"up":{"uv":[2,14,14,16],"texture":"#bottom"},"south":{"uv":[2,2,14,14],"texture":"#texture"},"west":{"uv":[14,2,16,14],"texture":"#bottom"},"east":{"uv":[0,2,2,14],"texture":"#bottom"}}},{"from":[14,2,2],"to":[16,14,14],"faces":{"down":{"uv":[2,14,0,2],"texture":"#bottom"},"up":{"uv":[14,2,16,14],"texture":"#bottom"},"north":{"uv":[0,2,2,14],"texture":"#bottom"},"south":{"uv":[14,2,16,14],"texture":"#bottom"},"east":{"uv":[2,2,14,14],"texture":"#texture"}}},{"from":[2,0,2],"to":[14,14,14],"faces":{"up":{"uv":[2,2,14,14],"texture":"#bottom"},"down":{"uv":[14,14,2,2],"texture":"#bottom"},"north":{"uv":[2,2,14,16],"texture":"#bottom"},"south":{"uv":[2,2,14,16],"texture":"#bottom"},"west":{"uv":[2,2,14,16],"texture":"#bottom"},"east":{"uv":[2,2,14,16],"texture":"#bottom"}}}]},"template_command_block":{"parent":"block/cube_directional","textures":{"particle":"#back","down":"#side","up":"#side","north":"#front","east":"#side","south":"#back","west":"#side"}},"template_custom_fence_gate":{"parent":"block/block","textures":{"particle":"#particle"},"elements":[{"name":"Left-hand post","from":[0,5,7],"to":[2,16,9],"faces":{"north":{"uv":[14,2,16,13],"texture":"#texture"},"east":{"uv":[14,2,16,13],"texture":"#texture"},"south":{"uv":[14,2,16,13],"texture":"#texture"},"west":{"uv":[14,2,16,13],"texture":"#texture","cullface":"west"},"up":{"uv":[14,0,16,2],"texture":"#texture"},"down":{"uv":[16,13,14,15],"texture":"#texture"}}},{"name":"Right-hand post","from":[14,5,7],"to":[16,16,9],"faces":{"north":{"uv":[0,2,2,13],"texture":"#texture"},"east":{"uv":[0,2,2,13],"texture":"#texture","cullface":"east"},"south":{"uv":[0,2,2,13],"texture":"#texture"},"west":{"uv":[0,2,2,13],"texture":"#texture"},"up":{"uv":[0,0,2,2],"texture":"#texture"},"down":{"uv":[2,13,0,15],"texture":"#texture"}}},{"name":"Inner vertical post of left-hand gate door","from":[6,6,7],"to":[8,15,9],"faces":{"north":{"uv":[8,3,10,12],"texture":"#texture"},"south":{"uv":[6,3,8,12],"texture":"#texture"},"west":{"uv":[8,3,10,12],"texture":"#texture"},"up":{"uv":[8,1,10,3],"texture":"#texture"},"down":{"uv":[8,14,10,12],"texture":"#texture"}}},{"name":"Inner vertical post of right-hand gate door","from":[8,6,7],"to":[10,15,9],"faces":{"north":{"uv":[6,3,8,12],"texture":"#texture"},"east":{"uv":[6,3,8,12],"texture":"#texture"},"south":{"uv":[8,3,10,12],"texture":"#texture"},"up":{"uv":[6,1,8,3],"texture":"#texture"},"down":{"uv":[6,14,8,12],"texture":"#texture"}}},{"name":"Lower horizontal bar of left-hand gate door","from":[2,6,7],"to":[6,9,9],"faces":{"north":{"uv":[10,3,14,6],"texture":"#texture"},"south":{"uv":[10,9,14,12],"texture":"#texture"},"up":{"uv":[10,1,14,3],"texture":"#texture"},"down":{"uv":[10,14,14,12],"texture":"#texture"}}},{"name":"Upper horizontal bar of left-hand gate door","from":[2,12,7],"to":[6,15,9],"faces":{"north":{"uv":[10,3,14,6],"texture":"#texture"},"south":{"uv":[10,9,14,12],"texture":"#texture"},"up":{"uv":[10,1,14,3],"texture":"#texture"},"down":{"uv":[10,14,14,12],"texture":"#texture"}}},{"name":"Lower horizontal bar of right-hand gate door","from":[10,6,7],"to":[14,9,9],"faces":{"north":{"uv":[2,3,6,6],"texture":"#texture"},"south":{"uv":[2,9,6,12],"texture":"#texture"},"up":{"uv":[2,1,6,3],"texture":"#texture"},"down":{"uv":[2,14,6,12],"texture":"#texture"}}},{"name":"Upper horizontal bar of right-hand gate door","from":[10,12,7],"to":[14,15,9],"faces":{"north":{"uv":[2,3,6,6],"texture":"#texture"},"south":{"uv":[2,9,6,12],"texture":"#texture"},"up":{"uv":[2,1,6,3],"texture":"#texture"},"down":{"uv":[2,14,6,12],"texture":"#texture"}}}],"display":{"gui":{"rotation":[30,45,0],"translation":[0,-1,0],"scale":[0.8,0.8,0.8]},"head":{"translation":[0,-3,-6]}}},"template_custom_fence_gate_open":{"textures":{"particle":"#particle"},"elements":[{"name":"Left-hand post","from":[0,5,7],"to":[2,16,9],"faces":{"north":{"uv":[14,2,16,13],"texture":"#texture"},"east":{"uv":[14,2,16,13],"texture":"#texture"},"south":{"uv":[14,2,16,13],"texture":"#texture"},"west":{"uv":[14,2,16,13],"texture":"#texture","cullface":"west"},"up":{"uv":[14,0,16,2],"texture":"#texture"},"down":{"uv":[16,13,14,15],"texture":"#texture"}}},{"name":"Right-hand post","from":[14,5,7],"to":[16,16,9],"faces":{"north":{"uv":[0,2,2,13],"texture":"#texture"},"east":{"uv":[0,2,2,13],"texture":"#texture","cullface":"east"},"south":{"uv":[0,2,2,13],"texture":"#texture"},"west":{"uv":[0,2,2,13],"texture":"#texture"},"up":{"uv":[0,0,2,2],"texture":"#texture"},"down":{"uv":[2,13,0,15],"texture":"#texture"}}},{"name":"Inner vertical post of left-hand gate door","from":[0,6,13],"to":[2,15,15],"faces":{"north":{"uv":[8,3,10,12],"texture":"#texture"},"east":{"uv":[8,3,10,12],"texture":"#texture"},"south":{"uv":[8,3,10,12],"texture":"#texture"},"west":{"uv":[8,3,10,12],"texture":"#texture"},"up":{"uv":[8,1,10,3],"texture":"#texture"},"down":{"uv":[8,14,10,12],"texture":"#texture"}}},{"name":"Inner vertical post of right-hand gate door","from":[14,6,13],"to":[16,15,15],"faces":{"north":{"uv":[6,3,8,12],"texture":"#texture"},"east":{"uv":[6,3,8,12],"texture":"#texture"},"south":{"uv":[6,3,8,12],"texture":"#texture"},"west":{"uv":[6,3,8,12],"texture":"#texture"},"up":{"uv":[6,1,8,3],"texture":"#texture"},"down":{"uv":[6,14,8,12],"texture":"#texture"}}},{"name":"Lower horizontal bar of left-hand gate door","from":[0,6,9],"to":[2,9,13],"faces":{"east":{"uv":[2,9,6,12],"texture":"#texture"},"west":{"uv":[2,3,6,6],"texture":"#texture"},"up":{"uv":[2,1,6,3],"rotation":270,"texture":"#texture"},"down":{"uv":[2,12,6,14],"rotation":270,"texture":"#texture"}}},{"name":"Upper horizontal bar of left-hand gate door","from":[0,12,9],"to":[2,15,13],"faces":{"east":{"uv":[2,9,6,12],"texture":"#texture"},"west":{"uv":[2,3,6,6],"texture":"#texture"},"up":{"uv":[2,1,6,3],"rotation":270,"texture":"#texture"},"down":{"uv":[2,12,6,14],"rotation":270,"texture":"#texture"}}},{"name":"Lower horizontal bar of left-hand gate door","from":[14,6,9],"to":[16,9,13],"faces":{"east":{"uv":[10,9,14,12],"texture":"#texture"},"west":{"uv":[10,3,14,6],"texture":"#texture"},"up":{"uv":[10,1,14,3],"rotation":270,"texture":"#texture"},"down":{"uv":[10,12,14,14],"rotation":270,"texture":"#texture"}}},{"name":"Upper horizontal bar of left-hand gate door","from":[14,12,9],"to":[16,15,13],"faces":{"east":{"uv":[10,9,14,12],"texture":"#texture"},"west":{"uv":[14,3,10,6],"texture":"#texture"},"up":{"uv":[10,1,14,3],"rotation":270,"texture":"#texture"},"down":{"uv":[10,12,14,14],"rotation":270,"texture":"#texture"}}}]},"template_custom_fence_gate_wall":{"ambientocclusion":true,"textures":{"particle":"#particle"},"elements":[{"name":"Left-hand post","from":[0,2,7],"to":[2,13,9],"faces":{"north":{"uv":[14,2,16,13],"texture":"#texture"},"east":{"uv":[14,2,16,13],"texture":"#texture"},"south":{"uv":[14,2,16,13],"texture":"#texture"},"west":{"uv":[14,2,16,13],"texture":"#texture","cullface":"west"},"up":{"uv":[14,0,16,2],"texture":"#texture"},"down":{"uv":[16,13,14,15],"texture":"#texture"}}},{"name":"Right-hand post","from":[14,2,7],"to":[16,13,9],"faces":{"north":{"uv":[0,2,2,13],"texture":"#texture"},"east":{"uv":[0,2,2,13],"texture":"#texture","cullface":"east"},"south":{"uv":[0,2,2,13],"texture":"#texture"},"west":{"uv":[0,2,2,13],"texture":"#texture"},"up":{"uv":[0,0,2,2],"texture":"#texture"},"down":{"uv":[2,13,0,15],"texture":"#texture"}}},{"name":"Inner vertical post of left-hand gate door","from":[6,3,7],"to":[8,12,9],"faces":{"north":{"uv":[8,3,10,12],"texture":"#texture"},"south":{"uv":[6,3,8,12],"texture":"#texture"},"west":{"uv":[8,3,10,12],"texture":"#texture"},"up":{"uv":[8,1,10,3],"texture":"#texture"},"down":{"uv":[8,14,10,12],"texture":"#texture"}}},{"name":"Inner vertical post of right-hand gate door","from":[8,3,7],"to":[10,12,9],"faces":{"north":{"uv":[6,3,8,12],"texture":"#texture"},"east":{"uv":[6,3,8,12],"texture":"#texture"},"south":{"uv":[8,3,10,12],"texture":"#texture"},"up":{"uv":[6,1,8,3],"texture":"#texture"},"down":{"uv":[6,14,8,12],"texture":"#texture"}}},{"name":"Lower horizontal bar of left-hand gate door","from":[2,3,7],"to":[6,6,9],"faces":{"north":{"uv":[10,3,14,6],"texture":"#texture"},"south":{"uv":[10,9,14,12],"texture":"#texture"},"up":{"uv":[10,1,14,3],"texture":"#texture"},"down":{"uv":[10,14,14,12],"texture":"#texture"}}},{"name":"Upper horizontal bar of left-hand gate door","from":[2,9,7],"to":[6,12,9],"faces":{"north":{"uv":[10,3,14,6],"texture":"#texture"},"south":{"uv":[10,9,14,12],"texture":"#texture"},"up":{"uv":[10,1,14,3],"texture":"#texture"},"down":{"uv":[10,14,14,12],"texture":"#texture"}}},{"name":"Lower horizontal bar of right-hand gate door","from":[10,3,7],"to":[14,6,9],"faces":{"north":{"uv":[2,3,6,6],"texture":"#texture"},"south":{"uv":[2,9,6,12],"texture":"#texture"},"up":{"uv":[2,1,6,3],"texture":"#texture"},"down":{"uv":[2,14,6,12],"texture":"#texture"}}},{"name":"Upper horizontal bar of right-hand gate door","from":[10,9,7],"to":[14,12,9],"faces":{"north":{"uv":[2,3,6,6],"texture":"#texture"},"south":{"uv":[2,9,6,12],"texture":"#texture"},"up":{"uv":[2,1,6,3],"texture":"#texture"},"down":{"uv":[2,14,6,12],"texture":"#texture"}}}]},"template_custom_fence_gate_wall_open":{"ambientocclusion":true,"textures":{"particle":"#particle"},"elements":[{"name":"Left-hand post","from":[0,2,7],"to":[2,13,9],"faces":{"north":{"uv":[14,2,16,13],"texture":"#texture"},"east":{"uv":[14,2,16,13],"texture":"#texture"},"south":{"uv":[14,2,16,13],"texture":"#texture"},"west":{"uv":[14,2,16,13],"texture":"#texture","cullface":"west"},"up":{"uv":[14,0,16,2],"texture":"#texture"},"down":{"uv":[16,13,14,15],"texture":"#texture"}}},{"name":"Right-hand post","from":[14,2,7],"to":[16,13,9],"faces":{"north":{"uv":[0,2,2,13],"texture":"#texture"},"east":{"uv":[0,2,2,13],"texture":"#texture","cullface":"east"},"south":{"uv":[0,2,2,13],"texture":"#texture"},"west":{"uv":[0,2,2,13],"texture":"#texture"},"up":{"uv":[0,0,2,2],"texture":"#texture"},"down":{"uv":[2,13,0,15],"texture":"#texture"}}},{"name":"Inner vertical post of left-hand gate door","from":[0,3,13],"to":[2,12,15],"faces":{"north":{"uv":[8,3,10,12],"texture":"#texture"},"east":{"uv":[8,3,10,12],"texture":"#texture"},"south":{"uv":[8,3,10,12],"texture":"#texture"},"west":{"uv":[8,3,10,12],"texture":"#texture"},"up":{"uv":[8,1,10,3],"texture":"#texture"},"down":{"uv":[8,14,10,12],"texture":"#texture"}}},{"name":"Inner vertical post of right-hand gate door","from":[14,3,13],"to":[16,12,15],"faces":{"north":{"uv":[6,3,8,12],"texture":"#texture"},"east":{"uv":[6,3,8,12],"texture":"#texture"},"south":{"uv":[6,3,8,12],"texture":"#texture"},"west":{"uv":[6,3,8,12],"texture":"#texture"},"up":{"uv":[6,1,8,3],"texture":"#texture"},"down":{"uv":[6,14,8,12],"texture":"#texture"}}},{"name":"Lower horizontal bar of left-hand gate door","from":[0,3,9],"to":[2,6,13],"faces":{"east":{"uv":[2,9,6,12],"texture":"#texture"},"west":{"uv":[2,3,6,6],"texture":"#texture"},"up":{"uv":[2,1,6,3],"rotation":270,"texture":"#texture"},"down":{"uv":[2,12,6,14],"rotation":270,"texture":"#texture"}}},{"name":"Upper horizontal bar of left-hand gate door","from":[0,9,9],"to":[2,12,13],"faces":{"east":{"uv":[2,9,6,12],"texture":"#texture"},"west":{"uv":[2,3,6,6],"texture":"#texture"},"up":{"uv":[2,1,6,3],"rotation":270,"texture":"#texture"},"down":{"uv":[2,12,6,14],"rotation":270,"texture":"#texture"}}},{"name":"Lower horizontal bar of left-hand gate door","from":[14,3,9],"to":[16,6,13],"faces":{"east":{"uv":[10,9,14,12],"texture":"#texture"},"west":{"uv":[10,3,14,6],"texture":"#texture"},"up":{"uv":[10,1,14,3],"rotation":270,"texture":"#texture"},"down":{"uv":[10,12,14,14],"rotation":270,"texture":"#texture"}}},{"name":"Upper horizontal bar of left-hand gate door","from":[14,9,9],"to":[16,12,13],"faces":{"east":{"uv":[10,9,14,12],"texture":"#texture"},"west":{"uv":[14,3,10,6],"texture":"#texture"},"up":{"uv":[10,1,14,3],"rotation":270,"texture":"#texture"},"down":{"uv":[10,12,14,14],"rotation":270,"texture":"#texture"}}}]},"template_daylight_detector":{"parent":"block/thin_block","textures":{"particle":"#top"},"elements":[{"from":[0,0,0],"to":[16,6,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#side","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,10,16,16],"texture":"#side","cullface":"north"},"south":{"uv":[0,10,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,10,16,16],"texture":"#side","cullface":"west"},"east":{"uv":[0,10,16,16],"texture":"#side","cullface":"east"}}}]},"template_farmland":{"parent":"block/block","textures":{"particle":"#dirt"},"elements":[{"from":[0,0,0],"to":[16,15,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#dirt","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#top"},"north":{"uv":[0,1,16,16],"texture":"#dirt","cullface":"north"},"south":{"uv":[0,1,16,16],"texture":"#dirt","cullface":"south"},"west":{"uv":[0,1,16,16],"texture":"#dirt","cullface":"west"},"east":{"uv":[0,1,16,16],"texture":"#dirt","cullface":"east"}}}]},"template_fence_gate":{"parent":"block/block","display":{"gui":{"rotation":[30,45,0],"translation":[0,-1,0],"scale":[0.8,0.8,0.8]},"head":{"rotation":[0,0,0],"translation":[0,-3,-6],"scale":[1,1,1]}},"textures":{"particle":"#texture"},"elements":[{"__comment":"Left-hand post","from":[0,5,7],"to":[2,16,9],"faces":{"down":{"uv":[0,7,2,9],"texture":"#texture"},"up":{"uv":[0,7,2,9],"texture":"#texture"},"north":{"uv":[0,0,2,11],"texture":"#texture"},"south":{"uv":[0,0,2,11],"texture":"#texture"},"west":{"uv":[7,0,9,11],"texture":"#texture","cullface":"west"},"east":{"uv":[7,0,9,11],"texture":"#texture"}}},{"__comment":"Right-hand post","from":[14,5,7],"to":[16,16,9],"faces":{"down":{"uv":[14,7,16,9],"texture":"#texture"},"up":{"uv":[14,7,16,9],"texture":"#texture"},"north":{"uv":[14,0,16,11],"texture":"#texture"},"south":{"uv":[14,0,16,11],"texture":"#texture"},"west":{"uv":[7,0,9,11],"texture":"#texture"},"east":{"uv":[7,0,9,11],"texture":"#texture","cullface":"east"}}},{"__comment":"Inner vertical post of left-hand gate door","from":[6,6,7],"to":[8,15,9],"faces":{"down":{"uv":[6,7,8,9],"texture":"#texture"},"up":{"uv":[6,7,8,9],"texture":"#texture"},"north":{"uv":[6,1,8,10],"texture":"#texture"},"south":{"uv":[6,1,8,10],"texture":"#texture"},"west":{"uv":[7,1,9,10],"texture":"#texture"},"east":{"uv":[7,1,9,10],"texture":"#texture"}}},{"__comment":"Inner vertical post of right-hand gate door","from":[8,6,7],"to":[10,15,9],"faces":{"down":{"uv":[8,7,10,9],"texture":"#texture"},"up":{"uv":[8,7,10,9],"texture":"#texture"},"north":{"uv":[8,1,10,10],"texture":"#texture"},"south":{"uv":[8,1,10,10],"texture":"#texture"},"west":{"uv":[7,1,9,10],"texture":"#texture"},"east":{"uv":[7,1,9,10],"texture":"#texture"}}},{"__comment":"Lower horizontal bar of left-hand gate door","from":[2,6,7],"to":[6,9,9],"faces":{"down":{"uv":[2,7,6,9],"texture":"#texture"},"up":{"uv":[2,7,6,9],"texture":"#texture"},"north":{"uv":[2,7,6,10],"texture":"#texture"},"south":{"uv":[2,7,6,10],"texture":"#texture"}}},{"__comment":"Upper horizontal bar of left-hand gate door","from":[2,12,7],"to":[6,15,9],"faces":{"down":{"uv":[2,7,6,9],"texture":"#texture"},"up":{"uv":[2,7,6,9],"texture":"#texture"},"north":{"uv":[2,1,6,4],"texture":"#texture"},"south":{"uv":[2,1,6,4],"texture":"#texture"}}},{"__comment":"Lower horizontal bar of right-hand gate door","from":[10,6,7],"to":[14,9,9],"faces":{"down":{"uv":[10,7,14,9],"texture":"#texture"},"up":{"uv":[10,7,14,9],"texture":"#texture"},"north":{"uv":[10,7,14,10],"texture":"#texture"},"south":{"uv":[10,7,14,10],"texture":"#texture"}}},{"__comment":"Upper horizontal bar of right-hand gate door","from":[10,12,7],"to":[14,15,9],"faces":{"down":{"uv":[10,7,14,9],"texture":"#texture"},"up":{"uv":[10,7,14,9],"texture":"#texture"},"north":{"uv":[10,1,14,4],"texture":"#texture"},"south":{"uv":[10,1,14,4],"texture":"#texture"}}}]},"template_fence_gate_open":{"textures":{"particle":"#texture"},"elements":[{"__comment":"Left-hand post","from":[0,5,7],"to":[2,16,9],"faces":{"down":{"uv":[0,7,2,9],"texture":"#texture"},"up":{"uv":[0,7,2,9],"texture":"#texture"},"north":{"uv":[0,0,2,11],"texture":"#texture"},"south":{"uv":[0,0,2,11],"texture":"#texture"},"west":{"uv":[7,0,9,11],"texture":"#texture","cullface":"west"},"east":{"uv":[7,0,9,11],"texture":"#texture"}}},{"__comment":"Right-hand post","from":[14,5,7],"to":[16,16,9],"faces":{"down":{"uv":[14,7,16,9],"texture":"#texture"},"up":{"uv":[14,7,16,9],"texture":"#texture"},"north":{"uv":[14,0,16,11],"texture":"#texture"},"south":{"uv":[14,0,16,11],"texture":"#texture"},"west":{"uv":[7,0,9,11],"texture":"#texture"},"east":{"uv":[7,0,9,11],"texture":"#texture","cullface":"east"}}},{"__comment":"Inner vertical post of left-hand gate door","from":[0,6,13],"to":[2,15,15],"faces":{"down":{"uv":[0,13,2,15],"texture":"#texture"},"up":{"uv":[0,13,2,15],"texture":"#texture"},"north":{"uv":[0,1,2,10],"texture":"#texture"},"south":{"uv":[0,1,2,10],"texture":"#texture"},"west":{"uv":[13,1,15,10],"texture":"#texture"},"east":{"uv":[13,1,15,10],"texture":"#texture"}}},{"__comment":"Inner vertical post of right-hand gate door","from":[14,6,13],"to":[16,15,15],"faces":{"down":{"uv":[14,13,16,15],"texture":"#texture"},"up":{"uv":[14,13,16,15],"texture":"#texture"},"north":{"uv":[14,1,16,10],"texture":"#texture"},"south":{"uv":[14,1,16,10],"texture":"#texture"},"west":{"uv":[13,1,15,10],"texture":"#texture"},"east":{"uv":[13,1,15,10],"texture":"#texture"}}},{"__comment":"Lower horizontal bar of left-hand gate door","from":[0,6,9],"to":[2,9,13],"faces":{"down":{"uv":[0,9,2,13],"texture":"#texture"},"up":{"uv":[0,9,2,13],"texture":"#texture"},"west":{"uv":[13,7,15,10],"texture":"#texture"},"east":{"uv":[13,7,15,10],"texture":"#texture"}}},{"__comment":"Upper horizontal bar of left-hand gate door","from":[0,12,9],"to":[2,15,13],"faces":{"down":{"uv":[0,9,2,13],"texture":"#texture"},"up":{"uv":[0,9,2,13],"texture":"#texture"},"west":{"uv":[13,1,15,4],"texture":"#texture"},"east":{"uv":[13,1,15,4],"texture":"#texture"}}},{"__comment":"Lower horizontal bar of left-hand gate door","from":[14,6,9],"to":[16,9,13],"faces":{"down":{"uv":[14,9,16,13],"texture":"#texture"},"up":{"uv":[14,9,16,13],"texture":"#texture"},"west":{"uv":[13,7,15,10],"texture":"#texture"},"east":{"uv":[13,7,15,10],"texture":"#texture"}}},{"__comment":"Upper horizontal bar of left-hand gate door","from":[14,12,9],"to":[16,15,13],"faces":{"down":{"uv":[14,9,16,13],"texture":"#texture"},"up":{"uv":[14,9,16,13],"texture":"#texture"},"west":{"uv":[13,1,15,4],"texture":"#texture"},"east":{"uv":[13,1,15,4],"texture":"#texture"}}}]},"template_fence_gate_wall":{"ambientocclusion":true,"textures":{"particle":"#texture"},"elements":[{"__comment":"Left-hand post","from":[0,2,7],"to":[2,13,9],"faces":{"down":{"uv":[0,7,2,9],"texture":"#texture"},"up":{"uv":[0,7,2,9],"texture":"#texture"},"north":{"uv":[0,0,2,11],"texture":"#texture"},"south":{"uv":[0,0,2,11],"texture":"#texture"},"west":{"uv":[7,0,9,11],"texture":"#texture","cullface":"west"},"east":{"uv":[7,0,9,11],"texture":"#texture"}}},{"__comment":"Right-hand post","from":[14,2,7],"to":[16,13,9],"faces":{"down":{"uv":[14,7,16,9],"texture":"#texture"},"up":{"uv":[14,7,16,9],"texture":"#texture"},"north":{"uv":[14,0,16,11],"texture":"#texture"},"south":{"uv":[14,0,16,11],"texture":"#texture"},"west":{"uv":[7,0,9,11],"texture":"#texture"},"east":{"uv":[7,0,9,11],"texture":"#texture","cullface":"east"}}},{"__comment":"Inner vertical post of left-hand gate door","from":[6,3,7],"to":[8,12,9],"faces":{"down":{"uv":[6,7,8,9],"texture":"#texture"},"up":{"uv":[6,7,8,9],"texture":"#texture"},"north":{"uv":[6,1,8,10],"texture":"#texture"},"south":{"uv":[6,1,8,10],"texture":"#texture"},"west":{"uv":[7,1,9,10],"texture":"#texture"},"east":{"uv":[7,1,9,10],"texture":"#texture"}}},{"__comment":"Inner vertical post of right-hand gate door","from":[8,3,7],"to":[10,12,9],"faces":{"down":{"uv":[8,7,10,9],"texture":"#texture"},"up":{"uv":[8,7,10,9],"texture":"#texture"},"north":{"uv":[8,1,10,10],"texture":"#texture"},"south":{"uv":[8,1,10,10],"texture":"#texture"},"west":{"uv":[7,1,9,10],"texture":"#texture"},"east":{"uv":[7,1,9,10],"texture":"#texture"}}},{"__comment":"Lower horizontal bar of left-hand gate door","from":[2,3,7],"to":[6,6,9],"faces":{"down":{"uv":[2,7,6,9],"texture":"#texture"},"up":{"uv":[2,7,6,9],"texture":"#texture"},"north":{"uv":[2,7,6,10],"texture":"#texture"},"south":{"uv":[2,7,6,10],"texture":"#texture"}}},{"__comment":"Upper horizontal bar of left-hand gate door","from":[2,9,7],"to":[6,12,9],"faces":{"down":{"uv":[2,7,6,9],"texture":"#texture"},"up":{"uv":[2,7,6,9],"texture":"#texture"},"north":{"uv":[2,1,6,4],"texture":"#texture"},"south":{"uv":[2,1,6,4],"texture":"#texture"}}},{"__comment":"Lower horizontal bar of right-hand gate door","from":[10,3,7],"to":[14,6,9],"faces":{"down":{"uv":[10,7,14,9],"texture":"#texture"},"up":{"uv":[10,7,14,9],"texture":"#texture"},"north":{"uv":[10,7,14,10],"texture":"#texture"},"south":{"uv":[10,7,14,10],"texture":"#texture"}}},{"__comment":"Upper horizontal bar of right-hand gate door","from":[10,9,7],"to":[14,12,9],"faces":{"down":{"uv":[10,7,14,9],"texture":"#texture"},"up":{"uv":[10,7,14,9],"texture":"#texture"},"north":{"uv":[10,1,14,4],"texture":"#texture"},"south":{"uv":[10,1,14,4],"texture":"#texture"}}}]},"template_fence_gate_wall_open":{"ambientocclusion":true,"textures":{"particle":"#texture"},"elements":[{"__comment":"Left-hand post","from":[0,2,7],"to":[2,13,9],"faces":{"down":{"uv":[0,7,2,9],"texture":"#texture"},"up":{"uv":[0,7,2,9],"texture":"#texture"},"north":{"uv":[0,0,2,11],"texture":"#texture"},"south":{"uv":[0,0,2,11],"texture":"#texture"},"west":{"uv":[7,0,9,11],"texture":"#texture","cullface":"west"},"east":{"uv":[7,0,9,11],"texture":"#texture"}}},{"__comment":"Right-hand post","from":[14,2,7],"to":[16,13,9],"faces":{"down":{"uv":[14,7,16,9],"texture":"#texture"},"up":{"uv":[14,7,16,9],"texture":"#texture"},"north":{"uv":[14,0,16,11],"texture":"#texture"},"south":{"uv":[14,0,16,11],"texture":"#texture"},"west":{"uv":[7,0,9,11],"texture":"#texture"},"east":{"uv":[7,0,9,11],"texture":"#texture","cullface":"east"}}},{"__comment":"Inner vertical post of left-hand gate door","from":[0,3,13],"to":[2,12,15],"faces":{"down":{"uv":[0,13,2,15],"texture":"#texture"},"up":{"uv":[0,13,2,15],"texture":"#texture"},"north":{"uv":[0,1,2,10],"texture":"#texture"},"south":{"uv":[0,1,2,10],"texture":"#texture"},"west":{"uv":[13,1,15,10],"texture":"#texture"},"east":{"uv":[13,1,15,10],"texture":"#texture"}}},{"__comment":"Inner vertical post of right-hand gate door","from":[14,3,13],"to":[16,12,15],"faces":{"down":{"uv":[14,13,16,15],"texture":"#texture"},"up":{"uv":[14,13,16,15],"texture":"#texture"},"north":{"uv":[14,1,16,10],"texture":"#texture"},"south":{"uv":[14,1,16,10],"texture":"#texture"},"west":{"uv":[13,1,15,10],"texture":"#texture"},"east":{"uv":[13,1,15,10],"texture":"#texture"}}},{"__comment":"Lower horizontal bar of left-hand gate door","from":[0,3,9],"to":[2,6,13],"faces":{"down":{"uv":[0,9,2,13],"texture":"#texture"},"up":{"uv":[0,9,2,13],"texture":"#texture"},"west":{"uv":[13,7,15,10],"texture":"#texture"},"east":{"uv":[13,7,15,10],"texture":"#texture"}}},{"__comment":"Upper horizontal bar of left-hand gate door","from":[0,9,9],"to":[2,12,13],"faces":{"down":{"uv":[0,9,2,13],"texture":"#texture"},"up":{"uv":[0,9,2,13],"texture":"#texture"},"west":{"uv":[13,1,15,4],"texture":"#texture"},"east":{"uv":[13,1,15,4],"texture":"#texture"}}},{"__comment":"Lower horizontal bar of left-hand gate door","from":[14,3,9],"to":[16,6,13],"faces":{"down":{"uv":[14,9,16,13],"texture":"#texture"},"up":{"uv":[14,9,16,13],"texture":"#texture"},"west":{"uv":[13,7,15,10],"texture":"#texture"},"east":{"uv":[13,7,15,10],"texture":"#texture"}}},{"__comment":"Upper horizontal bar of left-hand gate door","from":[14,9,9],"to":[16,12,13],"faces":{"down":{"uv":[14,9,16,13],"texture":"#texture"},"up":{"uv":[14,9,16,13],"texture":"#texture"},"west":{"uv":[13,1,15,4],"texture":"#texture"},"east":{"uv":[13,1,15,4],"texture":"#texture"}}}]},"template_fire_floor":{"textures":{"particle":"#fire"},"ambientocclusion":false,"elements":[{"from":[0,0,8.8],"to":[16,22.4,8.8],"rotation":{"origin":[8,8,8],"axis":"x","angle":-22.5,"rescale":true},"shade":false,"faces":{"south":{"uv":[0,0,16,16],"texture":"#fire"}}},{"from":[0,0,7.2],"to":[16,22.4,7.2],"rotation":{"origin":[8,8,8],"axis":"x","angle":22.5,"rescale":true},"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#fire"}}},{"from":[8.8,0,0],"to":[8.8,22.4,16],"rotation":{"origin":[8,8,8],"axis":"z","angle":-22.5,"rescale":true},"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#fire"}}},{"from":[7.2,0,0],"to":[7.2,22.4,16],"rotation":{"origin":[8,8,8],"axis":"z","angle":22.5,"rescale":true},"shade":false,"faces":{"east":{"uv":[0,0,16,16],"texture":"#fire"}}}]},"template_fire_side":{"textures":{"particle":"#fire"},"ambientocclusion":false,"elements":[{"from":[0,0,0.01],"to":[16,22.4,0.01],"shade":false,"faces":{"south":{"uv":[0,0,16,16],"texture":"#fire"},"north":{"uv":[0,0,16,16],"texture":"#fire"}}}]},"template_fire_side_alt":{"textures":{"particle":"#fire"},"ambientocclusion":false,"elements":[{"from":[0,0,0.01],"to":[16,22.4,0.01],"shade":false,"faces":{"south":{"uv":[16,0,0,16],"texture":"#fire"},"north":{"uv":[16,0,0,16],"texture":"#fire"}}}]},"template_fire_up":{"textures":{"particle":"#fire"},"ambientocclusion":false,"elements":[{"from":[0,16,0],"to":[16,16,16],"rotation":{"origin":[16,16,8],"axis":"z","angle":22.5,"rescale":true},"shade":false,"faces":{"down":{"uv":[0,0,16,16],"texture":"#fire","rotation":270}}},{"from":[0,16,0],"to":[16,16,16],"rotation":{"origin":[0,16,8],"axis":"z","angle":-22.5,"rescale":true},"shade":false,"faces":{"down":{"uv":[0,0,16,16],"texture":"#fire","rotation":90}}}]},"template_fire_up_alt":{"textures":{"particle":"#fire"},"ambientocclusion":false,"elements":[{"from":[0,16,0],"to":[16,16,16],"rotation":{"origin":[8,16,16],"axis":"x","angle":-22.5,"rescale":true},"shade":false,"faces":{"down":{"uv":[0,0,16,16],"texture":"#fire","rotation":180}}},{"from":[0,16,0],"to":[16,16,16],"rotation":{"origin":[8,16,0],"axis":"x","angle":22.5,"rescale":true},"shade":false,"faces":{"down":{"uv":[0,0,16,16],"texture":"#fire"}}}]},"template_four_candles":{"parent":"block/block","elements":[{"from":[6,0,8],"to":[8,3,10],"faces":{"north":{"uv":[0,8,2,11],"texture":"#all"},"east":{"uv":[0,8,2,11],"texture":"#all"},"south":{"uv":[0,8,2,11],"texture":"#all"},"west":{"uv":[0,8,2,11],"texture":"#all"},"up":{"uv":[0,6,2,8],"texture":"#all"},"down":{"uv":[0,14,2,16],"texture":"#all","cullface":"down"}}},{"from":[6.5,3,9],"to":[7.5,4,9],"rotation":{"angle":45,"axis":"y","origin":[7,3,9]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[1,5,0,6],"texture":"#all"}}},{"from":[6.5,3,9],"to":[7.5,4,9],"rotation":{"angle":-45,"axis":"y","origin":[7,3,9]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[1,5,0,6],"texture":"#all"}}},{"from":[9,0,8],"to":[11,5,10],"faces":{"north":{"uv":[0,8,2,13],"texture":"#all"},"east":{"uv":[0,8,2,13],"texture":"#all"},"south":{"uv":[0,8,2,13],"texture":"#all"},"west":{"uv":[0,8,2,13],"texture":"#all"},"up":{"uv":[0,6,2,8],"texture":"#all"},"down":{"uv":[0,14,2,16],"texture":"#all","cullface":"down"}}},{"from":[9.5,5,9],"to":[10.5,6,9],"rotation":{"angle":45,"axis":"y","origin":[10,5,9]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[1,5,0,6],"texture":"#all"}}},{"from":[9.5,5,9],"to":[10.5,6,9],"rotation":{"angle":-45,"axis":"y","origin":[10,5,9]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[1,5,0,6],"texture":"#all"}}},{"from":[5,0,5],"to":[7,5,7],"faces":{"north":{"uv":[0,8,2,13],"texture":"#all"},"east":{"uv":[0,8,2,13],"texture":"#all"},"south":{"uv":[0,8,2,13],"texture":"#all"},"west":{"uv":[0,8,2,13],"texture":"#all"},"up":{"uv":[0,6,2,8],"texture":"#all"},"down":{"uv":[0,14,2,16],"texture":"#all","cullface":"down"}}},{"from":[5.5,5,6],"to":[6.5,6,6],"rotation":{"angle":45,"axis":"y","origin":[6,5,6]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[1,5,0,6],"texture":"#all"}}},{"from":[5.5,5,6],"to":[6.5,6,6],"rotation":{"angle":-45,"axis":"y","origin":[6,5,6]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[1,5,0,6],"texture":"#all"}}},{"from":[8,0,5],"to":[10,6,7],"faces":{"north":{"uv":[0,8,2,14],"texture":"#all"},"east":{"uv":[0,8,2,14],"texture":"#all"},"south":{"uv":[0,8,2,14],"texture":"#all"},"west":{"uv":[0,8,2,14],"texture":"#all"},"up":{"uv":[0,6,2,8],"texture":"#all"},"down":{"uv":[0,14,2,16],"texture":"#all","cullface":"down"}}},{"from":[8.5,6,6],"to":[9.5,7,6],"rotation":{"angle":45,"axis":"y","origin":[9,6,6]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[0,5,1,6],"texture":"#all"}}},{"from":[8.5,6,6],"to":[9.5,7,6],"rotation":{"angle":-45,"axis":"y","origin":[9,6,6]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[0,5,1,6],"texture":"#all"}}}]},"template_four_turtle_eggs":{"parent":"block/block","textures":{"all":"block/turtle_egg","particle":"#all"},"elements":[{"from":[5,0,4],"to":[9,7,8],"faces":{"down":{"uv":[0,0,4,4],"texture":"#all","cullface":"down"},"up":{"uv":[0,0,4,4],"texture":"#all"},"north":{"uv":[1,4,5,11],"texture":"#all"},"south":{"uv":[1,4,5,11],"texture":"#all"},"west":{"uv":[1,4,5,11],"texture":"#all"},"east":{"uv":[1,4,5,11],"texture":"#all"}}},{"from":[1,0,7],"to":[5,5,11],"faces":{"down":{"uv":[6,7,10,11],"texture":"#all","cullface":"down"},"up":{"uv":[6,7,10,11],"texture":"#all"},"north":{"uv":[10,10,14,15],"texture":"#all"},"south":{"uv":[10,10,14,15],"texture":"#all"},"west":{"uv":[10,10,14,15],"texture":"#all"},"east":{"uv":[10,10,14,15],"texture":"#all"}}},{"from":[11,0,7],"to":[14,4,10],"faces":{"down":{"uv":[5,0,8,3],"texture":"#all","cullface":"down"},"up":{"uv":[5,0,8,3],"texture":"#all"},"north":{"uv":[8,3,11,7],"texture":"#all"},"south":{"uv":[8,3,11,7],"texture":"#all"},"west":{"uv":[8,3,11,7],"texture":"#all"},"east":{"uv":[8,3,11,7],"texture":"#all"}}},{"from":[6,0,9],"to":[10,4,13],"faces":{"down":{"uv":[0,11,4,15],"texture":"#all"},"up":{"uv":[0,11,4,15],"texture":"#all"},"north":{"uv":[4,11,8,15],"texture":"#all"},"south":{"uv":[4,11,8,15],"texture":"#all"},"west":{"uv":[4,11,8,15],"texture":"#all"},"east":{"uv":[4,11,8,15],"texture":"#all"}}}]},"template_glass_pane_noside":{"ambientocclusion":false,"textures":{"particle":"#pane"},"elements":[{"from":[7,0,7],"to":[9,16,9],"faces":{"north":{"uv":[9,0,7,16],"texture":"#pane"}}}]},"template_glass_pane_noside_alt":{"ambientocclusion":false,"textures":{"particle":"#pane"},"elements":[{"from":[7,0,7],"to":[9,16,9],"faces":{"east":{"uv":[7,0,9,16],"texture":"#pane"}}}]},"template_glass_pane_post":{"ambientocclusion":false,"textures":{"particle":"#pane"},"elements":[{"from":[7,0,7],"to":[9,16,9],"faces":{"down":{"uv":[7,7,9,9],"texture":"#edge"},"up":{"uv":[7,7,9,9],"texture":"#edge"}}}]},"template_glass_pane_side":{"ambientocclusion":false,"textures":{"particle":"#pane"},"elements":[{"from":[7,0,0],"to":[9,16,7],"faces":{"down":{"uv":[7,0,9,7],"texture":"#edge"},"up":{"uv":[7,0,9,7],"texture":"#edge"},"north":{"uv":[7,0,9,16],"texture":"#edge","cullface":"north"},"west":{"uv":[16,0,9,16],"texture":"#pane"},"east":{"uv":[9,0,16,16],"texture":"#pane"}}}]},"template_glass_pane_side_alt":{"ambientocclusion":false,"textures":{"particle":"#pane"},"elements":[{"from":[7,0,9],"to":[9,16,16],"faces":{"down":{"uv":[7,0,9,7],"texture":"#edge"},"up":{"uv":[7,0,9,7],"texture":"#edge"},"south":{"uv":[7,0,9,16],"texture":"#edge","cullface":"south"},"west":{"uv":[7,0,0,16],"texture":"#pane"},"east":{"uv":[0,0,7,16],"texture":"#pane"}}}]},"template_glazed_terracotta":{"parent":"block/cube","textures":{"particle":"#pattern"},"display":{"firstperson_righthand":{"rotation":[0,135,0],"translation":[0,0,0],"scale":[0.40,0.40,0.40]}},"elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#pattern","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#pattern","cullface":"up"},"north":{"uv":[0,0,16,16],"texture":"#pattern","cullface":"north","rotation":90},"south":{"uv":[0,0,16,16],"texture":"#pattern","cullface":"south","rotation":270},"west":{"uv":[0,0,16,16],"texture":"#pattern","cullface":"west","rotation":0},"east":{"uv":[0,0,16,16],"texture":"#pattern","cullface":"east","rotation":180}}}]},"template_hanging_lantern":{"parent":"block/block","textures":{"particle":"#lantern"},"elements":[{"from":[5,1,5],"to":[11,8,11],"faces":{"down":{"uv":[0,9,6,15],"texture":"#lantern"},"up":{"uv":[0,9,6,15],"texture":"#lantern"},"north":{"uv":[0,2,6,9],"texture":"#lantern"},"south":{"uv":[0,2,6,9],"texture":"#lantern"},"west":{"uv":[0,2,6,9],"texture":"#lantern"},"east":{"uv":[0,2,6,9],"texture":"#lantern"}}},{"from":[6,8,6],"to":[10,10,10],"faces":{"down":{"uv":[1,10,5,14],"texture":"#lantern"},"up":{"uv":[1,10,5,14],"texture":"#lantern"},"north":{"uv":[1,0,5,2],"texture":"#lantern"},"south":{"uv":[1,0,5,2],"texture":"#lantern"},"west":{"uv":[1,0,5,2],"texture":"#lantern"},"east":{"uv":[1,0,5,2],"texture":"#lantern"}}},{"from":[6.5,11,8],"to":[9.5,15,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45},"shade":false,"faces":{"north":{"uv":[14,1,11,5],"texture":"#lantern"},"south":{"uv":[11,1,14,5],"texture":"#lantern"}}},{"from":[8,10,6.5],"to":[8,16,9.5],"rotation":{"origin":[8,8,8],"axis":"y","angle":45},"shade":false,"faces":{"west":{"uv":[14,6,11,12],"texture":"#lantern"},"east":{"uv":[11,6,14,12],"texture":"#lantern"}}}]},"template_item_frame":{"elements":[{"from":[3,3,15.5],"to":[13,13,16],"faces":{"north":{"uv":[3,3,13,13],"texture":"#back"},"south":{"uv":[3,3,13,13],"texture":"#back"}}},{"from":[2,2,15],"to":[14,3,16],"faces":{"down":{"uv":[2,0,14,1],"texture":"#wood"},"up":{"uv":[2,15,14,16],"texture":"#wood"},"north":{"uv":[2,13,14,14],"texture":"#wood"},"south":{"uv":[2,13,14,14],"texture":"#wood"},"west":{"uv":[15,13,16,14],"texture":"#wood"},"east":{"uv":[0,13,1,14],"texture":"#wood"}}},{"from":[2,13,15],"to":[14,14,16],"faces":{"down":{"uv":[2,0,14,1],"texture":"#wood"},"up":{"uv":[2,15,14,16],"texture":"#wood"},"north":{"uv":[2,2,14,3],"texture":"#wood"},"south":{"uv":[2,2,14,3],"texture":"#wood"},"west":{"uv":[15,2,16,3],"texture":"#wood"},"east":{"uv":[0,2,1,3],"texture":"#wood"}}},{"from":[2,3,15],"to":[3,13,16],"faces":{"north":{"uv":[13,3,14,13],"texture":"#wood"},"south":{"uv":[2,3,3,13],"texture":"#wood"},"west":{"uv":[15,3,16,13],"texture":"#wood"},"east":{"uv":[0,3,1,13],"texture":"#wood"}}},{"from":[13,3,15],"to":[14,13,16],"faces":{"north":{"uv":[2,3,3,13],"texture":"#wood"},"south":{"uv":[13,3,14,13],"texture":"#wood"},"west":{"uv":[15,3,16,13],"texture":"#wood"},"east":{"uv":[0,3,1,13],"texture":"#wood"}}}]},"template_item_frame_map":{"elements":[{"from":[1,1,15.001],"to":[15,15,16],"faces":{"north":{"uv":[1,1,15,15],"texture":"#back"},"south":{"uv":[1,1,15,15],"texture":"#back"}}},{"from":[0,0,15.001],"to":[16,1,16],"faces":{"down":{"uv":[0,0,16,1],"texture":"#wood"},"up":{"uv":[0,15,16,16],"texture":"#wood"},"north":{"uv":[0,15,16,16],"texture":"#wood"},"south":{"uv":[0,15,16,16],"texture":"#wood"},"west":{"uv":[15,15,16,16],"texture":"#wood"},"east":{"uv":[0,15,1,16],"texture":"#wood"}}},{"from":[0,15,15.001],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,1],"texture":"#wood"},"up":{"uv":[0,15,16,16],"texture":"#wood"},"north":{"uv":[0,0,16,1],"texture":"#wood"},"south":{"uv":[0,0,16,1],"texture":"#wood"},"west":{"uv":[15,0,16,1],"texture":"#wood"},"east":{"uv":[0,0,1,1],"texture":"#wood"}}},{"from":[0,1,15.001],"to":[1,15,16],"faces":{"north":{"uv":[15,1,16,15],"texture":"#wood"},"south":{"uv":[0,1,1,15],"texture":"#wood"},"west":{"uv":[15,1,16,15],"texture":"#wood"},"east":{"uv":[0,1,1,15],"texture":"#wood"}}},{"from":[15,1,15.001],"to":[16,15,16],"faces":{"north":{"uv":[0,1,1,15],"texture":"#wood"},"south":{"uv":[15,1,16,15],"texture":"#wood"},"west":{"uv":[15,1,16,15],"texture":"#wood"},"east":{"uv":[0,1,1,15],"texture":"#wood"}}}]},"template_lantern":{"parent":"block/block","textures":{"particle":"#lantern"},"elements":[{"from":[5,0,5],"to":[11,7,11],"faces":{"down":{"uv":[0,9,6,15],"texture":"#lantern","cullface":"down"},"up":{"uv":[0,9,6,15],"texture":"#lantern"},"north":{"uv":[0,2,6,9],"texture":"#lantern"},"south":{"uv":[0,2,6,9],"texture":"#lantern"},"west":{"uv":[0,2,6,9],"texture":"#lantern"},"east":{"uv":[0,2,6,9],"texture":"#lantern"}}},{"from":[6,7,6],"to":[10,9,10],"faces":{"up":{"uv":[1,10,5,14],"texture":"#lantern"},"north":{"uv":[1,0,5,2],"texture":"#lantern"},"south":{"uv":[1,0,5,2],"texture":"#lantern"},"west":{"uv":[1,0,5,2],"texture":"#lantern"},"east":{"uv":[1,0,5,2],"texture":"#lantern"}}},{"from":[6.5,9,8],"to":[9.5,11,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45},"shade":false,"faces":{"north":{"uv":[14,1,11,3],"texture":"#lantern"},"south":{"uv":[11,1,14,3],"texture":"#lantern"}}},{"from":[8,9,6.5],"to":[8,11,9.5],"rotation":{"origin":[8,8,8],"axis":"y","angle":45},"shade":false,"faces":{"west":{"uv":[14,10,11,12],"texture":"#lantern"},"east":{"uv":[11,10,14,12],"texture":"#lantern"}}}]},"template_leaf_litter_1":{"ambientocclusion":false,"textures":{"particle":"#texture"},"elements":[{"from":[0,0.25,0],"to":[8,0.25,8],"faces":{"up":{"uv":[0,0,8,8],"texture":"#texture","tintindex":0},"down":{"uv":[0,8,8,0],"texture":"#texture","tintindex":0}}}]},"template_leaf_litter_2":{"ambientocclusion":false,"textures":{"particle":"#texture"},"elements":[{"from":[0,0.25,0],"to":[8,0.25,16],"faces":{"up":{"uv":[0,0,8,16],"texture":"#texture","tintindex":0},"down":{"uv":[0,16,8,0],"texture":"#texture","tintindex":0}}}]},"template_leaf_litter_3":{"ambientocclusion":false,"textures":{"particle":"#texture"},"elements":[{"from":[8,0.25,8],"to":[16,0.25,16],"faces":{"up":{"uv":[8,8,16,16],"texture":"#texture","tintindex":0},"down":{"uv":[8,16,16,8],"texture":"#texture","tintindex":0}}}]},"template_leaf_litter_4":{"ambientocclusion":false,"textures":{"particle":"#texture"},"elements":[{"from":[0,0.25,0],"to":[16,0.25,16],"faces":{"up":{"uv":[0,0,16,16],"texture":"#texture","tintindex":0},"down":{"uv":[0,16,16,0],"texture":"#texture","tintindex":0}}}]},"template_lightning_rod":{"parent":"block/block","display":{"head":{"rotation":[-180,0,0],"translation":[8.5,4,0]},"thirdperson_righthand":{"translation":[0,2,0.5],"scale":[0.40,0.40,0.40]}},"textures":{"particle":"#texture"},"elements":[{"from":[6,12,6],"to":[10,16,10],"faces":{"north":{"uv":[0,0,4,4],"texture":"#texture"},"south":{"uv":[0,0,4,4],"texture":"#texture"},"west":{"uv":[0,0,4,4],"texture":"#texture"},"east":{"uv":[0,0,4,4],"texture":"#texture"},"down":{"uv":[0,0,4,4],"texture":"#texture"},"up":{"uv":[4,4,0,0],"texture":"#texture"}}},{"from":[7,0,7],"to":[9,12,9],"faces":{"north":{"uv":[0,4,2,16],"texture":"#texture"},"south":{"uv":[0,4,2,16],"texture":"#texture"},"west":{"uv":[0,4,2,16],"texture":"#texture"},"east":{"uv":[0,4,2,16],"texture":"#texture"},"down":{"uv":[0,4,2,6],"texture":"#texture"}}}]},"template_orientable_trapdoor_bottom":{"parent":"block/thin_block","textures":{"particle":"#texture"},"elements":[{"from":[0,0,0],"to":[16,3,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture","cullface":"down"},"up":{"uv":[0,16,16,0],"texture":"#texture"},"north":{"uv":[0,0,16,3],"texture":"#texture","cullface":"north"},"south":{"uv":[0,0,16,3],"texture":"#texture","cullface":"south"},"west":{"uv":[0,0,16,3],"texture":"#texture","cullface":"west"},"east":{"uv":[0,0,16,3],"texture":"#texture","cullface":"east"}}}]},"template_orientable_trapdoor_open":{"textures":{"particle":"#texture"},"elements":[{"from":[0,0,13],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,3],"texture":"#texture","cullface":"down"},"up":{"uv":[0,3,16,0],"texture":"#texture","cullface":"up"},"north":{"uv":[0,16,16,0],"texture":"#texture"},"south":{"uv":[0,16,16,0],"texture":"#texture","cullface":"south"},"west":{"uv":[0,0,16,3],"rotation":90,"texture":"#texture","cullface":"west"},"east":{"uv":[0,3,16,0],"rotation":90,"texture":"#texture","cullface":"east"}}}]},"template_orientable_trapdoor_top":{"textures":{"particle":"#texture"},"elements":[{"from":[0,13,0],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture"},"up":{"uv":[0,16,16,0],"texture":"#texture","cullface":"up"},"north":{"uv":[0,0,16,3],"texture":"#texture","cullface":"north"},"south":{"uv":[0,0,16,3],"texture":"#texture","cullface":"south"},"west":{"uv":[0,0,16,3],"texture":"#texture","cullface":"west"},"east":{"uv":[0,0,16,3],"texture":"#texture","cullface":"east"}}}]},"template_piston":{"textures":{"particle":"#side"},"elements":[{"from":[0,0,0],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#side","rotation":180,"cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#side","cullface":"up"},"north":{"uv":[0,0,16,16],"texture":"#platform","cullface":"north"},"south":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#side","rotation":270,"cullface":"west"},"east":{"uv":[0,0,16,16],"texture":"#side","rotation":90,"cullface":"east"}}}]},"template_piston_head":{"textures":{"particle":"#platform"},"elements":[{"from":[0,0,0],"to":[16,16,4],"faces":{"down":{"uv":[0,0,16,4],"texture":"#side","cullface":"down","rotation":180},"up":{"uv":[0,0,16,4],"texture":"#side","cullface":"up"},"north":{"uv":[0,0,16,16],"texture":"#platform","cullface":"north"},"south":{"uv":[0,0,16,16],"texture":"#unsticky"},"west":{"uv":[0,0,16,4],"texture":"#side","rotation":270,"cullface":"west"},"east":{"uv":[0,0,16,4],"texture":"#side","rotation":90,"cullface":"east"}}},{"from":[6,6,4],"to":[10,10,20],"faces":{"down":{"uv":[0,0,16,4],"texture":"#side","rotation":90},"up":{"uv":[0,0,16,4],"texture":"#side","rotation":270},"west":{"uv":[16,4,0,0],"texture":"#side"},"east":{"uv":[0,0,16,4],"texture":"#side"}}}]},"template_piston_head_short":{"textures":{"particle":"#platform"},"elements":[{"from":[0,0,0],"to":[16,16,4],"faces":{"down":{"uv":[0,0,16,4],"texture":"#side","cullface":"down","rotation":180},"up":{"uv":[0,0,16,4],"texture":"#side","cullface":"up"},"north":{"uv":[0,0,16,16],"texture":"#platform","cullface":"north"},"south":{"uv":[0,0,16,16],"texture":"#unsticky"},"west":{"uv":[0,0,16,4],"texture":"#side","rotation":270,"cullface":"west"},"east":{"uv":[0,0,16,4],"texture":"#side","rotation":90,"cullface":"east"}}},{"from":[6,6,4],"to":[10,10,16],"faces":{"down":{"uv":[4,0,16,4],"texture":"#side","rotation":90},"up":{"uv":[4,0,16,4],"texture":"#side","rotation":270},"west":{"uv":[16,4,4,0],"texture":"#side"},"east":{"uv":[4,0,16,4],"texture":"#side"}}}]},"template_potted_azalea_bush":{"parent":"block/block","textures":{"particle":"block/flower_pot","flowerpot":"block/flower_pot","dirt":"block/dirt"},"elements":[{"from":[5,0,5],"to":[6,6,11],"faces":{"down":{"uv":[5,5,6,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[5,5,6,11],"texture":"#flowerpot"},"north":{"uv":[10,10,11,16],"texture":"#flowerpot"},"south":{"uv":[5,10,6,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[10,0,5],"to":[11,6,11],"faces":{"down":{"uv":[10,5,11,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[10,5,11,11],"texture":"#flowerpot"},"north":{"uv":[5,10,6,16],"texture":"#flowerpot"},"south":{"uv":[10,10,11,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[6,0,5],"to":[10,6,6],"faces":{"down":{"uv":[6,10,10,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,5,10,6],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,10],"to":[10,6,11],"faces":{"down":{"uv":[6,5,10,6],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,10,10,11],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,6],"to":[10,4,10],"faces":{"down":{"uv":[6,12,10,16],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,6,10,10],"texture":"#dirt"}}},{"from":[4,15.9,4],"to":[12,16,12],"faces":{"down":{"uv":[4,12,12,4],"texture":"#top"},"up":{"uv":[4,4,12,12],"texture":"#top","cullface":"up"}}},{"from":[4,8,4],"to":[12,16,4],"faces":{"north":{"uv":[4,5,12,13],"texture":"#side"},"south":{"uv":[12,5,4,13],"texture":"#side"}}},{"from":[4,8,12],"to":[12,16,12],"faces":{"north":{"uv":[12,5,4,13],"texture":"#side"},"south":{"uv":[4,5,12,13],"texture":"#side"}}},{"from":[4,8,4],"to":[4,16,12],"faces":{"west":{"uv":[4,5,12,13],"texture":"#side"},"east":{"uv":[12,5,4,13],"texture":"#side"}}},{"from":[12,8,4],"to":[12,16,12],"faces":{"west":{"uv":[12,5,4,13],"texture":"#side"},"east":{"uv":[4,5,12,13],"texture":"#side"}}},{"from":[2.6,4,8],"to":[13.4,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"north":{"uv":[0,4,16,16],"texture":"#plant"},"south":{"uv":[0,4,16,16],"texture":"#plant"}}},{"from":[8,4,2.6],"to":[8,16,13.4],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"faces":{"west":{"uv":[0,4,16,16],"texture":"#plant"},"east":{"uv":[0,4,16,16],"texture":"#plant"}}}]},"template_rail_raised_ne":{"ambientocclusion":false,"textures":{"particle":"#rail"},"elements":[{"from":[0,9,0],"to":[16,9,16],"rotation":{"origin":[8,9,8],"axis":"x","angle":45,"rescale":true},"faces":{"down":{"uv":[0,16,16,0],"texture":"#rail"},"up":{"uv":[0,0,16,16],"texture":"#rail"}}}]},"template_rail_raised_sw":{"ambientocclusion":false,"textures":{"particle":"#rail"},"elements":[{"from":[0,9,0],"to":[16,9,16],"rotation":{"origin":[8,9,8],"axis":"x","angle":-45,"rescale":true},"faces":{"down":{"uv":[0,16,16,0],"texture":"#rail"},"up":{"uv":[0,0,16,16],"texture":"#rail"}}}]},"template_redstone_torch":{"ambientocclusion":false,"textures":{"particle":"#torch"},"elements":[{"from":[7,0,7],"to":[9,10,9],"shade":false,"faces":{"down":{"uv":[7,13,9,15],"texture":"#torch","cullface":"down"},"up":{"uv":[7,6,9,8],"texture":"#torch"},"north":{"uv":[7,6,9,16],"texture":"#torch"},"east":{"uv":[7,6,9,16],"texture":"#torch"},"south":{"uv":[7,6,9,16],"texture":"#torch"},"west":{"uv":[7,6,9,16],"texture":"#torch"}}},{"from":[6.5,7.5,6.5],"to":[9.5,7.5,9.5],"shade":false,"faces":{"up":{"uv":[8,5,9,6],"texture":"#torch"}}},{"from":[6.5,10.5,6.5],"to":[9.5,10.5,9.5],"shade":false,"faces":{"down":{"uv":[7,5,8,6],"texture":"#torch"}}},{"from":[6.5,7.5,6.5],"to":[9.5,10.5,6.5],"shade":false,"faces":{"south":{"uv":[9,6,10,7],"texture":"#torch"}}},{"from":[9.5,7.5,6.5],"to":[9.5,10.5,9.5],"shade":false,"faces":{"west":{"uv":[6,7,7,8],"texture":"#torch"}}},{"from":[6.5,7.5,9.5],"to":[9.5,10.5,9.5],"shade":false,"faces":{"north":{"uv":[6,6,7,7],"texture":"#torch"}}},{"from":[6.5,7.5,6.5],"to":[6.5,10.5,9.5],"shade":false,"faces":{"east":{"uv":[9,7,10,8],"texture":"#torch"}}}]},"template_redstone_torch_wall":{"ambientocclusion":false,"textures":{"particle":"#torch"},"elements":[{"from":[-1,3.5,7],"to":[1,13.5,9],"rotation":{"origin":[0,3.5,8],"axis":"z","angle":-22.5},"shade":false,"faces":{"down":{"uv":[7,13,9,15],"texture":"#torch"},"up":{"uv":[7,6,9,8],"texture":"#torch"},"north":{"uv":[7,6,9,16],"texture":"#torch"},"east":{"uv":[7,6,9,16],"texture":"#torch"},"south":{"uv":[7,6,9,16],"texture":"#torch"},"west":{"uv":[7,6,9,16],"texture":"#torch"}}},{"from":[-1.5,8,6.5],"to":[1.5,11,9.5],"shade":false,"rotation":{"origin":[0,3.5,8],"axis":"z","angle":-22.5},"faces":{"up":{"uv":[6,5,7,6],"texture":"#torch"}}},{"from":[-1.5,14,6.5],"to":[1.5,17,9.5],"shade":false,"rotation":{"origin":[0,3.5,8],"axis":"z","angle":-22.5},"faces":{"down":{"uv":[6,5,7,6],"texture":"#torch"}}},{"from":[-1.5,11,3.5],"to":[1.5,14,6.5],"shade":false,"rotation":{"origin":[0,3.5,8],"axis":"z","angle":-22.5},"faces":{"south":{"uv":[6,5,7,6],"texture":"#torch"}}},{"from":[1.5,11,6.5],"to":[4.5,14,9.5],"shade":false,"rotation":{"origin":[0,3.5,8],"axis":"z","angle":-22.5},"faces":{"west":{"uv":[6,5,7,6],"texture":"#torch"}}},{"from":[-1.5,11,9.5],"to":[1.5,14,12.5],"shade":false,"rotation":{"origin":[0,3.5,8],"axis":"z","angle":-22.5},"faces":{"north":{"uv":[6,5,7,6],"texture":"#torch"}}},{"from":[-4.5,11,6.5],"to":[-1.5,14,9.5],"shade":false,"rotation":{"origin":[0,3.5,8],"axis":"z","angle":-22.5},"faces":{"east":{"uv":[6,5,7,6],"texture":"#torch"}}}]},"template_sculk_shrieker":{"parent":"block/block","textures":{"bottom":"block/sculk_shrieker_bottom","side":"block/sculk_shrieker_side","top":"block/sculk_shrieker_top","inner_top":"block/sculk_shrieker_inner_top","particle":"block/sculk_shrieker_bottom"},"elements":[{"name":"bottom_slab","from":[0,0,0],"to":[16,8,16],"faces":{"north":{"uv":[0,8,16,16],"texture":"#side","cullface":"north"},"east":{"uv":[0,8,16,16],"texture":"#side","cullface":"east"},"south":{"uv":[0,8,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,8,16,16],"texture":"#side","cullface":"west"},"up":{"uv":[0,0,16,16],"texture":"#inner_top"},"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"}}},{"name":"top_slab","from":[1,8,1],"to":[15,15,15],"faces":{"north":{"uv":[1,1,15,8],"texture":"#side"},"east":{"uv":[1,1,15,8],"texture":"#side"},"south":{"uv":[1,1,15,8],"texture":"#side"},"west":{"uv":[1,1,15,8],"texture":"#side"},"up":{"uv":[1,1,15,15],"texture":"#top"}}},{"name":"up","from":[1,14.98,1],"to":[15,14.98,15],"faces":{"down":{"uv":[1,1,15,15],"texture":"#top"}}},{"name":"south","from":[1,8,14.98],"to":[15,15,14.98],"faces":{"north":{"uv":[1,1,15,8],"texture":"#side"}}},{"name":"north","from":[1,8,1.02],"to":[15,15,1.02],"faces":{"south":{"uv":[1,1,15,8],"texture":"#side"}}},{"name":"east","from":[14.98,8,1],"to":[14.98,15,15],"faces":{"west":{"uv":[1,1,15,8],"texture":"#side"}}},{"name":"west","from":[1.02,8,1],"to":[1.02,15,15],"faces":{"east":{"uv":[1,1,15,8],"texture":"#side"}}}]},"template_seagrass":{"parent":"block/block","textures":{"particle":"#texture"},"elements":[{"from":[0,0,4],"to":[16,16,4],"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#texture"},"south":{"uv":[0,0,16,16],"texture":"#texture"}}},{"from":[12,0,0],"to":[12,16,16],"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#texture"},"east":{"uv":[0,0,16,16],"texture":"#texture"}}},{"from":[4,0,0],"to":[4,16,16],"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#texture"},"east":{"uv":[0,0,16,16],"texture":"#texture"}}},{"from":[0,0,12],"to":[16,16,12],"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#texture"},"south":{"uv":[0,0,16,16],"texture":"#texture"}}}]},"template_shelf_body":{"parent":"block/block","display":{"gui":{"rotation":[30,225,0],"translation":[2.5,-1.5,0],"scale":[0.625,0.625,0.625]},"fixed":{"rotation":[0,0,0],"translation":[0,0,-4],"scale":[0.5,0.5,0.5]}},"textures":{"particle":"#particle"},"elements":[{"name":"shelf_body","from":[0,0,13],"to":[16,16,16],"faces":{"east":{"uv":[8,0,9.5,8],"texture":"#all","cullface":"east"},"south":{"uv":[8,0,16,8],"texture":"#all","cullface":"south"},"west":{"uv":[14.5,0,16,8],"texture":"#all","cullface":"west"},"up":{"uv":[16,5,8,3.5],"texture":"#all","cullface":"up"},"down":{"uv":[16,6,8,4.5],"texture":"#all","cullface":"down"}}},{"name":"shelf_bottom","from":[0,0,11],"to":[16,4,13],"faces":{"north":{"uv":[0,6,8,8],"texture":"#all"},"east":{"uv":[1.5,6,2.5,8],"texture":"#all","cullface":"east"},"west":{"uv":[5.5,6,6.5,8],"texture":"#all","cullface":"west"},"up":{"uv":[8,3.5,16,4.5],"texture":"#all"},"down":{"uv":[16,4.5,8,3.5],"texture":"#all","cullface":"down"}}},{"name":"shelf_top","from":[0,12,11],"to":[16,16,13],"faces":{"north":{"uv":[0,0,8,2],"texture":"#all"},"east":{"uv":[1.5,0,2.5,2],"texture":"#all","cullface":"east"},"west":{"uv":[5.5,0,6.5,2],"texture":"#all","cullface":"west"},"up":{"uv":[16,6,8,5],"texture":"#all","cullface":"up"},"down":{"uv":[8,5,16,6],"texture":"#all"}}}]},"template_shelf_center":{"parent":"block/block","textures":{"particle":"#particle"},"elements":[{"from":[0,4,13],"to":[16,12,13],"faces":{"north":{"uv":[0,12,8,16],"texture":"#all"}}}]},"template_shelf_inventory":{"parent":"block/block","display":{"gui":{"rotation":[30,225,0],"translation":[2.5,-1.5,0],"scale":[0.625,0.625,0.625]},"fixed":{"rotation":[0,0,0],"translation":[0,0,-4],"scale":[0.5,0.5,0.5]},"on_shelf":{"rotation":[0,180,0],"translation":[0,0,4],"scale":[1,1,1]},"firstperson_righthand":{"rotation":[0,135,0],"translation":[0,-2,0],"scale":[0.5,0.5,0.5]},"thirdperson_righthand":{"rotation":[75,135,0],"translation":[-3,1,0],"scale":[0.4,0.4,0.4]}},"textures":{"particle":"#particle"},"elements":[{"name":"shelf_body","from":[0,0,13],"to":[16,16,16],"faces":{"north":{"uv":[0,2,8,6],"texture":"#all"},"east":{"uv":[8,0,9.5,8],"texture":"#all","cullface":"east"},"south":{"uv":[8,0,16,8],"texture":"#all","cullface":"south"},"west":{"uv":[14.5,0,16,8],"texture":"#all","cullface":"west"},"up":{"uv":[16,5,8,3.5],"texture":"#all"},"down":{"uv":[16,6,8,4.5],"texture":"#all","cullface":"down"}}},{"name":"shelf_bottom","from":[0,0,11],"to":[16,4,13],"faces":{"north":{"uv":[0,6,8,8],"texture":"#all"},"east":{"uv":[1.5,6,2.5,8],"texture":"#all","cullface":"east"},"south":{"uv":[0,0,8,1],"texture":"#all","cullface":"south"},"west":{"uv":[5.5,6,6.5,8],"texture":"#all","cullface":"west"},"up":{"uv":[8,3.5,16,4.5],"texture":"#all"},"down":{"uv":[16,4.5,8,3.5],"texture":"#all","cullface":"down"}}},{"name":"shelf_top","from":[0,12,11],"to":[16,16,13],"faces":{"north":{"uv":[0,0,8,2],"texture":"#all"},"east":{"uv":[1.5,0,2.5,2],"texture":"#all","cullface":"east"},"south":{"uv":[0,0,8,1],"texture":"#all","cullface":"south"},"west":{"uv":[5.5,0,6.5,2],"texture":"#all","cullface":"west"},"up":{"uv":[16,6,8,5],"texture":"#all","cullface":"up"},"down":{"uv":[8,5,16,6],"texture":"#all"}}}]},"template_shelf_left":{"parent":"block/block","textures":{"particle":"#particle"},"elements":[{"from":[0,4,13],"to":[16,12,13],"faces":{"north":{"uv":[0,8,8,12],"texture":"#all"}}}]},"template_shelf_right":{"parent":"block/block","textures":{"particle":"#particle"},"elements":[{"from":[0,4,13],"to":[16,12,13],"faces":{"north":{"uv":[8,8,16,12],"texture":"#all"}}}]},"template_shelf_unconnected":{"parent":"block/block","textures":{"particle":"#particle"},"elements":[{"from":[0,4,13],"to":[16,12,13],"faces":{"north":{"uv":[8,12,16,16],"texture":"#all"}}}]},"template_shelf_unpowered":{"parent":"block/block","textures":{"particle":"#particle"},"elements":[{"from":[0,4,13],"to":[16,12,13],"faces":{"north":{"uv":[0,2,8,6],"texture":"#all"}}}]},"template_single_face":{"textures":{"particle":"#texture"},"elements":[{"from":[0,0,0],"to":[16,16,0],"faces":{"north":{"texture":"#texture","cullface":"north"}}}]},"template_three_candles":{"parent":"block/block","elements":[{"from":[7,0,9],"to":[9,3,11],"faces":{"north":{"uv":[0,8,2,11],"texture":"#all"},"east":{"uv":[0,8,2,11],"texture":"#all"},"south":{"uv":[0,8,2,11],"texture":"#all"},"west":{"uv":[0,8,2,11],"texture":"#all"},"up":{"uv":[0,6,2,8],"texture":"#all"},"down":{"uv":[0,14,2,16],"texture":"#all","cullface":"down"}}},{"from":[7.5,3,10],"to":[8.5,4,10],"rotation":{"angle":45,"axis":"y","origin":[8,3,10]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[1,5,0,6],"texture":"#all"}}},{"from":[7.5,3,10],"to":[8.5,4,10],"rotation":{"angle":-45,"axis":"y","origin":[8,3,10]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[1,5,0,6],"texture":"#all"}}},{"from":[5,0,7],"to":[7,5,9],"faces":{"north":{"uv":[0,8,2,13],"texture":"#all"},"east":{"uv":[0,8,2,13],"texture":"#all"},"south":{"uv":[0,8,2,13],"texture":"#all"},"west":{"uv":[0,8,2,13],"texture":"#all"},"up":{"uv":[0,6,2,8],"texture":"#all"},"down":{"uv":[0,14,2,16],"texture":"#all","cullface":"down"}}},{"from":[5.5,5,8],"to":[6.5,6,8],"rotation":{"angle":45,"axis":"y","origin":[6,5,8]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[1,5,0,6],"texture":"#all"}}},{"from":[5.5,5,8],"to":[6.5,6,8],"rotation":{"angle":-45,"axis":"y","origin":[6,5,8]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[1,5,0,6],"texture":"#all"}}},{"from":[8,0,6],"to":[10,6,8],"faces":{"north":{"uv":[0,8,2,14],"texture":"#all"},"east":{"uv":[0,8,2,14],"texture":"#all"},"south":{"uv":[0,8,2,14],"texture":"#all"},"west":{"uv":[0,8,2,14],"texture":"#all"},"up":{"uv":[0,6,2,8],"texture":"#all"},"down":{"uv":[0,14,2,16],"texture":"#all","cullface":"down"}}},{"from":[8.5,6,7],"to":[9.5,7,7],"rotation":{"angle":45,"axis":"y","origin":[9,6,7]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[0,5,1,6],"texture":"#all"}}},{"from":[8.5,6,7],"to":[9.5,7,7],"rotation":{"angle":-45,"axis":"y","origin":[9,6,7]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[0,5,1,6],"texture":"#all"}}}]},"template_three_turtle_eggs":{"parent":"block/block","textures":{"particle":"#all"},"elements":[{"from":[5,0,4],"to":[9,7,8],"faces":{"down":{"uv":[0,0,4,4],"texture":"#all","cullface":"down"},"up":{"uv":[0,0,4,4],"texture":"#all"},"north":{"uv":[1,4,5,11],"texture":"#all"},"south":{"uv":[1,4,5,11],"texture":"#all"},"west":{"uv":[1,4,5,11],"texture":"#all"},"east":{"uv":[1,4,5,11],"texture":"#all"}}},{"from":[1,0,7],"to":[5,5,11],"faces":{"down":{"uv":[6,7,10,11],"texture":"#all","cullface":"down"},"up":{"uv":[6,7,10,11],"texture":"#all"},"north":{"uv":[10,10,14,15],"texture":"#all"},"south":{"uv":[10,10,14,15],"texture":"#all"},"west":{"uv":[10,10,14,15],"texture":"#all"},"east":{"uv":[10,10,14,15],"texture":"#all"}}},{"from":[11,0,7],"to":[14,4,10],"faces":{"down":{"uv":[5,0,8,3],"texture":"#all","cullface":"down"},"up":{"uv":[5,0,8,3],"texture":"#all"},"north":{"uv":[8,3,11,7],"texture":"#all"},"south":{"uv":[8,3,11,7],"texture":"#all"},"west":{"uv":[8,3,11,7],"texture":"#all"},"east":{"uv":[8,3,11,7],"texture":"#all"}}}]},"template_torch":{"ambientocclusion":false,"textures":{"particle":"#torch"},"elements":[{"from":[7,0,7],"to":[9,10,9],"shade":false,"faces":{"down":{"uv":[7,13,9,15],"texture":"#torch","cullface":"down"},"up":{"uv":[7,6,9,8],"texture":"#torch"},"north":{"uv":[7,6,9,16],"texture":"#torch"},"east":{"uv":[7,6,9,16],"texture":"#torch"},"south":{"uv":[7,6,9,16],"texture":"#torch"},"west":{"uv":[7,6,9,16],"texture":"#torch"}}}]},"template_torch_unlit":{"ambientocclusion":false,"textures":{"particle":"#torch"},"elements":[{"from":[7,0,7],"to":[9,10,9],"faces":{"down":{"uv":[7,13,9,15],"texture":"#torch","cullface":"down"},"up":{"uv":[7,6,9,8],"texture":"#torch"},"north":{"uv":[7,6,9,16],"texture":"#torch"},"east":{"uv":[7,6,9,16],"texture":"#torch"},"south":{"uv":[7,6,9,16],"texture":"#torch"},"west":{"uv":[7,6,9,16],"texture":"#torch"}}}]},"template_torch_wall":{"ambientocclusion":false,"textures":{"particle":"#torch"},"elements":[{"from":[-1,3.5,7],"to":[1,13.5,9],"rotation":{"origin":[0,3.5,8],"axis":"z","angle":-22.5},"shade":false,"faces":{"down":{"uv":[7,13,9,15],"texture":"#torch"},"up":{"uv":[7,6,9,8],"texture":"#torch"},"north":{"uv":[7,6,9,16],"texture":"#torch"},"east":{"uv":[7,6,9,16],"texture":"#torch"},"south":{"uv":[7,6,9,16],"texture":"#torch"},"west":{"uv":[7,6,9,16],"texture":"#torch"}}}]},"template_torch_wall_unlit":{"ambientocclusion":false,"textures":{"particle":"#torch"},"elements":[{"from":[-1,3.5,7],"to":[1,13.5,9],"rotation":{"origin":[0,3.5,8],"axis":"z","angle":-22.5},"faces":{"down":{"uv":[7,13,9,15],"texture":"#torch"},"up":{"uv":[7,6,9,8],"texture":"#torch"},"north":{"uv":[7,6,9,16],"texture":"#torch"},"east":{"uv":[7,6,9,16],"texture":"#torch"},"south":{"uv":[7,6,9,16],"texture":"#torch"},"west":{"uv":[7,6,9,16],"texture":"#torch"}}}]},"template_trapdoor_bottom":{"parent":"block/thin_block","textures":{"particle":"#texture"},"elements":[{"from":[0,0,0],"to":[16,3,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture","cullface":"down"},"up":{"uv":[0,0,16,16],"texture":"#texture"},"north":{"uv":[0,16,16,13],"texture":"#texture","cullface":"north"},"south":{"uv":[0,16,16,13],"texture":"#texture","cullface":"south"},"west":{"uv":[0,16,16,13],"texture":"#texture","cullface":"west"},"east":{"uv":[0,16,16,13],"texture":"#texture","cullface":"east"}}}]},"template_trapdoor_open":{"textures":{"particle":"#texture"},"elements":[{"from":[0,0,13],"to":[16,16,16],"faces":{"down":{"uv":[0,13,16,16],"texture":"#texture","cullface":"down"},"up":{"uv":[0,16,16,13],"texture":"#texture","cullface":"up"},"north":{"uv":[0,0,16,16],"texture":"#texture"},"south":{"uv":[0,0,16,16],"texture":"#texture","cullface":"south"},"west":{"uv":[16,0,13,16],"texture":"#texture","cullface":"west"},"east":{"uv":[13,0,16,16],"texture":"#texture","cullface":"east"}}}]},"template_trapdoor_top":{"textures":{"particle":"#texture"},"elements":[{"from":[0,13,0],"to":[16,16,16],"faces":{"down":{"uv":[0,0,16,16],"texture":"#texture"},"up":{"uv":[0,0,16,16],"texture":"#texture","cullface":"up"},"north":{"uv":[0,16,16,13],"texture":"#texture","cullface":"north"},"south":{"uv":[0,16,16,13],"texture":"#texture","cullface":"south"},"west":{"uv":[0,16,16,13],"texture":"#texture","cullface":"west"},"east":{"uv":[0,16,16,13],"texture":"#texture","cullface":"east"}}}]},"template_turtle_egg":{"parent":"block/block","textures":{"particle":"#all"},"elements":[{"from":[5,0,4],"to":[9,7,8],"faces":{"down":{"uv":[0,0,4,4],"texture":"#all","cullface":"down"},"up":{"uv":[0,0,4,4],"texture":"#all"},"north":{"uv":[1,4,5,11],"texture":"#all"},"south":{"uv":[1,4,5,11],"texture":"#all"},"west":{"uv":[1,4,5,11],"texture":"#all"},"east":{"uv":[1,4,5,11],"texture":"#all"}}}]},"template_two_candles":{"parent":"block/block","elements":[{"from":[5,0,7],"to":[7,5,9],"faces":{"north":{"uv":[0,8,2,13],"texture":"#all"},"east":{"uv":[0,8,2,13],"texture":"#all"},"south":{"uv":[0,8,2,13],"texture":"#all"},"west":{"uv":[0,8,2,13],"texture":"#all"},"up":{"uv":[0,6,2,8],"texture":"#all"},"down":{"uv":[0,14,2,16],"texture":"#all","cullface":"down"}}},{"from":[5.5,5,8],"to":[6.5,6,8],"rotation":{"angle":45,"axis":"y","origin":[6,5,8]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[1,5,0,6],"texture":"#all"}}},{"from":[5.5,5,8],"to":[6.5,6,8],"rotation":{"angle":-45,"axis":"y","origin":[6,5,8]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[1,5,0,6],"texture":"#all"}}},{"from":[9,0,6],"to":[11,6,8],"faces":{"north":{"uv":[0,8,2,14],"texture":"#all"},"east":{"uv":[0,8,2,14],"texture":"#all"},"south":{"uv":[0,8,2,14],"texture":"#all"},"west":{"uv":[0,8,2,14],"texture":"#all"},"up":{"uv":[0,6,2,8],"texture":"#all"},"down":{"uv":[0,14,2,16],"texture":"#all","cullface":"down"}}},{"from":[9.5,6,7],"to":[10.5,7,7],"rotation":{"angle":45,"axis":"y","origin":[10,6,7]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[0,5,1,6],"texture":"#all"}}},{"from":[9.5,6,7],"to":[10.5,7,7],"rotation":{"angle":-45,"axis":"y","origin":[10,6,7]},"faces":{"north":{"uv":[0,5,1,6],"texture":"#all"},"south":{"uv":[0,5,1,6],"texture":"#all"}}}]},"template_two_turtle_eggs":{"parent":"block/block","textures":{"particle":"#all"},"elements":[{"from":[5,0,4],"to":[9,7,8],"faces":{"down":{"uv":[0,0,4,4],"texture":"#all","cullface":"down"},"up":{"uv":[0,0,4,4],"texture":"#all"},"north":{"uv":[1,4,5,11],"texture":"#all"},"south":{"uv":[1,4,5,11],"texture":"#all"},"west":{"uv":[1,4,5,11],"texture":"#all"},"east":{"uv":[1,4,5,11],"texture":"#all"}}},{"from":[1,0,7],"to":[5,5,11],"faces":{"down":{"uv":[6,7,10,11],"texture":"#all","cullface":"down"},"up":{"uv":[6,7,10,11],"texture":"#all"},"north":{"uv":[10,10,14,15],"texture":"#all"},"south":{"uv":[10,10,14,15],"texture":"#all"},"west":{"uv":[10,10,14,15],"texture":"#all"},"east":{"uv":[10,10,14,15],"texture":"#all"}}}]},"template_vault":{"parent":"block/block","textures":{"particle":"#side"},"elements":[{"name":"cage","from":[0,0,0],"to":[16,16,16],"faces":{"north":{"uv":[0,0,16,16],"texture":"#front","cullface":"north"},"east":{"uv":[0,0,16,16],"texture":"#side","cullface":"east"},"south":{"uv":[0,0,16,16],"texture":"#side","cullface":"south"},"west":{"uv":[0,0,16,16],"texture":"#side","cullface":"west"},"up":{"uv":[0,0,16,16],"texture":"#top","cullface":"up"},"down":{"uv":[0,0,16,16],"texture":"#bottom","cullface":"down"}}},{"name":"cage_inverted_faces","from":[15.998,3.002,0.002],"to":[0.002,15.998,15.998],"faces":{"north":{"uv":[16,0,0,13],"texture":"#front"},"east":{"uv":[16,0,0,13],"texture":"#side"},"south":{"uv":[16,0,0,13],"texture":"#side"},"west":{"uv":[16,0,0,13],"texture":"#side"},"up":{"uv":[16,0,0,16],"texture":"#top"},"down":{"uv":[0,0,16,16],"texture":"#bottom"}}}]},"template_wall_post":{"textures":{"particle":"#wall"},"elements":[{"from":[4,0,4],"to":[12,16,12],"faces":{"down":{"texture":"#wall","cullface":"down"},"up":{"texture":"#wall","cullface":"up"},"north":{"texture":"#wall"},"south":{"texture":"#wall"},"west":{"texture":"#wall"},"east":{"texture":"#wall"}},"__comment":"Center post"}]},"template_wall_side":{"textures":{"particle":"#wall"},"elements":[{"from":[5,0,0],"to":[11,14,8],"faces":{"down":{"texture":"#wall","cullface":"down"},"up":{"texture":"#wall"},"north":{"texture":"#wall","cullface":"north"},"west":{"texture":"#wall"},"east":{"texture":"#wall"}},"__comment":"wall"}]},"template_wall_side_tall":{"textures":{"particle":"#wall"},"elements":[{"from":[5,0,0],"to":[11,16,8],"faces":{"down":{"texture":"#wall","cullface":"down"},"up":{"texture":"#wall","cullface":"up"},"north":{"texture":"#wall","cullface":"north"},"west":{"texture":"#wall"},"east":{"texture":"#wall"}}}]},"terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/terracotta"}},"test_block_accept":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/test_block_accept"}},"test_block_fail":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/test_block_fail"}},"test_block_log":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/test_block_log"}},"test_block_start":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/test_block_start"}},"test_instance_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/test_instance_block"}},"thin_block":{"parent":"block/block","display":{"thirdperson_righthand":{"rotation":[75,45,0],"translation":[0,2.5,2],"scale":[0.375,0.375,0.375]},"firstperson_righthand":{"rotation":[0,45,0],"translation":[0,4.2,0],"scale":[0.40,0.40,0.40]},"firstperson_lefthand":{"rotation":[0,225,0],"translation":[0,4.2,0],"scale":[0.40,0.40,0.40]}}},"three_dead_sea_pickles":{"parent":"block/block","textures":{"particle":"block/sea_pickle","all":"block/sea_pickle"},"elements":[{"from":[6,0,9],"to":[10,6,13],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,11],"texture":"#all"},"south":{"uv":[0,5,4,11],"texture":"#all"},"west":{"uv":[8,5,12,11],"texture":"#all"},"east":{"uv":[12,5,16,11],"texture":"#all"}}},{"from":[6,5.95,9],"to":[10,5.95,13],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[2,0,2],"to":[6,4,6],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,9],"texture":"#all"},"south":{"uv":[0,5,4,9],"texture":"#all"},"west":{"uv":[8,5,12,9],"texture":"#all"},"east":{"uv":[12,5,16,9],"texture":"#all"}}},{"from":[2,3.95,2],"to":[6,3.95,6],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[8,0,4],"to":[12,6,8],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,11],"texture":"#all"},"south":{"uv":[0,5,4,11],"texture":"#all"},"west":{"uv":[8,5,12,11],"texture":"#all"},"east":{"uv":[12,5,16,11],"texture":"#all"}}},{"from":[8,5.95,4],"to":[12,5.95,8],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}}]},"three_sea_pickles":{"parent":"block/block","textures":{"particle":"block/sea_pickle","all":"block/sea_pickle"},"elements":[{"from":[6,0,9],"to":[10,6,13],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,11],"texture":"#all"},"south":{"uv":[0,5,4,11],"texture":"#all"},"west":{"uv":[8,5,12,11],"texture":"#all"},"east":{"uv":[12,5,16,11],"texture":"#all"}}},{"from":[6,5.95,9],"to":[10,5.95,13],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[2,0,2],"to":[6,4,6],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,9],"texture":"#all"},"south":{"uv":[0,5,4,9],"texture":"#all"},"west":{"uv":[8,5,12,9],"texture":"#all"},"east":{"uv":[12,5,16,9],"texture":"#all"}}},{"from":[2,3.95,2],"to":[6,3.95,6],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[8,0,4],"to":[12,6,8],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,11],"texture":"#all"},"south":{"uv":[0,5,4,11],"texture":"#all"},"west":{"uv":[8,5,12,11],"texture":"#all"},"east":{"uv":[12,5,16,11],"texture":"#all"}}},{"from":[8,5.95,4],"to":[12,5.95,8],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[7.5,5.2,11],"to":[8.5,8.7,11],"rotation":{"origin":[8,8,11],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[1,0,3,5],"texture":"#all"},"south":{"uv":[3,0,1,5],"texture":"#all"}}},{"from":[8,5.2,10.5],"to":[8,8.7,11.5],"rotation":{"origin":[8,8,11],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[13,0,15,5],"texture":"#all"},"east":{"uv":[15,0,13,5],"texture":"#all"}}},{"from":[3.5,3.2,4],"to":[4.5,6.7,4],"rotation":{"origin":[4,8,4],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[1,0,3,5],"texture":"#all"},"south":{"uv":[3,0,1,5],"texture":"#all"}}},{"from":[4,3.2,3.5],"to":[4,6.7,4.5],"rotation":{"origin":[4,8,4],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[13,0,15,5],"texture":"#all"},"east":{"uv":[15,0,13,5],"texture":"#all"}}},{"from":[9.5,5.2,6],"to":[10.5,8.7,6],"rotation":{"origin":[10,8,6],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[1,0,3,5],"texture":"#all"},"south":{"uv":[3,0,1,5],"texture":"#all"}}},{"from":[10,5.2,5.5],"to":[10,8.7,6.5],"rotation":{"origin":[10,8,6],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[13,0,15,5],"texture":"#all"},"east":{"uv":[15,0,13,5],"texture":"#all"}}}]},"three_slightly_cracked_turtle_eggs":{"parent":"minecraft:block/template_three_turtle_eggs","textures":{"all":"minecraft:block/turtle_egg_slightly_cracked"}},"three_turtle_eggs":{"parent":"minecraft:block/template_three_turtle_eggs","textures":{"all":"minecraft:block/turtle_egg"}},"three_very_cracked_turtle_eggs":{"parent":"minecraft:block/template_three_turtle_eggs","textures":{"all":"minecraft:block/turtle_egg_very_cracked"}},"tinted_cross":{"ambientocclusion":false,"textures":{"particle":"#cross"},"elements":[{"from":[0.8,0,8],"to":[15.2,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#cross","tintindex":0},"south":{"uv":[0,0,16,16],"texture":"#cross","tintindex":0}}},{"from":[8,0,0.8],"to":[8,16,15.2],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#cross","tintindex":0},"east":{"uv":[0,0,16,16],"texture":"#cross","tintindex":0}}}]},"tinted_flower_pot_cross":{"ambientocclusion":false,"textures":{"particle":"block/flower_pot","flowerpot":"block/flower_pot","dirt":"block/dirt"},"elements":[{"from":[5,0,5],"to":[6,6,11],"faces":{"down":{"uv":[5,5,6,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[5,5,6,11],"texture":"#flowerpot"},"north":{"uv":[10,10,11,16],"texture":"#flowerpot"},"south":{"uv":[5,10,6,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[10,0,5],"to":[11,6,11],"faces":{"down":{"uv":[10,5,11,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[10,5,11,11],"texture":"#flowerpot"},"north":{"uv":[5,10,6,16],"texture":"#flowerpot"},"south":{"uv":[10,10,11,16],"texture":"#flowerpot"},"west":{"uv":[5,10,11,16],"texture":"#flowerpot"},"east":{"uv":[5,10,11,16],"texture":"#flowerpot"}}},{"from":[6,0,5],"to":[10,6,6],"faces":{"down":{"uv":[6,10,10,11],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,5,10,6],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,10],"to":[10,6,11],"faces":{"down":{"uv":[6,5,10,6],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,10,10,11],"texture":"#flowerpot"},"north":{"uv":[6,10,10,16],"texture":"#flowerpot"},"south":{"uv":[6,10,10,16],"texture":"#flowerpot"}}},{"from":[6,0,6],"to":[10,4,10],"faces":{"down":{"uv":[6,12,10,16],"texture":"#flowerpot","cullface":"down"},"up":{"uv":[6,6,10,10],"texture":"#dirt"}}},{"from":[2.6,4,8],"to":[13.4,16,8],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[0,0,16,16],"texture":"#plant","tintindex":0},"south":{"uv":[0,0,16,16],"texture":"#plant","tintindex":0}}},{"from":[8,4,2.6],"to":[8,16,13.4],"rotation":{"origin":[8,8,8],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[0,0,16,16],"texture":"#plant","tintindex":0},"east":{"uv":[0,0,16,16],"texture":"#plant","tintindex":0}}}]},"tinted_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/tinted_glass"}},"tnt":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/tnt_bottom","side":"minecraft:block/tnt_side","top":"minecraft:block/tnt_top"}},"torch":{"parent":"minecraft:block/template_torch","textures":{"torch":"minecraft:block/torch"}},"torchflower":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/torchflower"}},"torchflower_crop_stage0":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/torchflower_crop_stage0"}},"torchflower_crop_stage1":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/torchflower_crop_stage1"}},"trapped_chest":{"textures":{"particle":"minecraft:block/oak_planks"}},"trial_spawner":{"parent":"minecraft:block/cube_bottom_top_inner_faces","textures":{"bottom":"minecraft:block/trial_spawner_bottom","side":"minecraft:block/trial_spawner_side_inactive","top":"minecraft:block/trial_spawner_top_inactive"}},"trial_spawner_active":{"parent":"minecraft:block/cube_bottom_top_inner_faces","textures":{"bottom":"minecraft:block/trial_spawner_bottom","side":"minecraft:block/trial_spawner_side_active","top":"minecraft:block/trial_spawner_top_active"}},"trial_spawner_active_ominous":{"parent":"minecraft:block/cube_bottom_top_inner_faces","textures":{"bottom":"minecraft:block/trial_spawner_bottom","side":"minecraft:block/trial_spawner_side_active_ominous","top":"minecraft:block/trial_spawner_top_active_ominous"}},"trial_spawner_ejecting_reward":{"parent":"minecraft:block/cube_bottom_top_inner_faces","textures":{"bottom":"minecraft:block/trial_spawner_bottom","side":"minecraft:block/trial_spawner_side_active","top":"minecraft:block/trial_spawner_top_ejecting_reward"}},"trial_spawner_ejecting_reward_ominous":{"parent":"minecraft:block/cube_bottom_top_inner_faces","textures":{"bottom":"minecraft:block/trial_spawner_bottom","side":"minecraft:block/trial_spawner_side_active_ominous","top":"minecraft:block/trial_spawner_top_ejecting_reward_ominous"}},"trial_spawner_inactive_ominous":{"parent":"minecraft:block/cube_bottom_top_inner_faces","textures":{"bottom":"minecraft:block/trial_spawner_bottom","side":"minecraft:block/trial_spawner_side_inactive_ominous","top":"minecraft:block/trial_spawner_top_inactive_ominous"}},"tripwire_attached_n":{"ambientocclusion":false,"textures":{"particle":"block/tripwire","texture":"block/tripwire"},"elements":[{"from":[7.75,1.5,0],"to":[8.25,1.5,4],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,4],"to":[8.25,1.5,8],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,8],"to":[8.25,1.5,12],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}}]},"tripwire_attached_ne":{"ambientocclusion":false,"textures":{"particle":"block/tripwire","texture":"block/tripwire"},"elements":[{"from":[7.75,1.5,0],"to":[8.25,1.5,4],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,4],"to":[8.25,1.5,8],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[8,1.5,7.75],"to":[12,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,4,16,2],"texture":"#texture"},"up":{"uv":[0,2,16,4],"texture":"#texture"}}},{"from":[12,1.5,7.75],"to":[16,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,4,16,2],"texture":"#texture"},"up":{"uv":[0,2,16,4],"texture":"#texture"}}}]},"tripwire_attached_ns":{"ambientocclusion":false,"textures":{"particle":"block/tripwire","texture":"block/tripwire"},"elements":[{"from":[7.75,1.5,0],"to":[8.25,1.5,4],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,4],"to":[8.25,1.5,8],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,8],"to":[8.25,1.5,12],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,12],"to":[8.25,1.5,16],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}}]},"tripwire_attached_nse":{"ambientocclusion":false,"textures":{"particle":"block/tripwire","texture":"block/tripwire"},"elements":[{"from":[7.75,1.5,0],"to":[8.25,1.5,4],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,4],"to":[8.25,1.5,8],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,8],"to":[8.25,1.5,12],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,12],"to":[8.25,1.5,16],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[8,1.5,7.75],"to":[12,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,4,16,2],"texture":"#texture"},"up":{"uv":[0,2,16,4],"texture":"#texture"}}},{"from":[12,1.5,7.75],"to":[16,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,4,16,2],"texture":"#texture"},"up":{"uv":[0,2,16,4],"texture":"#texture"}}}]},"tripwire_attached_nsew":{"ambientocclusion":false,"textures":{"particle":"block/tripwire","texture":"block/tripwire"},"elements":[{"from":[7.75,1.5,0],"to":[8.25,1.5,4],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,4],"to":[8.25,1.5,8],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,8],"to":[8.25,1.5,12],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,12],"to":[8.25,1.5,16],"shade":false,"faces":{"down":{"uv":[16,2,0,4],"texture":"#texture","rotation":90},"up":{"uv":[0,2,16,4],"texture":"#texture","rotation":90}}},{"from":[0,1.5,7.75],"to":[4,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,4,16,2],"texture":"#texture"},"up":{"uv":[0,2,16,4],"texture":"#texture"}}},{"from":[4,1.5,7.75],"to":[8,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,4,16,2],"texture":"#texture"},"up":{"uv":[0,2,16,4],"texture":"#texture"}}},{"from":[8,1.5,7.75],"to":[12,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,4,16,2],"texture":"#texture"},"up":{"uv":[0,2,16,4],"texture":"#texture"}}},{"from":[12,1.5,7.75],"to":[16,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,4,16,2],"texture":"#texture"},"up":{"uv":[0,2,16,4],"texture":"#texture"}}}]},"tripwire_hook":{"textures":{"particle":"block/oak_planks","hook":"block/tripwire_hook","wood":"block/oak_planks"},"elements":[{"from":[6.2,3.8,7.9],"to":[9.8,4.6,11.5],"rotation":{"origin":[8,6,5.2],"axis":"x","angle":-45},"faces":{"down":{"uv":[5,3,11,9],"texture":"#hook"},"up":{"uv":[5,3,11,9],"texture":"#hook"},"north":{"uv":[5,3,11,4],"texture":"#hook"},"south":{"uv":[5,8,11,9],"texture":"#hook"},"west":{"uv":[5,8,11,9],"texture":"#hook"},"east":{"uv":[5,3,11,4],"texture":"#hook"}}},{"from":[7.4,3.8,10.3],"to":[8.6,4.6,10.3],"rotation":{"origin":[8,6,5.2],"axis":"x","angle":-45},"faces":{"north":{"uv":[7,8,9,9],"texture":"#hook"}}},{"from":[7.4,3.8,9.1],"to":[8.6,4.6,9.1],"rotation":{"origin":[8,6,5.2],"axis":"x","angle":-45},"faces":{"south":{"uv":[7,3,9,4],"texture":"#hook"}}},{"from":[7.4,3.8,9.1],"to":[7.4,4.6,10.3],"rotation":{"origin":[8,6,5.2],"axis":"x","angle":-45},"faces":{"east":{"uv":[7,8,9,9],"texture":"#hook"}}},{"from":[8.6,3.8,9.1],"to":[8.6,4.6,10.3],"rotation":{"origin":[8,6,5.2],"axis":"x","angle":-45},"faces":{"west":{"uv":[7,3,9,4],"texture":"#hook"}}},{"from":[7.4,5.2,10],"to":[8.8,6.8,14],"rotation":{"origin":[8,6,14],"axis":"x","angle":45},"faces":{"down":{"uv":[7,9,9,14],"texture":"#wood"},"up":{"uv":[7,2,9,7],"texture":"#wood"},"north":{"uv":[7,9,9,11],"texture":"#wood"},"south":{"uv":[7,9,9,11],"texture":"#wood"},"west":{"uv":[2,9,7,11],"texture":"#wood"},"east":{"uv":[9,9,14,11],"texture":"#wood"}}},{"from":[6,1,14],"to":[10,9,16],"faces":{"down":{"uv":[6,14,10,16],"texture":"#wood"},"up":{"uv":[6,0,10,2],"texture":"#wood"},"north":{"uv":[6,7,10,15],"texture":"#wood"},"south":{"uv":[6,7,10,15],"texture":"#wood","cullface":"south"},"west":{"uv":[0,7,2,15],"texture":"#wood"},"east":{"uv":[14,7,16,15],"texture":"#wood"}}}]},"tripwire_hook_attached":{"textures":{"particle":"block/oak_planks","hook":"block/tripwire_hook","wood":"block/oak_planks","tripwire":"block/tripwire"},"elements":[{"from":[7.75,1.5,0],"to":[8.25,1.5,6.7],"rotation":{"origin":[8,0,0],"axis":"x","angle":-22.5,"rescale":true},"faces":{"down":{"uv":[16,6,0,8],"texture":"#tripwire","rotation":90},"up":{"uv":[0,6,16,8],"texture":"#tripwire","rotation":90}}},{"from":[6.2,4.2,6.7],"to":[9.8,5,10.3],"rotation":{"origin":[8,4.2,6.7],"axis":"x","angle":-22.5,"rescale":false},"faces":{"down":{"uv":[5,3,11,9],"texture":"#hook"},"up":{"uv":[5,3,11,9],"texture":"#hook"},"north":{"uv":[5,3,11,4],"texture":"#hook"},"south":{"uv":[5,8,11,9],"texture":"#hook"},"west":{"uv":[5,8,11,9],"texture":"#hook"},"east":{"uv":[5,3,11,4],"texture":"#hook"}}},{"from":[7.4,4.2,9.1],"to":[8.6,5,9.1],"rotation":{"origin":[8,4.2,6.7],"axis":"x","angle":-22.5,"rescale":false},"faces":{"north":{"uv":[7,8,9,9],"texture":"#hook"}}},{"from":[7.4,4.2,7.9],"to":[8.6,5,7.9],"rotation":{"origin":[8,4.2,6.7],"axis":"x","angle":-22.5,"rescale":false},"faces":{"south":{"uv":[7,3,9,4],"texture":"#hook"}}},{"from":[7.4,4.2,7.9],"to":[7.4,5,9.1],"rotation":{"origin":[8,4.2,6.7],"axis":"x","angle":-22.5,"rescale":false},"faces":{"east":{"uv":[7,8,9,9],"texture":"#hook"}}},{"from":[8.6,4.2,7.9],"to":[8.6,5,9.1],"rotation":{"origin":[8,4.2,6.7],"axis":"x","angle":-22.5,"rescale":false},"faces":{"west":{"uv":[7,3,9,4],"texture":"#hook"}}},{"from":[7.4,5.2,10],"to":[8.8,6.8,14],"faces":{"down":{"uv":[7,9,9,14],"texture":"#wood"},"up":{"uv":[7,2,9,7],"texture":"#wood"},"north":{"uv":[7,9,9,11],"texture":"#wood"},"west":{"uv":[2,9,7,11],"texture":"#wood"},"east":{"uv":[9,9,14,11],"texture":"#wood"}}},{"from":[6,1,14],"to":[10,9,16],"faces":{"down":{"uv":[6,14,10,16],"texture":"#wood"},"up":{"uv":[6,0,10,2],"texture":"#wood"},"north":{"uv":[6,7,10,15],"texture":"#wood"},"south":{"uv":[6,7,10,15],"texture":"#wood","cullface":"south"},"west":{"uv":[0,7,2,15],"texture":"#wood"},"east":{"uv":[14,7,16,15],"texture":"#wood"}}}]},"tripwire_hook_attached_on":{"textures":{"particle":"block/oak_planks","hook":"block/tripwire_hook","wood":"block/oak_planks","tripwire":"block/tripwire"},"elements":[{"from":[7.75,0.5,0],"to":[8.25,0.5,6.7],"rotation":{"origin":[8,0,0],"axis":"x","angle":-22.5,"rescale":true},"faces":{"down":{"uv":[16,6,0,8],"texture":"#tripwire","rotation":90},"up":{"uv":[0,6,16,8],"texture":"#tripwire","rotation":90}}},{"from":[6.2,3.4,6.7],"to":[9.8,4.2,10.3],"faces":{"down":{"uv":[5,3,11,9],"texture":"#hook"},"up":{"uv":[5,3,11,9],"texture":"#hook"},"north":{"uv":[5,3,11,4],"texture":"#hook"},"south":{"uv":[5,8,11,9],"texture":"#hook"},"west":{"uv":[5,8,11,9],"texture":"#hook"},"east":{"uv":[5,3,11,4],"texture":"#hook"}}},{"from":[7.4,3.4,9.1],"to":[8.6,4.2,9.1],"faces":{"north":{"uv":[7,8,9,9],"texture":"#hook"}}},{"from":[7.4,3.4,7.9],"to":[8.6,4.2,7.9],"faces":{"south":{"uv":[7,3,9,4],"texture":"#hook"}}},{"from":[7.4,3.4,7.9],"to":[7.4,4.2,9.1],"faces":{"east":{"uv":[7,8,9,9],"texture":"#hook"}}},{"from":[8.6,3.4,7.9],"to":[8.6,4.2,9.1],"faces":{"west":{"uv":[7,3,9,4],"texture":"#hook"}}},{"from":[7.4,5.2,10],"to":[8.8,6.8,14],"rotation":{"origin":[8,6,14],"axis":"x","angle":-22.5},"faces":{"down":{"uv":[7,9,9,14],"texture":"#wood"},"up":{"uv":[7,2,9,7],"texture":"#wood"},"north":{"uv":[7,9,9,11],"texture":"#wood"},"south":{"uv":[7,9,9,11],"texture":"#wood"},"west":{"uv":[2,9,7,11],"texture":"#wood"},"east":{"uv":[9,9,14,11],"texture":"#wood"}}},{"from":[6,1,14],"to":[10,9,16],"faces":{"down":{"uv":[6,14,10,16],"texture":"#wood"},"up":{"uv":[6,0,10,2],"texture":"#wood"},"north":{"uv":[6,7,10,15],"texture":"#wood"},"south":{"uv":[6,7,10,15],"texture":"#wood","cullface":"south"},"west":{"uv":[0,7,2,15],"texture":"#wood"},"east":{"uv":[14,7,16,15],"texture":"#wood"}}}]},"tripwire_hook_on":{"textures":{"particle":"block/oak_planks","hook":"block/tripwire_hook","wood":"block/oak_planks"},"elements":[{"from":[6.2,4.2,6.7],"to":[9.8,5,10.3],"faces":{"down":{"uv":[5,3,11,9],"texture":"#hook"},"up":{"uv":[5,3,11,9],"texture":"#hook"},"north":{"uv":[5,3,11,4],"texture":"#hook"},"south":{"uv":[5,8,11,9],"texture":"#hook"},"west":{"uv":[5,8,11,9],"texture":"#hook"},"east":{"uv":[5,3,11,4],"texture":"#hook"}}},{"from":[7.4,4.2,9.1],"to":[8.6,5,9.1],"faces":{"north":{"uv":[7,8,9,9],"texture":"#hook"}}},{"from":[7.4,4.2,7.9],"to":[8.6,5,7.9],"faces":{"south":{"uv":[7,3,9,4],"texture":"#hook"}}},{"from":[7.4,4.2,7.9],"to":[7.4,5,9.1],"faces":{"east":{"uv":[7,8,9,9],"texture":"#hook"}}},{"from":[8.6,4.2,7.9],"to":[8.6,5,9.1],"faces":{"west":{"uv":[7,3,9,4],"texture":"#hook"}}},{"from":[7.4,5.2,10],"to":[8.8,6.8,14],"rotation":{"origin":[8,6,14],"axis":"x","angle":-22.5},"faces":{"down":{"uv":[7,9,9,14],"texture":"#wood"},"up":{"uv":[7,2,9,7],"texture":"#wood"},"north":{"uv":[7,9,9,11],"texture":"#wood"},"south":{"uv":[7,9,9,11],"texture":"#wood"},"west":{"uv":[2,9,7,11],"texture":"#wood"},"east":{"uv":[9,9,14,11],"texture":"#wood"}}},{"from":[6,1,14],"to":[10,9,16],"faces":{"down":{"uv":[6,14,10,16],"texture":"#wood"},"up":{"uv":[6,0,10,2],"texture":"#wood"},"north":{"uv":[6,7,10,15],"texture":"#wood"},"south":{"uv":[6,7,10,15],"texture":"#wood","cullface":"south"},"west":{"uv":[0,7,2,15],"texture":"#wood"},"east":{"uv":[14,7,16,15],"texture":"#wood"}}}]},"tripwire_n":{"ambientocclusion":false,"textures":{"particle":"block/tripwire","texture":"block/tripwire"},"elements":[{"from":[7.75,1.5,0],"to":[8.25,1.5,4],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,4],"to":[8.25,1.5,8],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,8],"to":[8.25,1.5,12],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}}]},"tripwire_ne":{"ambientocclusion":false,"textures":{"particle":"block/tripwire","texture":"block/tripwire"},"elements":[{"from":[7.75,1.5,0],"to":[8.25,1.5,4],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,4],"to":[8.25,1.5,8],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[8,1.5,7.75],"to":[12,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,2,16,0],"texture":"#texture"},"up":{"uv":[0,0,16,2],"texture":"#texture"}}},{"from":[12,1.5,7.75],"to":[16,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,2,16,0],"texture":"#texture"},"up":{"uv":[0,0,16,2],"texture":"#texture"}}}]},"tripwire_ns":{"ambientocclusion":false,"textures":{"particle":"block/tripwire","texture":"block/tripwire"},"elements":[{"from":[7.75,1.5,0],"to":[8.25,1.5,4],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,4],"to":[8.25,1.5,8],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,8],"to":[8.25,1.5,12],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,12],"to":[8.25,1.5,16],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}}]},"tripwire_nse":{"ambientocclusion":false,"textures":{"particle":"block/tripwire","texture":"block/tripwire"},"elements":[{"from":[7.75,1.5,0],"to":[8.25,1.5,4],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,4],"to":[8.25,1.5,8],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,8],"to":[8.25,1.5,12],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,12],"to":[8.25,1.5,16],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[8,1.5,7.75],"to":[12,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,2,16,0],"texture":"#texture"},"up":{"uv":[0,0,16,2],"texture":"#texture"}}},{"from":[12,1.5,7.75],"to":[16,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,2,16,0],"texture":"#texture"},"up":{"uv":[0,0,16,2],"texture":"#texture"}}}]},"tripwire_nsew":{"ambientocclusion":false,"textures":{"particle":"block/tripwire","texture":"block/tripwire"},"elements":[{"from":[7.75,1.5,0],"to":[8.25,1.5,4],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,4],"to":[8.25,1.5,8],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,8],"to":[8.25,1.5,12],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[7.75,1.5,12],"to":[8.25,1.5,16],"shade":false,"faces":{"down":{"uv":[16,0,0,2],"texture":"#texture","rotation":90},"up":{"uv":[0,0,16,2],"texture":"#texture","rotation":90}}},{"from":[0,1.5,7.75],"to":[4,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,2,16,0],"texture":"#texture"},"up":{"uv":[0,0,16,2],"texture":"#texture"}}},{"from":[4,1.5,7.75],"to":[8,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,2,16,0],"texture":"#texture"},"up":{"uv":[0,0,16,2],"texture":"#texture"}}},{"from":[8,1.5,7.75],"to":[12,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,2,16,0],"texture":"#texture"},"up":{"uv":[0,0,16,2],"texture":"#texture"}}},{"from":[12,1.5,7.75],"to":[16,1.5,8.25],"shade":false,"faces":{"down":{"uv":[0,2,16,0],"texture":"#texture"},"up":{"uv":[0,0,16,2],"texture":"#texture"}}}]},"tube_coral":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/tube_coral"}},"tube_coral_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/tube_coral_block"}},"tube_coral_fan":{"parent":"minecraft:block/coral_fan","textures":{"fan":"minecraft:block/tube_coral_fan"}},"tube_coral_wall_fan":{"parent":"minecraft:block/coral_wall_fan","textures":{"fan":"minecraft:block/tube_coral_fan"}},"tuff":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/tuff"}},"tuff_brick_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/tuff_bricks","side":"minecraft:block/tuff_bricks","top":"minecraft:block/tuff_bricks"}},"tuff_brick_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/tuff_bricks","side":"minecraft:block/tuff_bricks","top":"minecraft:block/tuff_bricks"}},"tuff_brick_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/tuff_bricks","side":"minecraft:block/tuff_bricks","top":"minecraft:block/tuff_bricks"}},"tuff_brick_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/tuff_bricks","side":"minecraft:block/tuff_bricks","top":"minecraft:block/tuff_bricks"}},"tuff_brick_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/tuff_bricks","side":"minecraft:block/tuff_bricks","top":"minecraft:block/tuff_bricks"}},"tuff_brick_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/tuff_bricks"}},"tuff_brick_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/tuff_bricks"}},"tuff_brick_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/tuff_bricks"}},"tuff_brick_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/tuff_bricks"}},"tuff_bricks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/tuff_bricks"}},"tuff_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/tuff","side":"minecraft:block/tuff","top":"minecraft:block/tuff"}},"tuff_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/tuff","side":"minecraft:block/tuff","top":"minecraft:block/tuff"}},"tuff_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/tuff","side":"minecraft:block/tuff","top":"minecraft:block/tuff"}},"tuff_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/tuff","side":"minecraft:block/tuff","top":"minecraft:block/tuff"}},"tuff_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/tuff","side":"minecraft:block/tuff","top":"minecraft:block/tuff"}},"tuff_wall_inventory":{"parent":"minecraft:block/wall_inventory","textures":{"wall":"minecraft:block/tuff"}},"tuff_wall_post":{"parent":"minecraft:block/template_wall_post","textures":{"wall":"minecraft:block/tuff"}},"tuff_wall_side":{"parent":"minecraft:block/template_wall_side","textures":{"wall":"minecraft:block/tuff"}},"tuff_wall_side_tall":{"parent":"minecraft:block/template_wall_side_tall","textures":{"wall":"minecraft:block/tuff"}},"turtle_egg":{"parent":"minecraft:block/template_turtle_egg","textures":{"all":"minecraft:block/turtle_egg"}},"twisting_vines":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/twisting_vines"}},"twisting_vines_plant":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/twisting_vines_plant"}},"two_dead_sea_pickles":{"parent":"block/block","textures":{"particle":"block/sea_pickle","all":"block/sea_pickle"},"elements":[{"from":[3,0,3],"to":[7,6,7],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,11],"texture":"#all"},"south":{"uv":[0,5,4,11],"texture":"#all"},"west":{"uv":[8,5,12,11],"texture":"#all"},"east":{"uv":[12,5,16,11],"texture":"#all"}}},{"from":[3,5.95,3],"to":[7,5.95,7],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[8,0,8],"to":[12,4,12],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,9],"texture":"#all"},"south":{"uv":[0,5,4,9],"texture":"#all"},"west":{"uv":[8,5,12,9],"texture":"#all"},"east":{"uv":[12,5,16,9],"texture":"#all"}}},{"from":[8,3.95,8],"to":[12,3.95,12],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}}]},"two_sea_pickles":{"parent":"block/block","textures":{"particle":"block/sea_pickle","all":"block/sea_pickle"},"elements":[{"from":[3,0,3],"to":[7,6,7],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,11],"texture":"#all"},"south":{"uv":[0,5,4,11],"texture":"#all"},"west":{"uv":[8,5,12,11],"texture":"#all"},"east":{"uv":[12,5,16,11],"texture":"#all"}}},{"from":[3,5.95,3],"to":[7,5.95,7],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[8,0,8],"to":[12,4,12],"faces":{"down":{"uv":[8,1,12,5],"texture":"#all","cullface":"down"},"up":{"uv":[4,1,8,5],"texture":"#all"},"north":{"uv":[4,5,8,9],"texture":"#all"},"south":{"uv":[0,5,4,9],"texture":"#all"},"west":{"uv":[8,5,12,9],"texture":"#all"},"east":{"uv":[12,5,16,9],"texture":"#all"}}},{"from":[8,3.95,8],"to":[12,3.95,12],"faces":{"up":{"uv":[8,1,12,5],"texture":"#all"}}},{"from":[4.5,5.2,5],"to":[5.5,8.7,5],"rotation":{"origin":[5,5.6,5],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[1,0,3,5],"texture":"#all"},"south":{"uv":[3,0,1,5],"texture":"#all"}}},{"from":[5,5.2,4.5],"to":[5,8.7,5.5],"rotation":{"origin":[5,5.6,5],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[13,0,15,5],"texture":"#all"},"east":{"uv":[15,0,13,5],"texture":"#all"}}},{"from":[9.5,3.2,10],"to":[10.5,6.7,10],"rotation":{"origin":[10,8,10],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"north":{"uv":[1,0,3,5],"texture":"#all"},"south":{"uv":[3,0,1,5],"texture":"#all"}}},{"from":[10,3.2,9.5],"to":[10,6.7,10.5],"rotation":{"origin":[10,8,10],"axis":"y","angle":45,"rescale":true},"shade":false,"faces":{"west":{"uv":[13,0,15,5],"texture":"#all"},"east":{"uv":[15,0,13,5],"texture":"#all"}}}]},"two_slightly_cracked_turtle_eggs":{"parent":"minecraft:block/template_two_turtle_eggs","textures":{"all":"minecraft:block/turtle_egg_slightly_cracked"}},"two_turtle_eggs":{"parent":"minecraft:block/template_two_turtle_eggs","textures":{"all":"minecraft:block/turtle_egg"}},"two_very_cracked_turtle_eggs":{"parent":"minecraft:block/template_two_turtle_eggs","textures":{"all":"minecraft:block/turtle_egg_very_cracked"}},"vault":{"parent":"minecraft:block/template_vault","textures":{"bottom":"minecraft:block/vault_bottom","front":"minecraft:block/vault_front_off","side":"minecraft:block/vault_side_off","top":"minecraft:block/vault_top"}},"vault_active":{"parent":"minecraft:block/template_vault","textures":{"bottom":"minecraft:block/vault_bottom","front":"minecraft:block/vault_front_on","side":"minecraft:block/vault_side_on","top":"minecraft:block/vault_top"}},"vault_active_ominous":{"parent":"minecraft:block/template_vault","textures":{"bottom":"minecraft:block/vault_bottom_ominous","front":"minecraft:block/vault_front_on_ominous","side":"minecraft:block/vault_side_on_ominous","top":"minecraft:block/vault_top_ominous"}},"vault_ejecting_reward":{"parent":"minecraft:block/template_vault","textures":{"bottom":"minecraft:block/vault_bottom","front":"minecraft:block/vault_front_ejecting","side":"minecraft:block/vault_side_on","top":"minecraft:block/vault_top_ejecting"}},"vault_ejecting_reward_ominous":{"parent":"minecraft:block/template_vault","textures":{"bottom":"minecraft:block/vault_bottom_ominous","front":"minecraft:block/vault_front_ejecting_ominous","side":"minecraft:block/vault_side_on_ominous","top":"minecraft:block/vault_top_ejecting_ominous"}},"vault_ominous":{"parent":"minecraft:block/template_vault","textures":{"bottom":"minecraft:block/vault_bottom_ominous","front":"minecraft:block/vault_front_off_ominous","side":"minecraft:block/vault_side_off_ominous","top":"minecraft:block/vault_top_ominous"}},"vault_unlocking":{"parent":"minecraft:block/template_vault","textures":{"bottom":"minecraft:block/vault_bottom","front":"minecraft:block/vault_front_ejecting","side":"minecraft:block/vault_side_on","top":"minecraft:block/vault_top"}},"vault_unlocking_ominous":{"parent":"minecraft:block/template_vault","textures":{"bottom":"minecraft:block/vault_bottom_ominous","front":"minecraft:block/vault_front_ejecting_ominous","side":"minecraft:block/vault_side_on_ominous","top":"minecraft:block/vault_top_ominous"}},"verdant_froglight":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/verdant_froglight_top","side":"minecraft:block/verdant_froglight_side"}},"verdant_froglight_horizontal":{"parent":"minecraft:block/cube_column_horizontal","textures":{"end":"minecraft:block/verdant_froglight_top","side":"minecraft:block/verdant_froglight_side"}},"very_cracked_turtle_egg":{"parent":"minecraft:block/template_turtle_egg","textures":{"all":"minecraft:block/turtle_egg_very_cracked"}},"vine":{"ambientocclusion":false,"textures":{"particle":"block/vine","vine":"block/vine"},"elements":[{"from":[0,0,0.8],"to":[16,16,0.8],"shade":false,"faces":{"north":{"uv":[16,0,0,16],"texture":"#vine","tintindex":0},"south":{"uv":[0,0,16,16],"texture":"#vine","tintindex":0}}}]},"wall_inventory":{"parent":"block/block","display":{"gui":{"rotation":[30,135,0],"translation":[0,0,0],"scale":[0.625,0.625,0.625]},"fixed":{"rotation":[0,90,0],"translation":[0,0,0],"scale":[0.5,0.5,0.5]},"on_shelf":{"rotation":[0,90,0],"translation":[0,0,0],"scale":[1,1,1]}},"textures":{"particle":"#wall"},"elements":[{"from":[4,0,4],"to":[12,16,12],"faces":{"down":{"uv":[4,4,12,12],"texture":"#wall","cullface":"down"},"up":{"uv":[4,4,12,12],"texture":"#wall"},"north":{"uv":[4,0,12,16],"texture":"#wall"},"south":{"uv":[4,0,12,16],"texture":"#wall"},"west":{"uv":[4,0,12,16],"texture":"#wall"},"east":{"uv":[4,0,12,16],"texture":"#wall"}},"__comment":"Center post"},{"from":[5,0,0],"to":[11,13,16],"faces":{"down":{"uv":[5,0,11,16],"texture":"#wall","cullface":"down"},"up":{"uv":[5,0,11,16],"texture":"#wall"},"north":{"uv":[5,3,11,16],"texture":"#wall","cullface":"north"},"south":{"uv":[5,3,11,16],"texture":"#wall","cullface":"south"},"west":{"uv":[0,3,16,16],"texture":"#wall"},"east":{"uv":[0,3,16,16],"texture":"#wall"}},"__comment":"Full wall"}]},"wall_torch":{"parent":"minecraft:block/template_torch_wall","textures":{"torch":"minecraft:block/torch"}},"warped_button":{"parent":"minecraft:block/button","textures":{"texture":"minecraft:block/warped_planks"}},"warped_button_inventory":{"parent":"minecraft:block/button_inventory","textures":{"texture":"minecraft:block/warped_planks"}},"warped_button_pressed":{"parent":"minecraft:block/button_pressed","textures":{"texture":"minecraft:block/warped_planks"}},"warped_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/warped_door_bottom","top":"minecraft:block/warped_door_top"}},"warped_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/warped_door_bottom","top":"minecraft:block/warped_door_top"}},"warped_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/warped_door_bottom","top":"minecraft:block/warped_door_top"}},"warped_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/warped_door_bottom","top":"minecraft:block/warped_door_top"}},"warped_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/warped_door_bottom","top":"minecraft:block/warped_door_top"}},"warped_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/warped_door_bottom","top":"minecraft:block/warped_door_top"}},"warped_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/warped_door_bottom","top":"minecraft:block/warped_door_top"}},"warped_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/warped_door_bottom","top":"minecraft:block/warped_door_top"}},"warped_fence_gate":{"parent":"minecraft:block/template_fence_gate","textures":{"texture":"minecraft:block/warped_planks"}},"warped_fence_gate_open":{"parent":"minecraft:block/template_fence_gate_open","textures":{"texture":"minecraft:block/warped_planks"}},"warped_fence_gate_wall":{"parent":"minecraft:block/template_fence_gate_wall","textures":{"texture":"minecraft:block/warped_planks"}},"warped_fence_gate_wall_open":{"parent":"minecraft:block/template_fence_gate_wall_open","textures":{"texture":"minecraft:block/warped_planks"}},"warped_fence_inventory":{"parent":"minecraft:block/fence_inventory","textures":{"texture":"minecraft:block/warped_planks"}},"warped_fence_post":{"parent":"minecraft:block/fence_post","textures":{"texture":"minecraft:block/warped_planks"}},"warped_fence_side":{"parent":"minecraft:block/fence_side","textures":{"texture":"minecraft:block/warped_planks"}},"warped_fungus":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/warped_fungus"}},"warped_hanging_sign":{"textures":{"particle":"minecraft:block/stripped_warped_stem"}},"warped_hyphae":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/warped_stem","side":"minecraft:block/warped_stem"}},"warped_nylium":{"parent":"minecraft:block/cube_bottom_top","textures":{"bottom":"minecraft:block/netherrack","side":"minecraft:block/warped_nylium_side","top":"minecraft:block/warped_nylium"}},"warped_planks":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/warped_planks"}},"warped_pressure_plate":{"parent":"minecraft:block/pressure_plate_up","textures":{"texture":"minecraft:block/warped_planks"}},"warped_pressure_plate_down":{"parent":"minecraft:block/pressure_plate_down","textures":{"texture":"minecraft:block/warped_planks"}},"warped_roots":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/warped_roots"}},"warped_shelf":{"parent":"minecraft:block/template_shelf_body","textures":{"all":"minecraft:block/warped_shelf","particle":"minecraft:block/stripped_warped_stem"}},"warped_shelf_center":{"parent":"minecraft:block/template_shelf_center","textures":{"all":"minecraft:block/warped_shelf","particle":"minecraft:block/stripped_warped_stem"}},"warped_shelf_inventory":{"parent":"minecraft:block/template_shelf_inventory","textures":{"all":"minecraft:block/warped_shelf","particle":"minecraft:block/stripped_warped_stem"}},"warped_shelf_left":{"parent":"minecraft:block/template_shelf_left","textures":{"all":"minecraft:block/warped_shelf","particle":"minecraft:block/stripped_warped_stem"}},"warped_shelf_right":{"parent":"minecraft:block/template_shelf_right","textures":{"all":"minecraft:block/warped_shelf","particle":"minecraft:block/stripped_warped_stem"}},"warped_shelf_unconnected":{"parent":"minecraft:block/template_shelf_unconnected","textures":{"all":"minecraft:block/warped_shelf","particle":"minecraft:block/stripped_warped_stem"}},"warped_shelf_unpowered":{"parent":"minecraft:block/template_shelf_unpowered","textures":{"all":"minecraft:block/warped_shelf","particle":"minecraft:block/stripped_warped_stem"}},"warped_sign":{"textures":{"particle":"minecraft:block/warped_planks"}},"warped_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/warped_planks","side":"minecraft:block/warped_planks","top":"minecraft:block/warped_planks"}},"warped_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/warped_planks","side":"minecraft:block/warped_planks","top":"minecraft:block/warped_planks"}},"warped_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/warped_planks","side":"minecraft:block/warped_planks","top":"minecraft:block/warped_planks"}},"warped_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/warped_planks","side":"minecraft:block/warped_planks","top":"minecraft:block/warped_planks"}},"warped_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/warped_planks","side":"minecraft:block/warped_planks","top":"minecraft:block/warped_planks"}},"warped_stem":{"parent":"minecraft:block/cube_column","textures":{"end":"minecraft:block/warped_stem_top","side":"minecraft:block/warped_stem"}},"warped_trapdoor_bottom":{"parent":"minecraft:block/template_orientable_trapdoor_bottom","textures":{"texture":"minecraft:block/warped_trapdoor"}},"warped_trapdoor_open":{"parent":"minecraft:block/template_orientable_trapdoor_open","textures":{"texture":"minecraft:block/warped_trapdoor"}},"warped_trapdoor_top":{"parent":"minecraft:block/template_orientable_trapdoor_top","textures":{"texture":"minecraft:block/warped_trapdoor"}},"warped_wart_block":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/warped_wart_block"}},"water":{"textures":{"particle":"block/water_still"}},"water_cauldron_full":{"parent":"minecraft:block/template_cauldron_full","textures":{"bottom":"minecraft:block/cauldron_bottom","content":"minecraft:block/water_still","inside":"minecraft:block/cauldron_inner","particle":"minecraft:block/cauldron_side","side":"minecraft:block/cauldron_side","top":"minecraft:block/cauldron_top"}},"water_cauldron_level1":{"parent":"minecraft:block/template_cauldron_level1","textures":{"bottom":"minecraft:block/cauldron_bottom","content":"minecraft:block/water_still","inside":"minecraft:block/cauldron_inner","particle":"minecraft:block/cauldron_side","side":"minecraft:block/cauldron_side","top":"minecraft:block/cauldron_top"}},"water_cauldron_level2":{"parent":"minecraft:block/template_cauldron_level2","textures":{"bottom":"minecraft:block/cauldron_bottom","content":"minecraft:block/water_still","inside":"minecraft:block/cauldron_inner","particle":"minecraft:block/cauldron_side","side":"minecraft:block/cauldron_side","top":"minecraft:block/cauldron_top"}},"weathered_chiseled_copper":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/weathered_chiseled_copper"}},"weathered_copper":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/weathered_copper"}},"weathered_copper_bars_cap":{"parent":"minecraft:block/template_bars_cap","textures":{"bars":"minecraft:block/weathered_copper_bars","edge":"minecraft:block/weathered_copper_bars"}},"weathered_copper_bars_cap_alt":{"parent":"minecraft:block/template_bars_cap_alt","textures":{"bars":"minecraft:block/weathered_copper_bars","edge":"minecraft:block/weathered_copper_bars"}},"weathered_copper_bars_post":{"parent":"minecraft:block/template_bars_post","textures":{"bars":"minecraft:block/weathered_copper_bars","edge":"minecraft:block/weathered_copper_bars"}},"weathered_copper_bars_post_ends":{"parent":"minecraft:block/template_bars_post_ends","textures":{"bars":"minecraft:block/weathered_copper_bars","edge":"minecraft:block/weathered_copper_bars"}},"weathered_copper_bars_side":{"parent":"minecraft:block/template_bars_side","textures":{"bars":"minecraft:block/weathered_copper_bars","edge":"minecraft:block/weathered_copper_bars"}},"weathered_copper_bars_side_alt":{"parent":"minecraft:block/template_bars_side_alt","textures":{"bars":"minecraft:block/weathered_copper_bars","edge":"minecraft:block/weathered_copper_bars"}},"weathered_copper_bulb":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/weathered_copper_bulb"}},"weathered_copper_bulb_lit":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/weathered_copper_bulb_lit"}},"weathered_copper_bulb_lit_powered":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/weathered_copper_bulb_lit_powered"}},"weathered_copper_bulb_powered":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/weathered_copper_bulb_powered"}},"weathered_copper_chain":{"parent":"minecraft:block/template_chain","textures":{"texture":"minecraft:block/weathered_copper_chain"}},"weathered_copper_chest":{"textures":{"particle":"minecraft:block/weathered_copper"}},"weathered_copper_door_bottom_left":{"parent":"minecraft:block/door_bottom_left","textures":{"bottom":"minecraft:block/weathered_copper_door_bottom","top":"minecraft:block/weathered_copper_door_top"}},"weathered_copper_door_bottom_left_open":{"parent":"minecraft:block/door_bottom_left_open","textures":{"bottom":"minecraft:block/weathered_copper_door_bottom","top":"minecraft:block/weathered_copper_door_top"}},"weathered_copper_door_bottom_right":{"parent":"minecraft:block/door_bottom_right","textures":{"bottom":"minecraft:block/weathered_copper_door_bottom","top":"minecraft:block/weathered_copper_door_top"}},"weathered_copper_door_bottom_right_open":{"parent":"minecraft:block/door_bottom_right_open","textures":{"bottom":"minecraft:block/weathered_copper_door_bottom","top":"minecraft:block/weathered_copper_door_top"}},"weathered_copper_door_top_left":{"parent":"minecraft:block/door_top_left","textures":{"bottom":"minecraft:block/weathered_copper_door_bottom","top":"minecraft:block/weathered_copper_door_top"}},"weathered_copper_door_top_left_open":{"parent":"minecraft:block/door_top_left_open","textures":{"bottom":"minecraft:block/weathered_copper_door_bottom","top":"minecraft:block/weathered_copper_door_top"}},"weathered_copper_door_top_right":{"parent":"minecraft:block/door_top_right","textures":{"bottom":"minecraft:block/weathered_copper_door_bottom","top":"minecraft:block/weathered_copper_door_top"}},"weathered_copper_door_top_right_open":{"parent":"minecraft:block/door_top_right_open","textures":{"bottom":"minecraft:block/weathered_copper_door_bottom","top":"minecraft:block/weathered_copper_door_top"}},"weathered_copper_golem_statue":{"textures":{"particle":"minecraft:block/weathered_copper"}},"weathered_copper_grate":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/weathered_copper_grate"}},"weathered_copper_lantern":{"parent":"minecraft:block/template_lantern","textures":{"lantern":"minecraft:block/weathered_copper_lantern"}},"weathered_copper_lantern_hanging":{"parent":"minecraft:block/template_hanging_lantern","textures":{"lantern":"minecraft:block/weathered_copper_lantern"}},"weathered_copper_trapdoor_bottom":{"parent":"minecraft:block/template_trapdoor_bottom","textures":{"texture":"minecraft:block/weathered_copper_trapdoor"}},"weathered_copper_trapdoor_open":{"parent":"minecraft:block/template_trapdoor_open","textures":{"texture":"minecraft:block/weathered_copper_trapdoor"}},"weathered_copper_trapdoor_top":{"parent":"minecraft:block/template_trapdoor_top","textures":{"texture":"minecraft:block/weathered_copper_trapdoor"}},"weathered_cut_copper":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/weathered_cut_copper"}},"weathered_cut_copper_slab":{"parent":"minecraft:block/slab","textures":{"bottom":"minecraft:block/weathered_cut_copper","side":"minecraft:block/weathered_cut_copper","top":"minecraft:block/weathered_cut_copper"}},"weathered_cut_copper_slab_top":{"parent":"minecraft:block/slab_top","textures":{"bottom":"minecraft:block/weathered_cut_copper","side":"minecraft:block/weathered_cut_copper","top":"minecraft:block/weathered_cut_copper"}},"weathered_cut_copper_stairs":{"parent":"minecraft:block/stairs","textures":{"bottom":"minecraft:block/weathered_cut_copper","side":"minecraft:block/weathered_cut_copper","top":"minecraft:block/weathered_cut_copper"}},"weathered_cut_copper_stairs_inner":{"parent":"minecraft:block/inner_stairs","textures":{"bottom":"minecraft:block/weathered_cut_copper","side":"minecraft:block/weathered_cut_copper","top":"minecraft:block/weathered_cut_copper"}},"weathered_cut_copper_stairs_outer":{"parent":"minecraft:block/outer_stairs","textures":{"bottom":"minecraft:block/weathered_cut_copper","side":"minecraft:block/weathered_cut_copper","top":"minecraft:block/weathered_cut_copper"}},"weathered_lightning_rod":{"parent":"minecraft:block/template_lightning_rod","textures":{"texture":"minecraft:block/weathered_lightning_rod"}},"weeping_vines":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/weeping_vines"}},"weeping_vines_plant":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/weeping_vines_plant"}},"wet_sponge":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/wet_sponge"}},"wheat_stage0":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/wheat_stage0"}},"wheat_stage1":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/wheat_stage1"}},"wheat_stage2":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/wheat_stage2"}},"wheat_stage3":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/wheat_stage3"}},"wheat_stage4":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/wheat_stage4"}},"wheat_stage5":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/wheat_stage5"}},"wheat_stage6":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/wheat_stage6"}},"wheat_stage7":{"parent":"minecraft:block/crop","textures":{"crop":"minecraft:block/wheat_stage7"}},"white_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/white_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"white_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/white_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"white_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/white_candle","particle":"minecraft:block/white_candle"}},"white_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/white_candle_lit","particle":"minecraft:block/white_candle_lit"}},"white_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/white_candle","particle":"minecraft:block/white_candle"}},"white_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/white_candle_lit","particle":"minecraft:block/white_candle_lit"}},"white_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/white_candle","particle":"minecraft:block/white_candle"}},"white_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/white_candle_lit","particle":"minecraft:block/white_candle_lit"}},"white_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/white_candle","particle":"minecraft:block/white_candle"}},"white_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/white_candle_lit","particle":"minecraft:block/white_candle_lit"}},"white_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/white_wool"}},"white_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/white_concrete"}},"white_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/white_concrete_powder"}},"white_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/white_glazed_terracotta"}},"white_shulker_box":{"textures":{"particle":"minecraft:block/white_shulker_box"}},"white_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/white_stained_glass"}},"white_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/white_stained_glass"}},"white_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/white_stained_glass"}},"white_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/white_stained_glass_pane_top","pane":"minecraft:block/white_stained_glass"}},"white_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/white_stained_glass_pane_top","pane":"minecraft:block/white_stained_glass"}},"white_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/white_stained_glass_pane_top","pane":"minecraft:block/white_stained_glass"}},"white_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/white_terracotta"}},"white_tulip":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/white_tulip"}},"white_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/white_wool"}},"wildflowers_1":{"parent":"minecraft:block/flowerbed_1","textures":{"flowerbed":"minecraft:block/wildflowers","stem":"minecraft:block/wildflowers_stem"}},"wildflowers_2":{"parent":"minecraft:block/flowerbed_2","textures":{"flowerbed":"minecraft:block/wildflowers","stem":"minecraft:block/wildflowers_stem"}},"wildflowers_3":{"parent":"minecraft:block/flowerbed_3","textures":{"flowerbed":"minecraft:block/wildflowers","stem":"minecraft:block/wildflowers_stem"}},"wildflowers_4":{"parent":"minecraft:block/flowerbed_4","textures":{"flowerbed":"minecraft:block/wildflowers","stem":"minecraft:block/wildflowers_stem"}},"wither_rose":{"parent":"minecraft:block/cross","textures":{"cross":"minecraft:block/wither_rose"}},"yellow_candle_cake":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/yellow_candle","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"yellow_candle_cake_lit":{"parent":"minecraft:block/template_cake_with_candle","textures":{"bottom":"minecraft:block/cake_bottom","candle":"minecraft:block/yellow_candle_lit","particle":"minecraft:block/cake_side","side":"minecraft:block/cake_side","top":"minecraft:block/cake_top"}},"yellow_candle_four_candles":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/yellow_candle","particle":"minecraft:block/yellow_candle"}},"yellow_candle_four_candles_lit":{"parent":"minecraft:block/template_four_candles","textures":{"all":"minecraft:block/yellow_candle_lit","particle":"minecraft:block/yellow_candle_lit"}},"yellow_candle_one_candle":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/yellow_candle","particle":"minecraft:block/yellow_candle"}},"yellow_candle_one_candle_lit":{"parent":"minecraft:block/template_candle","textures":{"all":"minecraft:block/yellow_candle_lit","particle":"minecraft:block/yellow_candle_lit"}},"yellow_candle_three_candles":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/yellow_candle","particle":"minecraft:block/yellow_candle"}},"yellow_candle_three_candles_lit":{"parent":"minecraft:block/template_three_candles","textures":{"all":"minecraft:block/yellow_candle_lit","particle":"minecraft:block/yellow_candle_lit"}},"yellow_candle_two_candles":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/yellow_candle","particle":"minecraft:block/yellow_candle"}},"yellow_candle_two_candles_lit":{"parent":"minecraft:block/template_two_candles","textures":{"all":"minecraft:block/yellow_candle_lit","particle":"minecraft:block/yellow_candle_lit"}},"yellow_carpet":{"parent":"minecraft:block/carpet","textures":{"wool":"minecraft:block/yellow_wool"}},"yellow_concrete":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/yellow_concrete"}},"yellow_concrete_powder":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/yellow_concrete_powder"}},"yellow_glazed_terracotta":{"parent":"minecraft:block/template_glazed_terracotta","textures":{"pattern":"minecraft:block/yellow_glazed_terracotta"}},"yellow_shulker_box":{"textures":{"particle":"minecraft:block/yellow_shulker_box"}},"yellow_stained_glass":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/yellow_stained_glass"}},"yellow_stained_glass_pane_noside":{"parent":"minecraft:block/template_glass_pane_noside","textures":{"pane":"minecraft:block/yellow_stained_glass"}},"yellow_stained_glass_pane_noside_alt":{"parent":"minecraft:block/template_glass_pane_noside_alt","textures":{"pane":"minecraft:block/yellow_stained_glass"}},"yellow_stained_glass_pane_post":{"parent":"minecraft:block/template_glass_pane_post","textures":{"edge":"minecraft:block/yellow_stained_glass_pane_top","pane":"minecraft:block/yellow_stained_glass"}},"yellow_stained_glass_pane_side":{"parent":"minecraft:block/template_glass_pane_side","textures":{"edge":"minecraft:block/yellow_stained_glass_pane_top","pane":"minecraft:block/yellow_stained_glass"}},"yellow_stained_glass_pane_side_alt":{"parent":"minecraft:block/template_glass_pane_side_alt","textures":{"edge":"minecraft:block/yellow_stained_glass_pane_top","pane":"minecraft:block/yellow_stained_glass"}},"yellow_terracotta":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/yellow_terracotta"}},"yellow_wool":{"parent":"minecraft:block/cube_all","textures":{"all":"minecraft:block/yellow_wool"}}} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/models/block/_list.json b/common-files/src/main/resources/internal/models/block/_list.json deleted file mode 100644 index 4fe5e411e..000000000 --- a/common-files/src/main/resources/internal/models/block/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["acacia_button.json","acacia_button_inventory.json","acacia_button_pressed.json","acacia_door_bottom_left.json","acacia_door_bottom_left_open.json","acacia_door_bottom_right.json","acacia_door_bottom_right_open.json","acacia_door_top_left.json","acacia_door_top_left_open.json","acacia_door_top_right.json","acacia_door_top_right_open.json","acacia_fence_gate.json","acacia_fence_gate_open.json","acacia_fence_gate_wall.json","acacia_fence_gate_wall_open.json","acacia_fence_inventory.json","acacia_fence_post.json","acacia_fence_side.json","acacia_hanging_sign.json","acacia_leaves.json","acacia_log.json","acacia_log_horizontal.json","acacia_planks.json","acacia_pressure_plate.json","acacia_pressure_plate_down.json","acacia_sapling.json","acacia_sign.json","acacia_slab.json","acacia_slab_top.json","acacia_stairs.json","acacia_stairs_inner.json","acacia_stairs_outer.json","acacia_trapdoor_bottom.json","acacia_trapdoor_open.json","acacia_trapdoor_top.json","acacia_wood.json","activator_rail.json","activator_rail_on.json","activator_rail_on_raised_ne.json","activator_rail_on_raised_sw.json","activator_rail_raised_ne.json","activator_rail_raised_sw.json","air.json","allium.json","amethyst_block.json","amethyst_cluster.json","ancient_debris.json","andesite.json","andesite_slab.json","andesite_slab_top.json","andesite_stairs.json","andesite_stairs_inner.json","andesite_stairs_outer.json","andesite_wall_inventory.json","andesite_wall_post.json","andesite_wall_side.json","andesite_wall_side_tall.json","anvil.json","attached_melon_stem.json","attached_pumpkin_stem.json","azalea.json","azalea_leaves.json","azure_bluet.json","bamboo1_age0.json","bamboo1_age1.json","bamboo2_age0.json","bamboo2_age1.json","bamboo3_age0.json","bamboo3_age1.json","bamboo4_age0.json","bamboo4_age1.json","bamboo_block.json","bamboo_block_x.json","bamboo_block_y.json","bamboo_block_z.json","bamboo_button.json","bamboo_button_inventory.json","bamboo_button_pressed.json","bamboo_door_bottom_left.json","bamboo_door_bottom_left_open.json","bamboo_door_bottom_right.json","bamboo_door_bottom_right_open.json","bamboo_door_top_left.json","bamboo_door_top_left_open.json","bamboo_door_top_right.json","bamboo_door_top_right_open.json","bamboo_fence_gate.json","bamboo_fence_gate_open.json","bamboo_fence_gate_wall.json","bamboo_fence_gate_wall_open.json","bamboo_fence_inventory.json","bamboo_fence_post.json","bamboo_fence_side_east.json","bamboo_fence_side_north.json","bamboo_fence_side_south.json","bamboo_fence_side_west.json","bamboo_hanging_sign.json","bamboo_large_leaves.json","bamboo_mosaic.json","bamboo_mosaic_slab.json","bamboo_mosaic_slab_top.json","bamboo_mosaic_stairs.json","bamboo_mosaic_stairs_inner.json","bamboo_mosaic_stairs_outer.json","bamboo_planks.json","bamboo_pressure_plate.json","bamboo_pressure_plate_down.json","bamboo_sapling.json","bamboo_sign.json","bamboo_slab.json","bamboo_slab_top.json","bamboo_small_leaves.json","bamboo_stairs.json","bamboo_stairs_inner.json","bamboo_stairs_outer.json","bamboo_trapdoor_bottom.json","bamboo_trapdoor_open.json","bamboo_trapdoor_top.json","banner.json","barrel.json","barrel_open.json","barrier.json","basalt.json","beacon.json","bed.json","bedrock.json","bedrock_mirrored.json","bee_nest_empty.json","bee_nest_honey.json","beehive_empty.json","beehive_honey.json","beetroots_stage0.json","beetroots_stage1.json","beetroots_stage2.json","beetroots_stage3.json","bell_between_walls.json","bell_ceiling.json","bell_floor.json","bell_wall.json","big_dripleaf.json","big_dripleaf_full_tilt.json","big_dripleaf_partial_tilt.json","big_dripleaf_stem.json","birch_button.json","birch_button_inventory.json","birch_button_pressed.json","birch_door_bottom_left.json","birch_door_bottom_left_open.json","birch_door_bottom_right.json","birch_door_bottom_right_open.json","birch_door_top_left.json","birch_door_top_left_open.json","birch_door_top_right.json","birch_door_top_right_open.json","birch_fence_gate.json","birch_fence_gate_open.json","birch_fence_gate_wall.json","birch_fence_gate_wall_open.json","birch_fence_inventory.json","birch_fence_post.json","birch_fence_side.json","birch_hanging_sign.json","birch_leaves.json","birch_log.json","birch_log_horizontal.json","birch_planks.json","birch_pressure_plate.json","birch_pressure_plate_down.json","birch_sapling.json","birch_sign.json","birch_slab.json","birch_slab_top.json","birch_stairs.json","birch_stairs_inner.json","birch_stairs_outer.json","birch_trapdoor_bottom.json","birch_trapdoor_open.json","birch_trapdoor_top.json","birch_wood.json","black_candle_cake.json","black_candle_cake_lit.json","black_candle_four_candles.json","black_candle_four_candles_lit.json","black_candle_one_candle.json","black_candle_one_candle_lit.json","black_candle_three_candles.json","black_candle_three_candles_lit.json","black_candle_two_candles.json","black_candle_two_candles_lit.json","black_carpet.json","black_concrete.json","black_concrete_powder.json","black_glazed_terracotta.json","black_shulker_box.json","black_stained_glass.json","black_stained_glass_pane_noside.json","black_stained_glass_pane_noside_alt.json","black_stained_glass_pane_post.json","black_stained_glass_pane_side.json","black_stained_glass_pane_side_alt.json","black_terracotta.json","black_wool.json","blackstone.json","blackstone_slab.json","blackstone_slab_top.json","blackstone_stairs.json","blackstone_stairs_inner.json","blackstone_stairs_outer.json","blackstone_wall_inventory.json","blackstone_wall_post.json","blackstone_wall_side.json","blackstone_wall_side_tall.json","blast_furnace.json","blast_furnace_on.json","block.json","blue_candle_cake.json","blue_candle_cake_lit.json","blue_candle_four_candles.json","blue_candle_four_candles_lit.json","blue_candle_one_candle.json","blue_candle_one_candle_lit.json","blue_candle_three_candles.json","blue_candle_three_candles_lit.json","blue_candle_two_candles.json","blue_candle_two_candles_lit.json","blue_carpet.json","blue_concrete.json","blue_concrete_powder.json","blue_glazed_terracotta.json","blue_ice.json","blue_orchid.json","blue_shulker_box.json","blue_stained_glass.json","blue_stained_glass_pane_noside.json","blue_stained_glass_pane_noside_alt.json","blue_stained_glass_pane_post.json","blue_stained_glass_pane_side.json","blue_stained_glass_pane_side_alt.json","blue_terracotta.json","blue_wool.json","bone_block.json","bookshelf.json","brain_coral.json","brain_coral_block.json","brain_coral_fan.json","brain_coral_wall_fan.json","brewing_stand.json","brewing_stand_bottle0.json","brewing_stand_bottle1.json","brewing_stand_bottle2.json","brewing_stand_empty0.json","brewing_stand_empty1.json","brewing_stand_empty2.json","brick_slab.json","brick_slab_top.json","brick_stairs.json","brick_stairs_inner.json","brick_stairs_outer.json","brick_wall_inventory.json","brick_wall_post.json","brick_wall_side.json","brick_wall_side_tall.json","bricks.json","brown_candle_cake.json","brown_candle_cake_lit.json","brown_candle_four_candles.json","brown_candle_four_candles_lit.json","brown_candle_one_candle.json","brown_candle_one_candle_lit.json","brown_candle_three_candles.json","brown_candle_three_candles_lit.json","brown_candle_two_candles.json","brown_candle_two_candles_lit.json","brown_carpet.json","brown_concrete.json","brown_concrete_powder.json","brown_glazed_terracotta.json","brown_mushroom.json","brown_mushroom_block.json","brown_mushroom_block_inventory.json","brown_shulker_box.json","brown_stained_glass.json","brown_stained_glass_pane_noside.json","brown_stained_glass_pane_noside_alt.json","brown_stained_glass_pane_post.json","brown_stained_glass_pane_side.json","brown_stained_glass_pane_side_alt.json","brown_terracotta.json","brown_wool.json","bubble_coral.json","bubble_coral_block.json","bubble_coral_fan.json","bubble_coral_wall_fan.json","budding_amethyst.json","bush.json","button.json","button_inventory.json","button_pressed.json","cactus.json","cactus_flower.json","cake.json","cake_slice1.json","cake_slice2.json","cake_slice3.json","cake_slice4.json","cake_slice5.json","cake_slice6.json","calcite.json","calibrated_sculk_sensor.json","calibrated_sculk_sensor_active.json","calibrated_sculk_sensor_inactive.json","campfire.json","campfire_off.json","candle_cake.json","candle_cake_lit.json","candle_four_candles.json","candle_four_candles_lit.json","candle_one_candle.json","candle_one_candle_lit.json","candle_three_candles.json","candle_three_candles_lit.json","candle_two_candles.json","candle_two_candles_lit.json","carpet.json","carrots_stage0.json","carrots_stage1.json","carrots_stage2.json","carrots_stage3.json","cartography_table.json","carved_pumpkin.json","cauldron.json","cave_vines.json","cave_vines_lit.json","cave_vines_plant.json","cave_vines_plant_lit.json","chain.json","chain_command_block.json","chain_command_block_conditional.json","cherry_button.json","cherry_button_inventory.json","cherry_button_pressed.json","cherry_door_bottom_left.json","cherry_door_bottom_left_open.json","cherry_door_bottom_right.json","cherry_door_bottom_right_open.json","cherry_door_top_left.json","cherry_door_top_left_open.json","cherry_door_top_right.json","cherry_door_top_right_open.json","cherry_fence_gate.json","cherry_fence_gate_open.json","cherry_fence_gate_wall.json","cherry_fence_gate_wall_open.json","cherry_fence_inventory.json","cherry_fence_post.json","cherry_fence_side.json","cherry_hanging_sign.json","cherry_leaves.json","cherry_log.json","cherry_log_x.json","cherry_log_y.json","cherry_log_z.json","cherry_planks.json","cherry_pressure_plate.json","cherry_pressure_plate_down.json","cherry_sapling.json","cherry_sign.json","cherry_slab.json","cherry_slab_top.json","cherry_stairs.json","cherry_stairs_inner.json","cherry_stairs_outer.json","cherry_trapdoor_bottom.json","cherry_trapdoor_open.json","cherry_trapdoor_top.json","cherry_wood.json","chest.json","chipped_anvil.json","chiseled_bookshelf.json","chiseled_bookshelf_empty_slot_bottom_left.json","chiseled_bookshelf_empty_slot_bottom_mid.json","chiseled_bookshelf_empty_slot_bottom_right.json","chiseled_bookshelf_empty_slot_top_left.json","chiseled_bookshelf_empty_slot_top_mid.json","chiseled_bookshelf_empty_slot_top_right.json","chiseled_bookshelf_inventory.json","chiseled_bookshelf_occupied_slot_bottom_left.json","chiseled_bookshelf_occupied_slot_bottom_mid.json","chiseled_bookshelf_occupied_slot_bottom_right.json","chiseled_bookshelf_occupied_slot_top_left.json","chiseled_bookshelf_occupied_slot_top_mid.json","chiseled_bookshelf_occupied_slot_top_right.json","chiseled_copper.json","chiseled_deepslate.json","chiseled_nether_bricks.json","chiseled_polished_blackstone.json","chiseled_quartz_block.json","chiseled_red_sandstone.json","chiseled_resin_bricks.json","chiseled_sandstone.json","chiseled_stone_bricks.json","chiseled_tuff.json","chiseled_tuff_bricks.json","chorus_flower.json","chorus_flower_dead.json","chorus_plant.json","chorus_plant_noside.json","chorus_plant_noside1.json","chorus_plant_noside2.json","chorus_plant_noside3.json","chorus_plant_side.json","clay.json","closed_eyeblossom.json","coal_block.json","coal_ore.json","coarse_dirt.json","cobbled_deepslate.json","cobbled_deepslate_slab.json","cobbled_deepslate_slab_top.json","cobbled_deepslate_stairs.json","cobbled_deepslate_stairs_inner.json","cobbled_deepslate_stairs_outer.json","cobbled_deepslate_wall_inventory.json","cobbled_deepslate_wall_post.json","cobbled_deepslate_wall_side.json","cobbled_deepslate_wall_side_tall.json","cobblestone.json","cobblestone_slab.json","cobblestone_slab_top.json","cobblestone_stairs.json","cobblestone_stairs_inner.json","cobblestone_stairs_outer.json","cobblestone_wall_inventory.json","cobblestone_wall_post.json","cobblestone_wall_side.json","cobblestone_wall_side_tall.json","cobweb.json","cocoa_stage0.json","cocoa_stage1.json","cocoa_stage2.json","command_block.json","command_block_conditional.json","comparator.json","comparator_on.json","comparator_on_subtract.json","comparator_subtract.json","composter.json","composter_contents1.json","composter_contents2.json","composter_contents3.json","composter_contents4.json","composter_contents5.json","composter_contents6.json","composter_contents7.json","composter_contents_ready.json","conduit.json","copper_block.json","copper_bulb.json","copper_bulb_lit.json","copper_bulb_lit_powered.json","copper_bulb_powered.json","copper_door_bottom_left.json","copper_door_bottom_left_open.json","copper_door_bottom_right.json","copper_door_bottom_right_open.json","copper_door_top_left.json","copper_door_top_left_open.json","copper_door_top_right.json","copper_door_top_right_open.json","copper_grate.json","copper_ore.json","copper_trapdoor_bottom.json","copper_trapdoor_open.json","copper_trapdoor_top.json","coral_fan.json","coral_wall_fan.json","cornflower.json","cracked_deepslate_bricks.json","cracked_deepslate_tiles.json","cracked_nether_bricks.json","cracked_polished_blackstone_bricks.json","cracked_stone_bricks.json","crafter.json","crafter_crafting.json","crafter_crafting_triggered.json","crafter_triggered.json","crafting_table.json","creaking_heart.json","creaking_heart_awake.json","creaking_heart_awake_horizontal.json","creaking_heart_dormant.json","creaking_heart_dormant_horizontal.json","creaking_heart_horizontal.json","crimson_button.json","crimson_button_inventory.json","crimson_button_pressed.json","crimson_door_bottom_left.json","crimson_door_bottom_left_open.json","crimson_door_bottom_right.json","crimson_door_bottom_right_open.json","crimson_door_top_left.json","crimson_door_top_left_open.json","crimson_door_top_right.json","crimson_door_top_right_open.json","crimson_fence_gate.json","crimson_fence_gate_open.json","crimson_fence_gate_wall.json","crimson_fence_gate_wall_open.json","crimson_fence_inventory.json","crimson_fence_post.json","crimson_fence_side.json","crimson_fungus.json","crimson_hanging_sign.json","crimson_hyphae.json","crimson_nylium.json","crimson_planks.json","crimson_pressure_plate.json","crimson_pressure_plate_down.json","crimson_roots.json","crimson_sign.json","crimson_slab.json","crimson_slab_top.json","crimson_stairs.json","crimson_stairs_inner.json","crimson_stairs_outer.json","crimson_stem.json","crimson_trapdoor_bottom.json","crimson_trapdoor_open.json","crimson_trapdoor_top.json","crop.json","cross.json","cross_emissive.json","crying_obsidian.json","cube.json","cube_all.json","cube_all_inner_faces.json","cube_bottom_top.json","cube_bottom_top_inner_faces.json","cube_column.json","cube_column_horizontal.json","cube_column_mirrored.json","cube_column_uv_locked_x.json","cube_column_uv_locked_y.json","cube_column_uv_locked_z.json","cube_directional.json","cube_mirrored.json","cube_mirrored_all.json","cube_north_west_mirrored.json","cube_north_west_mirrored_all.json","cube_top.json","custom_fence_inventory.json","custom_fence_post.json","custom_fence_side_east.json","custom_fence_side_north.json","custom_fence_side_south.json","custom_fence_side_west.json","cut_copper.json","cut_copper_slab.json","cut_copper_slab_top.json","cut_copper_stairs.json","cut_copper_stairs_inner.json","cut_copper_stairs_outer.json","cut_red_sandstone.json","cut_red_sandstone_slab.json","cut_red_sandstone_slab_top.json","cut_sandstone.json","cut_sandstone_slab.json","cut_sandstone_slab_top.json","cyan_candle_cake.json","cyan_candle_cake_lit.json","cyan_candle_four_candles.json","cyan_candle_four_candles_lit.json","cyan_candle_one_candle.json","cyan_candle_one_candle_lit.json","cyan_candle_three_candles.json","cyan_candle_three_candles_lit.json","cyan_candle_two_candles.json","cyan_candle_two_candles_lit.json","cyan_carpet.json","cyan_concrete.json","cyan_concrete_powder.json","cyan_glazed_terracotta.json","cyan_shulker_box.json","cyan_stained_glass.json","cyan_stained_glass_pane_noside.json","cyan_stained_glass_pane_noside_alt.json","cyan_stained_glass_pane_post.json","cyan_stained_glass_pane_side.json","cyan_stained_glass_pane_side_alt.json","cyan_terracotta.json","cyan_wool.json","damaged_anvil.json","dandelion.json","dark_oak_button.json","dark_oak_button_inventory.json","dark_oak_button_pressed.json","dark_oak_door_bottom_left.json","dark_oak_door_bottom_left_open.json","dark_oak_door_bottom_right.json","dark_oak_door_bottom_right_open.json","dark_oak_door_top_left.json","dark_oak_door_top_left_open.json","dark_oak_door_top_right.json","dark_oak_door_top_right_open.json","dark_oak_fence_gate.json","dark_oak_fence_gate_open.json","dark_oak_fence_gate_wall.json","dark_oak_fence_gate_wall_open.json","dark_oak_fence_inventory.json","dark_oak_fence_post.json","dark_oak_fence_side.json","dark_oak_hanging_sign.json","dark_oak_leaves.json","dark_oak_log.json","dark_oak_log_horizontal.json","dark_oak_planks.json","dark_oak_pressure_plate.json","dark_oak_pressure_plate_down.json","dark_oak_sapling.json","dark_oak_sign.json","dark_oak_slab.json","dark_oak_slab_top.json","dark_oak_stairs.json","dark_oak_stairs_inner.json","dark_oak_stairs_outer.json","dark_oak_trapdoor_bottom.json","dark_oak_trapdoor_open.json","dark_oak_trapdoor_top.json","dark_oak_wood.json","dark_prismarine.json","dark_prismarine_slab.json","dark_prismarine_slab_top.json","dark_prismarine_stairs.json","dark_prismarine_stairs_inner.json","dark_prismarine_stairs_outer.json","daylight_detector.json","daylight_detector_inverted.json","dead_brain_coral.json","dead_brain_coral_block.json","dead_brain_coral_fan.json","dead_brain_coral_wall_fan.json","dead_bubble_coral.json","dead_bubble_coral_block.json","dead_bubble_coral_fan.json","dead_bubble_coral_wall_fan.json","dead_bush.json","dead_fire_coral.json","dead_fire_coral_block.json","dead_fire_coral_fan.json","dead_fire_coral_wall_fan.json","dead_horn_coral.json","dead_horn_coral_block.json","dead_horn_coral_fan.json","dead_horn_coral_wall_fan.json","dead_sea_pickle.json","dead_tube_coral.json","dead_tube_coral_block.json","dead_tube_coral_fan.json","dead_tube_coral_wall_fan.json","decorated_pot.json","deepslate.json","deepslate_brick_slab.json","deepslate_brick_slab_top.json","deepslate_brick_stairs.json","deepslate_brick_stairs_inner.json","deepslate_brick_stairs_outer.json","deepslate_brick_wall_inventory.json","deepslate_brick_wall_post.json","deepslate_brick_wall_side.json","deepslate_brick_wall_side_tall.json","deepslate_bricks.json","deepslate_coal_ore.json","deepslate_copper_ore.json","deepslate_diamond_ore.json","deepslate_emerald_ore.json","deepslate_gold_ore.json","deepslate_iron_ore.json","deepslate_lapis_ore.json","deepslate_mirrored.json","deepslate_redstone_ore.json","deepslate_tile_slab.json","deepslate_tile_slab_top.json","deepslate_tile_stairs.json","deepslate_tile_stairs_inner.json","deepslate_tile_stairs_outer.json","deepslate_tile_wall_inventory.json","deepslate_tile_wall_post.json","deepslate_tile_wall_side.json","deepslate_tile_wall_side_tall.json","deepslate_tiles.json","detector_rail.json","detector_rail_on.json","detector_rail_on_raised_ne.json","detector_rail_on_raised_sw.json","detector_rail_raised_ne.json","detector_rail_raised_sw.json","diamond_block.json","diamond_ore.json","diorite.json","diorite_slab.json","diorite_slab_top.json","diorite_stairs.json","diorite_stairs_inner.json","diorite_stairs_outer.json","diorite_wall_inventory.json","diorite_wall_post.json","diorite_wall_side.json","diorite_wall_side_tall.json","dirt.json","dirt_path.json","dispenser.json","dispenser_vertical.json","door_bottom_left.json","door_bottom_left_open.json","door_bottom_right.json","door_bottom_right_open.json","door_top_left.json","door_top_left_open.json","door_top_right.json","door_top_right_open.json","dragon_egg.json","dried_ghast.json","dried_ghast_hydration_0.json","dried_ghast_hydration_1.json","dried_ghast_hydration_2.json","dried_ghast_hydration_3.json","dried_kelp_block.json","dripstone_block.json","dropper.json","dropper_vertical.json","emerald_block.json","emerald_ore.json","enchanting_table.json","end_gateway.json","end_portal.json","end_portal_frame.json","end_portal_frame_filled.json","end_rod.json","end_stone.json","end_stone_brick_slab.json","end_stone_brick_slab_top.json","end_stone_brick_stairs.json","end_stone_brick_stairs_inner.json","end_stone_brick_stairs_outer.json","end_stone_brick_wall_inventory.json","end_stone_brick_wall_post.json","end_stone_brick_wall_side.json","end_stone_brick_wall_side_tall.json","end_stone_bricks.json","ender_chest.json","exposed_chiseled_copper.json","exposed_copper.json","exposed_copper_bulb.json","exposed_copper_bulb_lit.json","exposed_copper_bulb_lit_powered.json","exposed_copper_bulb_powered.json","exposed_copper_door_bottom_left.json","exposed_copper_door_bottom_left_open.json","exposed_copper_door_bottom_right.json","exposed_copper_door_bottom_right_open.json","exposed_copper_door_top_left.json","exposed_copper_door_top_left_open.json","exposed_copper_door_top_right.json","exposed_copper_door_top_right_open.json","exposed_copper_grate.json","exposed_copper_trapdoor_bottom.json","exposed_copper_trapdoor_open.json","exposed_copper_trapdoor_top.json","exposed_cut_copper.json","exposed_cut_copper_slab.json","exposed_cut_copper_slab_top.json","exposed_cut_copper_stairs.json","exposed_cut_copper_stairs_inner.json","exposed_cut_copper_stairs_outer.json","farmland.json","farmland_moist.json","fence_inventory.json","fence_post.json","fence_side.json","fern.json","fire_coral.json","fire_coral_block.json","fire_coral_fan.json","fire_coral_wall_fan.json","fire_floor0.json","fire_floor1.json","fire_side0.json","fire_side1.json","fire_side_alt0.json","fire_side_alt1.json","fire_up0.json","fire_up1.json","fire_up_alt0.json","fire_up_alt1.json","firefly_bush.json","fletching_table.json","flower_pot.json","flower_pot_cross.json","flower_pot_cross_emissive.json","flowerbed_1.json","flowerbed_2.json","flowerbed_3.json","flowerbed_4.json","flowering_azalea.json","flowering_azalea_leaves.json","four_dead_sea_pickles.json","four_sea_pickles.json","four_slightly_cracked_turtle_eggs.json","four_turtle_eggs.json","four_very_cracked_turtle_eggs.json","frogspawn.json","frosted_ice_0.json","frosted_ice_1.json","frosted_ice_2.json","frosted_ice_3.json","furnace.json","furnace_on.json","gilded_blackstone.json","glass.json","glass_pane_noside.json","glass_pane_noside_alt.json","glass_pane_post.json","glass_pane_side.json","glass_pane_side_alt.json","glow_item_frame.json","glow_item_frame_map.json","glow_lichen.json","glowstone.json","gold_block.json","gold_ore.json","granite.json","granite_slab.json","granite_slab_top.json","granite_stairs.json","granite_stairs_inner.json","granite_stairs_outer.json","granite_wall_inventory.json","granite_wall_post.json","granite_wall_side.json","granite_wall_side_tall.json","grass_block.json","grass_block_snow.json","gravel.json","gray_candle_cake.json","gray_candle_cake_lit.json","gray_candle_four_candles.json","gray_candle_four_candles_lit.json","gray_candle_one_candle.json","gray_candle_one_candle_lit.json","gray_candle_three_candles.json","gray_candle_three_candles_lit.json","gray_candle_two_candles.json","gray_candle_two_candles_lit.json","gray_carpet.json","gray_concrete.json","gray_concrete_powder.json","gray_glazed_terracotta.json","gray_shulker_box.json","gray_stained_glass.json","gray_stained_glass_pane_noside.json","gray_stained_glass_pane_noside_alt.json","gray_stained_glass_pane_post.json","gray_stained_glass_pane_side.json","gray_stained_glass_pane_side_alt.json","gray_terracotta.json","gray_wool.json","green_candle_cake.json","green_candle_cake_lit.json","green_candle_four_candles.json","green_candle_four_candles_lit.json","green_candle_one_candle.json","green_candle_one_candle_lit.json","green_candle_three_candles.json","green_candle_three_candles_lit.json","green_candle_two_candles.json","green_candle_two_candles_lit.json","green_carpet.json","green_concrete.json","green_concrete_powder.json","green_glazed_terracotta.json","green_shulker_box.json","green_stained_glass.json","green_stained_glass_pane_noside.json","green_stained_glass_pane_noside_alt.json","green_stained_glass_pane_post.json","green_stained_glass_pane_side.json","green_stained_glass_pane_side_alt.json","green_terracotta.json","green_wool.json","grindstone.json","hanging_roots.json","hay_block.json","hay_block_horizontal.json","heavy_core.json","heavy_weighted_pressure_plate.json","heavy_weighted_pressure_plate_down.json","honey_block.json","honeycomb_block.json","hopper.json","hopper_side.json","horn_coral.json","horn_coral_block.json","horn_coral_fan.json","horn_coral_wall_fan.json","ice.json","inner_stairs.json","iron_bars_cap.json","iron_bars_cap_alt.json","iron_bars_post.json","iron_bars_post_ends.json","iron_bars_side.json","iron_bars_side_alt.json","iron_block.json","iron_door_bottom_left.json","iron_door_bottom_left_open.json","iron_door_bottom_right.json","iron_door_bottom_right_open.json","iron_door_top_left.json","iron_door_top_left_open.json","iron_door_top_right.json","iron_door_top_right_open.json","iron_ore.json","iron_trapdoor_bottom.json","iron_trapdoor_open.json","iron_trapdoor_top.json","item_frame.json","item_frame_map.json","jack_o_lantern.json","jigsaw.json","jukebox.json","jungle_button.json","jungle_button_inventory.json","jungle_button_pressed.json","jungle_door_bottom_left.json","jungle_door_bottom_left_open.json","jungle_door_bottom_right.json","jungle_door_bottom_right_open.json","jungle_door_top_left.json","jungle_door_top_left_open.json","jungle_door_top_right.json","jungle_door_top_right_open.json","jungle_fence_gate.json","jungle_fence_gate_open.json","jungle_fence_gate_wall.json","jungle_fence_gate_wall_open.json","jungle_fence_inventory.json","jungle_fence_post.json","jungle_fence_side.json","jungle_hanging_sign.json","jungle_leaves.json","jungle_log.json","jungle_log_horizontal.json","jungle_planks.json","jungle_pressure_plate.json","jungle_pressure_plate_down.json","jungle_sapling.json","jungle_sign.json","jungle_slab.json","jungle_slab_top.json","jungle_stairs.json","jungle_stairs_inner.json","jungle_stairs_outer.json","jungle_trapdoor_bottom.json","jungle_trapdoor_open.json","jungle_trapdoor_top.json","jungle_wood.json","kelp.json","kelp_plant.json","ladder.json","lantern.json","lantern_hanging.json","lapis_block.json","lapis_ore.json","large_amethyst_bud.json","large_fern_bottom.json","large_fern_top.json","lava.json","lava_cauldron.json","leaf_litter_1.json","leaf_litter_2.json","leaf_litter_3.json","leaf_litter_4.json","leaves.json","lectern.json","lever.json","lever_on.json","light_00.json","light_01.json","light_02.json","light_03.json","light_04.json","light_05.json","light_06.json","light_07.json","light_08.json","light_09.json","light_10.json","light_11.json","light_12.json","light_13.json","light_14.json","light_15.json","light_blue_candle_cake.json","light_blue_candle_cake_lit.json","light_blue_candle_four_candles.json","light_blue_candle_four_candles_lit.json","light_blue_candle_one_candle.json","light_blue_candle_one_candle_lit.json","light_blue_candle_three_candles.json","light_blue_candle_three_candles_lit.json","light_blue_candle_two_candles.json","light_blue_candle_two_candles_lit.json","light_blue_carpet.json","light_blue_concrete.json","light_blue_concrete_powder.json","light_blue_glazed_terracotta.json","light_blue_shulker_box.json","light_blue_stained_glass.json","light_blue_stained_glass_pane_noside.json","light_blue_stained_glass_pane_noside_alt.json","light_blue_stained_glass_pane_post.json","light_blue_stained_glass_pane_side.json","light_blue_stained_glass_pane_side_alt.json","light_blue_terracotta.json","light_blue_wool.json","light_gray_candle_cake.json","light_gray_candle_cake_lit.json","light_gray_candle_four_candles.json","light_gray_candle_four_candles_lit.json","light_gray_candle_one_candle.json","light_gray_candle_one_candle_lit.json","light_gray_candle_three_candles.json","light_gray_candle_three_candles_lit.json","light_gray_candle_two_candles.json","light_gray_candle_two_candles_lit.json","light_gray_carpet.json","light_gray_concrete.json","light_gray_concrete_powder.json","light_gray_glazed_terracotta.json","light_gray_shulker_box.json","light_gray_stained_glass.json","light_gray_stained_glass_pane_noside.json","light_gray_stained_glass_pane_noside_alt.json","light_gray_stained_glass_pane_post.json","light_gray_stained_glass_pane_side.json","light_gray_stained_glass_pane_side_alt.json","light_gray_terracotta.json","light_gray_wool.json","light_weighted_pressure_plate.json","light_weighted_pressure_plate_down.json","lightning_rod.json","lightning_rod_on.json","lilac_bottom.json","lilac_top.json","lily_of_the_valley.json","lily_pad.json","lime_candle_cake.json","lime_candle_cake_lit.json","lime_candle_four_candles.json","lime_candle_four_candles_lit.json","lime_candle_one_candle.json","lime_candle_one_candle_lit.json","lime_candle_three_candles.json","lime_candle_three_candles_lit.json","lime_candle_two_candles.json","lime_candle_two_candles_lit.json","lime_carpet.json","lime_concrete.json","lime_concrete_powder.json","lime_glazed_terracotta.json","lime_shulker_box.json","lime_stained_glass.json","lime_stained_glass_pane_noside.json","lime_stained_glass_pane_noside_alt.json","lime_stained_glass_pane_post.json","lime_stained_glass_pane_side.json","lime_stained_glass_pane_side_alt.json","lime_terracotta.json","lime_wool.json","lodestone.json","loom.json","magenta_candle_cake.json","magenta_candle_cake_lit.json","magenta_candle_four_candles.json","magenta_candle_four_candles_lit.json","magenta_candle_one_candle.json","magenta_candle_one_candle_lit.json","magenta_candle_three_candles.json","magenta_candle_three_candles_lit.json","magenta_candle_two_candles.json","magenta_candle_two_candles_lit.json","magenta_carpet.json","magenta_concrete.json","magenta_concrete_powder.json","magenta_glazed_terracotta.json","magenta_shulker_box.json","magenta_stained_glass.json","magenta_stained_glass_pane_noside.json","magenta_stained_glass_pane_noside_alt.json","magenta_stained_glass_pane_post.json","magenta_stained_glass_pane_side.json","magenta_stained_glass_pane_side_alt.json","magenta_terracotta.json","magenta_wool.json","magma_block.json","mangrove_button.json","mangrove_button_inventory.json","mangrove_button_pressed.json","mangrove_door_bottom_left.json","mangrove_door_bottom_left_open.json","mangrove_door_bottom_right.json","mangrove_door_bottom_right_open.json","mangrove_door_top_left.json","mangrove_door_top_left_open.json","mangrove_door_top_right.json","mangrove_door_top_right_open.json","mangrove_fence_gate.json","mangrove_fence_gate_open.json","mangrove_fence_gate_wall.json","mangrove_fence_gate_wall_open.json","mangrove_fence_inventory.json","mangrove_fence_post.json","mangrove_fence_side.json","mangrove_hanging_sign.json","mangrove_leaves.json","mangrove_log.json","mangrove_log_horizontal.json","mangrove_planks.json","mangrove_pressure_plate.json","mangrove_pressure_plate_down.json","mangrove_propagule.json","mangrove_propagule_hanging_0.json","mangrove_propagule_hanging_1.json","mangrove_propagule_hanging_2.json","mangrove_propagule_hanging_3.json","mangrove_propagule_hanging_4.json","mangrove_roots.json","mangrove_sign.json","mangrove_slab.json","mangrove_slab_top.json","mangrove_stairs.json","mangrove_stairs_inner.json","mangrove_stairs_outer.json","mangrove_trapdoor_bottom.json","mangrove_trapdoor_open.json","mangrove_trapdoor_top.json","mangrove_wood.json","medium_amethyst_bud.json","melon.json","melon_stem_stage0.json","melon_stem_stage1.json","melon_stem_stage2.json","melon_stem_stage3.json","melon_stem_stage4.json","melon_stem_stage5.json","melon_stem_stage6.json","melon_stem_stage7.json","moss_block.json","moss_carpet.json","mossy_carpet_side.json","mossy_cobblestone.json","mossy_cobblestone_slab.json","mossy_cobblestone_slab_top.json","mossy_cobblestone_stairs.json","mossy_cobblestone_stairs_inner.json","mossy_cobblestone_stairs_outer.json","mossy_cobblestone_wall_inventory.json","mossy_cobblestone_wall_post.json","mossy_cobblestone_wall_side.json","mossy_cobblestone_wall_side_tall.json","mossy_stone_brick_slab.json","mossy_stone_brick_slab_top.json","mossy_stone_brick_stairs.json","mossy_stone_brick_stairs_inner.json","mossy_stone_brick_stairs_outer.json","mossy_stone_brick_wall_inventory.json","mossy_stone_brick_wall_post.json","mossy_stone_brick_wall_side.json","mossy_stone_brick_wall_side_tall.json","mossy_stone_bricks.json","moving_piston.json","mud.json","mud_brick_slab.json","mud_brick_slab_top.json","mud_brick_stairs.json","mud_brick_stairs_inner.json","mud_brick_stairs_outer.json","mud_brick_wall_inventory.json","mud_brick_wall_post.json","mud_brick_wall_side.json","mud_brick_wall_side_tall.json","mud_bricks.json","mud_bricks_north_west_mirrored.json","muddy_mangrove_roots.json","mushroom_block_inside.json","mushroom_stem.json","mushroom_stem_inventory.json","mycelium.json","nether_brick_fence_inventory.json","nether_brick_fence_post.json","nether_brick_fence_side.json","nether_brick_slab.json","nether_brick_slab_top.json","nether_brick_stairs.json","nether_brick_stairs_inner.json","nether_brick_stairs_outer.json","nether_brick_wall_inventory.json","nether_brick_wall_post.json","nether_brick_wall_side.json","nether_brick_wall_side_tall.json","nether_bricks.json","nether_gold_ore.json","nether_portal_ew.json","nether_portal_ns.json","nether_quartz_ore.json","nether_sprouts.json","nether_wart_block.json","nether_wart_stage0.json","nether_wart_stage1.json","nether_wart_stage2.json","netherite_block.json","netherrack.json","note_block.json","oak_button.json","oak_button_inventory.json","oak_button_pressed.json","oak_door_bottom_left.json","oak_door_bottom_left_open.json","oak_door_bottom_right.json","oak_door_bottom_right_open.json","oak_door_top_left.json","oak_door_top_left_open.json","oak_door_top_right.json","oak_door_top_right_open.json","oak_fence_gate.json","oak_fence_gate_open.json","oak_fence_gate_wall.json","oak_fence_gate_wall_open.json","oak_fence_inventory.json","oak_fence_post.json","oak_fence_side.json","oak_hanging_sign.json","oak_leaves.json","oak_log.json","oak_log_horizontal.json","oak_planks.json","oak_pressure_plate.json","oak_pressure_plate_down.json","oak_sapling.json","oak_sign.json","oak_slab.json","oak_slab_top.json","oak_stairs.json","oak_stairs_inner.json","oak_stairs_outer.json","oak_trapdoor_bottom.json","oak_trapdoor_open.json","oak_trapdoor_top.json","oak_wood.json","observer.json","observer_on.json","obsidian.json","ochre_froglight.json","ochre_froglight_horizontal.json","open_eyeblossom.json","orange_candle_cake.json","orange_candle_cake_lit.json","orange_candle_four_candles.json","orange_candle_four_candles_lit.json","orange_candle_one_candle.json","orange_candle_one_candle_lit.json","orange_candle_three_candles.json","orange_candle_three_candles_lit.json","orange_candle_two_candles.json","orange_candle_two_candles_lit.json","orange_carpet.json","orange_concrete.json","orange_concrete_powder.json","orange_glazed_terracotta.json","orange_shulker_box.json","orange_stained_glass.json","orange_stained_glass_pane_noside.json","orange_stained_glass_pane_noside_alt.json","orange_stained_glass_pane_post.json","orange_stained_glass_pane_side.json","orange_stained_glass_pane_side_alt.json","orange_terracotta.json","orange_tulip.json","orange_wool.json","orientable.json","orientable_vertical.json","orientable_with_bottom.json","outer_stairs.json","oxeye_daisy.json","oxidized_chiseled_copper.json","oxidized_copper.json","oxidized_copper_bulb.json","oxidized_copper_bulb_lit.json","oxidized_copper_bulb_lit_powered.json","oxidized_copper_bulb_powered.json","oxidized_copper_door_bottom_left.json","oxidized_copper_door_bottom_left_open.json","oxidized_copper_door_bottom_right.json","oxidized_copper_door_bottom_right_open.json","oxidized_copper_door_top_left.json","oxidized_copper_door_top_left_open.json","oxidized_copper_door_top_right.json","oxidized_copper_door_top_right_open.json","oxidized_copper_grate.json","oxidized_copper_trapdoor_bottom.json","oxidized_copper_trapdoor_open.json","oxidized_copper_trapdoor_top.json","oxidized_cut_copper.json","oxidized_cut_copper_slab.json","oxidized_cut_copper_slab_top.json","oxidized_cut_copper_stairs.json","oxidized_cut_copper_stairs_inner.json","oxidized_cut_copper_stairs_outer.json","packed_ice.json","packed_mud.json","pale_hanging_moss.json","pale_hanging_moss_tip.json","pale_moss_block.json","pale_moss_carpet.json","pale_moss_carpet_side_small.json","pale_moss_carpet_side_tall.json","pale_oak_button.json","pale_oak_button_inventory.json","pale_oak_button_pressed.json","pale_oak_door_bottom_left.json","pale_oak_door_bottom_left_open.json","pale_oak_door_bottom_right.json","pale_oak_door_bottom_right_open.json","pale_oak_door_top_left.json","pale_oak_door_top_left_open.json","pale_oak_door_top_right.json","pale_oak_door_top_right_open.json","pale_oak_fence_gate.json","pale_oak_fence_gate_open.json","pale_oak_fence_gate_wall.json","pale_oak_fence_gate_wall_open.json","pale_oak_fence_inventory.json","pale_oak_fence_post.json","pale_oak_fence_side.json","pale_oak_hanging_sign.json","pale_oak_leaves.json","pale_oak_log.json","pale_oak_log_horizontal.json","pale_oak_planks.json","pale_oak_pressure_plate.json","pale_oak_pressure_plate_down.json","pale_oak_sapling.json","pale_oak_sign.json","pale_oak_slab.json","pale_oak_slab_top.json","pale_oak_stairs.json","pale_oak_stairs_inner.json","pale_oak_stairs_outer.json","pale_oak_trapdoor_bottom.json","pale_oak_trapdoor_open.json","pale_oak_trapdoor_top.json","pale_oak_wood.json","pearlescent_froglight.json","pearlescent_froglight_horizontal.json","peony_bottom.json","peony_top.json","petrified_oak_slab.json","petrified_oak_slab_top.json","pink_candle_cake.json","pink_candle_cake_lit.json","pink_candle_four_candles.json","pink_candle_four_candles_lit.json","pink_candle_one_candle.json","pink_candle_one_candle_lit.json","pink_candle_three_candles.json","pink_candle_three_candles_lit.json","pink_candle_two_candles.json","pink_candle_two_candles_lit.json","pink_carpet.json","pink_concrete.json","pink_concrete_powder.json","pink_glazed_terracotta.json","pink_petals_1.json","pink_petals_2.json","pink_petals_3.json","pink_petals_4.json","pink_shulker_box.json","pink_stained_glass.json","pink_stained_glass_pane_noside.json","pink_stained_glass_pane_noside_alt.json","pink_stained_glass_pane_post.json","pink_stained_glass_pane_side.json","pink_stained_glass_pane_side_alt.json","pink_terracotta.json","pink_tulip.json","pink_wool.json","piston.json","piston_base.json","piston_extended.json","piston_head.json","piston_head_short.json","piston_head_short_sticky.json","piston_head_sticky.json","piston_inventory.json","pitcher_crop_bottom_stage_0.json","pitcher_crop_bottom_stage_1.json","pitcher_crop_bottom_stage_2.json","pitcher_crop_bottom_stage_3.json","pitcher_crop_bottom_stage_4.json","pitcher_crop_top_stage_0.json","pitcher_crop_top_stage_1.json","pitcher_crop_top_stage_2.json","pitcher_crop_top_stage_3.json","pitcher_crop_top_stage_4.json","pitcher_plant_bottom.json","pitcher_plant_top.json","podzol.json","pointed_dripstone.json","pointed_dripstone_down_base.json","pointed_dripstone_down_frustum.json","pointed_dripstone_down_middle.json","pointed_dripstone_down_tip.json","pointed_dripstone_down_tip_merge.json","pointed_dripstone_up_base.json","pointed_dripstone_up_frustum.json","pointed_dripstone_up_middle.json","pointed_dripstone_up_tip.json","pointed_dripstone_up_tip_merge.json","polished_andesite.json","polished_andesite_slab.json","polished_andesite_slab_top.json","polished_andesite_stairs.json","polished_andesite_stairs_inner.json","polished_andesite_stairs_outer.json","polished_basalt.json","polished_blackstone.json","polished_blackstone_brick_slab.json","polished_blackstone_brick_slab_top.json","polished_blackstone_brick_stairs.json","polished_blackstone_brick_stairs_inner.json","polished_blackstone_brick_stairs_outer.json","polished_blackstone_brick_wall_inventory.json","polished_blackstone_brick_wall_post.json","polished_blackstone_brick_wall_side.json","polished_blackstone_brick_wall_side_tall.json","polished_blackstone_bricks.json","polished_blackstone_button.json","polished_blackstone_button_inventory.json","polished_blackstone_button_pressed.json","polished_blackstone_pressure_plate.json","polished_blackstone_pressure_plate_down.json","polished_blackstone_slab.json","polished_blackstone_slab_top.json","polished_blackstone_stairs.json","polished_blackstone_stairs_inner.json","polished_blackstone_stairs_outer.json","polished_blackstone_wall_inventory.json","polished_blackstone_wall_post.json","polished_blackstone_wall_side.json","polished_blackstone_wall_side_tall.json","polished_deepslate.json","polished_deepslate_slab.json","polished_deepslate_slab_top.json","polished_deepslate_stairs.json","polished_deepslate_stairs_inner.json","polished_deepslate_stairs_outer.json","polished_deepslate_wall_inventory.json","polished_deepslate_wall_post.json","polished_deepslate_wall_side.json","polished_deepslate_wall_side_tall.json","polished_diorite.json","polished_diorite_slab.json","polished_diorite_slab_top.json","polished_diorite_stairs.json","polished_diorite_stairs_inner.json","polished_diorite_stairs_outer.json","polished_granite.json","polished_granite_slab.json","polished_granite_slab_top.json","polished_granite_stairs.json","polished_granite_stairs_inner.json","polished_granite_stairs_outer.json","polished_tuff.json","polished_tuff_slab.json","polished_tuff_slab_top.json","polished_tuff_stairs.json","polished_tuff_stairs_inner.json","polished_tuff_stairs_outer.json","polished_tuff_wall_inventory.json","polished_tuff_wall_post.json","polished_tuff_wall_side.json","polished_tuff_wall_side_tall.json","poppy.json","potatoes_stage0.json","potatoes_stage1.json","potatoes_stage2.json","potatoes_stage3.json","potted_acacia_sapling.json","potted_allium.json","potted_azalea_bush.json","potted_azure_bluet.json","potted_bamboo.json","potted_birch_sapling.json","potted_blue_orchid.json","potted_brown_mushroom.json","potted_cactus.json","potted_cherry_sapling.json","potted_closed_eyeblossom.json","potted_cornflower.json","potted_crimson_fungus.json","potted_crimson_roots.json","potted_dandelion.json","potted_dark_oak_sapling.json","potted_dead_bush.json","potted_fern.json","potted_flowering_azalea_bush.json","potted_jungle_sapling.json","potted_lily_of_the_valley.json","potted_mangrove_propagule.json","potted_oak_sapling.json","potted_open_eyeblossom.json","potted_orange_tulip.json","potted_oxeye_daisy.json","potted_pale_oak_sapling.json","potted_pink_tulip.json","potted_poppy.json","potted_red_mushroom.json","potted_red_tulip.json","potted_spruce_sapling.json","potted_torchflower.json","potted_warped_fungus.json","potted_warped_roots.json","potted_white_tulip.json","potted_wither_rose.json","powder_snow.json","powder_snow_cauldron_full.json","powder_snow_cauldron_level1.json","powder_snow_cauldron_level2.json","powered_rail.json","powered_rail_on.json","powered_rail_on_raised_ne.json","powered_rail_on_raised_sw.json","powered_rail_raised_ne.json","powered_rail_raised_sw.json","pressure_plate_down.json","pressure_plate_up.json","prismarine.json","prismarine_brick_slab.json","prismarine_brick_slab_top.json","prismarine_brick_stairs.json","prismarine_brick_stairs_inner.json","prismarine_brick_stairs_outer.json","prismarine_bricks.json","prismarine_slab.json","prismarine_slab_top.json","prismarine_stairs.json","prismarine_stairs_inner.json","prismarine_stairs_outer.json","prismarine_wall_inventory.json","prismarine_wall_post.json","prismarine_wall_side.json","prismarine_wall_side_tall.json","pumpkin.json","pumpkin_stem_stage0.json","pumpkin_stem_stage1.json","pumpkin_stem_stage2.json","pumpkin_stem_stage3.json","pumpkin_stem_stage4.json","pumpkin_stem_stage5.json","pumpkin_stem_stage6.json","pumpkin_stem_stage7.json","purple_candle_cake.json","purple_candle_cake_lit.json","purple_candle_four_candles.json","purple_candle_four_candles_lit.json","purple_candle_one_candle.json","purple_candle_one_candle_lit.json","purple_candle_three_candles.json","purple_candle_three_candles_lit.json","purple_candle_two_candles.json","purple_candle_two_candles_lit.json","purple_carpet.json","purple_concrete.json","purple_concrete_powder.json","purple_glazed_terracotta.json","purple_shulker_box.json","purple_stained_glass.json","purple_stained_glass_pane_noside.json","purple_stained_glass_pane_noside_alt.json","purple_stained_glass_pane_post.json","purple_stained_glass_pane_side.json","purple_stained_glass_pane_side_alt.json","purple_terracotta.json","purple_wool.json","purpur_block.json","purpur_pillar.json","purpur_pillar_horizontal.json","purpur_slab.json","purpur_slab_top.json","purpur_stairs.json","purpur_stairs_inner.json","purpur_stairs_outer.json","quartz_block.json","quartz_bricks.json","quartz_pillar.json","quartz_pillar_horizontal.json","quartz_slab.json","quartz_slab_top.json","quartz_stairs.json","quartz_stairs_inner.json","quartz_stairs_outer.json","rail.json","rail_corner.json","rail_curved.json","rail_flat.json","rail_raised_ne.json","rail_raised_sw.json","raw_copper_block.json","raw_gold_block.json","raw_iron_block.json","red_candle_cake.json","red_candle_cake_lit.json","red_candle_four_candles.json","red_candle_four_candles_lit.json","red_candle_one_candle.json","red_candle_one_candle_lit.json","red_candle_three_candles.json","red_candle_three_candles_lit.json","red_candle_two_candles.json","red_candle_two_candles_lit.json","red_carpet.json","red_concrete.json","red_concrete_powder.json","red_glazed_terracotta.json","red_mushroom.json","red_mushroom_block.json","red_mushroom_block_inventory.json","red_nether_brick_slab.json","red_nether_brick_slab_top.json","red_nether_brick_stairs.json","red_nether_brick_stairs_inner.json","red_nether_brick_stairs_outer.json","red_nether_brick_wall_inventory.json","red_nether_brick_wall_post.json","red_nether_brick_wall_side.json","red_nether_brick_wall_side_tall.json","red_nether_bricks.json","red_sand.json","red_sandstone.json","red_sandstone_slab.json","red_sandstone_slab_top.json","red_sandstone_stairs.json","red_sandstone_stairs_inner.json","red_sandstone_stairs_outer.json","red_sandstone_wall_inventory.json","red_sandstone_wall_post.json","red_sandstone_wall_side.json","red_sandstone_wall_side_tall.json","red_shulker_box.json","red_stained_glass.json","red_stained_glass_pane_noside.json","red_stained_glass_pane_noside_alt.json","red_stained_glass_pane_post.json","red_stained_glass_pane_side.json","red_stained_glass_pane_side_alt.json","red_terracotta.json","red_tulip.json","red_wool.json","redstone_block.json","redstone_dust_dot.json","redstone_dust_side.json","redstone_dust_side0.json","redstone_dust_side1.json","redstone_dust_side_alt.json","redstone_dust_side_alt0.json","redstone_dust_side_alt1.json","redstone_dust_up.json","redstone_lamp.json","redstone_lamp_on.json","redstone_ore.json","redstone_torch.json","redstone_torch_off.json","redstone_wall_torch.json","redstone_wall_torch_off.json","reinforced_deepslate.json","repeater_1tick.json","repeater_1tick_locked.json","repeater_1tick_on.json","repeater_1tick_on_locked.json","repeater_2tick.json","repeater_2tick_locked.json","repeater_2tick_on.json","repeater_2tick_on_locked.json","repeater_3tick.json","repeater_3tick_locked.json","repeater_3tick_on.json","repeater_3tick_on_locked.json","repeater_4tick.json","repeater_4tick_locked.json","repeater_4tick_on.json","repeater_4tick_on_locked.json","repeating_command_block.json","repeating_command_block_conditional.json","resin_block.json","resin_brick_slab.json","resin_brick_slab_top.json","resin_brick_stairs.json","resin_brick_stairs_inner.json","resin_brick_stairs_outer.json","resin_brick_wall_inventory.json","resin_brick_wall_post.json","resin_brick_wall_side.json","resin_brick_wall_side_tall.json","resin_bricks.json","resin_clump.json","respawn_anchor_0.json","respawn_anchor_1.json","respawn_anchor_2.json","respawn_anchor_3.json","respawn_anchor_4.json","rooted_dirt.json","rose_bush_bottom.json","rose_bush_top.json","sand.json","sandstone.json","sandstone_slab.json","sandstone_slab_top.json","sandstone_stairs.json","sandstone_stairs_inner.json","sandstone_stairs_outer.json","sandstone_wall_inventory.json","sandstone_wall_post.json","sandstone_wall_side.json","sandstone_wall_side_tall.json","scaffolding_stable.json","scaffolding_unstable.json","sculk.json","sculk_catalyst.json","sculk_catalyst_bloom.json","sculk_mirrored.json","sculk_sensor.json","sculk_sensor_active.json","sculk_sensor_inactive.json","sculk_shrieker.json","sculk_shrieker_can_summon.json","sculk_vein.json","sea_lantern.json","sea_pickle.json","seagrass.json","short_dry_grass.json","short_grass.json","shroomlight.json","shulker_box.json","skull.json","slab.json","slab_top.json","slightly_cracked_turtle_egg.json","slime_block.json","small_amethyst_bud.json","small_dripleaf_bottom.json","small_dripleaf_top.json","smithing_table.json","smoker.json","smoker_on.json","smooth_basalt.json","smooth_quartz.json","smooth_quartz_slab.json","smooth_quartz_slab_top.json","smooth_quartz_stairs.json","smooth_quartz_stairs_inner.json","smooth_quartz_stairs_outer.json","smooth_red_sandstone.json","smooth_red_sandstone_slab.json","smooth_red_sandstone_slab_top.json","smooth_red_sandstone_stairs.json","smooth_red_sandstone_stairs_inner.json","smooth_red_sandstone_stairs_outer.json","smooth_sandstone.json","smooth_sandstone_slab.json","smooth_sandstone_slab_top.json","smooth_sandstone_stairs.json","smooth_sandstone_stairs_inner.json","smooth_sandstone_stairs_outer.json","smooth_stone.json","smooth_stone_slab.json","smooth_stone_slab_double.json","smooth_stone_slab_top.json","sniffer_egg.json","sniffer_egg_not_cracked.json","sniffer_egg_slightly_cracked.json","sniffer_egg_very_cracked.json","snow_block.json","snow_height10.json","snow_height12.json","snow_height14.json","snow_height2.json","snow_height4.json","snow_height6.json","snow_height8.json","soul_campfire.json","soul_fire_floor0.json","soul_fire_floor1.json","soul_fire_side0.json","soul_fire_side1.json","soul_fire_side_alt0.json","soul_fire_side_alt1.json","soul_lantern.json","soul_lantern_hanging.json","soul_sand.json","soul_soil.json","soul_torch.json","soul_wall_torch.json","spawner.json","sponge.json","spore_blossom.json","spruce_button.json","spruce_button_inventory.json","spruce_button_pressed.json","spruce_door_bottom_left.json","spruce_door_bottom_left_open.json","spruce_door_bottom_right.json","spruce_door_bottom_right_open.json","spruce_door_top_left.json","spruce_door_top_left_open.json","spruce_door_top_right.json","spruce_door_top_right_open.json","spruce_fence_gate.json","spruce_fence_gate_open.json","spruce_fence_gate_wall.json","spruce_fence_gate_wall_open.json","spruce_fence_inventory.json","spruce_fence_post.json","spruce_fence_side.json","spruce_hanging_sign.json","spruce_leaves.json","spruce_log.json","spruce_log_horizontal.json","spruce_planks.json","spruce_pressure_plate.json","spruce_pressure_plate_down.json","spruce_sapling.json","spruce_sign.json","spruce_slab.json","spruce_slab_top.json","spruce_stairs.json","spruce_stairs_inner.json","spruce_stairs_outer.json","spruce_trapdoor_bottom.json","spruce_trapdoor_open.json","spruce_trapdoor_top.json","spruce_wood.json","stairs.json","stem_fruit.json","stem_growth0.json","stem_growth1.json","stem_growth2.json","stem_growth3.json","stem_growth4.json","stem_growth5.json","stem_growth6.json","stem_growth7.json","sticky_piston.json","sticky_piston_inventory.json","stone.json","stone_brick_slab.json","stone_brick_slab_top.json","stone_brick_stairs.json","stone_brick_stairs_inner.json","stone_brick_stairs_outer.json","stone_brick_wall_inventory.json","stone_brick_wall_post.json","stone_brick_wall_side.json","stone_brick_wall_side_tall.json","stone_bricks.json","stone_button.json","stone_button_inventory.json","stone_button_pressed.json","stone_mirrored.json","stone_pressure_plate.json","stone_pressure_plate_down.json","stone_slab.json","stone_slab_top.json","stone_stairs.json","stone_stairs_inner.json","stone_stairs_outer.json","stonecutter.json","stripped_acacia_log.json","stripped_acacia_log_horizontal.json","stripped_acacia_wood.json","stripped_bamboo_block.json","stripped_bamboo_block_x.json","stripped_bamboo_block_y.json","stripped_bamboo_block_z.json","stripped_birch_log.json","stripped_birch_log_horizontal.json","stripped_birch_wood.json","stripped_cherry_log.json","stripped_cherry_log_x.json","stripped_cherry_log_y.json","stripped_cherry_log_z.json","stripped_cherry_wood.json","stripped_crimson_hyphae.json","stripped_crimson_stem.json","stripped_dark_oak_log.json","stripped_dark_oak_log_horizontal.json","stripped_dark_oak_wood.json","stripped_jungle_log.json","stripped_jungle_log_horizontal.json","stripped_jungle_wood.json","stripped_mangrove_log.json","stripped_mangrove_log_horizontal.json","stripped_mangrove_wood.json","stripped_oak_log.json","stripped_oak_log_horizontal.json","stripped_oak_wood.json","stripped_pale_oak_log.json","stripped_pale_oak_log_horizontal.json","stripped_pale_oak_wood.json","stripped_spruce_log.json","stripped_spruce_log_horizontal.json","stripped_spruce_wood.json","stripped_warped_hyphae.json","stripped_warped_stem.json","structure_block.json","structure_block_corner.json","structure_block_data.json","structure_block_load.json","structure_block_save.json","structure_void.json","sugar_cane.json","sunflower_bottom.json","sunflower_top.json","suspicious_gravel_0.json","suspicious_gravel_1.json","suspicious_gravel_2.json","suspicious_gravel_3.json","suspicious_sand_0.json","suspicious_sand_1.json","suspicious_sand_2.json","suspicious_sand_3.json","sweet_berry_bush_stage0.json","sweet_berry_bush_stage1.json","sweet_berry_bush_stage2.json","sweet_berry_bush_stage3.json","tall_dry_grass.json","tall_grass_bottom.json","tall_grass_top.json","tall_seagrass_bottom.json","tall_seagrass_top.json","target.json","template_anvil.json","template_azalea.json","template_cake_with_candle.json","template_campfire.json","template_candle.json","template_cauldron_full.json","template_cauldron_level1.json","template_cauldron_level2.json","template_chiseled_bookshelf_slot_bottom_left.json","template_chiseled_bookshelf_slot_bottom_mid.json","template_chiseled_bookshelf_slot_bottom_right.json","template_chiseled_bookshelf_slot_top_left.json","template_chiseled_bookshelf_slot_top_mid.json","template_chiseled_bookshelf_slot_top_right.json","template_chorus_flower.json","template_command_block.json","template_custom_fence_gate.json","template_custom_fence_gate_open.json","template_custom_fence_gate_wall.json","template_custom_fence_gate_wall_open.json","template_daylight_detector.json","template_farmland.json","template_fence_gate.json","template_fence_gate_open.json","template_fence_gate_wall.json","template_fence_gate_wall_open.json","template_fire_floor.json","template_fire_side.json","template_fire_side_alt.json","template_fire_up.json","template_fire_up_alt.json","template_four_candles.json","template_four_turtle_eggs.json","template_glass_pane_noside.json","template_glass_pane_noside_alt.json","template_glass_pane_post.json","template_glass_pane_side.json","template_glass_pane_side_alt.json","template_glazed_terracotta.json","template_hanging_lantern.json","template_item_frame.json","template_item_frame_map.json","template_lantern.json","template_leaf_litter_1.json","template_leaf_litter_2.json","template_leaf_litter_3.json","template_leaf_litter_4.json","template_orientable_trapdoor_bottom.json","template_orientable_trapdoor_open.json","template_orientable_trapdoor_top.json","template_piston.json","template_piston_head.json","template_piston_head_short.json","template_potted_azalea_bush.json","template_rail_raised_ne.json","template_rail_raised_sw.json","template_redstone_torch.json","template_redstone_torch_wall.json","template_sculk_shrieker.json","template_seagrass.json","template_single_face.json","template_three_candles.json","template_three_turtle_eggs.json","template_torch.json","template_torch_unlit.json","template_torch_wall.json","template_torch_wall_unlit.json","template_trapdoor_bottom.json","template_trapdoor_open.json","template_trapdoor_top.json","template_turtle_egg.json","template_two_candles.json","template_two_turtle_eggs.json","template_vault.json","template_wall_post.json","template_wall_side.json","template_wall_side_tall.json","terracotta.json","test_block_accept.json","test_block_fail.json","test_block_log.json","test_block_start.json","test_instance_block.json","thin_block.json","three_dead_sea_pickles.json","three_sea_pickles.json","three_slightly_cracked_turtle_eggs.json","three_turtle_eggs.json","three_very_cracked_turtle_eggs.json","tinted_cross.json","tinted_flower_pot_cross.json","tinted_glass.json","tnt.json","torch.json","torchflower.json","torchflower_crop_stage0.json","torchflower_crop_stage1.json","trapped_chest.json","trial_spawner.json","trial_spawner_active.json","trial_spawner_active_ominous.json","trial_spawner_ejecting_reward.json","trial_spawner_ejecting_reward_ominous.json","trial_spawner_inactive_ominous.json","tripwire_attached_n.json","tripwire_attached_ne.json","tripwire_attached_ns.json","tripwire_attached_nse.json","tripwire_attached_nsew.json","tripwire_hook.json","tripwire_hook_attached.json","tripwire_hook_attached_on.json","tripwire_hook_on.json","tripwire_n.json","tripwire_ne.json","tripwire_ns.json","tripwire_nse.json","tripwire_nsew.json","tube_coral.json","tube_coral_block.json","tube_coral_fan.json","tube_coral_wall_fan.json","tuff.json","tuff_brick_slab.json","tuff_brick_slab_top.json","tuff_brick_stairs.json","tuff_brick_stairs_inner.json","tuff_brick_stairs_outer.json","tuff_brick_wall_inventory.json","tuff_brick_wall_post.json","tuff_brick_wall_side.json","tuff_brick_wall_side_tall.json","tuff_bricks.json","tuff_slab.json","tuff_slab_top.json","tuff_stairs.json","tuff_stairs_inner.json","tuff_stairs_outer.json","tuff_wall_inventory.json","tuff_wall_post.json","tuff_wall_side.json","tuff_wall_side_tall.json","turtle_egg.json","twisting_vines.json","twisting_vines_plant.json","two_dead_sea_pickles.json","two_sea_pickles.json","two_slightly_cracked_turtle_eggs.json","two_turtle_eggs.json","two_very_cracked_turtle_eggs.json","vault.json","vault_active.json","vault_active_ominous.json","vault_ejecting_reward.json","vault_ejecting_reward_ominous.json","vault_ominous.json","vault_unlocking.json","vault_unlocking_ominous.json","verdant_froglight.json","verdant_froglight_horizontal.json","very_cracked_turtle_egg.json","vine.json","wall_inventory.json","wall_torch.json","warped_button.json","warped_button_inventory.json","warped_button_pressed.json","warped_door_bottom_left.json","warped_door_bottom_left_open.json","warped_door_bottom_right.json","warped_door_bottom_right_open.json","warped_door_top_left.json","warped_door_top_left_open.json","warped_door_top_right.json","warped_door_top_right_open.json","warped_fence_gate.json","warped_fence_gate_open.json","warped_fence_gate_wall.json","warped_fence_gate_wall_open.json","warped_fence_inventory.json","warped_fence_post.json","warped_fence_side.json","warped_fungus.json","warped_hanging_sign.json","warped_hyphae.json","warped_nylium.json","warped_planks.json","warped_pressure_plate.json","warped_pressure_plate_down.json","warped_roots.json","warped_sign.json","warped_slab.json","warped_slab_top.json","warped_stairs.json","warped_stairs_inner.json","warped_stairs_outer.json","warped_stem.json","warped_trapdoor_bottom.json","warped_trapdoor_open.json","warped_trapdoor_top.json","warped_wart_block.json","water.json","water_cauldron_full.json","water_cauldron_level1.json","water_cauldron_level2.json","weathered_chiseled_copper.json","weathered_copper.json","weathered_copper_bulb.json","weathered_copper_bulb_lit.json","weathered_copper_bulb_lit_powered.json","weathered_copper_bulb_powered.json","weathered_copper_door_bottom_left.json","weathered_copper_door_bottom_left_open.json","weathered_copper_door_bottom_right.json","weathered_copper_door_bottom_right_open.json","weathered_copper_door_top_left.json","weathered_copper_door_top_left_open.json","weathered_copper_door_top_right.json","weathered_copper_door_top_right_open.json","weathered_copper_grate.json","weathered_copper_trapdoor_bottom.json","weathered_copper_trapdoor_open.json","weathered_copper_trapdoor_top.json","weathered_cut_copper.json","weathered_cut_copper_slab.json","weathered_cut_copper_slab_top.json","weathered_cut_copper_stairs.json","weathered_cut_copper_stairs_inner.json","weathered_cut_copper_stairs_outer.json","weeping_vines.json","weeping_vines_plant.json","wet_sponge.json","wheat_stage0.json","wheat_stage1.json","wheat_stage2.json","wheat_stage3.json","wheat_stage4.json","wheat_stage5.json","wheat_stage6.json","wheat_stage7.json","white_candle_cake.json","white_candle_cake_lit.json","white_candle_four_candles.json","white_candle_four_candles_lit.json","white_candle_one_candle.json","white_candle_one_candle_lit.json","white_candle_three_candles.json","white_candle_three_candles_lit.json","white_candle_two_candles.json","white_candle_two_candles_lit.json","white_carpet.json","white_concrete.json","white_concrete_powder.json","white_glazed_terracotta.json","white_shulker_box.json","white_stained_glass.json","white_stained_glass_pane_noside.json","white_stained_glass_pane_noside_alt.json","white_stained_glass_pane_post.json","white_stained_glass_pane_side.json","white_stained_glass_pane_side_alt.json","white_terracotta.json","white_tulip.json","white_wool.json","wildflowers_1.json","wildflowers_2.json","wildflowers_3.json","wildflowers_4.json","wither_rose.json","yellow_candle_cake.json","yellow_candle_cake_lit.json","yellow_candle_four_candles.json","yellow_candle_four_candles_lit.json","yellow_candle_one_candle.json","yellow_candle_one_candle_lit.json","yellow_candle_three_candles.json","yellow_candle_three_candles_lit.json","yellow_candle_two_candles.json","yellow_candle_two_candles_lit.json","yellow_carpet.json","yellow_concrete.json","yellow_concrete_powder.json","yellow_glazed_terracotta.json","yellow_shulker_box.json","yellow_stained_glass.json","yellow_stained_glass_pane_noside.json","yellow_stained_glass_pane_noside_alt.json","yellow_stained_glass_pane_post.json","yellow_stained_glass_pane_side.json","yellow_stained_glass_pane_side_alt.json","yellow_terracotta.json","yellow_wool.json"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/models/item/_all.json b/common-files/src/main/resources/internal/models/item/_all.json index 7f63f8920..9cabb3ebc 100644 --- a/common-files/src/main/resources/internal/models/item/_all.json +++ b/common-files/src/main/resources/internal/models/item/_all.json @@ -1 +1 @@ -{"acacia_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/acacia_boat"}},"acacia_chest_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/acacia_chest_boat"}},"acacia_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/acacia_door"}},"acacia_hanging_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/acacia_hanging_sign"}},"acacia_sapling":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/acacia_sapling"}},"acacia_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/acacia_sign"}},"activator_rail":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/activator_rail"}},"air":{"textures":{"particle":"minecraft:missingno"}},"allay_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/allay_spawn_egg"}},"allium":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/allium"}},"amethyst_bud":{"parent":"minecraft:item/generated","display":{"firstperson_righthand":{"rotation":[0,-90,25],"translation":[0,5,0],"scale":[0.68,0.68,0.68]},"thirdperson_righthand":{"translation":[0,4,1],"scale":[0.55,0.55,0.55]},"head":{"translation":[0,14,-5]},"gui":{"translation":[0,2,0]}}},"amethyst_cluster":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/amethyst_cluster"},"display":{"head":{"translation":[0,14,-5]}}},"amethyst_shard":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/amethyst_shard"}},"angler_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/angler_pottery_sherd"}},"apple":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/apple"}},"archer_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/archer_pottery_sherd"}},"armadillo_scute":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/armadillo_scute"}},"armadillo_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/armadillo_spawn_egg"}},"armor_stand":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/armor_stand"}},"arms_up_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/arms_up_pottery_sherd"}},"arrow":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/arrow"}},"axolotl_bucket":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/axolotl_bucket"}},"axolotl_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/axolotl_spawn_egg"}},"azure_bluet":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/azure_bluet"}},"baked_potato":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/baked_potato"}},"bamboo":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/bamboo"}},"bamboo_chest_raft":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bamboo_chest_raft"}},"bamboo_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bamboo_door"}},"bamboo_hanging_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bamboo_hanging_sign"}},"bamboo_raft":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bamboo_raft"}},"bamboo_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bamboo_sign"}},"barrier":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/barrier"}},"bat_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bat_spawn_egg"}},"bee_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bee_spawn_egg"}},"beef":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/beef"}},"beetroot":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/beetroot"}},"beetroot_seeds":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/beetroot_seeds"}},"beetroot_soup":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/beetroot_soup"}},"bell":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bell"}},"big_dripleaf":{"parent":"minecraft:block/big_dripleaf","display":{"gui":{"rotation":[30,225,0],"translation":[0,-2,0],"scale":[0.625,0.625,0.625]},"fixed":{"rotation":[0,0,0],"translation":[0,0,-1],"scale":[0.5,0.5,0.5]},"thirdperson_righthand":{"rotation":[0,0,0],"translation":[0,1,0],"scale":[0.55,0.55,0.55]},"firstperson_righthand":{"rotation":[0,0,0],"translation":[1.13,0,1.13],"scale":[0.68,0.68,0.68]}}},"birch_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/birch_boat"}},"birch_chest_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/birch_chest_boat"}},"birch_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/birch_door"}},"birch_hanging_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/birch_hanging_sign"}},"birch_sapling":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/birch_sapling"}},"birch_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/birch_sign"}},"black_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/black_wool"}},"black_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/black_bundle"}},"black_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/black_bundle_open_back"}},"black_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/black_bundle_open_front"}},"black_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/black_candle"}},"black_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/black_dye"}},"black_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/black_harness"}},"black_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/black_shulker_box"}},"black_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/black_stained_glass"}},"blade_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/blade_pottery_sherd"}},"blaze_powder":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/blaze_powder"}},"blaze_rod":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/blaze_rod"}},"blaze_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/blaze_spawn_egg"}},"blue_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/blue_wool"}},"blue_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/blue_bundle"}},"blue_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/blue_bundle_open_back"}},"blue_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/blue_bundle_open_front"}},"blue_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/blue_candle"}},"blue_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/blue_dye"}},"blue_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/blue_egg"}},"blue_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/blue_harness"}},"blue_orchid":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/blue_orchid"}},"blue_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/blue_shulker_box"}},"blue_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/blue_stained_glass"}},"bogged_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bogged_spawn_egg"}},"bolt_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bolt_armor_trim_smithing_template"}},"bone":{"parent":"item/handheld","textures":{"layer0":"item/bone"},"display":{"head":{"rotation":[0,0,-45],"translation":[0,-4.5,-6.5],"scale":[1,1,1]}}},"bone_meal":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bone_meal"}},"book":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/book"}},"bordure_indented_banner_pattern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bordure_indented_banner_pattern"}},"bow":{"parent":"item/generated","textures":{"layer0":"item/bow"},"display":{"thirdperson_righthand":{"rotation":[-80,260,-40],"translation":[-1,-2,2.5],"scale":[0.9,0.9,0.9]},"thirdperson_lefthand":{"rotation":[-80,-280,40],"translation":[-1,-2,2.5],"scale":[0.9,0.9,0.9]},"firstperson_righthand":{"rotation":[0,-90,25],"translation":[1.13,3.2,1.13],"scale":[0.68,0.68,0.68]},"firstperson_lefthand":{"rotation":[0,90,-25],"translation":[1.13,3.2,1.13],"scale":[0.68,0.68,0.68]}}},"bow_pulling_0":{"parent":"minecraft:item/bow","textures":{"layer0":"minecraft:item/bow_pulling_0"}},"bow_pulling_1":{"parent":"minecraft:item/bow","textures":{"layer0":"minecraft:item/bow_pulling_1"}},"bow_pulling_2":{"parent":"minecraft:item/bow","textures":{"layer0":"minecraft:item/bow_pulling_2"}},"bowl":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bowl"}},"brain_coral":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/brain_coral"}},"brain_coral_fan":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/brain_coral_fan"}},"bread":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bread"}},"breeze_rod":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/breeze_rod"}},"breeze_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/breeze_spawn_egg"}},"brewer_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/brewer_pottery_sherd"}},"brewing_stand":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/brewing_stand"}},"brick":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/brick"}},"brown_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/brown_wool"}},"brown_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/brown_bundle"}},"brown_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/brown_bundle_open_back"}},"brown_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/brown_bundle_open_front"}},"brown_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/brown_candle"}},"brown_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/brown_dye"}},"brown_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/brown_egg"}},"brown_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/brown_harness"}},"brown_mushroom":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/brown_mushroom"}},"brown_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/brown_shulker_box"}},"brown_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/brown_stained_glass"}},"brush":{"parent":"item/generated","textures":{"layer0":"item/brush"},"display":{"firstperson_lefthand":{"rotation":[55,-85,0],"translation":[8.0,0.5,-5.5],"scale":[1.0,1.0,1.0]},"thirdperson_righthand":{"rotation":[0,0,45],"translation":[0,4,0],"scale":[0.9,0.9,0.9]},"thirdperson_lefthand":{"rotation":[0,0,-45],"translation":[0,4,0],"scale":[0.9,0.9,0.9]}}},"brush_brushing_0":{"parent":"item/generated","textures":{"layer0":"item/brush"},"display":{"firstperson_lefthand":{"rotation":[55,-85,0],"translation":[8.0,0.5,-5.5],"scale":[1.0,1.0,1.0]},"thirdperson_righthand":{"rotation":[0,0,0],"translation":[4,2,0],"scale":[0.9,0.9,0.9]},"thirdperson_lefthand":{"rotation":[0,0,0],"translation":[-4,2,0],"scale":[0.9,0.9,0.9]}}},"brush_brushing_1":{"parent":"item/generated","textures":{"layer0":"item/brush"},"display":{"firstperson_lefthand":{"rotation":[55,-85,0],"translation":[8.0,0.5,-5.5],"scale":[1.0,1.0,1.0]},"thirdperson_righthand":{"rotation":[0,0,45],"translation":[0,4,0],"scale":[0.9,0.9,0.9]},"thirdperson_lefthand":{"rotation":[0,0,-45],"translation":[0,4,0],"scale":[0.9,0.9,0.9]}}},"brush_brushing_2":{"parent":"item/generated","textures":{"layer0":"item/brush"},"display":{"firstperson_lefthand":{"rotation":[55,-85,0],"translation":[8.0,0.5,-5.5],"scale":[1.0,1.0,1.0]},"thirdperson_righthand":{"rotation":[0,0,90],"translation":[-4,2,0],"scale":[0.9,0.9,0.9]},"thirdperson_lefthand":{"rotation":[0,0,-90],"translation":[4,2,0],"scale":[0.9,0.9,0.9]}}},"bubble_coral":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/bubble_coral"}},"bubble_coral_fan":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/bubble_coral_fan"}},"bucket":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bucket"}},"bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bundle"}},"bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/bundle_open_back"}},"bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/bundle_open_front"}},"burn_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/burn_pottery_sherd"}},"bush":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/bush"}},"cactus_flower":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/cactus_flower"}},"cake":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cake"}},"camel_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/camel_spawn_egg"}},"campfire":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/campfire"}},"candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/candle"}},"carrot":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/carrot"}},"carrot_on_a_stick":{"parent":"minecraft:item/handheld_rod","textures":{"layer0":"minecraft:item/carrot_on_a_stick"}},"cat_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cat_spawn_egg"}},"cauldron":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cauldron"}},"cave_spider_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cave_spider_spawn_egg"}},"chain":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chain"}},"chainmail_boots":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_boots"}},"chainmail_boots_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_boots","layer1":"minecraft:trims/items/boots_trim_amethyst"}},"chainmail_boots_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_boots","layer1":"minecraft:trims/items/boots_trim_copper"}},"chainmail_boots_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_boots","layer1":"minecraft:trims/items/boots_trim_diamond"}},"chainmail_boots_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_boots","layer1":"minecraft:trims/items/boots_trim_emerald"}},"chainmail_boots_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_boots","layer1":"minecraft:trims/items/boots_trim_gold"}},"chainmail_boots_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_boots","layer1":"minecraft:trims/items/boots_trim_iron"}},"chainmail_boots_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_boots","layer1":"minecraft:trims/items/boots_trim_lapis"}},"chainmail_boots_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_boots","layer1":"minecraft:trims/items/boots_trim_netherite"}},"chainmail_boots_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_boots","layer1":"minecraft:trims/items/boots_trim_quartz"}},"chainmail_boots_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_boots","layer1":"minecraft:trims/items/boots_trim_redstone"}},"chainmail_boots_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_boots","layer1":"minecraft:trims/items/boots_trim_resin"}},"chainmail_chestplate":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_chestplate"}},"chainmail_chestplate_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_chestplate","layer1":"minecraft:trims/items/chestplate_trim_amethyst"}},"chainmail_chestplate_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_chestplate","layer1":"minecraft:trims/items/chestplate_trim_copper"}},"chainmail_chestplate_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_chestplate","layer1":"minecraft:trims/items/chestplate_trim_diamond"}},"chainmail_chestplate_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_chestplate","layer1":"minecraft:trims/items/chestplate_trim_emerald"}},"chainmail_chestplate_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_chestplate","layer1":"minecraft:trims/items/chestplate_trim_gold"}},"chainmail_chestplate_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_chestplate","layer1":"minecraft:trims/items/chestplate_trim_iron"}},"chainmail_chestplate_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_chestplate","layer1":"minecraft:trims/items/chestplate_trim_lapis"}},"chainmail_chestplate_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_chestplate","layer1":"minecraft:trims/items/chestplate_trim_netherite"}},"chainmail_chestplate_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_chestplate","layer1":"minecraft:trims/items/chestplate_trim_quartz"}},"chainmail_chestplate_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_chestplate","layer1":"minecraft:trims/items/chestplate_trim_redstone"}},"chainmail_chestplate_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_chestplate","layer1":"minecraft:trims/items/chestplate_trim_resin"}},"chainmail_helmet":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_helmet"}},"chainmail_helmet_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_helmet","layer1":"minecraft:trims/items/helmet_trim_amethyst"}},"chainmail_helmet_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_helmet","layer1":"minecraft:trims/items/helmet_trim_copper"}},"chainmail_helmet_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_helmet","layer1":"minecraft:trims/items/helmet_trim_diamond"}},"chainmail_helmet_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_helmet","layer1":"minecraft:trims/items/helmet_trim_emerald"}},"chainmail_helmet_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_helmet","layer1":"minecraft:trims/items/helmet_trim_gold"}},"chainmail_helmet_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_helmet","layer1":"minecraft:trims/items/helmet_trim_iron"}},"chainmail_helmet_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_helmet","layer1":"minecraft:trims/items/helmet_trim_lapis"}},"chainmail_helmet_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_helmet","layer1":"minecraft:trims/items/helmet_trim_netherite"}},"chainmail_helmet_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_helmet","layer1":"minecraft:trims/items/helmet_trim_quartz"}},"chainmail_helmet_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_helmet","layer1":"minecraft:trims/items/helmet_trim_redstone"}},"chainmail_helmet_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_helmet","layer1":"minecraft:trims/items/helmet_trim_resin"}},"chainmail_leggings":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_leggings"}},"chainmail_leggings_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_leggings","layer1":"minecraft:trims/items/leggings_trim_amethyst"}},"chainmail_leggings_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_leggings","layer1":"minecraft:trims/items/leggings_trim_copper"}},"chainmail_leggings_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_leggings","layer1":"minecraft:trims/items/leggings_trim_diamond"}},"chainmail_leggings_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_leggings","layer1":"minecraft:trims/items/leggings_trim_emerald"}},"chainmail_leggings_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_leggings","layer1":"minecraft:trims/items/leggings_trim_gold"}},"chainmail_leggings_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_leggings","layer1":"minecraft:trims/items/leggings_trim_iron"}},"chainmail_leggings_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_leggings","layer1":"minecraft:trims/items/leggings_trim_lapis"}},"chainmail_leggings_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_leggings","layer1":"minecraft:trims/items/leggings_trim_netherite"}},"chainmail_leggings_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_leggings","layer1":"minecraft:trims/items/leggings_trim_quartz"}},"chainmail_leggings_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_leggings","layer1":"minecraft:trims/items/leggings_trim_redstone"}},"chainmail_leggings_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_leggings","layer1":"minecraft:trims/items/leggings_trim_resin"}},"charcoal":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/charcoal"}},"cherry_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cherry_boat"}},"cherry_chest_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cherry_chest_boat"}},"cherry_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cherry_door"}},"cherry_hanging_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cherry_hanging_sign"}},"cherry_sapling":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/cherry_sapling"}},"cherry_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cherry_sign"}},"chest":{"parent":"minecraft:item/template_chest","textures":{"particle":"minecraft:block/oak_planks"}},"chest_minecart":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chest_minecart"}},"chicken":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chicken"}},"chicken_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chicken_spawn_egg"}},"chorus_fruit":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chorus_fruit"}},"clay_ball":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clay_ball"}},"clock_00":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_00"}},"clock_01":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_01"}},"clock_02":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_02"}},"clock_03":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_03"}},"clock_04":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_04"}},"clock_05":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_05"}},"clock_06":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_06"}},"clock_07":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_07"}},"clock_08":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_08"}},"clock_09":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_09"}},"clock_10":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_10"}},"clock_11":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_11"}},"clock_12":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_12"}},"clock_13":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_13"}},"clock_14":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_14"}},"clock_15":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_15"}},"clock_16":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_16"}},"clock_17":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_17"}},"clock_18":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_18"}},"clock_19":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_19"}},"clock_20":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_20"}},"clock_21":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_21"}},"clock_22":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_22"}},"clock_23":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_23"}},"clock_24":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_24"}},"clock_25":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_25"}},"clock_26":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_26"}},"clock_27":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_27"}},"clock_28":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_28"}},"clock_29":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_29"}},"clock_30":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_30"}},"clock_31":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_31"}},"clock_32":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_32"}},"clock_33":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_33"}},"clock_34":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_34"}},"clock_35":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_35"}},"clock_36":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_36"}},"clock_37":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_37"}},"clock_38":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_38"}},"clock_39":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_39"}},"clock_40":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_40"}},"clock_41":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_41"}},"clock_42":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_42"}},"clock_43":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_43"}},"clock_44":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_44"}},"clock_45":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_45"}},"clock_46":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_46"}},"clock_47":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_47"}},"clock_48":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_48"}},"clock_49":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_49"}},"clock_50":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_50"}},"clock_51":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_51"}},"clock_52":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_52"}},"clock_53":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_53"}},"clock_54":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_54"}},"clock_55":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_55"}},"clock_56":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_56"}},"clock_57":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_57"}},"clock_58":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_58"}},"clock_59":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_59"}},"clock_60":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_60"}},"clock_61":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_61"}},"clock_62":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_62"}},"clock_63":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_63"}},"closed_eyeblossom":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/closed_eyeblossom"}},"coal":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/coal"}},"coast_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/coast_armor_trim_smithing_template"}},"cobweb":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/cobweb"}},"cocoa_beans":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cocoa_beans"}},"cod":{"parent":"item/generated","textures":{"layer0":"item/cod"},"display":{"head":{"rotation":[0,90,-60],"translation":[-7,-4,-7],"scale":[0.8,0.8,0.8]}}},"cod_bucket":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cod_bucket"}},"cod_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cod_spawn_egg"}},"command_block_minecart":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/command_block_minecart"}},"comparator":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/comparator"}},"compass_00":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_00"}},"compass_01":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_01"}},"compass_02":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_02"}},"compass_03":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_03"}},"compass_04":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_04"}},"compass_05":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_05"}},"compass_06":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_06"}},"compass_07":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_07"}},"compass_08":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_08"}},"compass_09":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_09"}},"compass_10":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_10"}},"compass_11":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_11"}},"compass_12":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_12"}},"compass_13":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_13"}},"compass_14":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_14"}},"compass_15":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_15"}},"compass_16":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_16"}},"compass_17":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_17"}},"compass_18":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_18"}},"compass_19":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_19"}},"compass_20":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_20"}},"compass_21":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_21"}},"compass_22":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_22"}},"compass_23":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_23"}},"compass_24":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_24"}},"compass_25":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_25"}},"compass_26":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_26"}},"compass_27":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_27"}},"compass_28":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_28"}},"compass_29":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_29"}},"compass_30":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_30"}},"compass_31":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_31"}},"conduit":{"textures":{"particle":"block/conduit"},"display":{"gui":{"rotation":[30,45,0],"translation":[0,0,0],"scale":[1.0,1.0,1.0]},"ground":{"rotation":[0,0,0],"translation":[0,3,0],"scale":[0.5,0.5,0.5]},"head":{"rotation":[0,180,0],"translation":[0,0,0],"scale":[1,1,1]},"fixed":{"rotation":[0,180,0],"translation":[0,0,0],"scale":[1,1,1]},"thirdperson_righthand":{"rotation":[75,315,0],"translation":[0,2.5,0],"scale":[0.5,0.5,0.5]},"firstperson_righthand":{"rotation":[0,315,0],"translation":[0,0,0],"scale":[0.8,0.8,0.8]}}},"cooked_beef":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cooked_beef"}},"cooked_chicken":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cooked_chicken"}},"cooked_cod":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cooked_cod"}},"cooked_mutton":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cooked_mutton"}},"cooked_porkchop":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cooked_porkchop"}},"cooked_rabbit":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cooked_rabbit"}},"cooked_salmon":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cooked_salmon"}},"cookie":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cookie"}},"copper_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_door"}},"copper_ingot":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_ingot"}},"cornflower":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/cornflower"}},"cow_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cow_spawn_egg"}},"creaking_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/creaking_spawn_egg"}},"creeper_banner_pattern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/creeper_banner_pattern"}},"creeper_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/creeper_spawn_egg"}},"crimson_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/crimson_door"}},"crimson_fungus":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/crimson_fungus"}},"crimson_hanging_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/crimson_hanging_sign"}},"crimson_roots":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/crimson_roots"}},"crimson_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/crimson_sign"}},"crossbow":{"parent":"item/generated","textures":{"layer0":"item/crossbow_standby"},"display":{"thirdperson_righthand":{"rotation":[-90,0,-60],"translation":[2,0.1,-3],"scale":[0.9,0.9,0.9]},"thirdperson_lefthand":{"rotation":[-90,0,30],"translation":[2,0.1,-3],"scale":[0.9,0.9,0.9]},"firstperson_righthand":{"rotation":[-90,0,-55],"translation":[1.13,3.2,1.13],"scale":[0.68,0.68,0.68]},"firstperson_lefthand":{"rotation":[-90,0,35],"translation":[1.13,3.2,1.13],"scale":[0.68,0.68,0.68]}}},"crossbow_arrow":{"parent":"minecraft:item/crossbow","textures":{"layer0":"minecraft:item/crossbow_arrow"}},"crossbow_firework":{"parent":"minecraft:item/crossbow","textures":{"layer0":"minecraft:item/crossbow_firework"}},"crossbow_pulling_0":{"parent":"minecraft:item/crossbow","textures":{"layer0":"minecraft:item/crossbow_pulling_0"}},"crossbow_pulling_1":{"parent":"minecraft:item/crossbow","textures":{"layer0":"minecraft:item/crossbow_pulling_1"}},"crossbow_pulling_2":{"parent":"minecraft:item/crossbow","textures":{"layer0":"minecraft:item/crossbow_pulling_2"}},"cyan_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/cyan_wool"}},"cyan_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cyan_bundle"}},"cyan_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/cyan_bundle_open_back"}},"cyan_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/cyan_bundle_open_front"}},"cyan_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cyan_candle"}},"cyan_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cyan_dye"}},"cyan_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cyan_harness"}},"cyan_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/cyan_shulker_box"}},"cyan_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/cyan_stained_glass"}},"dandelion":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dandelion"}},"danger_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/danger_pottery_sherd"}},"dark_oak_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/dark_oak_boat"}},"dark_oak_chest_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/dark_oak_chest_boat"}},"dark_oak_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/dark_oak_door"}},"dark_oak_hanging_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/dark_oak_hanging_sign"}},"dark_oak_sapling":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dark_oak_sapling"}},"dark_oak_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/dark_oak_sign"}},"dead_brain_coral":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dead_brain_coral"}},"dead_brain_coral_fan":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dead_brain_coral_fan"}},"dead_bubble_coral":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dead_bubble_coral"}},"dead_bubble_coral_fan":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dead_bubble_coral_fan"}},"dead_bush":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dead_bush"}},"dead_fire_coral":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dead_fire_coral"}},"dead_fire_coral_fan":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dead_fire_coral_fan"}},"dead_horn_coral":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dead_horn_coral"}},"dead_horn_coral_fan":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dead_horn_coral_fan"}},"dead_tube_coral":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dead_tube_coral"}},"dead_tube_coral_fan":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dead_tube_coral_fan"}},"debug_stick":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/stick"}},"decorated_pot":{"gui_light":"front","textures":{"particle":"entity/decorated_pot/decorated_pot_side"},"display":{"thirdperson_righthand":{"rotation":[0,90,0],"translation":[0,2,0.5],"scale":[0.375,0.375,0.375]},"firstperson_righthand":{"rotation":[0,90,0],"translation":[0,0,0],"scale":[0.375,0.375,0.375]},"gui":{"rotation":[30,45,0],"translation":[0,0,0],"scale":[0.60,0.60,0.60]},"ground":{"rotation":[0,0,0],"translation":[0,1,0],"scale":[0.25,0.25,0.25]},"head":{"rotation":[0,180,0],"translation":[0,16,0],"scale":[1.5,1.5,1.5]},"fixed":{"rotation":[0,180,0],"translation":[0,0,0],"scale":[0.5,0.5,0.5]}}},"detector_rail":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/detector_rail"}},"diamond":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond"}},"diamond_axe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/diamond_axe"}},"diamond_boots":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_boots"}},"diamond_boots_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_boots","layer1":"minecraft:trims/items/boots_trim_amethyst"}},"diamond_boots_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_boots","layer1":"minecraft:trims/items/boots_trim_copper"}},"diamond_boots_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_boots","layer1":"minecraft:trims/items/boots_trim_diamond_darker"}},"diamond_boots_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_boots","layer1":"minecraft:trims/items/boots_trim_emerald"}},"diamond_boots_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_boots","layer1":"minecraft:trims/items/boots_trim_gold"}},"diamond_boots_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_boots","layer1":"minecraft:trims/items/boots_trim_iron"}},"diamond_boots_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_boots","layer1":"minecraft:trims/items/boots_trim_lapis"}},"diamond_boots_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_boots","layer1":"minecraft:trims/items/boots_trim_netherite"}},"diamond_boots_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_boots","layer1":"minecraft:trims/items/boots_trim_quartz"}},"diamond_boots_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_boots","layer1":"minecraft:trims/items/boots_trim_redstone"}},"diamond_boots_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_boots","layer1":"minecraft:trims/items/boots_trim_resin"}},"diamond_chestplate":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_chestplate"}},"diamond_chestplate_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_chestplate","layer1":"minecraft:trims/items/chestplate_trim_amethyst"}},"diamond_chestplate_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_chestplate","layer1":"minecraft:trims/items/chestplate_trim_copper"}},"diamond_chestplate_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_chestplate","layer1":"minecraft:trims/items/chestplate_trim_diamond_darker"}},"diamond_chestplate_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_chestplate","layer1":"minecraft:trims/items/chestplate_trim_emerald"}},"diamond_chestplate_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_chestplate","layer1":"minecraft:trims/items/chestplate_trim_gold"}},"diamond_chestplate_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_chestplate","layer1":"minecraft:trims/items/chestplate_trim_iron"}},"diamond_chestplate_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_chestplate","layer1":"minecraft:trims/items/chestplate_trim_lapis"}},"diamond_chestplate_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_chestplate","layer1":"minecraft:trims/items/chestplate_trim_netherite"}},"diamond_chestplate_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_chestplate","layer1":"minecraft:trims/items/chestplate_trim_quartz"}},"diamond_chestplate_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_chestplate","layer1":"minecraft:trims/items/chestplate_trim_redstone"}},"diamond_chestplate_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_chestplate","layer1":"minecraft:trims/items/chestplate_trim_resin"}},"diamond_helmet":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_helmet"}},"diamond_helmet_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_helmet","layer1":"minecraft:trims/items/helmet_trim_amethyst"}},"diamond_helmet_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_helmet","layer1":"minecraft:trims/items/helmet_trim_copper"}},"diamond_helmet_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_helmet","layer1":"minecraft:trims/items/helmet_trim_diamond_darker"}},"diamond_helmet_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_helmet","layer1":"minecraft:trims/items/helmet_trim_emerald"}},"diamond_helmet_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_helmet","layer1":"minecraft:trims/items/helmet_trim_gold"}},"diamond_helmet_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_helmet","layer1":"minecraft:trims/items/helmet_trim_iron"}},"diamond_helmet_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_helmet","layer1":"minecraft:trims/items/helmet_trim_lapis"}},"diamond_helmet_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_helmet","layer1":"minecraft:trims/items/helmet_trim_netherite"}},"diamond_helmet_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_helmet","layer1":"minecraft:trims/items/helmet_trim_quartz"}},"diamond_helmet_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_helmet","layer1":"minecraft:trims/items/helmet_trim_redstone"}},"diamond_helmet_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_helmet","layer1":"minecraft:trims/items/helmet_trim_resin"}},"diamond_hoe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/diamond_hoe"}},"diamond_horse_armor":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_horse_armor"}},"diamond_leggings":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_leggings"}},"diamond_leggings_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_leggings","layer1":"minecraft:trims/items/leggings_trim_amethyst"}},"diamond_leggings_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_leggings","layer1":"minecraft:trims/items/leggings_trim_copper"}},"diamond_leggings_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_leggings","layer1":"minecraft:trims/items/leggings_trim_diamond_darker"}},"diamond_leggings_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_leggings","layer1":"minecraft:trims/items/leggings_trim_emerald"}},"diamond_leggings_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_leggings","layer1":"minecraft:trims/items/leggings_trim_gold"}},"diamond_leggings_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_leggings","layer1":"minecraft:trims/items/leggings_trim_iron"}},"diamond_leggings_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_leggings","layer1":"minecraft:trims/items/leggings_trim_lapis"}},"diamond_leggings_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_leggings","layer1":"minecraft:trims/items/leggings_trim_netherite"}},"diamond_leggings_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_leggings","layer1":"minecraft:trims/items/leggings_trim_quartz"}},"diamond_leggings_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_leggings","layer1":"minecraft:trims/items/leggings_trim_redstone"}},"diamond_leggings_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_leggings","layer1":"minecraft:trims/items/leggings_trim_resin"}},"diamond_pickaxe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/diamond_pickaxe"}},"diamond_shovel":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/diamond_shovel"}},"diamond_sword":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/diamond_sword"}},"disc_fragment_5":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/disc_fragment_5"}},"dolphin_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/dolphin_spawn_egg"}},"donkey_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/donkey_spawn_egg"}},"dragon_breath":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/dragon_breath"}},"dragon_head":{"parent":"item/template_skull","display":{"gui":{"translation":[-2,2,0],"rotation":[30,45,0],"scale":[0.6,0.6,0.6]},"thirdperson_righthand":{"rotation":[0,180,0],"translation":[0,-1,2],"scale":[0.5,0.5,0.5]}}},"dried_kelp":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/dried_kelp"}},"drowned_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/drowned_spawn_egg"}},"dune_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/dune_armor_trim_smithing_template"}},"echo_shard":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/echo_shard"}},"egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/egg"}},"elder_guardian_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/elder_guardian_spawn_egg"}},"elytra":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/elytra"}},"elytra_broken":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/elytra_broken"}},"emerald":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/emerald"}},"enchanted_book":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/enchanted_book"}},"enchanted_golden_apple":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_apple"}},"end_crystal":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/end_crystal"}},"ender_chest":{"parent":"minecraft:item/template_chest","textures":{"particle":"minecraft:block/obsidian"}},"ender_dragon_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/ender_dragon_spawn_egg"}},"ender_eye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/ender_eye"}},"ender_pearl":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/ender_pearl"}},"enderman_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/enderman_spawn_egg"}},"endermite_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/endermite_spawn_egg"}},"evoker_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/evoker_spawn_egg"}},"experience_bottle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/experience_bottle"}},"explorer_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/explorer_pottery_sherd"}},"exposed_copper_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/exposed_copper_door"}},"eye_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/eye_armor_trim_smithing_template"}},"feather":{"parent":"item/generated","textures":{"layer0":"item/feather"},"display":{"head":{"rotation":[0,0,45],"translation":[-1,13,7],"scale":[1,1,1]}}},"fermented_spider_eye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/fermented_spider_eye"}},"fern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/fern"}},"field_masoned_banner_pattern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/field_masoned_banner_pattern"}},"filled_map":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/filled_map","layer1":"minecraft:item/filled_map_markings"}},"fire_charge":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/fire_charge"}},"fire_coral":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/fire_coral"}},"fire_coral_fan":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/fire_coral_fan"}},"firefly_bush":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/firefly_bush"}},"firework_rocket":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/firework_rocket"}},"firework_star":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/firework_star","layer1":"minecraft:item/firework_star_overlay"}},"fishing_rod":{"parent":"minecraft:item/handheld_rod","textures":{"layer0":"minecraft:item/fishing_rod"}},"fishing_rod_cast":{"parent":"minecraft:item/handheld_rod","textures":{"layer0":"minecraft:item/fishing_rod_cast"}},"flint":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/flint"}},"flint_and_steel":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/flint_and_steel"}},"flow_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/flow_armor_trim_smithing_template"}},"flow_banner_pattern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/flow_banner_pattern"}},"flow_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/flow_pottery_sherd"}},"flower_banner_pattern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/flower_banner_pattern"}},"flower_pot":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/flower_pot"}},"fox_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/fox_spawn_egg"}},"friend_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/friend_pottery_sherd"}},"frog_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/frog_spawn_egg"}},"frogspawn":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/frogspawn"}},"furnace_minecart":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/furnace_minecart"}},"generated":{"parent":"builtin/generated","gui_light":"front","display":{"ground":{"rotation":[0,0,0],"translation":[0,2,0],"scale":[0.5,0.5,0.5]},"head":{"rotation":[0,180,0],"translation":[0,13,7],"scale":[1,1,1]},"thirdperson_righthand":{"rotation":[0,0,0],"translation":[0,3,1],"scale":[0.55,0.55,0.55]},"firstperson_righthand":{"rotation":[0,-90,25],"translation":[1.13,3.2,1.13],"scale":[0.68,0.68,0.68]},"fixed":{"rotation":[0,180,0],"scale":[1,1,1]}}},"ghast_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/ghast_spawn_egg"}},"ghast_tear":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/ghast_tear"}},"glass_bottle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/glass_bottle"}},"glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/glass"}},"glistering_melon_slice":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/glistering_melon_slice"}},"globe_banner_pattern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/globe_banner_pattern"}},"glow_berries":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/glow_berries"}},"glow_ink_sac":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/glow_ink_sac"}},"glow_item_frame":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/glow_item_frame"}},"glow_lichen":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/glow_lichen"}},"glow_squid_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/glow_squid_spawn_egg"}},"glowstone_dust":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/glowstone_dust"}},"goat_horn":{"parent":"item/generated","textures":{"layer0":"item/goat_horn"},"display":{"thirdperson_righthand":{"rotation":[0,180,0],"translation":[0,3,1],"scale":[0.55,0.55,0.55]},"thirdperson_lefthand":{"rotation":[0,0,0],"translation":[0,3,1],"scale":[0.55,0.55,0.55]},"firstperson_righthand":{"rotation":[0,-90,25],"translation":[1.13,3.2,1.13],"scale":[0.68,0.68,0.68]},"firstperson_lefthand":{"rotation":[0,90,-25],"translation":[1.13,3.2,1.13],"scale":[0.68,0.68,0.68]}}},"goat_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/goat_spawn_egg"}},"gold_ingot":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/gold_ingot"}},"gold_nugget":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/gold_nugget"}},"golden_apple":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_apple"}},"golden_axe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/golden_axe"}},"golden_boots":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_boots"}},"golden_boots_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_boots","layer1":"minecraft:trims/items/boots_trim_amethyst"}},"golden_boots_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_boots","layer1":"minecraft:trims/items/boots_trim_copper"}},"golden_boots_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_boots","layer1":"minecraft:trims/items/boots_trim_diamond"}},"golden_boots_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_boots","layer1":"minecraft:trims/items/boots_trim_emerald"}},"golden_boots_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_boots","layer1":"minecraft:trims/items/boots_trim_gold_darker"}},"golden_boots_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_boots","layer1":"minecraft:trims/items/boots_trim_iron"}},"golden_boots_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_boots","layer1":"minecraft:trims/items/boots_trim_lapis"}},"golden_boots_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_boots","layer1":"minecraft:trims/items/boots_trim_netherite"}},"golden_boots_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_boots","layer1":"minecraft:trims/items/boots_trim_quartz"}},"golden_boots_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_boots","layer1":"minecraft:trims/items/boots_trim_redstone"}},"golden_boots_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_boots","layer1":"minecraft:trims/items/boots_trim_resin"}},"golden_carrot":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_carrot"}},"golden_chestplate":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_chestplate"}},"golden_chestplate_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_chestplate","layer1":"minecraft:trims/items/chestplate_trim_amethyst"}},"golden_chestplate_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_chestplate","layer1":"minecraft:trims/items/chestplate_trim_copper"}},"golden_chestplate_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_chestplate","layer1":"minecraft:trims/items/chestplate_trim_diamond"}},"golden_chestplate_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_chestplate","layer1":"minecraft:trims/items/chestplate_trim_emerald"}},"golden_chestplate_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_chestplate","layer1":"minecraft:trims/items/chestplate_trim_gold_darker"}},"golden_chestplate_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_chestplate","layer1":"minecraft:trims/items/chestplate_trim_iron"}},"golden_chestplate_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_chestplate","layer1":"minecraft:trims/items/chestplate_trim_lapis"}},"golden_chestplate_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_chestplate","layer1":"minecraft:trims/items/chestplate_trim_netherite"}},"golden_chestplate_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_chestplate","layer1":"minecraft:trims/items/chestplate_trim_quartz"}},"golden_chestplate_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_chestplate","layer1":"minecraft:trims/items/chestplate_trim_redstone"}},"golden_chestplate_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_chestplate","layer1":"minecraft:trims/items/chestplate_trim_resin"}},"golden_helmet":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_helmet"}},"golden_helmet_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_helmet","layer1":"minecraft:trims/items/helmet_trim_amethyst"}},"golden_helmet_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_helmet","layer1":"minecraft:trims/items/helmet_trim_copper"}},"golden_helmet_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_helmet","layer1":"minecraft:trims/items/helmet_trim_diamond"}},"golden_helmet_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_helmet","layer1":"minecraft:trims/items/helmet_trim_emerald"}},"golden_helmet_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_helmet","layer1":"minecraft:trims/items/helmet_trim_gold_darker"}},"golden_helmet_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_helmet","layer1":"minecraft:trims/items/helmet_trim_iron"}},"golden_helmet_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_helmet","layer1":"minecraft:trims/items/helmet_trim_lapis"}},"golden_helmet_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_helmet","layer1":"minecraft:trims/items/helmet_trim_netherite"}},"golden_helmet_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_helmet","layer1":"minecraft:trims/items/helmet_trim_quartz"}},"golden_helmet_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_helmet","layer1":"minecraft:trims/items/helmet_trim_redstone"}},"golden_helmet_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_helmet","layer1":"minecraft:trims/items/helmet_trim_resin"}},"golden_hoe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/golden_hoe"}},"golden_horse_armor":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_horse_armor"}},"golden_leggings":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_leggings"}},"golden_leggings_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_leggings","layer1":"minecraft:trims/items/leggings_trim_amethyst"}},"golden_leggings_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_leggings","layer1":"minecraft:trims/items/leggings_trim_copper"}},"golden_leggings_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_leggings","layer1":"minecraft:trims/items/leggings_trim_diamond"}},"golden_leggings_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_leggings","layer1":"minecraft:trims/items/leggings_trim_emerald"}},"golden_leggings_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_leggings","layer1":"minecraft:trims/items/leggings_trim_gold_darker"}},"golden_leggings_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_leggings","layer1":"minecraft:trims/items/leggings_trim_iron"}},"golden_leggings_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_leggings","layer1":"minecraft:trims/items/leggings_trim_lapis"}},"golden_leggings_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_leggings","layer1":"minecraft:trims/items/leggings_trim_netherite"}},"golden_leggings_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_leggings","layer1":"minecraft:trims/items/leggings_trim_quartz"}},"golden_leggings_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_leggings","layer1":"minecraft:trims/items/leggings_trim_redstone"}},"golden_leggings_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_leggings","layer1":"minecraft:trims/items/leggings_trim_resin"}},"golden_pickaxe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/golden_pickaxe"}},"golden_shovel":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/golden_shovel"}},"golden_sword":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/golden_sword"}},"gray_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/gray_wool"}},"gray_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/gray_bundle"}},"gray_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/gray_bundle_open_back"}},"gray_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/gray_bundle_open_front"}},"gray_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/gray_candle"}},"gray_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/gray_dye"}},"gray_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/gray_harness"}},"gray_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/gray_shulker_box"}},"gray_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/gray_stained_glass"}},"green_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/green_wool"}},"green_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/green_bundle"}},"green_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/green_bundle_open_back"}},"green_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/green_bundle_open_front"}},"green_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/green_candle"}},"green_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/green_dye"}},"green_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/green_harness"}},"green_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/green_shulker_box"}},"green_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/green_stained_glass"}},"guardian_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/guardian_spawn_egg"}},"gunpowder":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/gunpowder"}},"guster_banner_pattern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/guster_banner_pattern"}},"guster_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/guster_pottery_sherd"}},"handheld":{"parent":"item/generated","display":{"thirdperson_righthand":{"rotation":[0,-90,55],"translation":[0,4.0,0.5],"scale":[0.85,0.85,0.85]},"thirdperson_lefthand":{"rotation":[0,90,-55],"translation":[0,4.0,0.5],"scale":[0.85,0.85,0.85]},"firstperson_righthand":{"rotation":[0,-90,25],"translation":[1.13,3.2,1.13],"scale":[0.68,0.68,0.68]},"firstperson_lefthand":{"rotation":[0,90,-25],"translation":[1.13,3.2,1.13],"scale":[0.68,0.68,0.68]}}},"handheld_mace":{"parent":"item/handheld","display":{"thirdperson_righthand":{"rotation":[0,-90,55],"translation":[0,4.0,1],"scale":[1,1,1]},"thirdperson_lefthand":{"rotation":[0,90,-55],"translation":[0,4.0,1],"scale":[1,1,1]},"firstperson_righthand":{"rotation":[0,-90,25],"translation":[0,3,0.8],"scale":[0.9,0.9,0.9]},"firstperson_lefthand":{"rotation":[0,90,-25],"translation":[0,3,0.8],"scale":[0.9,0.9,0.9]}}},"handheld_rod":{"parent":"item/handheld","display":{"thirdperson_righthand":{"rotation":[0,90,55],"translation":[0,4.0,2.5],"scale":[0.85,0.85,0.85]},"thirdperson_lefthand":{"rotation":[0,-90,-55],"translation":[0,4.0,2.5],"scale":[0.85,0.85,0.85]},"firstperson_righthand":{"rotation":[0,90,25],"translation":[0,1.6,0.8],"scale":[0.68,0.68,0.68]},"firstperson_lefthand":{"rotation":[0,-90,-25],"translation":[0,1.6,0.8],"scale":[0.68,0.68,0.68]}}},"hanging_roots":{"parent":"item/generated","textures":{"layer0":"minecraft:block/hanging_roots"},"display":{"thirdperson_righthand":{"rotation":[0,0,0],"translation":[0,0,1],"scale":[0.55,0.55,0.55]},"firstperson_righthand":{"rotation":[0,-90,25],"translation":[1.13,0,1.13],"scale":[0.68,0.68,0.68]}}},"happy_ghast_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/happy_ghast_spawn_egg"}},"heart_of_the_sea":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/heart_of_the_sea"}},"heart_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/heart_pottery_sherd"}},"heartbreak_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/heartbreak_pottery_sherd"}},"hoglin_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/hoglin_spawn_egg"}},"honey_bottle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/honey_bottle"}},"honeycomb":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/honeycomb"}},"hopper":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/hopper"}},"hopper_minecart":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/hopper_minecart"}},"horn_coral":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/horn_coral"}},"horn_coral_fan":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/horn_coral_fan"}},"horse_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/horse_spawn_egg"}},"host_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/host_armor_trim_smithing_template"}},"howl_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/howl_pottery_sherd"}},"husk_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/husk_spawn_egg"}},"ink_sac":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/ink_sac"}},"iron_axe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/iron_axe"}},"iron_bars":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/iron_bars"}},"iron_boots":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_boots"}},"iron_boots_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_boots","layer1":"minecraft:trims/items/boots_trim_amethyst"}},"iron_boots_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_boots","layer1":"minecraft:trims/items/boots_trim_copper"}},"iron_boots_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_boots","layer1":"minecraft:trims/items/boots_trim_diamond"}},"iron_boots_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_boots","layer1":"minecraft:trims/items/boots_trim_emerald"}},"iron_boots_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_boots","layer1":"minecraft:trims/items/boots_trim_gold"}},"iron_boots_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_boots","layer1":"minecraft:trims/items/boots_trim_iron_darker"}},"iron_boots_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_boots","layer1":"minecraft:trims/items/boots_trim_lapis"}},"iron_boots_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_boots","layer1":"minecraft:trims/items/boots_trim_netherite"}},"iron_boots_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_boots","layer1":"minecraft:trims/items/boots_trim_quartz"}},"iron_boots_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_boots","layer1":"minecraft:trims/items/boots_trim_redstone"}},"iron_boots_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_boots","layer1":"minecraft:trims/items/boots_trim_resin"}},"iron_chestplate":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chestplate"}},"iron_chestplate_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chestplate","layer1":"minecraft:trims/items/chestplate_trim_amethyst"}},"iron_chestplate_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chestplate","layer1":"minecraft:trims/items/chestplate_trim_copper"}},"iron_chestplate_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chestplate","layer1":"minecraft:trims/items/chestplate_trim_diamond"}},"iron_chestplate_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chestplate","layer1":"minecraft:trims/items/chestplate_trim_emerald"}},"iron_chestplate_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chestplate","layer1":"minecraft:trims/items/chestplate_trim_gold"}},"iron_chestplate_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chestplate","layer1":"minecraft:trims/items/chestplate_trim_iron_darker"}},"iron_chestplate_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chestplate","layer1":"minecraft:trims/items/chestplate_trim_lapis"}},"iron_chestplate_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chestplate","layer1":"minecraft:trims/items/chestplate_trim_netherite"}},"iron_chestplate_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chestplate","layer1":"minecraft:trims/items/chestplate_trim_quartz"}},"iron_chestplate_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chestplate","layer1":"minecraft:trims/items/chestplate_trim_redstone"}},"iron_chestplate_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chestplate","layer1":"minecraft:trims/items/chestplate_trim_resin"}},"iron_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_door"}},"iron_golem_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_golem_spawn_egg"}},"iron_helmet":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_helmet"}},"iron_helmet_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_helmet","layer1":"minecraft:trims/items/helmet_trim_amethyst"}},"iron_helmet_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_helmet","layer1":"minecraft:trims/items/helmet_trim_copper"}},"iron_helmet_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_helmet","layer1":"minecraft:trims/items/helmet_trim_diamond"}},"iron_helmet_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_helmet","layer1":"minecraft:trims/items/helmet_trim_emerald"}},"iron_helmet_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_helmet","layer1":"minecraft:trims/items/helmet_trim_gold"}},"iron_helmet_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_helmet","layer1":"minecraft:trims/items/helmet_trim_iron_darker"}},"iron_helmet_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_helmet","layer1":"minecraft:trims/items/helmet_trim_lapis"}},"iron_helmet_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_helmet","layer1":"minecraft:trims/items/helmet_trim_netherite"}},"iron_helmet_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_helmet","layer1":"minecraft:trims/items/helmet_trim_quartz"}},"iron_helmet_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_helmet","layer1":"minecraft:trims/items/helmet_trim_redstone"}},"iron_helmet_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_helmet","layer1":"minecraft:trims/items/helmet_trim_resin"}},"iron_hoe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/iron_hoe"}},"iron_horse_armor":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_horse_armor"}},"iron_ingot":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_ingot"}},"iron_leggings":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_leggings"}},"iron_leggings_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_leggings","layer1":"minecraft:trims/items/leggings_trim_amethyst"}},"iron_leggings_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_leggings","layer1":"minecraft:trims/items/leggings_trim_copper"}},"iron_leggings_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_leggings","layer1":"minecraft:trims/items/leggings_trim_diamond"}},"iron_leggings_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_leggings","layer1":"minecraft:trims/items/leggings_trim_emerald"}},"iron_leggings_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_leggings","layer1":"minecraft:trims/items/leggings_trim_gold"}},"iron_leggings_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_leggings","layer1":"minecraft:trims/items/leggings_trim_iron_darker"}},"iron_leggings_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_leggings","layer1":"minecraft:trims/items/leggings_trim_lapis"}},"iron_leggings_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_leggings","layer1":"minecraft:trims/items/leggings_trim_netherite"}},"iron_leggings_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_leggings","layer1":"minecraft:trims/items/leggings_trim_quartz"}},"iron_leggings_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_leggings","layer1":"minecraft:trims/items/leggings_trim_redstone"}},"iron_leggings_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_leggings","layer1":"minecraft:trims/items/leggings_trim_resin"}},"iron_nugget":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_nugget"}},"iron_pickaxe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/iron_pickaxe"}},"iron_shovel":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/iron_shovel"}},"iron_sword":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/iron_sword"}},"item_frame":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/item_frame"}},"jungle_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/jungle_boat"}},"jungle_chest_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/jungle_chest_boat"}},"jungle_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/jungle_door"}},"jungle_hanging_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/jungle_hanging_sign"}},"jungle_sapling":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/jungle_sapling"}},"jungle_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/jungle_sign"}},"kelp":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/kelp"}},"knowledge_book":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/knowledge_book"}},"ladder":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/ladder"}},"lantern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/lantern"}},"lapis_lazuli":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/lapis_lazuli"}},"large_amethyst_bud":{"parent":"item/amethyst_bud","textures":{"layer0":"minecraft:block/large_amethyst_bud"},"display":{"fixed":{"translation":[0,4,0]}}},"large_fern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/large_fern_top"}},"lava_bucket":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/lava_bucket"}},"lead":{"parent":"item/generated","textures":{"layer0":"item/lead"},"display":{"head":{"rotation":[0,0,0],"translation":[2.75,-2.75,-6.5],"scale":[0.8,0.8,0.8]}}},"leaf_litter":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leaf_litter"}},"leather":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather"}},"leather_boots":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_boots","layer1":"minecraft:item/leather_boots_overlay"}},"leather_boots_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_boots","layer1":"minecraft:item/leather_boots_overlay","layer2":"minecraft:trims/items/boots_trim_amethyst"}},"leather_boots_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_boots","layer1":"minecraft:item/leather_boots_overlay","layer2":"minecraft:trims/items/boots_trim_copper"}},"leather_boots_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_boots","layer1":"minecraft:item/leather_boots_overlay","layer2":"minecraft:trims/items/boots_trim_diamond"}},"leather_boots_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_boots","layer1":"minecraft:item/leather_boots_overlay","layer2":"minecraft:trims/items/boots_trim_emerald"}},"leather_boots_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_boots","layer1":"minecraft:item/leather_boots_overlay","layer2":"minecraft:trims/items/boots_trim_gold"}},"leather_boots_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_boots","layer1":"minecraft:item/leather_boots_overlay","layer2":"minecraft:trims/items/boots_trim_iron"}},"leather_boots_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_boots","layer1":"minecraft:item/leather_boots_overlay","layer2":"minecraft:trims/items/boots_trim_lapis"}},"leather_boots_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_boots","layer1":"minecraft:item/leather_boots_overlay","layer2":"minecraft:trims/items/boots_trim_netherite"}},"leather_boots_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_boots","layer1":"minecraft:item/leather_boots_overlay","layer2":"minecraft:trims/items/boots_trim_quartz"}},"leather_boots_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_boots","layer1":"minecraft:item/leather_boots_overlay","layer2":"minecraft:trims/items/boots_trim_redstone"}},"leather_boots_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_boots","layer1":"minecraft:item/leather_boots_overlay","layer2":"minecraft:trims/items/boots_trim_resin"}},"leather_chestplate":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_chestplate","layer1":"minecraft:item/leather_chestplate_overlay"}},"leather_chestplate_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_chestplate","layer1":"minecraft:item/leather_chestplate_overlay","layer2":"minecraft:trims/items/chestplate_trim_amethyst"}},"leather_chestplate_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_chestplate","layer1":"minecraft:item/leather_chestplate_overlay","layer2":"minecraft:trims/items/chestplate_trim_copper"}},"leather_chestplate_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_chestplate","layer1":"minecraft:item/leather_chestplate_overlay","layer2":"minecraft:trims/items/chestplate_trim_diamond"}},"leather_chestplate_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_chestplate","layer1":"minecraft:item/leather_chestplate_overlay","layer2":"minecraft:trims/items/chestplate_trim_emerald"}},"leather_chestplate_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_chestplate","layer1":"minecraft:item/leather_chestplate_overlay","layer2":"minecraft:trims/items/chestplate_trim_gold"}},"leather_chestplate_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_chestplate","layer1":"minecraft:item/leather_chestplate_overlay","layer2":"minecraft:trims/items/chestplate_trim_iron"}},"leather_chestplate_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_chestplate","layer1":"minecraft:item/leather_chestplate_overlay","layer2":"minecraft:trims/items/chestplate_trim_lapis"}},"leather_chestplate_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_chestplate","layer1":"minecraft:item/leather_chestplate_overlay","layer2":"minecraft:trims/items/chestplate_trim_netherite"}},"leather_chestplate_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_chestplate","layer1":"minecraft:item/leather_chestplate_overlay","layer2":"minecraft:trims/items/chestplate_trim_quartz"}},"leather_chestplate_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_chestplate","layer1":"minecraft:item/leather_chestplate_overlay","layer2":"minecraft:trims/items/chestplate_trim_redstone"}},"leather_chestplate_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_chestplate","layer1":"minecraft:item/leather_chestplate_overlay","layer2":"minecraft:trims/items/chestplate_trim_resin"}},"leather_helmet":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_helmet","layer1":"minecraft:item/leather_helmet_overlay"}},"leather_helmet_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_helmet","layer1":"minecraft:item/leather_helmet_overlay","layer2":"minecraft:trims/items/helmet_trim_amethyst"}},"leather_helmet_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_helmet","layer1":"minecraft:item/leather_helmet_overlay","layer2":"minecraft:trims/items/helmet_trim_copper"}},"leather_helmet_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_helmet","layer1":"minecraft:item/leather_helmet_overlay","layer2":"minecraft:trims/items/helmet_trim_diamond"}},"leather_helmet_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_helmet","layer1":"minecraft:item/leather_helmet_overlay","layer2":"minecraft:trims/items/helmet_trim_emerald"}},"leather_helmet_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_helmet","layer1":"minecraft:item/leather_helmet_overlay","layer2":"minecraft:trims/items/helmet_trim_gold"}},"leather_helmet_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_helmet","layer1":"minecraft:item/leather_helmet_overlay","layer2":"minecraft:trims/items/helmet_trim_iron"}},"leather_helmet_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_helmet","layer1":"minecraft:item/leather_helmet_overlay","layer2":"minecraft:trims/items/helmet_trim_lapis"}},"leather_helmet_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_helmet","layer1":"minecraft:item/leather_helmet_overlay","layer2":"minecraft:trims/items/helmet_trim_netherite"}},"leather_helmet_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_helmet","layer1":"minecraft:item/leather_helmet_overlay","layer2":"minecraft:trims/items/helmet_trim_quartz"}},"leather_helmet_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_helmet","layer1":"minecraft:item/leather_helmet_overlay","layer2":"minecraft:trims/items/helmet_trim_redstone"}},"leather_helmet_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_helmet","layer1":"minecraft:item/leather_helmet_overlay","layer2":"minecraft:trims/items/helmet_trim_resin"}},"leather_horse_armor":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_horse_armor"}},"leather_leggings":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_leggings","layer1":"minecraft:item/leather_leggings_overlay"}},"leather_leggings_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_leggings","layer1":"minecraft:item/leather_leggings_overlay","layer2":"minecraft:trims/items/leggings_trim_amethyst"}},"leather_leggings_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_leggings","layer1":"minecraft:item/leather_leggings_overlay","layer2":"minecraft:trims/items/leggings_trim_copper"}},"leather_leggings_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_leggings","layer1":"minecraft:item/leather_leggings_overlay","layer2":"minecraft:trims/items/leggings_trim_diamond"}},"leather_leggings_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_leggings","layer1":"minecraft:item/leather_leggings_overlay","layer2":"minecraft:trims/items/leggings_trim_emerald"}},"leather_leggings_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_leggings","layer1":"minecraft:item/leather_leggings_overlay","layer2":"minecraft:trims/items/leggings_trim_gold"}},"leather_leggings_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_leggings","layer1":"minecraft:item/leather_leggings_overlay","layer2":"minecraft:trims/items/leggings_trim_iron"}},"leather_leggings_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_leggings","layer1":"minecraft:item/leather_leggings_overlay","layer2":"minecraft:trims/items/leggings_trim_lapis"}},"leather_leggings_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_leggings","layer1":"minecraft:item/leather_leggings_overlay","layer2":"minecraft:trims/items/leggings_trim_netherite"}},"leather_leggings_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_leggings","layer1":"minecraft:item/leather_leggings_overlay","layer2":"minecraft:trims/items/leggings_trim_quartz"}},"leather_leggings_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_leggings","layer1":"minecraft:item/leather_leggings_overlay","layer2":"minecraft:trims/items/leggings_trim_redstone"}},"leather_leggings_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_leggings","layer1":"minecraft:item/leather_leggings_overlay","layer2":"minecraft:trims/items/leggings_trim_resin"}},"lever":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/lever"}},"light":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light"}},"light_00":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_00"}},"light_01":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_01"}},"light_02":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_02"}},"light_03":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_03"}},"light_04":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_04"}},"light_05":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_05"}},"light_06":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_06"}},"light_07":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_07"}},"light_08":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_08"}},"light_09":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_09"}},"light_10":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_10"}},"light_11":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_11"}},"light_12":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_12"}},"light_13":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_13"}},"light_14":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_14"}},"light_15":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_15"}},"light_blue_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/light_blue_wool"}},"light_blue_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_blue_bundle"}},"light_blue_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/light_blue_bundle_open_back"}},"light_blue_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/light_blue_bundle_open_front"}},"light_blue_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_blue_candle"}},"light_blue_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_blue_dye"}},"light_blue_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_blue_harness"}},"light_blue_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/light_blue_shulker_box"}},"light_blue_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/light_blue_stained_glass"}},"light_gray_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/light_gray_wool"}},"light_gray_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_gray_bundle"}},"light_gray_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/light_gray_bundle_open_back"}},"light_gray_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/light_gray_bundle_open_front"}},"light_gray_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_gray_candle"}},"light_gray_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_gray_dye"}},"light_gray_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_gray_harness"}},"light_gray_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/light_gray_shulker_box"}},"light_gray_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/light_gray_stained_glass"}},"lilac":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/lilac_top"}},"lily_of_the_valley":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/lily_of_the_valley"}},"lily_pad":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/lily_pad"}},"lime_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/lime_wool"}},"lime_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/lime_bundle"}},"lime_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/lime_bundle_open_back"}},"lime_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/lime_bundle_open_front"}},"lime_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/lime_candle"}},"lime_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/lime_dye"}},"lime_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/lime_harness"}},"lime_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/lime_shulker_box"}},"lime_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/lime_stained_glass"}},"lingering_potion":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/potion_overlay","layer1":"minecraft:item/lingering_potion"}},"llama_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/llama_spawn_egg"}},"mace":{"parent":"minecraft:item/handheld_mace","textures":{"layer0":"minecraft:item/mace"}},"magenta_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/magenta_wool"}},"magenta_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/magenta_bundle"}},"magenta_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/magenta_bundle_open_back"}},"magenta_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/magenta_bundle_open_front"}},"magenta_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/magenta_candle"}},"magenta_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/magenta_dye"}},"magenta_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/magenta_harness"}},"magenta_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/magenta_shulker_box"}},"magenta_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/magenta_stained_glass"}},"magma_cream":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/magma_cream"}},"magma_cube_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/magma_cube_spawn_egg"}},"mangrove_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/mangrove_boat"}},"mangrove_chest_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/mangrove_chest_boat"}},"mangrove_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/mangrove_door"}},"mangrove_hanging_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/mangrove_hanging_sign"}},"mangrove_propagule":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/mangrove_propagule"}},"mangrove_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/mangrove_sign"}},"map":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/map"}},"medium_amethyst_bud":{"parent":"item/amethyst_bud","textures":{"layer0":"minecraft:block/medium_amethyst_bud"},"display":{"fixed":{"translation":[0,6,0]}}},"melon_seeds":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/melon_seeds"}},"melon_slice":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/melon_slice"}},"milk_bucket":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/milk_bucket"}},"minecart":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/minecart"}},"miner_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/miner_pottery_sherd"}},"mojang_banner_pattern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/mojang_banner_pattern"}},"mooshroom_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/mooshroom_spawn_egg"}},"mourner_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/mourner_pottery_sherd"}},"mule_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/mule_spawn_egg"}},"mushroom_stew":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/mushroom_stew"}},"music_disc_11":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_11"}},"music_disc_13":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_13"}},"music_disc_5":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_5"}},"music_disc_blocks":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_blocks"}},"music_disc_cat":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_cat"}},"music_disc_chirp":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_chirp"}},"music_disc_creator":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_creator"}},"music_disc_creator_music_box":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_creator_music_box"}},"music_disc_far":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_far"}},"music_disc_lava_chicken":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_lava_chicken"}},"music_disc_mall":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_mall"}},"music_disc_mellohi":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_mellohi"}},"music_disc_otherside":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_otherside"}},"music_disc_pigstep":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_pigstep"}},"music_disc_precipice":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_precipice"}},"music_disc_relic":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_relic"}},"music_disc_stal":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_stal"}},"music_disc_strad":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_strad"}},"music_disc_tears":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_tears"}},"music_disc_wait":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_wait"}},"music_disc_ward":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_ward"}},"mutton":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/mutton"}},"name_tag":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/name_tag"}},"nautilus_shell":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/nautilus_shell"}},"nether_brick":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/nether_brick"}},"nether_sprouts":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/nether_sprouts"}},"nether_star":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/nether_star"}},"nether_wart":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/nether_wart"}},"netherite_axe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/netherite_axe"}},"netherite_boots":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_boots"}},"netherite_boots_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_boots","layer1":"minecraft:trims/items/boots_trim_amethyst"}},"netherite_boots_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_boots","layer1":"minecraft:trims/items/boots_trim_copper"}},"netherite_boots_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_boots","layer1":"minecraft:trims/items/boots_trim_diamond"}},"netherite_boots_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_boots","layer1":"minecraft:trims/items/boots_trim_emerald"}},"netherite_boots_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_boots","layer1":"minecraft:trims/items/boots_trim_gold"}},"netherite_boots_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_boots","layer1":"minecraft:trims/items/boots_trim_iron"}},"netherite_boots_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_boots","layer1":"minecraft:trims/items/boots_trim_lapis"}},"netherite_boots_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_boots","layer1":"minecraft:trims/items/boots_trim_netherite_darker"}},"netherite_boots_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_boots","layer1":"minecraft:trims/items/boots_trim_quartz"}},"netherite_boots_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_boots","layer1":"minecraft:trims/items/boots_trim_redstone"}},"netherite_boots_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_boots","layer1":"minecraft:trims/items/boots_trim_resin"}},"netherite_chestplate":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_chestplate"}},"netherite_chestplate_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_chestplate","layer1":"minecraft:trims/items/chestplate_trim_amethyst"}},"netherite_chestplate_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_chestplate","layer1":"minecraft:trims/items/chestplate_trim_copper"}},"netherite_chestplate_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_chestplate","layer1":"minecraft:trims/items/chestplate_trim_diamond"}},"netherite_chestplate_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_chestplate","layer1":"minecraft:trims/items/chestplate_trim_emerald"}},"netherite_chestplate_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_chestplate","layer1":"minecraft:trims/items/chestplate_trim_gold"}},"netherite_chestplate_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_chestplate","layer1":"minecraft:trims/items/chestplate_trim_iron"}},"netherite_chestplate_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_chestplate","layer1":"minecraft:trims/items/chestplate_trim_lapis"}},"netherite_chestplate_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_chestplate","layer1":"minecraft:trims/items/chestplate_trim_netherite_darker"}},"netherite_chestplate_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_chestplate","layer1":"minecraft:trims/items/chestplate_trim_quartz"}},"netherite_chestplate_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_chestplate","layer1":"minecraft:trims/items/chestplate_trim_redstone"}},"netherite_chestplate_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_chestplate","layer1":"minecraft:trims/items/chestplate_trim_resin"}},"netherite_helmet":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_helmet"}},"netherite_helmet_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_helmet","layer1":"minecraft:trims/items/helmet_trim_amethyst"}},"netherite_helmet_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_helmet","layer1":"minecraft:trims/items/helmet_trim_copper"}},"netherite_helmet_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_helmet","layer1":"minecraft:trims/items/helmet_trim_diamond"}},"netherite_helmet_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_helmet","layer1":"minecraft:trims/items/helmet_trim_emerald"}},"netherite_helmet_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_helmet","layer1":"minecraft:trims/items/helmet_trim_gold"}},"netherite_helmet_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_helmet","layer1":"minecraft:trims/items/helmet_trim_iron"}},"netherite_helmet_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_helmet","layer1":"minecraft:trims/items/helmet_trim_lapis"}},"netherite_helmet_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_helmet","layer1":"minecraft:trims/items/helmet_trim_netherite_darker"}},"netherite_helmet_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_helmet","layer1":"minecraft:trims/items/helmet_trim_quartz"}},"netherite_helmet_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_helmet","layer1":"minecraft:trims/items/helmet_trim_redstone"}},"netherite_helmet_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_helmet","layer1":"minecraft:trims/items/helmet_trim_resin"}},"netherite_hoe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/netherite_hoe"}},"netherite_ingot":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_ingot"}},"netherite_leggings":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_leggings"}},"netherite_leggings_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_leggings","layer1":"minecraft:trims/items/leggings_trim_amethyst"}},"netherite_leggings_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_leggings","layer1":"minecraft:trims/items/leggings_trim_copper"}},"netherite_leggings_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_leggings","layer1":"minecraft:trims/items/leggings_trim_diamond"}},"netherite_leggings_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_leggings","layer1":"minecraft:trims/items/leggings_trim_emerald"}},"netherite_leggings_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_leggings","layer1":"minecraft:trims/items/leggings_trim_gold"}},"netherite_leggings_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_leggings","layer1":"minecraft:trims/items/leggings_trim_iron"}},"netherite_leggings_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_leggings","layer1":"minecraft:trims/items/leggings_trim_lapis"}},"netherite_leggings_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_leggings","layer1":"minecraft:trims/items/leggings_trim_netherite_darker"}},"netherite_leggings_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_leggings","layer1":"minecraft:trims/items/leggings_trim_quartz"}},"netherite_leggings_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_leggings","layer1":"minecraft:trims/items/leggings_trim_redstone"}},"netherite_leggings_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_leggings","layer1":"minecraft:trims/items/leggings_trim_resin"}},"netherite_pickaxe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/netherite_pickaxe"}},"netherite_scrap":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_scrap"}},"netherite_shovel":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/netherite_shovel"}},"netherite_sword":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/netherite_sword"}},"netherite_upgrade_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_upgrade_smithing_template"}},"oak_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/oak_boat"}},"oak_chest_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/oak_chest_boat"}},"oak_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/oak_door"}},"oak_hanging_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/oak_hanging_sign"}},"oak_sapling":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/oak_sapling"}},"oak_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/oak_sign"}},"ocelot_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/ocelot_spawn_egg"}},"ominous_bottle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/ominous_bottle"}},"ominous_trial_key":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/ominous_trial_key"}},"open_eyeblossom":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/open_eyeblossom","layer1":"minecraft:block/open_eyeblossom_emissive"}},"orange_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/orange_wool"}},"orange_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/orange_bundle"}},"orange_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/orange_bundle_open_back"}},"orange_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/orange_bundle_open_front"}},"orange_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/orange_candle"}},"orange_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/orange_dye"}},"orange_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/orange_harness"}},"orange_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/orange_shulker_box"}},"orange_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/orange_stained_glass"}},"orange_tulip":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/orange_tulip"}},"oxeye_daisy":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/oxeye_daisy"}},"oxidized_copper_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/oxidized_copper_door"}},"painting":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/painting"}},"pale_hanging_moss":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/pale_hanging_moss"}},"pale_oak_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pale_oak_boat"}},"pale_oak_chest_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pale_oak_chest_boat"}},"pale_oak_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pale_oak_door"}},"pale_oak_hanging_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pale_oak_hanging_sign"}},"pale_oak_sapling":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/pale_oak_sapling"}},"pale_oak_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pale_oak_sign"}},"panda_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/panda_spawn_egg"}},"paper":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/paper"}},"parrot_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/parrot_spawn_egg"}},"peony":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/peony_top"}},"phantom_membrane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/phantom_membrane"}},"phantom_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/phantom_spawn_egg"}},"pig_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pig_spawn_egg"}},"piglin_banner_pattern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/piglin_banner_pattern"}},"piglin_brute_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/piglin_brute_spawn_egg"}},"piglin_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/piglin_spawn_egg"}},"pillager_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pillager_spawn_egg"}},"pink_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/pink_wool"}},"pink_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pink_bundle"}},"pink_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/pink_bundle_open_back"}},"pink_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/pink_bundle_open_front"}},"pink_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pink_candle"}},"pink_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pink_dye"}},"pink_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pink_harness"}},"pink_petals":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pink_petals"}},"pink_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/pink_shulker_box"}},"pink_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/pink_stained_glass"}},"pink_tulip":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/pink_tulip"}},"pitcher_plant":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pitcher_plant"}},"pitcher_pod":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pitcher_pod"}},"plenty_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/plenty_pottery_sherd"}},"pointed_dripstone":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pointed_dripstone"},"display":{"thirdperson_righthand":{"rotation":[0,100,0],"translation":[-1,-1,0],"scale":[0.9,0.9,0.9]},"firstperson_righthand":{"rotation":[0,100,0],"translation":[0,-2,0],"scale":[0.9,0.9,0.9]}}},"poisonous_potato":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/poisonous_potato"}},"polar_bear_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/polar_bear_spawn_egg"}},"popped_chorus_fruit":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/popped_chorus_fruit"}},"poppy":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/poppy"}},"porkchop":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/porkchop"}},"potato":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/potato"}},"potion":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/potion_overlay","layer1":"minecraft:item/potion"}},"powder_snow_bucket":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/powder_snow_bucket"}},"powered_rail":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/powered_rail"}},"prismarine_crystals":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/prismarine_crystals"}},"prismarine_shard":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/prismarine_shard"}},"prize_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/prize_pottery_sherd"}},"pufferfish":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pufferfish"}},"pufferfish_bucket":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pufferfish_bucket"}},"pufferfish_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pufferfish_spawn_egg"}},"pumpkin_pie":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pumpkin_pie"}},"pumpkin_seeds":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pumpkin_seeds"}},"purple_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/purple_wool"}},"purple_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/purple_bundle"}},"purple_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/purple_bundle_open_back"}},"purple_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/purple_bundle_open_front"}},"purple_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/purple_candle"}},"purple_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/purple_dye"}},"purple_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/purple_harness"}},"purple_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/purple_shulker_box"}},"purple_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/purple_stained_glass"}},"quartz":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/quartz"}},"rabbit":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/rabbit"}},"rabbit_foot":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/rabbit_foot"}},"rabbit_hide":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/rabbit_hide"}},"rabbit_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/rabbit_spawn_egg"}},"rabbit_stew":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/rabbit_stew"}},"rail":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/rail"}},"raiser_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/raiser_armor_trim_smithing_template"}},"ravager_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/ravager_spawn_egg"}},"raw_copper":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/raw_copper"}},"raw_gold":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/raw_gold"}},"raw_iron":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/raw_iron"}},"recovery_compass_00":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_00"}},"recovery_compass_01":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_01"}},"recovery_compass_02":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_02"}},"recovery_compass_03":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_03"}},"recovery_compass_04":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_04"}},"recovery_compass_05":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_05"}},"recovery_compass_06":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_06"}},"recovery_compass_07":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_07"}},"recovery_compass_08":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_08"}},"recovery_compass_09":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_09"}},"recovery_compass_10":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_10"}},"recovery_compass_11":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_11"}},"recovery_compass_12":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_12"}},"recovery_compass_13":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_13"}},"recovery_compass_14":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_14"}},"recovery_compass_15":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_15"}},"recovery_compass_16":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_16"}},"recovery_compass_17":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_17"}},"recovery_compass_18":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_18"}},"recovery_compass_19":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_19"}},"recovery_compass_20":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_20"}},"recovery_compass_21":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_21"}},"recovery_compass_22":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_22"}},"recovery_compass_23":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_23"}},"recovery_compass_24":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_24"}},"recovery_compass_25":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_25"}},"recovery_compass_26":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_26"}},"recovery_compass_27":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_27"}},"recovery_compass_28":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_28"}},"recovery_compass_29":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_29"}},"recovery_compass_30":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_30"}},"recovery_compass_31":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_31"}},"red_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/red_wool"}},"red_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/red_bundle"}},"red_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/red_bundle_open_back"}},"red_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/red_bundle_open_front"}},"red_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/red_candle"}},"red_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/red_dye"}},"red_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/red_harness"}},"red_mushroom":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/red_mushroom"}},"red_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/red_shulker_box"}},"red_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/red_stained_glass"}},"red_tulip":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/red_tulip"}},"redstone":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/redstone"}},"redstone_torch":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/redstone_torch"}},"repeater":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/repeater"}},"resin_brick":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/resin_brick"}},"resin_clump":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/resin_clump"}},"rib_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/rib_armor_trim_smithing_template"}},"rose_bush":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/rose_bush_top"}},"rotten_flesh":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/rotten_flesh"}},"saddle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/saddle"}},"salmon":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/salmon"}},"salmon_bucket":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/salmon_bucket"}},"salmon_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/salmon_spawn_egg"}},"scrape_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/scrape_pottery_sherd"}},"sculk_vein":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/sculk_vein"}},"sea_pickle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/sea_pickle"}},"seagrass":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/seagrass"}},"sentry_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/sentry_armor_trim_smithing_template"}},"shaper_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/shaper_armor_trim_smithing_template"}},"sheaf_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/sheaf_pottery_sherd"}},"shears":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/shears"}},"sheep_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/sheep_spawn_egg"}},"shelter_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/shelter_pottery_sherd"}},"shield":{"gui_light":"front","textures":{"particle":"block/dark_oak_planks"},"display":{"thirdperson_righthand":{"rotation":[0,90,0],"translation":[10,6,-4],"scale":[1,1,1]},"thirdperson_lefthand":{"rotation":[0,90,0],"translation":[10,6,12],"scale":[1,1,1]},"firstperson_righthand":{"rotation":[0,180,5],"translation":[-10,2,-10],"scale":[1.25,1.25,1.25]},"firstperson_lefthand":{"rotation":[0,180,5],"translation":[10,0,-10],"scale":[1.25,1.25,1.25]},"gui":{"rotation":[15,-25,-5],"translation":[2,3,0],"scale":[0.65,0.65,0.65]},"fixed":{"rotation":[0,180,0],"translation":[-4.5,4.5,-5],"scale":[0.55,0.55,0.55]},"ground":{"rotation":[0,0,0],"translation":[2,4,2],"scale":[0.25,0.25,0.25]}}},"shield_blocking":{"gui_light":"front","textures":{"particle":"block/dark_oak_planks"},"display":{"thirdperson_righthand":{"rotation":[45,155,0],"translation":[-3.49,11,-2],"scale":[1,1,1]},"thirdperson_lefthand":{"rotation":[45,155,0],"translation":[11.51,7,2.5],"scale":[1,1,1]},"firstperson_righthand":{"rotation":[0,180,-5],"translation":[-15,5,-11],"scale":[1.25,1.25,1.25]},"firstperson_lefthand":{"rotation":[0,180,-5],"translation":[5,5,-11],"scale":[1.25,1.25,1.25]},"gui":{"rotation":[15,-25,-5],"translation":[2,3,0],"scale":[0.65,0.65,0.65]}}},"short_dry_grass":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/short_dry_grass"}},"short_grass":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/short_grass"}},"shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/shulker_box"}},"shulker_shell":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/shulker_shell"}},"shulker_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/shulker_spawn_egg"}},"silence_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/silence_armor_trim_smithing_template"}},"silverfish_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/silverfish_spawn_egg"}},"skeleton_horse_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/skeleton_horse_spawn_egg"}},"skeleton_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/skeleton_spawn_egg"}},"skull_banner_pattern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/skull_banner_pattern"}},"skull_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/skull_pottery_sherd"}},"slime_ball":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/slime_ball"}},"slime_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/slime_spawn_egg"}},"small_amethyst_bud":{"parent":"item/amethyst_bud","textures":{"layer0":"minecraft:block/small_amethyst_bud"},"display":{"firstperson_righthand":{"rotation":[0,-90,25],"translation":[0,6,0],"scale":[0.68,0.68,0.68]},"fixed":{"translation":[0,7,0]}}},"small_dripleaf":{"parent":"minecraft:block/small_dripleaf_top","display":{"thirdperson_righthand":{"rotation":[0,0,0],"translation":[0,4,1],"scale":[0.55,0.55,0.55]},"firstperson_righthand":{"rotation":[0,45,0],"translation":[0,3.2,0],"scale":[0.40,0.40,0.40]}}},"sniffer_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/sniffer_egg"}},"sniffer_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/sniffer_spawn_egg"}},"snort_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/snort_pottery_sherd"}},"snout_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/snout_armor_trim_smithing_template"}},"snow_golem_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/snow_golem_spawn_egg"}},"snowball":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/snowball"}},"soul_campfire":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/soul_campfire"}},"soul_lantern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/soul_lantern"}},"soul_torch":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/soul_torch"}},"spectral_arrow":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/spectral_arrow"}},"spider_eye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/spider_eye"}},"spider_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/spider_spawn_egg"}},"spire_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/spire_armor_trim_smithing_template"}},"splash_potion":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/potion_overlay","layer1":"minecraft:item/splash_potion"}},"spruce_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/spruce_boat"}},"spruce_chest_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/spruce_chest_boat"}},"spruce_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/spruce_door"}},"spruce_hanging_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/spruce_hanging_sign"}},"spruce_sapling":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/spruce_sapling"}},"spruce_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/spruce_sign"}},"spyglass":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/spyglass"}},"spyglass_in_hand":{"textures":{"spyglass":"item/spyglass_model","particle":"#spyglass"},"elements":[{"from":[7,8.5,7],"to":[9,13.5,9],"faces":{"north":{"uv":[0,2,2,7],"texture":"#spyglass"},"east":{"uv":[0,2,2,7],"texture":"#spyglass"},"south":{"uv":[0,2,2,7],"texture":"#spyglass"},"west":{"uv":[0,2,2,7],"texture":"#spyglass"},"up":{"uv":[0,0,2,2],"texture":"#spyglass"}}},{"from":[6.9,2.4,6.9],"to":[9.1,8.6,9.1],"faces":{"north":{"uv":[0,7,2,13],"texture":"#spyglass"},"east":{"uv":[0,7,2,13],"texture":"#spyglass"},"south":{"uv":[0,7,2,13],"texture":"#spyglass"},"west":{"uv":[0,7,2,13],"texture":"#spyglass"},"up":{"uv":[0,5,2,7],"texture":"#spyglass"},"down":{"uv":[0,13,2,15],"texture":"#spyglass"}}}],"gui_light":"front","display":{"thirdperson_righthand":{"translation":[0,-2,0]},"ground":{"rotation":[90,0,0]},"gui":{"rotation":[-67.5,0,45],"scale":[1.5,1.5,1.5]},"head":{"rotation":[90,0,0],"translation":[0,0,-16],"scale":[1.6,1.6,1.6]},"fixed":{"translation":[0,0,-1.5],"scale":[1.5,1.5,1.5]}}},"squid_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/squid_spawn_egg"}},"stick":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/stick"}},"stone_axe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/stone_axe"}},"stone_hoe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/stone_hoe"}},"stone_pickaxe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/stone_pickaxe"}},"stone_shovel":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/stone_shovel"}},"stone_sword":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/stone_sword"}},"stray_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/stray_spawn_egg"}},"strider_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/strider_spawn_egg"}},"string":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/string"}},"structure_void":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/structure_void"}},"sugar":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/sugar"}},"sugar_cane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/sugar_cane"}},"sunflower":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/sunflower_front"}},"suspicious_stew":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/suspicious_stew"}},"sweet_berries":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/sweet_berries"}},"tadpole_bucket":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/tadpole_bucket"}},"tadpole_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/tadpole_spawn_egg"}},"tall_dry_grass":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/tall_dry_grass"}},"tall_grass":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/tall_grass_top"}},"template_banner":{"gui_light":"front","textures":{"particle":"block/oak_planks"},"display":{"thirdperson_righthand":{"rotation":[0,90,0],"translation":[0,2,0.5],"scale":[0.375,0.375,0.375]},"firstperson_righthand":{"rotation":[0,90,0],"translation":[0,0,0],"scale":[0.375,0.375,0.375]},"gui":{"rotation":[30,20,0],"translation":[0,-3.25,0],"scale":[0.5325,0.5325,0.5325]},"ground":{"rotation":[0,0,0],"translation":[0,1,0],"scale":[0.25,0.25,0.25]},"head":{"rotation":[0,180,0],"translation":[0,16,7],"scale":[1.5,1.5,1.5]},"fixed":{"rotation":[0,180,0],"translation":[0,0,0],"scale":[0.5,0.5,0.5]}}},"template_bed":{"display":{"thirdperson_righthand":{"rotation":[30,160,0],"translation":[0,3,-2],"scale":[0.23,0.23,0.23]},"firstperson_righthand":{"rotation":[30,160,0],"translation":[0,3,0],"scale":[0.375,0.375,0.375]},"gui":{"rotation":[30,160,0],"translation":[2,3,0],"scale":[0.5325,0.5325,0.5325]},"ground":{"rotation":[0,0,0],"translation":[0,1,2],"scale":[0.25,0.25,0.25]},"head":{"rotation":[0,180,0],"translation":[0,10,-8],"scale":[1,1,1]},"fixed":{"rotation":[270,0,0],"translation":[0,4,-2],"scale":[0.5,0.5,0.5]}}},"template_bundle_open_back":{"parent":"minecraft:item/generated","display":{"gui":{"translation":[0,0,-16]}}},"template_bundle_open_front":{"parent":"minecraft:item/generated","display":{"gui":{"translation":[0,0,16]}}},"template_chest":{"display":{"gui":{"rotation":[30,45,0],"translation":[0,0,0],"scale":[0.625,0.625,0.625]},"ground":{"rotation":[0,0,0],"translation":[0,3,0],"scale":[0.25,0.25,0.25]},"head":{"rotation":[0,180,0],"translation":[0,0,0],"scale":[1,1,1]},"fixed":{"rotation":[0,180,0],"translation":[0,0,0],"scale":[0.5,0.5,0.5]},"thirdperson_righthand":{"rotation":[75,315,0],"translation":[0,2.5,0],"scale":[0.375,0.375,0.375]},"firstperson_righthand":{"rotation":[0,315,0],"translation":[0,0,0],"scale":[0.4,0.4,0.4]}}},"template_music_disc":{"parent":"item/generated","gui_light":"front","display":{"fixed":{"rotation":[0,180,0],"translation":[-0.5,0,0]}}},"template_shulker_box":{"display":{"gui":{"rotation":[30,45,0],"translation":[0,0,0],"scale":[0.625,0.625,0.625]},"ground":{"rotation":[0,0,0],"translation":[0,3,0],"scale":[0.25,0.25,0.25]},"head":{"rotation":[0,180,0],"translation":[0,0,0],"scale":[1,1,1]},"fixed":{"rotation":[0,180,0],"translation":[0,0,0],"scale":[0.5,0.5,0.5]},"thirdperson_righthand":{"rotation":[75,315,0],"translation":[0,2.5,0],"scale":[0.375,0.375,0.375]},"firstperson_righthand":{"rotation":[0,315,0],"translation":[0,0,0],"scale":[0.4,0.4,0.4]}}},"template_skull":{"textures":{"particle":"block/soul_sand"},"display":{"gui":{"rotation":[30,45,0],"translation":[0,3,0],"scale":[1,1,1]},"fixed":{"rotation":[0,180,0],"translation":[0,4,0],"scale":[1,1,1]},"ground":{"rotation":[0,0,0],"translation":[0,3,0],"scale":[0.5,0.5,0.5]},"thirdperson_righthand":{"rotation":[45,45,0],"translation":[0,3,0],"scale":[0.5,0.5,0.5]}}},"tide_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/tide_armor_trim_smithing_template"}},"tipped_arrow":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/tipped_arrow_head","layer1":"minecraft:item/tipped_arrow_base"}},"tnt_minecart":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/tnt_minecart"}},"tooting_goat_horn":{"parent":"item/generated","textures":{"layer0":"item/goat_horn"},"display":{"thirdperson_righthand":{"rotation":[0,-125,0],"translation":[-1,2,2],"scale":[0.5,0.5,0.5]},"thirdperson_lefthand":{"rotation":[0,55,0],"translation":[-1,2,2],"scale":[0.5,0.5,0.5]},"firstperson_righthand":{"rotation":[0,-55,-5],"translation":[-1,-2.5,-7.5]},"firstperson_lefthand":{"rotation":[0,115,5],"translation":[0,-2.5,-7.5]}}},"torch":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/torch"}},"torchflower":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/torchflower"}},"torchflower_seeds":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/torchflower_seeds"}},"totem_of_undying":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/totem_of_undying"}},"trader_llama_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/trader_llama_spawn_egg"}},"trapped_chest":{"parent":"minecraft:item/template_chest","textures":{"particle":"minecraft:block/oak_planks"}},"trial_key":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/trial_key"}},"trident":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/trident"}},"trident_in_hand":{"gui_light":"front","textures":{"particle":"item/trident"},"display":{"thirdperson_righthand":{"rotation":[0,60,0],"translation":[11,17,-2],"scale":[1,1,1]},"thirdperson_lefthand":{"rotation":[0,60,0],"translation":[3,17,12],"scale":[1,1,1]},"firstperson_righthand":{"rotation":[0,-90,25],"translation":[-3,17,1],"scale":[1,1,1]},"firstperson_lefthand":{"rotation":[0,90,-25],"translation":[13,17,1],"scale":[1,1,1]},"gui":{"rotation":[15,-25,-5],"translation":[2,3,0],"scale":[0.65,0.65,0.65]},"fixed":{"rotation":[0,180,0],"translation":[-2,4,-5],"scale":[0.5,0.5,0.5]},"ground":{"rotation":[0,0,0],"translation":[4,4,2],"scale":[0.25,0.25,0.25]}}},"trident_throwing":{"gui_light":"front","textures":{"particle":"item/trident"},"display":{"thirdperson_righthand":{"rotation":[0,90,180],"translation":[8,-17,9],"scale":[1,1,1]},"thirdperson_lefthand":{"rotation":[0,90,180],"translation":[8,-17,-7],"scale":[1,1,1]},"firstperson_righthand":{"rotation":[0,-90,25],"translation":[-3,17,1],"scale":[1,1,1]},"firstperson_lefthand":{"rotation":[0,90,-25],"translation":[13,17,1],"scale":[1,1,1]},"gui":{"rotation":[15,-25,-5],"translation":[2,3,0],"scale":[0.65,0.65,0.65]},"fixed":{"rotation":[0,180,0],"translation":[-2,4,-5],"scale":[0.5,0.5,0.5]},"ground":{"rotation":[0,0,0],"translation":[4,4,2],"scale":[0.25,0.25,0.25]}}},"tripwire_hook":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/tripwire_hook"}},"tropical_fish":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/tropical_fish"}},"tropical_fish_bucket":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/tropical_fish_bucket"}},"tropical_fish_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/tropical_fish_spawn_egg"}},"tube_coral":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/tube_coral"}},"tube_coral_fan":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/tube_coral_fan"}},"turtle_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_egg"}},"turtle_helmet":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_helmet"}},"turtle_helmet_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_helmet","layer1":"minecraft:trims/items/helmet_trim_amethyst"}},"turtle_helmet_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_helmet","layer1":"minecraft:trims/items/helmet_trim_copper"}},"turtle_helmet_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_helmet","layer1":"minecraft:trims/items/helmet_trim_diamond"}},"turtle_helmet_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_helmet","layer1":"minecraft:trims/items/helmet_trim_emerald"}},"turtle_helmet_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_helmet","layer1":"minecraft:trims/items/helmet_trim_gold"}},"turtle_helmet_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_helmet","layer1":"minecraft:trims/items/helmet_trim_iron"}},"turtle_helmet_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_helmet","layer1":"minecraft:trims/items/helmet_trim_lapis"}},"turtle_helmet_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_helmet","layer1":"minecraft:trims/items/helmet_trim_netherite"}},"turtle_helmet_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_helmet","layer1":"minecraft:trims/items/helmet_trim_quartz"}},"turtle_helmet_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_helmet","layer1":"minecraft:trims/items/helmet_trim_redstone"}},"turtle_helmet_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_helmet","layer1":"minecraft:trims/items/helmet_trim_resin"}},"turtle_scute":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_scute"}},"turtle_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_spawn_egg"}},"twisting_vines":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/twisting_vines_plant"}},"vex_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/vex_armor_trim_smithing_template"}},"vex_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/vex_spawn_egg"}},"villager_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/villager_spawn_egg"}},"vindicator_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/vindicator_spawn_egg"}},"vine":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/vine"}},"wandering_trader_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/wandering_trader_spawn_egg"}},"ward_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/ward_armor_trim_smithing_template"}},"warden_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/warden_spawn_egg"}},"warped_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/warped_door"}},"warped_fungus":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/warped_fungus"}},"warped_fungus_on_a_stick":{"parent":"minecraft:item/handheld_rod","textures":{"layer0":"minecraft:item/warped_fungus_on_a_stick"}},"warped_hanging_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/warped_hanging_sign"}},"warped_roots":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/warped_roots"}},"warped_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/warped_sign"}},"water_bucket":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/water_bucket"}},"wayfinder_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/wayfinder_armor_trim_smithing_template"}},"weathered_copper_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/weathered_copper_door"}},"weeping_vines":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/weeping_vines_plant"}},"wheat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/wheat"}},"wheat_seeds":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/wheat_seeds"}},"white_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/white_wool"}},"white_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/white_bundle"}},"white_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/white_bundle_open_back"}},"white_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/white_bundle_open_front"}},"white_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/white_candle"}},"white_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/white_dye"}},"white_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/white_harness"}},"white_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/white_shulker_box"}},"white_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/white_stained_glass"}},"white_tulip":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/white_tulip"}},"wild_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/wild_armor_trim_smithing_template"}},"wildflowers":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/wildflowers"}},"wind_charge":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/wind_charge"}},"witch_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/witch_spawn_egg"}},"wither_rose":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/wither_rose"}},"wither_skeleton_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/wither_skeleton_spawn_egg"}},"wither_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/wither_spawn_egg"}},"wolf_armor":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/wolf_armor"}},"wolf_armor_dyed":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/wolf_armor","layer1":"minecraft:item/wolf_armor_overlay"}},"wolf_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/wolf_spawn_egg"}},"wooden_axe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/wooden_axe"}},"wooden_hoe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/wooden_hoe"}},"wooden_pickaxe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/wooden_pickaxe"}},"wooden_shovel":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/wooden_shovel"}},"wooden_sword":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/wooden_sword"}},"writable_book":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/writable_book"}},"written_book":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/written_book"}},"yellow_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/yellow_wool"}},"yellow_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/yellow_bundle"}},"yellow_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/yellow_bundle_open_back"}},"yellow_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/yellow_bundle_open_front"}},"yellow_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/yellow_candle"}},"yellow_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/yellow_dye"}},"yellow_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/yellow_harness"}},"yellow_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/yellow_shulker_box"}},"yellow_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/yellow_stained_glass"}},"zoglin_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/zoglin_spawn_egg"}},"zombie_horse_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/zombie_horse_spawn_egg"}},"zombie_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/zombie_spawn_egg"}},"zombie_villager_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/zombie_villager_spawn_egg"}},"zombified_piglin_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/zombified_piglin_spawn_egg"}}} \ No newline at end of file +{"acacia_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/acacia_boat"}},"acacia_chest_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/acacia_chest_boat"}},"acacia_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/acacia_door"}},"acacia_hanging_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/acacia_hanging_sign"}},"acacia_sapling":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/acacia_sapling"}},"acacia_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/acacia_sign"}},"activator_rail":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/activator_rail"}},"air":{"textures":{"particle":"minecraft:missingno"}},"allay_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/allay_spawn_egg"}},"allium":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/allium"}},"amethyst_bud":{"parent":"minecraft:item/generated","display":{"firstperson_righthand":{"rotation":[0,-90,25],"translation":[0,5,0],"scale":[0.68,0.68,0.68]},"thirdperson_righthand":{"translation":[0,4,1],"scale":[0.55,0.55,0.55]},"head":{"translation":[0,14,-5]},"gui":{"translation":[0,2,0]}}},"amethyst_cluster":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/amethyst_cluster"},"display":{"head":{"translation":[0,14,-5]}}},"amethyst_shard":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/amethyst_shard"}},"angler_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/angler_pottery_sherd"}},"apple":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/apple"}},"archer_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/archer_pottery_sherd"}},"armadillo_scute":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/armadillo_scute"}},"armadillo_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/armadillo_spawn_egg"}},"armor_stand":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/armor_stand"}},"arms_up_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/arms_up_pottery_sherd"}},"arrow":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/arrow"}},"axolotl_bucket":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/axolotl_bucket"}},"axolotl_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/axolotl_spawn_egg"}},"azure_bluet":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/azure_bluet"}},"baked_potato":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/baked_potato"}},"bamboo":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/bamboo"}},"bamboo_chest_raft":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bamboo_chest_raft"}},"bamboo_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bamboo_door"}},"bamboo_hanging_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bamboo_hanging_sign"}},"bamboo_raft":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bamboo_raft"}},"bamboo_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bamboo_sign"}},"barrier":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/barrier"}},"bat_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bat_spawn_egg"}},"bee_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bee_spawn_egg"}},"beef":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/beef"}},"beetroot":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/beetroot"}},"beetroot_seeds":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/beetroot_seeds"}},"beetroot_soup":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/beetroot_soup"}},"bell":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bell"}},"big_dripleaf":{"parent":"minecraft:block/big_dripleaf","display":{"gui":{"rotation":[30,225,0],"translation":[0,-2,0],"scale":[0.625,0.625,0.625]},"fixed":{"rotation":[0,0,0],"translation":[0,0,-1],"scale":[0.5,0.5,0.5]},"thirdperson_righthand":{"rotation":[0,0,0],"translation":[0,1,0],"scale":[0.55,0.55,0.55]},"firstperson_righthand":{"rotation":[0,0,0],"translation":[1.13,0,1.13],"scale":[0.68,0.68,0.68]}}},"birch_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/birch_boat"}},"birch_chest_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/birch_chest_boat"}},"birch_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/birch_door"}},"birch_hanging_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/birch_hanging_sign"}},"birch_sapling":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/birch_sapling"}},"birch_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/birch_sign"}},"black_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/black_wool"}},"black_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/black_bundle"}},"black_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/black_bundle_open_back"}},"black_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/black_bundle_open_front"}},"black_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/black_candle"}},"black_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/black_dye"}},"black_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/black_harness"}},"black_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/black_shulker_box"}},"black_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/black_stained_glass"}},"blade_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/blade_pottery_sherd"}},"blaze_powder":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/blaze_powder"}},"blaze_rod":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/blaze_rod"}},"blaze_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/blaze_spawn_egg"}},"blue_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/blue_wool"}},"blue_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/blue_bundle"}},"blue_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/blue_bundle_open_back"}},"blue_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/blue_bundle_open_front"}},"blue_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/blue_candle"}},"blue_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/blue_dye"}},"blue_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/blue_egg"}},"blue_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/blue_harness"}},"blue_orchid":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/blue_orchid"}},"blue_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/blue_shulker_box"}},"blue_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/blue_stained_glass"}},"bogged_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bogged_spawn_egg"}},"bolt_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bolt_armor_trim_smithing_template"}},"bone":{"parent":"item/handheld","textures":{"layer0":"item/bone"},"display":{"head":{"rotation":[0,0,-45],"translation":[0,-4.5,-6.5],"scale":[1,1,1]}}},"bone_meal":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bone_meal"}},"book":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/book"}},"bordure_indented_banner_pattern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bordure_indented_banner_pattern"}},"bow":{"parent":"item/generated","textures":{"layer0":"item/bow"},"display":{"thirdperson_righthand":{"rotation":[-80,260,-40],"translation":[-1,-2,2.5],"scale":[0.9,0.9,0.9]},"thirdperson_lefthand":{"rotation":[-80,-280,40],"translation":[-1,-2,2.5],"scale":[0.9,0.9,0.9]},"firstperson_righthand":{"rotation":[0,-90,25],"translation":[1.13,3.2,1.13],"scale":[0.68,0.68,0.68]},"firstperson_lefthand":{"rotation":[0,90,-25],"translation":[1.13,3.2,1.13],"scale":[0.68,0.68,0.68]}}},"bow_pulling_0":{"parent":"minecraft:item/bow","textures":{"layer0":"minecraft:item/bow_pulling_0"}},"bow_pulling_1":{"parent":"minecraft:item/bow","textures":{"layer0":"minecraft:item/bow_pulling_1"}},"bow_pulling_2":{"parent":"minecraft:item/bow","textures":{"layer0":"minecraft:item/bow_pulling_2"}},"bowl":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bowl"}},"brain_coral":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/brain_coral"}},"brain_coral_fan":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/brain_coral_fan"}},"bread":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bread"}},"breeze_rod":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/breeze_rod"}},"breeze_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/breeze_spawn_egg"}},"brewer_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/brewer_pottery_sherd"}},"brewing_stand":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/brewing_stand"}},"brick":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/brick"}},"brown_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/brown_wool"}},"brown_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/brown_bundle"}},"brown_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/brown_bundle_open_back"}},"brown_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/brown_bundle_open_front"}},"brown_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/brown_candle"}},"brown_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/brown_dye"}},"brown_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/brown_egg"}},"brown_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/brown_harness"}},"brown_mushroom":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/brown_mushroom"}},"brown_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/brown_shulker_box"}},"brown_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/brown_stained_glass"}},"brush":{"parent":"item/generated","textures":{"layer0":"item/brush"},"display":{"firstperson_lefthand":{"rotation":[55,-85,0],"translation":[8.0,0.5,-5.5],"scale":[1.0,1.0,1.0]},"thirdperson_righthand":{"rotation":[0,0,45],"translation":[0,4,0],"scale":[0.9,0.9,0.9]},"thirdperson_lefthand":{"rotation":[0,0,-45],"translation":[0,4,0],"scale":[0.9,0.9,0.9]}}},"brush_brushing_0":{"parent":"item/generated","textures":{"layer0":"item/brush"},"display":{"firstperson_lefthand":{"rotation":[55,-85,0],"translation":[8.0,0.5,-5.5],"scale":[1.0,1.0,1.0]},"thirdperson_righthand":{"rotation":[0,0,0],"translation":[4,2,0],"scale":[0.9,0.9,0.9]},"thirdperson_lefthand":{"rotation":[0,0,0],"translation":[-4,2,0],"scale":[0.9,0.9,0.9]}}},"brush_brushing_1":{"parent":"item/generated","textures":{"layer0":"item/brush"},"display":{"firstperson_lefthand":{"rotation":[55,-85,0],"translation":[8.0,0.5,-5.5],"scale":[1.0,1.0,1.0]},"thirdperson_righthand":{"rotation":[0,0,45],"translation":[0,4,0],"scale":[0.9,0.9,0.9]},"thirdperson_lefthand":{"rotation":[0,0,-45],"translation":[0,4,0],"scale":[0.9,0.9,0.9]}}},"brush_brushing_2":{"parent":"item/generated","textures":{"layer0":"item/brush"},"display":{"firstperson_lefthand":{"rotation":[55,-85,0],"translation":[8.0,0.5,-5.5],"scale":[1.0,1.0,1.0]},"thirdperson_righthand":{"rotation":[0,0,90],"translation":[-4,2,0],"scale":[0.9,0.9,0.9]},"thirdperson_lefthand":{"rotation":[0,0,-90],"translation":[4,2,0],"scale":[0.9,0.9,0.9]}}},"bubble_coral":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/bubble_coral"}},"bubble_coral_fan":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/bubble_coral_fan"}},"bucket":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bucket"}},"bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/bundle"}},"bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/bundle_open_back"}},"bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/bundle_open_front"}},"burn_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/burn_pottery_sherd"}},"bush":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/bush"}},"cactus_flower":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/cactus_flower"}},"cake":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cake"}},"camel_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/camel_spawn_egg"}},"campfire":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/campfire"}},"candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/candle"}},"carrot":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/carrot"}},"carrot_on_a_stick":{"parent":"minecraft:item/handheld_rod","textures":{"layer0":"minecraft:item/carrot_on_a_stick"}},"cat_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cat_spawn_egg"}},"cauldron":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cauldron"}},"cave_spider_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cave_spider_spawn_egg"}},"chainmail_boots":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_boots"}},"chainmail_boots_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_boots","layer1":"minecraft:trims/items/boots_trim_amethyst"}},"chainmail_boots_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_boots","layer1":"minecraft:trims/items/boots_trim_copper"}},"chainmail_boots_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_boots","layer1":"minecraft:trims/items/boots_trim_diamond"}},"chainmail_boots_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_boots","layer1":"minecraft:trims/items/boots_trim_emerald"}},"chainmail_boots_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_boots","layer1":"minecraft:trims/items/boots_trim_gold"}},"chainmail_boots_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_boots","layer1":"minecraft:trims/items/boots_trim_iron"}},"chainmail_boots_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_boots","layer1":"minecraft:trims/items/boots_trim_lapis"}},"chainmail_boots_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_boots","layer1":"minecraft:trims/items/boots_trim_netherite"}},"chainmail_boots_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_boots","layer1":"minecraft:trims/items/boots_trim_quartz"}},"chainmail_boots_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_boots","layer1":"minecraft:trims/items/boots_trim_redstone"}},"chainmail_boots_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_boots","layer1":"minecraft:trims/items/boots_trim_resin"}},"chainmail_chestplate":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_chestplate"}},"chainmail_chestplate_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_chestplate","layer1":"minecraft:trims/items/chestplate_trim_amethyst"}},"chainmail_chestplate_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_chestplate","layer1":"minecraft:trims/items/chestplate_trim_copper"}},"chainmail_chestplate_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_chestplate","layer1":"minecraft:trims/items/chestplate_trim_diamond"}},"chainmail_chestplate_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_chestplate","layer1":"minecraft:trims/items/chestplate_trim_emerald"}},"chainmail_chestplate_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_chestplate","layer1":"minecraft:trims/items/chestplate_trim_gold"}},"chainmail_chestplate_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_chestplate","layer1":"minecraft:trims/items/chestplate_trim_iron"}},"chainmail_chestplate_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_chestplate","layer1":"minecraft:trims/items/chestplate_trim_lapis"}},"chainmail_chestplate_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_chestplate","layer1":"minecraft:trims/items/chestplate_trim_netherite"}},"chainmail_chestplate_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_chestplate","layer1":"minecraft:trims/items/chestplate_trim_quartz"}},"chainmail_chestplate_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_chestplate","layer1":"minecraft:trims/items/chestplate_trim_redstone"}},"chainmail_chestplate_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_chestplate","layer1":"minecraft:trims/items/chestplate_trim_resin"}},"chainmail_helmet":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_helmet"}},"chainmail_helmet_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_helmet","layer1":"minecraft:trims/items/helmet_trim_amethyst"}},"chainmail_helmet_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_helmet","layer1":"minecraft:trims/items/helmet_trim_copper"}},"chainmail_helmet_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_helmet","layer1":"minecraft:trims/items/helmet_trim_diamond"}},"chainmail_helmet_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_helmet","layer1":"minecraft:trims/items/helmet_trim_emerald"}},"chainmail_helmet_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_helmet","layer1":"minecraft:trims/items/helmet_trim_gold"}},"chainmail_helmet_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_helmet","layer1":"minecraft:trims/items/helmet_trim_iron"}},"chainmail_helmet_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_helmet","layer1":"minecraft:trims/items/helmet_trim_lapis"}},"chainmail_helmet_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_helmet","layer1":"minecraft:trims/items/helmet_trim_netherite"}},"chainmail_helmet_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_helmet","layer1":"minecraft:trims/items/helmet_trim_quartz"}},"chainmail_helmet_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_helmet","layer1":"minecraft:trims/items/helmet_trim_redstone"}},"chainmail_helmet_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_helmet","layer1":"minecraft:trims/items/helmet_trim_resin"}},"chainmail_leggings":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_leggings"}},"chainmail_leggings_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_leggings","layer1":"minecraft:trims/items/leggings_trim_amethyst"}},"chainmail_leggings_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_leggings","layer1":"minecraft:trims/items/leggings_trim_copper"}},"chainmail_leggings_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_leggings","layer1":"minecraft:trims/items/leggings_trim_diamond"}},"chainmail_leggings_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_leggings","layer1":"minecraft:trims/items/leggings_trim_emerald"}},"chainmail_leggings_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_leggings","layer1":"minecraft:trims/items/leggings_trim_gold"}},"chainmail_leggings_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_leggings","layer1":"minecraft:trims/items/leggings_trim_iron"}},"chainmail_leggings_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_leggings","layer1":"minecraft:trims/items/leggings_trim_lapis"}},"chainmail_leggings_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_leggings","layer1":"minecraft:trims/items/leggings_trim_netherite"}},"chainmail_leggings_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_leggings","layer1":"minecraft:trims/items/leggings_trim_quartz"}},"chainmail_leggings_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_leggings","layer1":"minecraft:trims/items/leggings_trim_redstone"}},"chainmail_leggings_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chainmail_leggings","layer1":"minecraft:trims/items/leggings_trim_resin"}},"charcoal":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/charcoal"}},"cherry_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cherry_boat"}},"cherry_chest_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cherry_chest_boat"}},"cherry_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cherry_door"}},"cherry_hanging_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cherry_hanging_sign"}},"cherry_sapling":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/cherry_sapling"}},"cherry_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cherry_sign"}},"chest":{"parent":"minecraft:item/template_chest","textures":{"particle":"minecraft:block/oak_planks"}},"chest_minecart":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chest_minecart"}},"chicken":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chicken"}},"chicken_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chicken_spawn_egg"}},"chorus_fruit":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/chorus_fruit"}},"clay_ball":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clay_ball"}},"clock_00":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_00"}},"clock_01":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_01"}},"clock_02":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_02"}},"clock_03":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_03"}},"clock_04":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_04"}},"clock_05":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_05"}},"clock_06":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_06"}},"clock_07":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_07"}},"clock_08":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_08"}},"clock_09":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_09"}},"clock_10":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_10"}},"clock_11":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_11"}},"clock_12":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_12"}},"clock_13":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_13"}},"clock_14":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_14"}},"clock_15":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_15"}},"clock_16":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_16"}},"clock_17":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_17"}},"clock_18":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_18"}},"clock_19":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_19"}},"clock_20":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_20"}},"clock_21":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_21"}},"clock_22":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_22"}},"clock_23":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_23"}},"clock_24":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_24"}},"clock_25":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_25"}},"clock_26":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_26"}},"clock_27":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_27"}},"clock_28":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_28"}},"clock_29":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_29"}},"clock_30":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_30"}},"clock_31":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_31"}},"clock_32":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_32"}},"clock_33":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_33"}},"clock_34":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_34"}},"clock_35":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_35"}},"clock_36":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_36"}},"clock_37":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_37"}},"clock_38":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_38"}},"clock_39":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_39"}},"clock_40":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_40"}},"clock_41":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_41"}},"clock_42":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_42"}},"clock_43":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_43"}},"clock_44":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_44"}},"clock_45":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_45"}},"clock_46":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_46"}},"clock_47":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_47"}},"clock_48":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_48"}},"clock_49":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_49"}},"clock_50":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_50"}},"clock_51":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_51"}},"clock_52":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_52"}},"clock_53":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_53"}},"clock_54":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_54"}},"clock_55":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_55"}},"clock_56":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_56"}},"clock_57":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_57"}},"clock_58":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_58"}},"clock_59":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_59"}},"clock_60":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_60"}},"clock_61":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_61"}},"clock_62":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_62"}},"clock_63":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/clock_63"}},"closed_eyeblossom":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/closed_eyeblossom"}},"coal":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/coal"}},"coast_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/coast_armor_trim_smithing_template"}},"cobweb":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/cobweb"}},"cocoa_beans":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cocoa_beans"}},"cod":{"parent":"item/generated","textures":{"layer0":"item/cod"},"display":{"head":{"rotation":[0,90,-60],"translation":[-7,-4,-7],"scale":[0.8,0.8,0.8]}}},"cod_bucket":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cod_bucket"}},"cod_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cod_spawn_egg"}},"command_block_minecart":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/command_block_minecart"}},"comparator":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/comparator"}},"compass_00":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_00"}},"compass_01":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_01"}},"compass_02":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_02"}},"compass_03":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_03"}},"compass_04":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_04"}},"compass_05":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_05"}},"compass_06":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_06"}},"compass_07":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_07"}},"compass_08":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_08"}},"compass_09":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_09"}},"compass_10":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_10"}},"compass_11":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_11"}},"compass_12":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_12"}},"compass_13":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_13"}},"compass_14":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_14"}},"compass_15":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_15"}},"compass_16":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_16"}},"compass_17":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_17"}},"compass_18":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_18"}},"compass_19":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_19"}},"compass_20":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_20"}},"compass_21":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_21"}},"compass_22":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_22"}},"compass_23":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_23"}},"compass_24":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_24"}},"compass_25":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_25"}},"compass_26":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_26"}},"compass_27":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_27"}},"compass_28":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_28"}},"compass_29":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_29"}},"compass_30":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_30"}},"compass_31":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/compass_31"}},"conduit":{"textures":{"particle":"block/conduit"},"display":{"gui":{"rotation":[30,45,0],"translation":[0,0,0],"scale":[1.0,1.0,1.0]},"ground":{"rotation":[0,0,0],"translation":[0,3,0],"scale":[0.5,0.5,0.5]},"head":{"rotation":[0,180,0],"translation":[0,0,0],"scale":[1,1,1]},"fixed":{"rotation":[0,180,0],"translation":[0,0,0],"scale":[1,1,1]},"thirdperson_righthand":{"rotation":[75,315,0],"translation":[0,2.5,0],"scale":[0.5,0.5,0.5]},"firstperson_righthand":{"rotation":[0,315,0],"translation":[0,0,0],"scale":[0.8,0.8,0.8]}}},"cooked_beef":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cooked_beef"}},"cooked_chicken":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cooked_chicken"}},"cooked_cod":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cooked_cod"}},"cooked_mutton":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cooked_mutton"}},"cooked_porkchop":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cooked_porkchop"}},"cooked_rabbit":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cooked_rabbit"}},"cooked_salmon":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cooked_salmon"}},"cookie":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cookie"}},"copper_axe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/copper_axe"}},"copper_bars":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/copper_bars"}},"copper_boots":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_boots"}},"copper_boots_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_boots","layer1":"minecraft:trims/items/boots_trim_amethyst"}},"copper_boots_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_boots","layer1":"minecraft:trims/items/boots_trim_copper_darker"}},"copper_boots_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_boots","layer1":"minecraft:trims/items/boots_trim_diamond"}},"copper_boots_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_boots","layer1":"minecraft:trims/items/boots_trim_emerald"}},"copper_boots_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_boots","layer1":"minecraft:trims/items/boots_trim_gold"}},"copper_boots_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_boots","layer1":"minecraft:trims/items/boots_trim_iron"}},"copper_boots_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_boots","layer1":"minecraft:trims/items/boots_trim_lapis"}},"copper_boots_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_boots","layer1":"minecraft:trims/items/boots_trim_netherite"}},"copper_boots_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_boots","layer1":"minecraft:trims/items/boots_trim_quartz"}},"copper_boots_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_boots","layer1":"minecraft:trims/items/boots_trim_redstone"}},"copper_boots_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_boots","layer1":"minecraft:trims/items/boots_trim_resin"}},"copper_chain":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_chain"}},"copper_chest":{"parent":"minecraft:item/template_chest","textures":{"particle":"minecraft:block/copper_block"}},"copper_chestplate":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_chestplate"}},"copper_chestplate_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_chestplate","layer1":"minecraft:trims/items/chestplate_trim_amethyst"}},"copper_chestplate_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_chestplate","layer1":"minecraft:trims/items/chestplate_trim_copper_darker"}},"copper_chestplate_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_chestplate","layer1":"minecraft:trims/items/chestplate_trim_diamond"}},"copper_chestplate_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_chestplate","layer1":"minecraft:trims/items/chestplate_trim_emerald"}},"copper_chestplate_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_chestplate","layer1":"minecraft:trims/items/chestplate_trim_gold"}},"copper_chestplate_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_chestplate","layer1":"minecraft:trims/items/chestplate_trim_iron"}},"copper_chestplate_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_chestplate","layer1":"minecraft:trims/items/chestplate_trim_lapis"}},"copper_chestplate_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_chestplate","layer1":"minecraft:trims/items/chestplate_trim_netherite"}},"copper_chestplate_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_chestplate","layer1":"minecraft:trims/items/chestplate_trim_quartz"}},"copper_chestplate_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_chestplate","layer1":"minecraft:trims/items/chestplate_trim_redstone"}},"copper_chestplate_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_chestplate","layer1":"minecraft:trims/items/chestplate_trim_resin"}},"copper_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_door"}},"copper_golem_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_golem_spawn_egg"}},"copper_helmet":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_helmet"}},"copper_helmet_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_helmet","layer1":"minecraft:trims/items/helmet_trim_amethyst"}},"copper_helmet_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_helmet","layer1":"minecraft:trims/items/helmet_trim_copper_darker"}},"copper_helmet_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_helmet","layer1":"minecraft:trims/items/helmet_trim_diamond"}},"copper_helmet_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_helmet","layer1":"minecraft:trims/items/helmet_trim_emerald"}},"copper_helmet_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_helmet","layer1":"minecraft:trims/items/helmet_trim_gold"}},"copper_helmet_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_helmet","layer1":"minecraft:trims/items/helmet_trim_iron"}},"copper_helmet_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_helmet","layer1":"minecraft:trims/items/helmet_trim_lapis"}},"copper_helmet_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_helmet","layer1":"minecraft:trims/items/helmet_trim_netherite"}},"copper_helmet_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_helmet","layer1":"minecraft:trims/items/helmet_trim_quartz"}},"copper_helmet_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_helmet","layer1":"minecraft:trims/items/helmet_trim_redstone"}},"copper_helmet_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_helmet","layer1":"minecraft:trims/items/helmet_trim_resin"}},"copper_hoe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/copper_hoe"}},"copper_horse_armor":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_horse_armor"}},"copper_ingot":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_ingot"}},"copper_lantern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_lantern"}},"copper_leggings":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_leggings"}},"copper_leggings_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_leggings","layer1":"minecraft:trims/items/leggings_trim_amethyst"}},"copper_leggings_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_leggings","layer1":"minecraft:trims/items/leggings_trim_copper_darker"}},"copper_leggings_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_leggings","layer1":"minecraft:trims/items/leggings_trim_diamond"}},"copper_leggings_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_leggings","layer1":"minecraft:trims/items/leggings_trim_emerald"}},"copper_leggings_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_leggings","layer1":"minecraft:trims/items/leggings_trim_gold"}},"copper_leggings_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_leggings","layer1":"minecraft:trims/items/leggings_trim_iron"}},"copper_leggings_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_leggings","layer1":"minecraft:trims/items/leggings_trim_lapis"}},"copper_leggings_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_leggings","layer1":"minecraft:trims/items/leggings_trim_netherite"}},"copper_leggings_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_leggings","layer1":"minecraft:trims/items/leggings_trim_quartz"}},"copper_leggings_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_leggings","layer1":"minecraft:trims/items/leggings_trim_redstone"}},"copper_leggings_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_leggings","layer1":"minecraft:trims/items/leggings_trim_resin"}},"copper_nugget":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/copper_nugget"}},"copper_pickaxe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/copper_pickaxe"}},"copper_shovel":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/copper_shovel"}},"copper_sword":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/copper_sword"}},"copper_torch":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/copper_torch"}},"cornflower":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/cornflower"}},"cow_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cow_spawn_egg"}},"creaking_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/creaking_spawn_egg"}},"creeper_banner_pattern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/creeper_banner_pattern"}},"creeper_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/creeper_spawn_egg"}},"crimson_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/crimson_door"}},"crimson_fungus":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/crimson_fungus"}},"crimson_hanging_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/crimson_hanging_sign"}},"crimson_roots":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/crimson_roots"}},"crimson_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/crimson_sign"}},"crossbow":{"parent":"item/generated","textures":{"layer0":"item/crossbow_standby"},"display":{"thirdperson_righthand":{"rotation":[-90,0,-60],"translation":[2,0.1,-3],"scale":[0.9,0.9,0.9]},"thirdperson_lefthand":{"rotation":[-90,0,30],"translation":[2,0.1,-3],"scale":[0.9,0.9,0.9]},"firstperson_righthand":{"rotation":[-90,0,-55],"translation":[1.13,3.2,1.13],"scale":[0.68,0.68,0.68]},"firstperson_lefthand":{"rotation":[-90,0,35],"translation":[1.13,3.2,1.13],"scale":[0.68,0.68,0.68]}}},"crossbow_arrow":{"parent":"minecraft:item/crossbow","textures":{"layer0":"minecraft:item/crossbow_arrow"}},"crossbow_firework":{"parent":"minecraft:item/crossbow","textures":{"layer0":"minecraft:item/crossbow_firework"}},"crossbow_pulling_0":{"parent":"minecraft:item/crossbow","textures":{"layer0":"minecraft:item/crossbow_pulling_0"}},"crossbow_pulling_1":{"parent":"minecraft:item/crossbow","textures":{"layer0":"minecraft:item/crossbow_pulling_1"}},"crossbow_pulling_2":{"parent":"minecraft:item/crossbow","textures":{"layer0":"minecraft:item/crossbow_pulling_2"}},"cyan_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/cyan_wool"}},"cyan_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cyan_bundle"}},"cyan_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/cyan_bundle_open_back"}},"cyan_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/cyan_bundle_open_front"}},"cyan_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cyan_candle"}},"cyan_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cyan_dye"}},"cyan_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/cyan_harness"}},"cyan_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/cyan_shulker_box"}},"cyan_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/cyan_stained_glass"}},"dandelion":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dandelion"}},"danger_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/danger_pottery_sherd"}},"dark_oak_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/dark_oak_boat"}},"dark_oak_chest_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/dark_oak_chest_boat"}},"dark_oak_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/dark_oak_door"}},"dark_oak_hanging_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/dark_oak_hanging_sign"}},"dark_oak_sapling":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dark_oak_sapling"}},"dark_oak_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/dark_oak_sign"}},"dead_brain_coral":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dead_brain_coral"}},"dead_brain_coral_fan":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dead_brain_coral_fan"}},"dead_bubble_coral":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dead_bubble_coral"}},"dead_bubble_coral_fan":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dead_bubble_coral_fan"}},"dead_bush":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dead_bush"}},"dead_fire_coral":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dead_fire_coral"}},"dead_fire_coral_fan":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dead_fire_coral_fan"}},"dead_horn_coral":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dead_horn_coral"}},"dead_horn_coral_fan":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dead_horn_coral_fan"}},"dead_tube_coral":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dead_tube_coral"}},"dead_tube_coral_fan":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/dead_tube_coral_fan"}},"debug_stick":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/stick"}},"decorated_pot":{"gui_light":"front","textures":{"particle":"entity/decorated_pot/decorated_pot_side"},"display":{"thirdperson_righthand":{"rotation":[0,90,0],"translation":[0,2,0.5],"scale":[0.375,0.375,0.375]},"firstperson_righthand":{"rotation":[0,90,0],"translation":[0,0,0],"scale":[0.375,0.375,0.375]},"gui":{"rotation":[30,45,0],"translation":[0,0,0],"scale":[0.60,0.60,0.60]},"ground":{"rotation":[0,0,0],"translation":[0,1,0],"scale":[0.25,0.25,0.25]},"head":{"rotation":[0,180,0],"translation":[0,16,0],"scale":[1.5,1.5,1.5]},"fixed":{"rotation":[0,180,0],"translation":[0,0,0],"scale":[0.5,0.5,0.5]}}},"detector_rail":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/detector_rail"}},"diamond":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond"}},"diamond_axe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/diamond_axe"}},"diamond_boots":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_boots"}},"diamond_boots_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_boots","layer1":"minecraft:trims/items/boots_trim_amethyst"}},"diamond_boots_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_boots","layer1":"minecraft:trims/items/boots_trim_copper"}},"diamond_boots_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_boots","layer1":"minecraft:trims/items/boots_trim_diamond_darker"}},"diamond_boots_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_boots","layer1":"minecraft:trims/items/boots_trim_emerald"}},"diamond_boots_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_boots","layer1":"minecraft:trims/items/boots_trim_gold"}},"diamond_boots_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_boots","layer1":"minecraft:trims/items/boots_trim_iron"}},"diamond_boots_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_boots","layer1":"minecraft:trims/items/boots_trim_lapis"}},"diamond_boots_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_boots","layer1":"minecraft:trims/items/boots_trim_netherite"}},"diamond_boots_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_boots","layer1":"minecraft:trims/items/boots_trim_quartz"}},"diamond_boots_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_boots","layer1":"minecraft:trims/items/boots_trim_redstone"}},"diamond_boots_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_boots","layer1":"minecraft:trims/items/boots_trim_resin"}},"diamond_chestplate":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_chestplate"}},"diamond_chestplate_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_chestplate","layer1":"minecraft:trims/items/chestplate_trim_amethyst"}},"diamond_chestplate_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_chestplate","layer1":"minecraft:trims/items/chestplate_trim_copper"}},"diamond_chestplate_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_chestplate","layer1":"minecraft:trims/items/chestplate_trim_diamond_darker"}},"diamond_chestplate_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_chestplate","layer1":"minecraft:trims/items/chestplate_trim_emerald"}},"diamond_chestplate_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_chestplate","layer1":"minecraft:trims/items/chestplate_trim_gold"}},"diamond_chestplate_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_chestplate","layer1":"minecraft:trims/items/chestplate_trim_iron"}},"diamond_chestplate_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_chestplate","layer1":"minecraft:trims/items/chestplate_trim_lapis"}},"diamond_chestplate_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_chestplate","layer1":"minecraft:trims/items/chestplate_trim_netherite"}},"diamond_chestplate_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_chestplate","layer1":"minecraft:trims/items/chestplate_trim_quartz"}},"diamond_chestplate_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_chestplate","layer1":"minecraft:trims/items/chestplate_trim_redstone"}},"diamond_chestplate_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_chestplate","layer1":"minecraft:trims/items/chestplate_trim_resin"}},"diamond_helmet":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_helmet"}},"diamond_helmet_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_helmet","layer1":"minecraft:trims/items/helmet_trim_amethyst"}},"diamond_helmet_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_helmet","layer1":"minecraft:trims/items/helmet_trim_copper"}},"diamond_helmet_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_helmet","layer1":"minecraft:trims/items/helmet_trim_diamond_darker"}},"diamond_helmet_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_helmet","layer1":"minecraft:trims/items/helmet_trim_emerald"}},"diamond_helmet_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_helmet","layer1":"minecraft:trims/items/helmet_trim_gold"}},"diamond_helmet_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_helmet","layer1":"minecraft:trims/items/helmet_trim_iron"}},"diamond_helmet_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_helmet","layer1":"minecraft:trims/items/helmet_trim_lapis"}},"diamond_helmet_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_helmet","layer1":"minecraft:trims/items/helmet_trim_netherite"}},"diamond_helmet_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_helmet","layer1":"minecraft:trims/items/helmet_trim_quartz"}},"diamond_helmet_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_helmet","layer1":"minecraft:trims/items/helmet_trim_redstone"}},"diamond_helmet_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_helmet","layer1":"minecraft:trims/items/helmet_trim_resin"}},"diamond_hoe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/diamond_hoe"}},"diamond_horse_armor":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_horse_armor"}},"diamond_leggings":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_leggings"}},"diamond_leggings_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_leggings","layer1":"minecraft:trims/items/leggings_trim_amethyst"}},"diamond_leggings_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_leggings","layer1":"minecraft:trims/items/leggings_trim_copper"}},"diamond_leggings_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_leggings","layer1":"minecraft:trims/items/leggings_trim_diamond_darker"}},"diamond_leggings_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_leggings","layer1":"minecraft:trims/items/leggings_trim_emerald"}},"diamond_leggings_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_leggings","layer1":"minecraft:trims/items/leggings_trim_gold"}},"diamond_leggings_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_leggings","layer1":"minecraft:trims/items/leggings_trim_iron"}},"diamond_leggings_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_leggings","layer1":"minecraft:trims/items/leggings_trim_lapis"}},"diamond_leggings_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_leggings","layer1":"minecraft:trims/items/leggings_trim_netherite"}},"diamond_leggings_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_leggings","layer1":"minecraft:trims/items/leggings_trim_quartz"}},"diamond_leggings_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_leggings","layer1":"minecraft:trims/items/leggings_trim_redstone"}},"diamond_leggings_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/diamond_leggings","layer1":"minecraft:trims/items/leggings_trim_resin"}},"diamond_pickaxe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/diamond_pickaxe"}},"diamond_shovel":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/diamond_shovel"}},"diamond_sword":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/diamond_sword"}},"disc_fragment_5":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/disc_fragment_5"}},"dolphin_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/dolphin_spawn_egg"}},"donkey_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/donkey_spawn_egg"}},"dragon_breath":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/dragon_breath"}},"dragon_head":{"parent":"item/template_skull","display":{"gui":{"translation":[-2,2,0],"rotation":[30,45,0],"scale":[0.6,0.6,0.6]},"thirdperson_righthand":{"rotation":[0,180,0],"translation":[0,-1,2],"scale":[0.5,0.5,0.5]},"on_shelf":{"rotation":[0,0,0],"translation":[0,2,0],"scale":[1.25,1.25,1.25]}}},"dried_kelp":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/dried_kelp"}},"drowned_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/drowned_spawn_egg"}},"dune_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/dune_armor_trim_smithing_template"}},"echo_shard":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/echo_shard"}},"egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/egg"}},"elder_guardian_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/elder_guardian_spawn_egg"}},"elytra":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/elytra"}},"elytra_broken":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/elytra_broken"}},"emerald":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/emerald"}},"enchanted_book":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/enchanted_book"}},"enchanted_golden_apple":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_apple"}},"end_crystal":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/end_crystal"}},"ender_chest":{"parent":"minecraft:item/template_chest","textures":{"particle":"minecraft:block/obsidian"}},"ender_dragon_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/ender_dragon_spawn_egg"}},"ender_eye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/ender_eye"}},"ender_pearl":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/ender_pearl"}},"enderman_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/enderman_spawn_egg"}},"endermite_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/endermite_spawn_egg"}},"evoker_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/evoker_spawn_egg"}},"experience_bottle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/experience_bottle"}},"explorer_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/explorer_pottery_sherd"}},"exposed_copper_bars":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/exposed_copper_bars"}},"exposed_copper_chain":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/exposed_copper_chain"}},"exposed_copper_chest":{"parent":"minecraft:item/template_chest","textures":{"particle":"minecraft:block/exposed_copper"}},"exposed_copper_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/exposed_copper_door"}},"exposed_copper_lantern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/exposed_copper_lantern"}},"eye_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/eye_armor_trim_smithing_template"}},"feather":{"parent":"item/generated","textures":{"layer0":"item/feather"},"display":{"head":{"rotation":[0,0,45],"translation":[-1,13,7],"scale":[1,1,1]}}},"fermented_spider_eye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/fermented_spider_eye"}},"fern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/fern"}},"field_masoned_banner_pattern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/field_masoned_banner_pattern"}},"filled_map":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/filled_map","layer1":"minecraft:item/filled_map_markings"}},"fire_charge":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/fire_charge"}},"fire_coral":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/fire_coral"}},"fire_coral_fan":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/fire_coral_fan"}},"firefly_bush":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/firefly_bush"}},"firework_rocket":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/firework_rocket"}},"firework_star":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/firework_star","layer1":"minecraft:item/firework_star_overlay"}},"fishing_rod":{"parent":"minecraft:item/handheld_rod","textures":{"layer0":"minecraft:item/fishing_rod"}},"fishing_rod_cast":{"parent":"minecraft:item/handheld_rod","textures":{"layer0":"minecraft:item/fishing_rod_cast"}},"flint":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/flint"}},"flint_and_steel":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/flint_and_steel"}},"flow_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/flow_armor_trim_smithing_template"}},"flow_banner_pattern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/flow_banner_pattern"}},"flow_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/flow_pottery_sherd"}},"flower_banner_pattern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/flower_banner_pattern"}},"flower_pot":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/flower_pot"}},"fox_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/fox_spawn_egg"}},"friend_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/friend_pottery_sherd"}},"frog_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/frog_spawn_egg"}},"frogspawn":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/frogspawn"}},"furnace_minecart":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/furnace_minecart"}},"generated":{"parent":"builtin/generated","gui_light":"front","display":{"ground":{"rotation":[0,0,0],"translation":[0,2,0],"scale":[0.5,0.5,0.5]},"head":{"rotation":[0,180,0],"translation":[0,13,7],"scale":[1,1,1]},"thirdperson_righthand":{"rotation":[0,0,0],"translation":[0,3,1],"scale":[0.55,0.55,0.55]},"firstperson_righthand":{"rotation":[0,-90,25],"translation":[1.13,3.2,1.13],"scale":[0.68,0.68,0.68]},"fixed":{"rotation":[0,180,0],"scale":[1,1,1]}}},"ghast_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/ghast_spawn_egg"}},"ghast_tear":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/ghast_tear"}},"glass_bottle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/glass_bottle"}},"glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/glass"}},"glistering_melon_slice":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/glistering_melon_slice"}},"globe_banner_pattern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/globe_banner_pattern"}},"glow_berries":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/glow_berries"}},"glow_ink_sac":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/glow_ink_sac"}},"glow_item_frame":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/glow_item_frame"}},"glow_lichen":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/glow_lichen"}},"glow_squid_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/glow_squid_spawn_egg"}},"glowstone_dust":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/glowstone_dust"}},"goat_horn":{"parent":"item/generated","textures":{"layer0":"item/goat_horn"},"display":{"thirdperson_righthand":{"rotation":[0,180,0],"translation":[0,3,1],"scale":[0.55,0.55,0.55]},"thirdperson_lefthand":{"rotation":[0,0,0],"translation":[0,3,1],"scale":[0.55,0.55,0.55]},"firstperson_righthand":{"rotation":[0,-90,25],"translation":[1.13,3.2,1.13],"scale":[0.68,0.68,0.68]},"firstperson_lefthand":{"rotation":[0,90,-25],"translation":[1.13,3.2,1.13],"scale":[0.68,0.68,0.68]}}},"goat_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/goat_spawn_egg"}},"gold_ingot":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/gold_ingot"}},"gold_nugget":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/gold_nugget"}},"golden_apple":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_apple"}},"golden_axe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/golden_axe"}},"golden_boots":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_boots"}},"golden_boots_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_boots","layer1":"minecraft:trims/items/boots_trim_amethyst"}},"golden_boots_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_boots","layer1":"minecraft:trims/items/boots_trim_copper"}},"golden_boots_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_boots","layer1":"minecraft:trims/items/boots_trim_diamond"}},"golden_boots_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_boots","layer1":"minecraft:trims/items/boots_trim_emerald"}},"golden_boots_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_boots","layer1":"minecraft:trims/items/boots_trim_gold_darker"}},"golden_boots_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_boots","layer1":"minecraft:trims/items/boots_trim_iron"}},"golden_boots_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_boots","layer1":"minecraft:trims/items/boots_trim_lapis"}},"golden_boots_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_boots","layer1":"minecraft:trims/items/boots_trim_netherite"}},"golden_boots_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_boots","layer1":"minecraft:trims/items/boots_trim_quartz"}},"golden_boots_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_boots","layer1":"minecraft:trims/items/boots_trim_redstone"}},"golden_boots_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_boots","layer1":"minecraft:trims/items/boots_trim_resin"}},"golden_carrot":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_carrot"}},"golden_chestplate":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_chestplate"}},"golden_chestplate_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_chestplate","layer1":"minecraft:trims/items/chestplate_trim_amethyst"}},"golden_chestplate_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_chestplate","layer1":"minecraft:trims/items/chestplate_trim_copper"}},"golden_chestplate_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_chestplate","layer1":"minecraft:trims/items/chestplate_trim_diamond"}},"golden_chestplate_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_chestplate","layer1":"minecraft:trims/items/chestplate_trim_emerald"}},"golden_chestplate_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_chestplate","layer1":"minecraft:trims/items/chestplate_trim_gold_darker"}},"golden_chestplate_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_chestplate","layer1":"minecraft:trims/items/chestplate_trim_iron"}},"golden_chestplate_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_chestplate","layer1":"minecraft:trims/items/chestplate_trim_lapis"}},"golden_chestplate_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_chestplate","layer1":"minecraft:trims/items/chestplate_trim_netherite"}},"golden_chestplate_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_chestplate","layer1":"minecraft:trims/items/chestplate_trim_quartz"}},"golden_chestplate_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_chestplate","layer1":"minecraft:trims/items/chestplate_trim_redstone"}},"golden_chestplate_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_chestplate","layer1":"minecraft:trims/items/chestplate_trim_resin"}},"golden_helmet":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_helmet"}},"golden_helmet_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_helmet","layer1":"minecraft:trims/items/helmet_trim_amethyst"}},"golden_helmet_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_helmet","layer1":"minecraft:trims/items/helmet_trim_copper"}},"golden_helmet_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_helmet","layer1":"minecraft:trims/items/helmet_trim_diamond"}},"golden_helmet_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_helmet","layer1":"minecraft:trims/items/helmet_trim_emerald"}},"golden_helmet_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_helmet","layer1":"minecraft:trims/items/helmet_trim_gold_darker"}},"golden_helmet_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_helmet","layer1":"minecraft:trims/items/helmet_trim_iron"}},"golden_helmet_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_helmet","layer1":"minecraft:trims/items/helmet_trim_lapis"}},"golden_helmet_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_helmet","layer1":"minecraft:trims/items/helmet_trim_netherite"}},"golden_helmet_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_helmet","layer1":"minecraft:trims/items/helmet_trim_quartz"}},"golden_helmet_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_helmet","layer1":"minecraft:trims/items/helmet_trim_redstone"}},"golden_helmet_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_helmet","layer1":"minecraft:trims/items/helmet_trim_resin"}},"golden_hoe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/golden_hoe"}},"golden_horse_armor":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_horse_armor"}},"golden_leggings":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_leggings"}},"golden_leggings_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_leggings","layer1":"minecraft:trims/items/leggings_trim_amethyst"}},"golden_leggings_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_leggings","layer1":"minecraft:trims/items/leggings_trim_copper"}},"golden_leggings_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_leggings","layer1":"minecraft:trims/items/leggings_trim_diamond"}},"golden_leggings_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_leggings","layer1":"minecraft:trims/items/leggings_trim_emerald"}},"golden_leggings_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_leggings","layer1":"minecraft:trims/items/leggings_trim_gold_darker"}},"golden_leggings_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_leggings","layer1":"minecraft:trims/items/leggings_trim_iron"}},"golden_leggings_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_leggings","layer1":"minecraft:trims/items/leggings_trim_lapis"}},"golden_leggings_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_leggings","layer1":"minecraft:trims/items/leggings_trim_netherite"}},"golden_leggings_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_leggings","layer1":"minecraft:trims/items/leggings_trim_quartz"}},"golden_leggings_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_leggings","layer1":"minecraft:trims/items/leggings_trim_redstone"}},"golden_leggings_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/golden_leggings","layer1":"minecraft:trims/items/leggings_trim_resin"}},"golden_pickaxe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/golden_pickaxe"}},"golden_shovel":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/golden_shovel"}},"golden_sword":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/golden_sword"}},"gray_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/gray_wool"}},"gray_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/gray_bundle"}},"gray_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/gray_bundle_open_back"}},"gray_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/gray_bundle_open_front"}},"gray_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/gray_candle"}},"gray_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/gray_dye"}},"gray_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/gray_harness"}},"gray_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/gray_shulker_box"}},"gray_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/gray_stained_glass"}},"green_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/green_wool"}},"green_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/green_bundle"}},"green_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/green_bundle_open_back"}},"green_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/green_bundle_open_front"}},"green_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/green_candle"}},"green_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/green_dye"}},"green_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/green_harness"}},"green_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/green_shulker_box"}},"green_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/green_stained_glass"}},"guardian_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/guardian_spawn_egg"}},"gunpowder":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/gunpowder"}},"guster_banner_pattern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/guster_banner_pattern"}},"guster_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/guster_pottery_sherd"}},"handheld":{"parent":"item/generated","display":{"thirdperson_righthand":{"rotation":[0,-90,55],"translation":[0,4.0,0.5],"scale":[0.85,0.85,0.85]},"thirdperson_lefthand":{"rotation":[0,90,-55],"translation":[0,4.0,0.5],"scale":[0.85,0.85,0.85]},"firstperson_righthand":{"rotation":[0,-90,25],"translation":[1.13,3.2,1.13],"scale":[0.68,0.68,0.68]},"firstperson_lefthand":{"rotation":[0,90,-25],"translation":[1.13,3.2,1.13],"scale":[0.68,0.68,0.68]}}},"handheld_mace":{"parent":"item/handheld","display":{"thirdperson_righthand":{"rotation":[0,-90,55],"translation":[0,4.0,1],"scale":[1,1,1]},"thirdperson_lefthand":{"rotation":[0,90,-55],"translation":[0,4.0,1],"scale":[1,1,1]},"firstperson_righthand":{"rotation":[0,-90,25],"translation":[0,3,0.8],"scale":[0.9,0.9,0.9]},"firstperson_lefthand":{"rotation":[0,90,-25],"translation":[0,3,0.8],"scale":[0.9,0.9,0.9]}}},"handheld_rod":{"parent":"item/handheld","display":{"thirdperson_righthand":{"rotation":[0,90,55],"translation":[0,4.0,2.5],"scale":[0.85,0.85,0.85]},"thirdperson_lefthand":{"rotation":[0,-90,-55],"translation":[0,4.0,2.5],"scale":[0.85,0.85,0.85]},"firstperson_righthand":{"rotation":[0,90,25],"translation":[0,1.6,0.8],"scale":[0.68,0.68,0.68]},"firstperson_lefthand":{"rotation":[0,-90,-25],"translation":[0,1.6,0.8],"scale":[0.68,0.68,0.68]}}},"hanging_roots":{"parent":"item/generated","textures":{"layer0":"minecraft:block/hanging_roots"},"display":{"thirdperson_righthand":{"rotation":[0,0,0],"translation":[0,0,1],"scale":[0.55,0.55,0.55]},"firstperson_righthand":{"rotation":[0,-90,25],"translation":[1.13,0,1.13],"scale":[0.68,0.68,0.68]}}},"happy_ghast_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/happy_ghast_spawn_egg"}},"heart_of_the_sea":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/heart_of_the_sea"}},"heart_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/heart_pottery_sherd"}},"heartbreak_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/heartbreak_pottery_sherd"}},"hoglin_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/hoglin_spawn_egg"}},"honey_bottle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/honey_bottle"}},"honeycomb":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/honeycomb"}},"hopper":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/hopper"}},"hopper_minecart":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/hopper_minecart"}},"horn_coral":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/horn_coral"}},"horn_coral_fan":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/horn_coral_fan"}},"horse_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/horse_spawn_egg"}},"host_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/host_armor_trim_smithing_template"}},"howl_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/howl_pottery_sherd"}},"husk_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/husk_spawn_egg"}},"ink_sac":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/ink_sac"}},"iron_axe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/iron_axe"}},"iron_bars":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/iron_bars"}},"iron_boots":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_boots"}},"iron_boots_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_boots","layer1":"minecraft:trims/items/boots_trim_amethyst"}},"iron_boots_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_boots","layer1":"minecraft:trims/items/boots_trim_copper"}},"iron_boots_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_boots","layer1":"minecraft:trims/items/boots_trim_diamond"}},"iron_boots_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_boots","layer1":"minecraft:trims/items/boots_trim_emerald"}},"iron_boots_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_boots","layer1":"minecraft:trims/items/boots_trim_gold"}},"iron_boots_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_boots","layer1":"minecraft:trims/items/boots_trim_iron_darker"}},"iron_boots_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_boots","layer1":"minecraft:trims/items/boots_trim_lapis"}},"iron_boots_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_boots","layer1":"minecraft:trims/items/boots_trim_netherite"}},"iron_boots_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_boots","layer1":"minecraft:trims/items/boots_trim_quartz"}},"iron_boots_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_boots","layer1":"minecraft:trims/items/boots_trim_redstone"}},"iron_boots_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_boots","layer1":"minecraft:trims/items/boots_trim_resin"}},"iron_chain":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chain"}},"iron_chestplate":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chestplate"}},"iron_chestplate_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chestplate","layer1":"minecraft:trims/items/chestplate_trim_amethyst"}},"iron_chestplate_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chestplate","layer1":"minecraft:trims/items/chestplate_trim_copper"}},"iron_chestplate_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chestplate","layer1":"minecraft:trims/items/chestplate_trim_diamond"}},"iron_chestplate_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chestplate","layer1":"minecraft:trims/items/chestplate_trim_emerald"}},"iron_chestplate_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chestplate","layer1":"minecraft:trims/items/chestplate_trim_gold"}},"iron_chestplate_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chestplate","layer1":"minecraft:trims/items/chestplate_trim_iron_darker"}},"iron_chestplate_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chestplate","layer1":"minecraft:trims/items/chestplate_trim_lapis"}},"iron_chestplate_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chestplate","layer1":"minecraft:trims/items/chestplate_trim_netherite"}},"iron_chestplate_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chestplate","layer1":"minecraft:trims/items/chestplate_trim_quartz"}},"iron_chestplate_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chestplate","layer1":"minecraft:trims/items/chestplate_trim_redstone"}},"iron_chestplate_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_chestplate","layer1":"minecraft:trims/items/chestplate_trim_resin"}},"iron_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_door"}},"iron_golem_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_golem_spawn_egg"}},"iron_helmet":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_helmet"}},"iron_helmet_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_helmet","layer1":"minecraft:trims/items/helmet_trim_amethyst"}},"iron_helmet_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_helmet","layer1":"minecraft:trims/items/helmet_trim_copper"}},"iron_helmet_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_helmet","layer1":"minecraft:trims/items/helmet_trim_diamond"}},"iron_helmet_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_helmet","layer1":"minecraft:trims/items/helmet_trim_emerald"}},"iron_helmet_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_helmet","layer1":"minecraft:trims/items/helmet_trim_gold"}},"iron_helmet_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_helmet","layer1":"minecraft:trims/items/helmet_trim_iron_darker"}},"iron_helmet_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_helmet","layer1":"minecraft:trims/items/helmet_trim_lapis"}},"iron_helmet_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_helmet","layer1":"minecraft:trims/items/helmet_trim_netherite"}},"iron_helmet_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_helmet","layer1":"minecraft:trims/items/helmet_trim_quartz"}},"iron_helmet_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_helmet","layer1":"minecraft:trims/items/helmet_trim_redstone"}},"iron_helmet_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_helmet","layer1":"minecraft:trims/items/helmet_trim_resin"}},"iron_hoe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/iron_hoe"}},"iron_horse_armor":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_horse_armor"}},"iron_ingot":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_ingot"}},"iron_leggings":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_leggings"}},"iron_leggings_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_leggings","layer1":"minecraft:trims/items/leggings_trim_amethyst"}},"iron_leggings_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_leggings","layer1":"minecraft:trims/items/leggings_trim_copper"}},"iron_leggings_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_leggings","layer1":"minecraft:trims/items/leggings_trim_diamond"}},"iron_leggings_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_leggings","layer1":"minecraft:trims/items/leggings_trim_emerald"}},"iron_leggings_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_leggings","layer1":"minecraft:trims/items/leggings_trim_gold"}},"iron_leggings_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_leggings","layer1":"minecraft:trims/items/leggings_trim_iron_darker"}},"iron_leggings_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_leggings","layer1":"minecraft:trims/items/leggings_trim_lapis"}},"iron_leggings_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_leggings","layer1":"minecraft:trims/items/leggings_trim_netherite"}},"iron_leggings_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_leggings","layer1":"minecraft:trims/items/leggings_trim_quartz"}},"iron_leggings_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_leggings","layer1":"minecraft:trims/items/leggings_trim_redstone"}},"iron_leggings_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_leggings","layer1":"minecraft:trims/items/leggings_trim_resin"}},"iron_nugget":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/iron_nugget"}},"iron_pickaxe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/iron_pickaxe"}},"iron_shovel":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/iron_shovel"}},"iron_sword":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/iron_sword"}},"item_frame":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/item_frame"}},"jungle_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/jungle_boat"}},"jungle_chest_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/jungle_chest_boat"}},"jungle_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/jungle_door"}},"jungle_hanging_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/jungle_hanging_sign"}},"jungle_sapling":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/jungle_sapling"}},"jungle_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/jungle_sign"}},"kelp":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/kelp"}},"knowledge_book":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/knowledge_book"}},"ladder":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/ladder"}},"lantern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/lantern"}},"lapis_lazuli":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/lapis_lazuli"}},"large_amethyst_bud":{"parent":"item/amethyst_bud","textures":{"layer0":"minecraft:block/large_amethyst_bud"},"display":{"fixed":{"translation":[0,4,0]}}},"large_fern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/large_fern_top"}},"lava_bucket":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/lava_bucket"}},"lead":{"parent":"item/generated","textures":{"layer0":"item/lead"},"display":{"head":{"rotation":[0,0,0],"translation":[2.75,-2.75,-6.5],"scale":[0.8,0.8,0.8]}}},"leaf_litter":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leaf_litter"}},"leather":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather"}},"leather_boots":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_boots","layer1":"minecraft:item/leather_boots_overlay"}},"leather_boots_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_boots","layer1":"minecraft:item/leather_boots_overlay","layer2":"minecraft:trims/items/boots_trim_amethyst"}},"leather_boots_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_boots","layer1":"minecraft:item/leather_boots_overlay","layer2":"minecraft:trims/items/boots_trim_copper"}},"leather_boots_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_boots","layer1":"minecraft:item/leather_boots_overlay","layer2":"minecraft:trims/items/boots_trim_diamond"}},"leather_boots_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_boots","layer1":"minecraft:item/leather_boots_overlay","layer2":"minecraft:trims/items/boots_trim_emerald"}},"leather_boots_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_boots","layer1":"minecraft:item/leather_boots_overlay","layer2":"minecraft:trims/items/boots_trim_gold"}},"leather_boots_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_boots","layer1":"minecraft:item/leather_boots_overlay","layer2":"minecraft:trims/items/boots_trim_iron"}},"leather_boots_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_boots","layer1":"minecraft:item/leather_boots_overlay","layer2":"minecraft:trims/items/boots_trim_lapis"}},"leather_boots_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_boots","layer1":"minecraft:item/leather_boots_overlay","layer2":"minecraft:trims/items/boots_trim_netherite"}},"leather_boots_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_boots","layer1":"minecraft:item/leather_boots_overlay","layer2":"minecraft:trims/items/boots_trim_quartz"}},"leather_boots_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_boots","layer1":"minecraft:item/leather_boots_overlay","layer2":"minecraft:trims/items/boots_trim_redstone"}},"leather_boots_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_boots","layer1":"minecraft:item/leather_boots_overlay","layer2":"minecraft:trims/items/boots_trim_resin"}},"leather_chestplate":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_chestplate","layer1":"minecraft:item/leather_chestplate_overlay"}},"leather_chestplate_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_chestplate","layer1":"minecraft:item/leather_chestplate_overlay","layer2":"minecraft:trims/items/chestplate_trim_amethyst"}},"leather_chestplate_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_chestplate","layer1":"minecraft:item/leather_chestplate_overlay","layer2":"minecraft:trims/items/chestplate_trim_copper"}},"leather_chestplate_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_chestplate","layer1":"minecraft:item/leather_chestplate_overlay","layer2":"minecraft:trims/items/chestplate_trim_diamond"}},"leather_chestplate_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_chestplate","layer1":"minecraft:item/leather_chestplate_overlay","layer2":"minecraft:trims/items/chestplate_trim_emerald"}},"leather_chestplate_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_chestplate","layer1":"minecraft:item/leather_chestplate_overlay","layer2":"minecraft:trims/items/chestplate_trim_gold"}},"leather_chestplate_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_chestplate","layer1":"minecraft:item/leather_chestplate_overlay","layer2":"minecraft:trims/items/chestplate_trim_iron"}},"leather_chestplate_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_chestplate","layer1":"minecraft:item/leather_chestplate_overlay","layer2":"minecraft:trims/items/chestplate_trim_lapis"}},"leather_chestplate_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_chestplate","layer1":"minecraft:item/leather_chestplate_overlay","layer2":"minecraft:trims/items/chestplate_trim_netherite"}},"leather_chestplate_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_chestplate","layer1":"minecraft:item/leather_chestplate_overlay","layer2":"minecraft:trims/items/chestplate_trim_quartz"}},"leather_chestplate_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_chestplate","layer1":"minecraft:item/leather_chestplate_overlay","layer2":"minecraft:trims/items/chestplate_trim_redstone"}},"leather_chestplate_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_chestplate","layer1":"minecraft:item/leather_chestplate_overlay","layer2":"minecraft:trims/items/chestplate_trim_resin"}},"leather_helmet":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_helmet","layer1":"minecraft:item/leather_helmet_overlay"}},"leather_helmet_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_helmet","layer1":"minecraft:item/leather_helmet_overlay","layer2":"minecraft:trims/items/helmet_trim_amethyst"}},"leather_helmet_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_helmet","layer1":"minecraft:item/leather_helmet_overlay","layer2":"minecraft:trims/items/helmet_trim_copper"}},"leather_helmet_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_helmet","layer1":"minecraft:item/leather_helmet_overlay","layer2":"minecraft:trims/items/helmet_trim_diamond"}},"leather_helmet_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_helmet","layer1":"minecraft:item/leather_helmet_overlay","layer2":"minecraft:trims/items/helmet_trim_emerald"}},"leather_helmet_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_helmet","layer1":"minecraft:item/leather_helmet_overlay","layer2":"minecraft:trims/items/helmet_trim_gold"}},"leather_helmet_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_helmet","layer1":"minecraft:item/leather_helmet_overlay","layer2":"minecraft:trims/items/helmet_trim_iron"}},"leather_helmet_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_helmet","layer1":"minecraft:item/leather_helmet_overlay","layer2":"minecraft:trims/items/helmet_trim_lapis"}},"leather_helmet_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_helmet","layer1":"minecraft:item/leather_helmet_overlay","layer2":"minecraft:trims/items/helmet_trim_netherite"}},"leather_helmet_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_helmet","layer1":"minecraft:item/leather_helmet_overlay","layer2":"minecraft:trims/items/helmet_trim_quartz"}},"leather_helmet_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_helmet","layer1":"minecraft:item/leather_helmet_overlay","layer2":"minecraft:trims/items/helmet_trim_redstone"}},"leather_helmet_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_helmet","layer1":"minecraft:item/leather_helmet_overlay","layer2":"minecraft:trims/items/helmet_trim_resin"}},"leather_horse_armor":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_horse_armor"}},"leather_leggings":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_leggings","layer1":"minecraft:item/leather_leggings_overlay"}},"leather_leggings_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_leggings","layer1":"minecraft:item/leather_leggings_overlay","layer2":"minecraft:trims/items/leggings_trim_amethyst"}},"leather_leggings_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_leggings","layer1":"minecraft:item/leather_leggings_overlay","layer2":"minecraft:trims/items/leggings_trim_copper"}},"leather_leggings_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_leggings","layer1":"minecraft:item/leather_leggings_overlay","layer2":"minecraft:trims/items/leggings_trim_diamond"}},"leather_leggings_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_leggings","layer1":"minecraft:item/leather_leggings_overlay","layer2":"minecraft:trims/items/leggings_trim_emerald"}},"leather_leggings_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_leggings","layer1":"minecraft:item/leather_leggings_overlay","layer2":"minecraft:trims/items/leggings_trim_gold"}},"leather_leggings_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_leggings","layer1":"minecraft:item/leather_leggings_overlay","layer2":"minecraft:trims/items/leggings_trim_iron"}},"leather_leggings_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_leggings","layer1":"minecraft:item/leather_leggings_overlay","layer2":"minecraft:trims/items/leggings_trim_lapis"}},"leather_leggings_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_leggings","layer1":"minecraft:item/leather_leggings_overlay","layer2":"minecraft:trims/items/leggings_trim_netherite"}},"leather_leggings_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_leggings","layer1":"minecraft:item/leather_leggings_overlay","layer2":"minecraft:trims/items/leggings_trim_quartz"}},"leather_leggings_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_leggings","layer1":"minecraft:item/leather_leggings_overlay","layer2":"minecraft:trims/items/leggings_trim_redstone"}},"leather_leggings_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/leather_leggings","layer1":"minecraft:item/leather_leggings_overlay","layer2":"minecraft:trims/items/leggings_trim_resin"}},"lever":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/lever"}},"light":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light"}},"light_00":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_00"}},"light_01":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_01"}},"light_02":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_02"}},"light_03":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_03"}},"light_04":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_04"}},"light_05":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_05"}},"light_06":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_06"}},"light_07":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_07"}},"light_08":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_08"}},"light_09":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_09"}},"light_10":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_10"}},"light_11":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_11"}},"light_12":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_12"}},"light_13":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_13"}},"light_14":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_14"}},"light_15":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_15"}},"light_blue_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/light_blue_wool"}},"light_blue_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_blue_bundle"}},"light_blue_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/light_blue_bundle_open_back"}},"light_blue_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/light_blue_bundle_open_front"}},"light_blue_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_blue_candle"}},"light_blue_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_blue_dye"}},"light_blue_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_blue_harness"}},"light_blue_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/light_blue_shulker_box"}},"light_blue_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/light_blue_stained_glass"}},"light_gray_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/light_gray_wool"}},"light_gray_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_gray_bundle"}},"light_gray_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/light_gray_bundle_open_back"}},"light_gray_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/light_gray_bundle_open_front"}},"light_gray_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_gray_candle"}},"light_gray_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_gray_dye"}},"light_gray_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/light_gray_harness"}},"light_gray_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/light_gray_shulker_box"}},"light_gray_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/light_gray_stained_glass"}},"lilac":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/lilac_top"}},"lily_of_the_valley":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/lily_of_the_valley"}},"lily_pad":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/lily_pad"}},"lime_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/lime_wool"}},"lime_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/lime_bundle"}},"lime_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/lime_bundle_open_back"}},"lime_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/lime_bundle_open_front"}},"lime_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/lime_candle"}},"lime_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/lime_dye"}},"lime_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/lime_harness"}},"lime_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/lime_shulker_box"}},"lime_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/lime_stained_glass"}},"lingering_potion":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/potion_overlay","layer1":"minecraft:item/lingering_potion"}},"llama_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/llama_spawn_egg"}},"mace":{"parent":"minecraft:item/handheld_mace","textures":{"layer0":"minecraft:item/mace"}},"magenta_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/magenta_wool"}},"magenta_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/magenta_bundle"}},"magenta_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/magenta_bundle_open_back"}},"magenta_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/magenta_bundle_open_front"}},"magenta_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/magenta_candle"}},"magenta_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/magenta_dye"}},"magenta_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/magenta_harness"}},"magenta_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/magenta_shulker_box"}},"magenta_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/magenta_stained_glass"}},"magma_cream":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/magma_cream"}},"magma_cube_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/magma_cube_spawn_egg"}},"mangrove_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/mangrove_boat"}},"mangrove_chest_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/mangrove_chest_boat"}},"mangrove_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/mangrove_door"}},"mangrove_hanging_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/mangrove_hanging_sign"}},"mangrove_propagule":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/mangrove_propagule"}},"mangrove_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/mangrove_sign"}},"map":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/map"}},"medium_amethyst_bud":{"parent":"item/amethyst_bud","textures":{"layer0":"minecraft:block/medium_amethyst_bud"},"display":{"fixed":{"translation":[0,6,0]}}},"melon_seeds":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/melon_seeds"}},"melon_slice":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/melon_slice"}},"milk_bucket":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/milk_bucket"}},"minecart":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/minecart"}},"miner_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/miner_pottery_sherd"}},"mojang_banner_pattern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/mojang_banner_pattern"}},"mooshroom_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/mooshroom_spawn_egg"}},"mourner_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/mourner_pottery_sherd"}},"mule_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/mule_spawn_egg"}},"mushroom_stew":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/mushroom_stew"}},"music_disc_11":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_11"}},"music_disc_13":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_13"}},"music_disc_5":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_5"}},"music_disc_blocks":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_blocks"}},"music_disc_cat":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_cat"}},"music_disc_chirp":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_chirp"}},"music_disc_creator":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_creator"}},"music_disc_creator_music_box":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_creator_music_box"}},"music_disc_far":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_far"}},"music_disc_lava_chicken":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_lava_chicken"}},"music_disc_mall":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_mall"}},"music_disc_mellohi":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_mellohi"}},"music_disc_otherside":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_otherside"}},"music_disc_pigstep":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_pigstep"}},"music_disc_precipice":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_precipice"}},"music_disc_relic":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_relic"}},"music_disc_stal":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_stal"}},"music_disc_strad":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_strad"}},"music_disc_tears":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_tears"}},"music_disc_wait":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_wait"}},"music_disc_ward":{"parent":"minecraft:item/template_music_disc","textures":{"layer0":"minecraft:item/music_disc_ward"}},"mutton":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/mutton"}},"name_tag":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/name_tag"}},"nautilus_shell":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/nautilus_shell"}},"nether_brick":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/nether_brick"}},"nether_sprouts":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/nether_sprouts"}},"nether_star":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/nether_star"}},"nether_wart":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/nether_wart"}},"netherite_axe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/netherite_axe"}},"netherite_boots":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_boots"}},"netherite_boots_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_boots","layer1":"minecraft:trims/items/boots_trim_amethyst"}},"netherite_boots_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_boots","layer1":"minecraft:trims/items/boots_trim_copper"}},"netherite_boots_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_boots","layer1":"minecraft:trims/items/boots_trim_diamond"}},"netherite_boots_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_boots","layer1":"minecraft:trims/items/boots_trim_emerald"}},"netherite_boots_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_boots","layer1":"minecraft:trims/items/boots_trim_gold"}},"netherite_boots_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_boots","layer1":"minecraft:trims/items/boots_trim_iron"}},"netherite_boots_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_boots","layer1":"minecraft:trims/items/boots_trim_lapis"}},"netherite_boots_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_boots","layer1":"minecraft:trims/items/boots_trim_netherite_darker"}},"netherite_boots_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_boots","layer1":"minecraft:trims/items/boots_trim_quartz"}},"netherite_boots_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_boots","layer1":"minecraft:trims/items/boots_trim_redstone"}},"netherite_boots_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_boots","layer1":"minecraft:trims/items/boots_trim_resin"}},"netherite_chestplate":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_chestplate"}},"netherite_chestplate_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_chestplate","layer1":"minecraft:trims/items/chestplate_trim_amethyst"}},"netherite_chestplate_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_chestplate","layer1":"minecraft:trims/items/chestplate_trim_copper"}},"netherite_chestplate_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_chestplate","layer1":"minecraft:trims/items/chestplate_trim_diamond"}},"netherite_chestplate_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_chestplate","layer1":"minecraft:trims/items/chestplate_trim_emerald"}},"netherite_chestplate_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_chestplate","layer1":"minecraft:trims/items/chestplate_trim_gold"}},"netherite_chestplate_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_chestplate","layer1":"minecraft:trims/items/chestplate_trim_iron"}},"netherite_chestplate_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_chestplate","layer1":"minecraft:trims/items/chestplate_trim_lapis"}},"netherite_chestplate_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_chestplate","layer1":"minecraft:trims/items/chestplate_trim_netherite_darker"}},"netherite_chestplate_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_chestplate","layer1":"minecraft:trims/items/chestplate_trim_quartz"}},"netherite_chestplate_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_chestplate","layer1":"minecraft:trims/items/chestplate_trim_redstone"}},"netherite_chestplate_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_chestplate","layer1":"minecraft:trims/items/chestplate_trim_resin"}},"netherite_helmet":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_helmet"}},"netherite_helmet_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_helmet","layer1":"minecraft:trims/items/helmet_trim_amethyst"}},"netherite_helmet_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_helmet","layer1":"minecraft:trims/items/helmet_trim_copper"}},"netherite_helmet_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_helmet","layer1":"minecraft:trims/items/helmet_trim_diamond"}},"netherite_helmet_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_helmet","layer1":"minecraft:trims/items/helmet_trim_emerald"}},"netherite_helmet_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_helmet","layer1":"minecraft:trims/items/helmet_trim_gold"}},"netherite_helmet_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_helmet","layer1":"minecraft:trims/items/helmet_trim_iron"}},"netherite_helmet_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_helmet","layer1":"minecraft:trims/items/helmet_trim_lapis"}},"netherite_helmet_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_helmet","layer1":"minecraft:trims/items/helmet_trim_netherite_darker"}},"netherite_helmet_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_helmet","layer1":"minecraft:trims/items/helmet_trim_quartz"}},"netherite_helmet_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_helmet","layer1":"minecraft:trims/items/helmet_trim_redstone"}},"netherite_helmet_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_helmet","layer1":"minecraft:trims/items/helmet_trim_resin"}},"netherite_hoe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/netherite_hoe"}},"netherite_ingot":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_ingot"}},"netherite_leggings":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_leggings"}},"netherite_leggings_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_leggings","layer1":"minecraft:trims/items/leggings_trim_amethyst"}},"netherite_leggings_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_leggings","layer1":"minecraft:trims/items/leggings_trim_copper"}},"netherite_leggings_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_leggings","layer1":"minecraft:trims/items/leggings_trim_diamond"}},"netherite_leggings_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_leggings","layer1":"minecraft:trims/items/leggings_trim_emerald"}},"netherite_leggings_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_leggings","layer1":"minecraft:trims/items/leggings_trim_gold"}},"netherite_leggings_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_leggings","layer1":"minecraft:trims/items/leggings_trim_iron"}},"netherite_leggings_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_leggings","layer1":"minecraft:trims/items/leggings_trim_lapis"}},"netherite_leggings_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_leggings","layer1":"minecraft:trims/items/leggings_trim_netherite_darker"}},"netherite_leggings_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_leggings","layer1":"minecraft:trims/items/leggings_trim_quartz"}},"netherite_leggings_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_leggings","layer1":"minecraft:trims/items/leggings_trim_redstone"}},"netherite_leggings_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_leggings","layer1":"minecraft:trims/items/leggings_trim_resin"}},"netherite_pickaxe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/netherite_pickaxe"}},"netherite_scrap":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_scrap"}},"netherite_shovel":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/netherite_shovel"}},"netherite_sword":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/netherite_sword"}},"netherite_upgrade_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/netherite_upgrade_smithing_template"}},"oak_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/oak_boat"}},"oak_chest_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/oak_chest_boat"}},"oak_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/oak_door"}},"oak_hanging_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/oak_hanging_sign"}},"oak_sapling":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/oak_sapling"}},"oak_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/oak_sign"}},"ocelot_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/ocelot_spawn_egg"}},"ominous_bottle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/ominous_bottle"}},"ominous_trial_key":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/ominous_trial_key"}},"open_eyeblossom":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/open_eyeblossom","layer1":"minecraft:block/open_eyeblossom_emissive"}},"orange_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/orange_wool"}},"orange_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/orange_bundle"}},"orange_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/orange_bundle_open_back"}},"orange_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/orange_bundle_open_front"}},"orange_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/orange_candle"}},"orange_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/orange_dye"}},"orange_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/orange_harness"}},"orange_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/orange_shulker_box"}},"orange_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/orange_stained_glass"}},"orange_tulip":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/orange_tulip"}},"oxeye_daisy":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/oxeye_daisy"}},"oxidized_copper_bars":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/oxidized_copper_bars"}},"oxidized_copper_chain":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/oxidized_copper_chain"}},"oxidized_copper_chest":{"parent":"minecraft:item/template_chest","textures":{"particle":"minecraft:block/oxidized_copper"}},"oxidized_copper_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/oxidized_copper_door"}},"oxidized_copper_lantern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/oxidized_copper_lantern"}},"painting":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/painting"}},"pale_hanging_moss":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/pale_hanging_moss"}},"pale_oak_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pale_oak_boat"}},"pale_oak_chest_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pale_oak_chest_boat"}},"pale_oak_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pale_oak_door"}},"pale_oak_hanging_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pale_oak_hanging_sign"}},"pale_oak_sapling":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/pale_oak_sapling"}},"pale_oak_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pale_oak_sign"}},"panda_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/panda_spawn_egg"}},"paper":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/paper"}},"parrot_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/parrot_spawn_egg"}},"peony":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/peony_top"}},"phantom_membrane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/phantom_membrane"}},"phantom_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/phantom_spawn_egg"}},"pig_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pig_spawn_egg"}},"piglin_banner_pattern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/piglin_banner_pattern"}},"piglin_brute_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/piglin_brute_spawn_egg"}},"piglin_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/piglin_spawn_egg"}},"pillager_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pillager_spawn_egg"}},"pink_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/pink_wool"}},"pink_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pink_bundle"}},"pink_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/pink_bundle_open_back"}},"pink_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/pink_bundle_open_front"}},"pink_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pink_candle"}},"pink_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pink_dye"}},"pink_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pink_harness"}},"pink_petals":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pink_petals"}},"pink_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/pink_shulker_box"}},"pink_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/pink_stained_glass"}},"pink_tulip":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/pink_tulip"}},"pitcher_plant":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pitcher_plant"}},"pitcher_pod":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pitcher_pod"}},"plenty_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/plenty_pottery_sherd"}},"pointed_dripstone":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pointed_dripstone"},"display":{"thirdperson_righthand":{"rotation":[0,100,0],"translation":[-1,-1,0],"scale":[0.9,0.9,0.9]},"firstperson_righthand":{"rotation":[0,100,0],"translation":[0,-2,0],"scale":[0.9,0.9,0.9]}}},"poisonous_potato":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/poisonous_potato"}},"polar_bear_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/polar_bear_spawn_egg"}},"popped_chorus_fruit":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/popped_chorus_fruit"}},"poppy":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/poppy"}},"porkchop":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/porkchop"}},"potato":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/potato"}},"potion":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/potion_overlay","layer1":"minecraft:item/potion"}},"powder_snow_bucket":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/powder_snow_bucket"}},"powered_rail":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/powered_rail"}},"prismarine_crystals":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/prismarine_crystals"}},"prismarine_shard":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/prismarine_shard"}},"prize_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/prize_pottery_sherd"}},"pufferfish":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pufferfish"}},"pufferfish_bucket":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pufferfish_bucket"}},"pufferfish_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pufferfish_spawn_egg"}},"pumpkin_pie":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pumpkin_pie"}},"pumpkin_seeds":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/pumpkin_seeds"}},"purple_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/purple_wool"}},"purple_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/purple_bundle"}},"purple_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/purple_bundle_open_back"}},"purple_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/purple_bundle_open_front"}},"purple_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/purple_candle"}},"purple_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/purple_dye"}},"purple_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/purple_harness"}},"purple_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/purple_shulker_box"}},"purple_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/purple_stained_glass"}},"quartz":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/quartz"}},"rabbit":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/rabbit"}},"rabbit_foot":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/rabbit_foot"}},"rabbit_hide":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/rabbit_hide"}},"rabbit_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/rabbit_spawn_egg"}},"rabbit_stew":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/rabbit_stew"}},"rail":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/rail"}},"raiser_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/raiser_armor_trim_smithing_template"}},"ravager_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/ravager_spawn_egg"}},"raw_copper":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/raw_copper"}},"raw_gold":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/raw_gold"}},"raw_iron":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/raw_iron"}},"recovery_compass_00":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_00"}},"recovery_compass_01":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_01"}},"recovery_compass_02":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_02"}},"recovery_compass_03":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_03"}},"recovery_compass_04":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_04"}},"recovery_compass_05":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_05"}},"recovery_compass_06":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_06"}},"recovery_compass_07":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_07"}},"recovery_compass_08":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_08"}},"recovery_compass_09":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_09"}},"recovery_compass_10":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_10"}},"recovery_compass_11":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_11"}},"recovery_compass_12":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_12"}},"recovery_compass_13":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_13"}},"recovery_compass_14":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_14"}},"recovery_compass_15":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_15"}},"recovery_compass_16":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_16"}},"recovery_compass_17":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_17"}},"recovery_compass_18":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_18"}},"recovery_compass_19":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_19"}},"recovery_compass_20":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_20"}},"recovery_compass_21":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_21"}},"recovery_compass_22":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_22"}},"recovery_compass_23":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_23"}},"recovery_compass_24":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_24"}},"recovery_compass_25":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_25"}},"recovery_compass_26":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_26"}},"recovery_compass_27":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_27"}},"recovery_compass_28":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_28"}},"recovery_compass_29":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_29"}},"recovery_compass_30":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_30"}},"recovery_compass_31":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/recovery_compass_31"}},"red_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/red_wool"}},"red_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/red_bundle"}},"red_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/red_bundle_open_back"}},"red_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/red_bundle_open_front"}},"red_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/red_candle"}},"red_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/red_dye"}},"red_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/red_harness"}},"red_mushroom":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/red_mushroom"}},"red_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/red_shulker_box"}},"red_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/red_stained_glass"}},"red_tulip":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/red_tulip"}},"redstone":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/redstone"}},"redstone_torch":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/redstone_torch"}},"repeater":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/repeater"}},"resin_brick":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/resin_brick"}},"resin_clump":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/resin_clump"}},"rib_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/rib_armor_trim_smithing_template"}},"rose_bush":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/rose_bush_top"}},"rotten_flesh":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/rotten_flesh"}},"saddle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/saddle"}},"salmon":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/salmon"}},"salmon_bucket":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/salmon_bucket"}},"salmon_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/salmon_spawn_egg"}},"scrape_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/scrape_pottery_sherd"}},"sculk_vein":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/sculk_vein"}},"sea_pickle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/sea_pickle"}},"seagrass":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/seagrass"}},"sentry_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/sentry_armor_trim_smithing_template"}},"shaper_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/shaper_armor_trim_smithing_template"}},"sheaf_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/sheaf_pottery_sherd"}},"shears":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/shears"}},"sheep_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/sheep_spawn_egg"}},"shelter_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/shelter_pottery_sherd"}},"shield":{"gui_light":"front","textures":{"particle":"block/dark_oak_planks"},"display":{"thirdperson_righthand":{"rotation":[0,90,0],"translation":[10,6,-4],"scale":[1,1,1]},"thirdperson_lefthand":{"rotation":[0,90,0],"translation":[10,6,12],"scale":[1,1,1]},"firstperson_righthand":{"rotation":[0,180,5],"translation":[-10,2,-10],"scale":[1.25,1.25,1.25]},"firstperson_lefthand":{"rotation":[0,180,5],"translation":[10,0,-10],"scale":[1.25,1.25,1.25]},"gui":{"rotation":[15,-25,-5],"translation":[2,3,0],"scale":[0.65,0.65,0.65]},"fixed":{"rotation":[0,180,0],"translation":[-4.5,4.5,-5],"scale":[0.55,0.55,0.55]},"on_shelf":{"rotation":[0,0,0],"translation":[11,18.5,8.7],"scale":[1.4,1.4,1.4]},"ground":{"rotation":[0,0,0],"translation":[2,4,2],"scale":[0.25,0.25,0.25]}}},"shield_blocking":{"gui_light":"front","textures":{"particle":"block/dark_oak_planks"},"display":{"thirdperson_righthand":{"rotation":[45,155,0],"translation":[-3.49,11,-2],"scale":[1,1,1]},"thirdperson_lefthand":{"rotation":[45,155,0],"translation":[11.51,7,2.5],"scale":[1,1,1]},"firstperson_righthand":{"rotation":[0,180,-5],"translation":[-15,5,-11],"scale":[1.25,1.25,1.25]},"firstperson_lefthand":{"rotation":[0,180,-5],"translation":[5,5,-11],"scale":[1.25,1.25,1.25]},"gui":{"rotation":[15,-25,-5],"translation":[2,3,0],"scale":[0.65,0.65,0.65]}}},"short_dry_grass":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/short_dry_grass"}},"short_grass":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/short_grass"}},"shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/shulker_box"}},"shulker_shell":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/shulker_shell"}},"shulker_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/shulker_spawn_egg"}},"silence_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/silence_armor_trim_smithing_template"}},"silverfish_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/silverfish_spawn_egg"}},"skeleton_horse_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/skeleton_horse_spawn_egg"}},"skeleton_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/skeleton_spawn_egg"}},"skull_banner_pattern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/skull_banner_pattern"}},"skull_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/skull_pottery_sherd"}},"slime_ball":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/slime_ball"}},"slime_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/slime_spawn_egg"}},"small_amethyst_bud":{"parent":"item/amethyst_bud","textures":{"layer0":"minecraft:block/small_amethyst_bud"},"display":{"firstperson_righthand":{"rotation":[0,-90,25],"translation":[0,6,0],"scale":[0.68,0.68,0.68]},"fixed":{"translation":[0,7,0]}}},"small_dripleaf":{"parent":"minecraft:block/small_dripleaf_top","display":{"thirdperson_righthand":{"rotation":[0,0,0],"translation":[0,4,1],"scale":[0.55,0.55,0.55]},"firstperson_righthand":{"rotation":[0,45,0],"translation":[0,3.2,0],"scale":[0.40,0.40,0.40]}}},"sniffer_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/sniffer_egg"}},"sniffer_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/sniffer_spawn_egg"}},"snort_pottery_sherd":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/snort_pottery_sherd"}},"snout_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/snout_armor_trim_smithing_template"}},"snow_golem_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/snow_golem_spawn_egg"}},"snowball":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/snowball"}},"soul_campfire":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/soul_campfire"}},"soul_lantern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/soul_lantern"}},"soul_torch":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/soul_torch"}},"spectral_arrow":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/spectral_arrow"}},"spider_eye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/spider_eye"}},"spider_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/spider_spawn_egg"}},"spire_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/spire_armor_trim_smithing_template"}},"splash_potion":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/potion_overlay","layer1":"minecraft:item/splash_potion"}},"spruce_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/spruce_boat"}},"spruce_chest_boat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/spruce_chest_boat"}},"spruce_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/spruce_door"}},"spruce_hanging_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/spruce_hanging_sign"}},"spruce_sapling":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/spruce_sapling"}},"spruce_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/spruce_sign"}},"spyglass":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/spyglass"}},"spyglass_in_hand":{"textures":{"spyglass":"item/spyglass_model","particle":"#spyglass"},"elements":[{"from":[7,8.5,7],"to":[9,13.5,9],"faces":{"north":{"uv":[0,2,2,7],"texture":"#spyglass"},"east":{"uv":[0,2,2,7],"texture":"#spyglass"},"south":{"uv":[0,2,2,7],"texture":"#spyglass"},"west":{"uv":[0,2,2,7],"texture":"#spyglass"},"up":{"uv":[0,0,2,2],"texture":"#spyglass"}}},{"from":[6.9,2.4,6.9],"to":[9.1,8.6,9.1],"faces":{"north":{"uv":[0,7,2,13],"texture":"#spyglass"},"east":{"uv":[0,7,2,13],"texture":"#spyglass"},"south":{"uv":[0,7,2,13],"texture":"#spyglass"},"west":{"uv":[0,7,2,13],"texture":"#spyglass"},"up":{"uv":[0,5,2,7],"texture":"#spyglass"},"down":{"uv":[0,13,2,15],"texture":"#spyglass"}}}],"gui_light":"front","display":{"thirdperson_righthand":{"translation":[0,-2,0]},"ground":{"rotation":[90,0,0]},"gui":{"rotation":[-67.5,0,45],"scale":[1.5,1.5,1.5]},"head":{"rotation":[90,0,0],"translation":[0,0,-16],"scale":[1.6,1.6,1.6]},"fixed":{"translation":[0,0,-1.5],"scale":[1.5,1.5,1.5]}}},"squid_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/squid_spawn_egg"}},"stick":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/stick"}},"stone_axe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/stone_axe"}},"stone_hoe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/stone_hoe"}},"stone_pickaxe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/stone_pickaxe"}},"stone_shovel":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/stone_shovel"}},"stone_sword":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/stone_sword"}},"stray_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/stray_spawn_egg"}},"strider_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/strider_spawn_egg"}},"string":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/string"}},"structure_void":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/structure_void"}},"sugar":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/sugar"}},"sugar_cane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/sugar_cane"}},"sunflower":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/sunflower_front"}},"suspicious_stew":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/suspicious_stew"}},"sweet_berries":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/sweet_berries"}},"tadpole_bucket":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/tadpole_bucket"}},"tadpole_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/tadpole_spawn_egg"}},"tall_dry_grass":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/tall_dry_grass"}},"tall_grass":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/tall_grass_top"}},"template_banner":{"gui_light":"front","textures":{"particle":"block/oak_planks"},"display":{"thirdperson_righthand":{"rotation":[0,90,0],"translation":[0,2,0.5],"scale":[0.375,0.375,0.375]},"firstperson_righthand":{"rotation":[0,90,0],"translation":[0,0,0],"scale":[0.375,0.375,0.375]},"gui":{"rotation":[30,20,0],"translation":[0,-3.25,0],"scale":[0.5325,0.5325,0.5325]},"ground":{"rotation":[0,0,0],"translation":[0,1,0],"scale":[0.25,0.25,0.25]},"head":{"rotation":[0,180,0],"translation":[0,16,7],"scale":[1.5,1.5,1.5]},"fixed":{"rotation":[0,180,0],"translation":[0,0,0],"scale":[0.5,0.5,0.5]}}},"template_bed":{"display":{"thirdperson_righthand":{"rotation":[30,160,0],"translation":[0,3,-2],"scale":[0.23,0.23,0.23]},"firstperson_righthand":{"rotation":[30,160,0],"translation":[0,3,0],"scale":[0.375,0.375,0.375]},"gui":{"rotation":[30,160,0],"translation":[2,3,0],"scale":[0.5325,0.5325,0.5325]},"ground":{"rotation":[0,0,0],"translation":[0,1,2],"scale":[0.25,0.25,0.25]},"head":{"rotation":[0,180,0],"translation":[0,10,-8],"scale":[1,1,1]},"fixed":{"rotation":[270,0,0],"translation":[0,4,-2],"scale":[0.5,0.5,0.5]},"on_shelf":{"rotation":[90,180,0],"translation":[0,14.5,2.5],"scale":[0.9375,0.9375,0.9375]}}},"template_bundle_open_back":{"parent":"minecraft:item/generated","display":{"gui":{"translation":[0,0,-16]}}},"template_bundle_open_front":{"parent":"minecraft:item/generated","display":{"gui":{"translation":[0,0,16]}}},"template_chest":{"display":{"gui":{"rotation":[30,45,0],"translation":[0,0,0],"scale":[0.625,0.625,0.625]},"ground":{"rotation":[0,0,0],"translation":[0,3,0],"scale":[0.25,0.25,0.25]},"head":{"rotation":[0,180,0],"translation":[0,0,0],"scale":[1,1,1]},"fixed":{"rotation":[0,180,0],"translation":[0,0,0],"scale":[0.5,0.5,0.5]},"thirdperson_righthand":{"rotation":[75,315,0],"translation":[0,2.5,0],"scale":[0.375,0.375,0.375]},"firstperson_righthand":{"rotation":[0,315,0],"translation":[0,0,0],"scale":[0.4,0.4,0.4]}}},"template_copper_golem_statue":{"textures":{"particle":"block/copper_block"},"display":{"gui":{"rotation":[30,45,180],"translation":[0,2,0],"scale":[0.55,0.55,0.55]},"ground":{"rotation":[0,0,180],"translation":[0,0,0],"scale":[0.35,0.35,0.35]},"firstperson_righthand":{"rotation":[0,-45,180],"translation":[0,5,0],"scale":[0.5,0.5,0.5]},"thirdperson_righthand":{"rotation":[0,-45,180],"translation":[0,5,0],"scale":[0.5,0.5,0.5]},"fixed":{"rotation":[0,180,180],"translation":[0,3,0],"scale":[0.5,0.5,0.5]},"on_shelf":{"rotation":[0,0,180],"translation":[0,8,0],"scale":[1,1,1]},"head":{"rotation":[0,180,180],"translation":[0,22.5,0],"scale":[1,1,1]}}},"template_music_disc":{"parent":"item/generated","gui_light":"front","display":{"fixed":{"rotation":[0,180,0],"translation":[-0.5,0,0]}}},"template_shulker_box":{"display":{"gui":{"rotation":[30,45,0],"translation":[0,0,0],"scale":[0.625,0.625,0.625]},"ground":{"rotation":[0,0,0],"translation":[0,3,0],"scale":[0.25,0.25,0.25]},"head":{"rotation":[0,180,0],"translation":[0,0,0],"scale":[1,1,1]},"fixed":{"rotation":[0,180,0],"translation":[0,0,0],"scale":[0.5,0.5,0.5]},"thirdperson_righthand":{"rotation":[75,315,0],"translation":[0,2.5,0],"scale":[0.375,0.375,0.375]},"firstperson_righthand":{"rotation":[0,315,0],"translation":[0,0,0],"scale":[0.4,0.4,0.4]}}},"template_skull":{"textures":{"particle":"block/soul_sand"},"display":{"gui":{"rotation":[30,45,0],"translation":[0,3,0],"scale":[1,1,1]},"fixed":{"rotation":[0,180,0],"translation":[0,4,0],"scale":[1,1,1]},"on_shelf":{"rotation":[0,0,0],"translation":[0,8,0],"scale":[2,2,2]},"ground":{"rotation":[0,0,0],"translation":[0,3,0],"scale":[0.5,0.5,0.5]},"thirdperson_righthand":{"rotation":[45,45,0],"translation":[0,3,0],"scale":[0.5,0.5,0.5]}}},"tide_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/tide_armor_trim_smithing_template"}},"tipped_arrow":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/tipped_arrow_head","layer1":"minecraft:item/tipped_arrow_base"}},"tnt_minecart":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/tnt_minecart"}},"tooting_goat_horn":{"parent":"item/generated","textures":{"layer0":"item/goat_horn"},"display":{"thirdperson_righthand":{"rotation":[0,-125,0],"translation":[-1,2,2],"scale":[0.5,0.5,0.5]},"thirdperson_lefthand":{"rotation":[0,55,0],"translation":[-1,2,2],"scale":[0.5,0.5,0.5]},"firstperson_righthand":{"rotation":[0,-55,-5],"translation":[-1,-2.5,-7.5]},"firstperson_lefthand":{"rotation":[0,115,5],"translation":[0,-2.5,-7.5]}}},"torch":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/torch"}},"torchflower":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/torchflower"}},"torchflower_seeds":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/torchflower_seeds"}},"totem_of_undying":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/totem_of_undying"}},"trader_llama_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/trader_llama_spawn_egg"}},"trapped_chest":{"parent":"minecraft:item/template_chest","textures":{"particle":"minecraft:block/oak_planks"}},"trial_key":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/trial_key"}},"trident":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/trident"}},"trident_in_hand":{"gui_light":"front","textures":{"particle":"item/trident"},"display":{"thirdperson_righthand":{"rotation":[0,60,0],"translation":[11,17,-2],"scale":[1,1,1]},"thirdperson_lefthand":{"rotation":[0,60,0],"translation":[3,17,12],"scale":[1,1,1]},"firstperson_righthand":{"rotation":[0,-90,25],"translation":[-3,17,1],"scale":[1,1,1]},"firstperson_lefthand":{"rotation":[0,90,-25],"translation":[13,17,1],"scale":[1,1,1]},"gui":{"rotation":[15,-25,-5],"translation":[2,3,0],"scale":[0.65,0.65,0.65]},"fixed":{"rotation":[0,180,0],"translation":[-2,4,-5],"scale":[0.5,0.5,0.5]},"ground":{"rotation":[0,0,0],"translation":[4,4,2],"scale":[0.25,0.25,0.25]}}},"trident_throwing":{"gui_light":"front","textures":{"particle":"item/trident"},"display":{"thirdperson_righthand":{"rotation":[0,90,180],"translation":[8,-17,9],"scale":[1,1,1]},"thirdperson_lefthand":{"rotation":[0,90,180],"translation":[8,-17,-7],"scale":[1,1,1]},"firstperson_righthand":{"rotation":[0,-90,25],"translation":[-3,17,1],"scale":[1,1,1]},"firstperson_lefthand":{"rotation":[0,90,-25],"translation":[13,17,1],"scale":[1,1,1]},"gui":{"rotation":[15,-25,-5],"translation":[2,3,0],"scale":[0.65,0.65,0.65]},"fixed":{"rotation":[0,180,0],"translation":[-2,4,-5],"scale":[0.5,0.5,0.5]},"ground":{"rotation":[0,0,0],"translation":[4,4,2],"scale":[0.25,0.25,0.25]}}},"tripwire_hook":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/tripwire_hook"}},"tropical_fish":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/tropical_fish"}},"tropical_fish_bucket":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/tropical_fish_bucket"}},"tropical_fish_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/tropical_fish_spawn_egg"}},"tube_coral":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/tube_coral"}},"tube_coral_fan":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/tube_coral_fan"}},"turtle_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_egg"}},"turtle_helmet":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_helmet"}},"turtle_helmet_amethyst_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_helmet","layer1":"minecraft:trims/items/helmet_trim_amethyst"}},"turtle_helmet_copper_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_helmet","layer1":"minecraft:trims/items/helmet_trim_copper"}},"turtle_helmet_diamond_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_helmet","layer1":"minecraft:trims/items/helmet_trim_diamond"}},"turtle_helmet_emerald_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_helmet","layer1":"minecraft:trims/items/helmet_trim_emerald"}},"turtle_helmet_gold_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_helmet","layer1":"minecraft:trims/items/helmet_trim_gold"}},"turtle_helmet_iron_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_helmet","layer1":"minecraft:trims/items/helmet_trim_iron"}},"turtle_helmet_lapis_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_helmet","layer1":"minecraft:trims/items/helmet_trim_lapis"}},"turtle_helmet_netherite_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_helmet","layer1":"minecraft:trims/items/helmet_trim_netherite"}},"turtle_helmet_quartz_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_helmet","layer1":"minecraft:trims/items/helmet_trim_quartz"}},"turtle_helmet_redstone_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_helmet","layer1":"minecraft:trims/items/helmet_trim_redstone"}},"turtle_helmet_resin_trim":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_helmet","layer1":"minecraft:trims/items/helmet_trim_resin"}},"turtle_scute":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_scute"}},"turtle_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/turtle_spawn_egg"}},"twisting_vines":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/twisting_vines_plant"}},"vex_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/vex_armor_trim_smithing_template"}},"vex_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/vex_spawn_egg"}},"villager_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/villager_spawn_egg"}},"vindicator_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/vindicator_spawn_egg"}},"vine":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/vine"}},"wandering_trader_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/wandering_trader_spawn_egg"}},"ward_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/ward_armor_trim_smithing_template"}},"warden_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/warden_spawn_egg"}},"warped_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/warped_door"}},"warped_fungus":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/warped_fungus"}},"warped_fungus_on_a_stick":{"parent":"minecraft:item/handheld_rod","textures":{"layer0":"minecraft:item/warped_fungus_on_a_stick"}},"warped_hanging_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/warped_hanging_sign"}},"warped_roots":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/warped_roots"}},"warped_sign":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/warped_sign"}},"water_bucket":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/water_bucket"}},"wayfinder_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/wayfinder_armor_trim_smithing_template"}},"weathered_copper_bars":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/weathered_copper_bars"}},"weathered_copper_chain":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/weathered_copper_chain"}},"weathered_copper_chest":{"parent":"minecraft:item/template_chest","textures":{"particle":"minecraft:block/weathered_copper"}},"weathered_copper_door":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/weathered_copper_door"}},"weathered_copper_lantern":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/weathered_copper_lantern"}},"weeping_vines":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/weeping_vines_plant"}},"wheat":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/wheat"}},"wheat_seeds":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/wheat_seeds"}},"white_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/white_wool"}},"white_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/white_bundle"}},"white_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/white_bundle_open_back"}},"white_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/white_bundle_open_front"}},"white_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/white_candle"}},"white_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/white_dye"}},"white_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/white_harness"}},"white_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/white_shulker_box"}},"white_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/white_stained_glass"}},"white_tulip":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/white_tulip"}},"wild_armor_trim_smithing_template":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/wild_armor_trim_smithing_template"}},"wildflowers":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/wildflowers"}},"wind_charge":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/wind_charge"}},"witch_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/witch_spawn_egg"}},"wither_rose":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/wither_rose"}},"wither_skeleton_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/wither_skeleton_spawn_egg"}},"wither_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/wither_spawn_egg"}},"wolf_armor":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/wolf_armor"}},"wolf_armor_dyed":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/wolf_armor","layer1":"minecraft:item/wolf_armor_overlay"}},"wolf_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/wolf_spawn_egg"}},"wooden_axe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/wooden_axe"}},"wooden_hoe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/wooden_hoe"}},"wooden_pickaxe":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/wooden_pickaxe"}},"wooden_shovel":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/wooden_shovel"}},"wooden_sword":{"parent":"minecraft:item/handheld","textures":{"layer0":"minecraft:item/wooden_sword"}},"writable_book":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/writable_book"}},"written_book":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/written_book"}},"yellow_bed":{"parent":"minecraft:item/template_bed","textures":{"particle":"minecraft:block/yellow_wool"}},"yellow_bundle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/yellow_bundle"}},"yellow_bundle_open_back":{"parent":"minecraft:item/template_bundle_open_back","textures":{"layer0":"minecraft:item/yellow_bundle_open_back"}},"yellow_bundle_open_front":{"parent":"minecraft:item/template_bundle_open_front","textures":{"layer0":"minecraft:item/yellow_bundle_open_front"}},"yellow_candle":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/yellow_candle"}},"yellow_dye":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/yellow_dye"}},"yellow_harness":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/yellow_harness"}},"yellow_shulker_box":{"parent":"minecraft:item/template_shulker_box","textures":{"particle":"minecraft:block/yellow_shulker_box"}},"yellow_stained_glass_pane":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:block/yellow_stained_glass"}},"zoglin_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/zoglin_spawn_egg"}},"zombie_horse_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/zombie_horse_spawn_egg"}},"zombie_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/zombie_spawn_egg"}},"zombie_villager_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/zombie_villager_spawn_egg"}},"zombified_piglin_spawn_egg":{"parent":"minecraft:item/generated","textures":{"layer0":"minecraft:item/zombified_piglin_spawn_egg"}}} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/models/item/_list.json b/common-files/src/main/resources/internal/models/item/_list.json deleted file mode 100644 index 1613a8c53..000000000 --- a/common-files/src/main/resources/internal/models/item/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["acacia_boat.json","acacia_chest_boat.json","acacia_door.json","acacia_hanging_sign.json","acacia_sapling.json","acacia_sign.json","activator_rail.json","air.json","allay_spawn_egg.json","allium.json","amethyst_bud.json","amethyst_cluster.json","amethyst_shard.json","angler_pottery_sherd.json","apple.json","archer_pottery_sherd.json","armadillo_scute.json","armadillo_spawn_egg.json","armor_stand.json","arms_up_pottery_sherd.json","arrow.json","axolotl_bucket.json","axolotl_spawn_egg.json","azure_bluet.json","baked_potato.json","bamboo.json","bamboo_chest_raft.json","bamboo_door.json","bamboo_hanging_sign.json","bamboo_raft.json","bamboo_sign.json","barrier.json","bat_spawn_egg.json","bee_spawn_egg.json","beef.json","beetroot.json","beetroot_seeds.json","beetroot_soup.json","bell.json","big_dripleaf.json","birch_boat.json","birch_chest_boat.json","birch_door.json","birch_hanging_sign.json","birch_sapling.json","birch_sign.json","black_bed.json","black_bundle.json","black_bundle_open_back.json","black_bundle_open_front.json","black_candle.json","black_dye.json","black_harness.json","black_shulker_box.json","black_stained_glass_pane.json","blade_pottery_sherd.json","blaze_powder.json","blaze_rod.json","blaze_spawn_egg.json","blue_bed.json","blue_bundle.json","blue_bundle_open_back.json","blue_bundle_open_front.json","blue_candle.json","blue_dye.json","blue_egg.json","blue_harness.json","blue_orchid.json","blue_shulker_box.json","blue_stained_glass_pane.json","bogged_spawn_egg.json","bolt_armor_trim_smithing_template.json","bone.json","bone_meal.json","book.json","bordure_indented_banner_pattern.json","bow.json","bow_pulling_0.json","bow_pulling_1.json","bow_pulling_2.json","bowl.json","brain_coral.json","brain_coral_fan.json","bread.json","breeze_rod.json","breeze_spawn_egg.json","brewer_pottery_sherd.json","brewing_stand.json","brick.json","brown_bed.json","brown_bundle.json","brown_bundle_open_back.json","brown_bundle_open_front.json","brown_candle.json","brown_dye.json","brown_egg.json","brown_harness.json","brown_mushroom.json","brown_shulker_box.json","brown_stained_glass_pane.json","brush.json","brush_brushing_0.json","brush_brushing_1.json","brush_brushing_2.json","bubble_coral.json","bubble_coral_fan.json","bucket.json","bundle.json","bundle_open_back.json","bundle_open_front.json","burn_pottery_sherd.json","bush.json","cactus_flower.json","cake.json","camel_spawn_egg.json","campfire.json","candle.json","carrot.json","carrot_on_a_stick.json","cat_spawn_egg.json","cauldron.json","cave_spider_spawn_egg.json","chain.json","chainmail_boots.json","chainmail_boots_amethyst_trim.json","chainmail_boots_copper_trim.json","chainmail_boots_diamond_trim.json","chainmail_boots_emerald_trim.json","chainmail_boots_gold_trim.json","chainmail_boots_iron_trim.json","chainmail_boots_lapis_trim.json","chainmail_boots_netherite_trim.json","chainmail_boots_quartz_trim.json","chainmail_boots_redstone_trim.json","chainmail_boots_resin_trim.json","chainmail_chestplate.json","chainmail_chestplate_amethyst_trim.json","chainmail_chestplate_copper_trim.json","chainmail_chestplate_diamond_trim.json","chainmail_chestplate_emerald_trim.json","chainmail_chestplate_gold_trim.json","chainmail_chestplate_iron_trim.json","chainmail_chestplate_lapis_trim.json","chainmail_chestplate_netherite_trim.json","chainmail_chestplate_quartz_trim.json","chainmail_chestplate_redstone_trim.json","chainmail_chestplate_resin_trim.json","chainmail_helmet.json","chainmail_helmet_amethyst_trim.json","chainmail_helmet_copper_trim.json","chainmail_helmet_diamond_trim.json","chainmail_helmet_emerald_trim.json","chainmail_helmet_gold_trim.json","chainmail_helmet_iron_trim.json","chainmail_helmet_lapis_trim.json","chainmail_helmet_netherite_trim.json","chainmail_helmet_quartz_trim.json","chainmail_helmet_redstone_trim.json","chainmail_helmet_resin_trim.json","chainmail_leggings.json","chainmail_leggings_amethyst_trim.json","chainmail_leggings_copper_trim.json","chainmail_leggings_diamond_trim.json","chainmail_leggings_emerald_trim.json","chainmail_leggings_gold_trim.json","chainmail_leggings_iron_trim.json","chainmail_leggings_lapis_trim.json","chainmail_leggings_netherite_trim.json","chainmail_leggings_quartz_trim.json","chainmail_leggings_redstone_trim.json","chainmail_leggings_resin_trim.json","charcoal.json","cherry_boat.json","cherry_chest_boat.json","cherry_door.json","cherry_hanging_sign.json","cherry_sapling.json","cherry_sign.json","chest.json","chest_minecart.json","chicken.json","chicken_spawn_egg.json","chorus_fruit.json","clay_ball.json","clock_00.json","clock_01.json","clock_02.json","clock_03.json","clock_04.json","clock_05.json","clock_06.json","clock_07.json","clock_08.json","clock_09.json","clock_10.json","clock_11.json","clock_12.json","clock_13.json","clock_14.json","clock_15.json","clock_16.json","clock_17.json","clock_18.json","clock_19.json","clock_20.json","clock_21.json","clock_22.json","clock_23.json","clock_24.json","clock_25.json","clock_26.json","clock_27.json","clock_28.json","clock_29.json","clock_30.json","clock_31.json","clock_32.json","clock_33.json","clock_34.json","clock_35.json","clock_36.json","clock_37.json","clock_38.json","clock_39.json","clock_40.json","clock_41.json","clock_42.json","clock_43.json","clock_44.json","clock_45.json","clock_46.json","clock_47.json","clock_48.json","clock_49.json","clock_50.json","clock_51.json","clock_52.json","clock_53.json","clock_54.json","clock_55.json","clock_56.json","clock_57.json","clock_58.json","clock_59.json","clock_60.json","clock_61.json","clock_62.json","clock_63.json","closed_eyeblossom.json","coal.json","coast_armor_trim_smithing_template.json","cobweb.json","cocoa_beans.json","cod.json","cod_bucket.json","cod_spawn_egg.json","command_block_minecart.json","comparator.json","compass_00.json","compass_01.json","compass_02.json","compass_03.json","compass_04.json","compass_05.json","compass_06.json","compass_07.json","compass_08.json","compass_09.json","compass_10.json","compass_11.json","compass_12.json","compass_13.json","compass_14.json","compass_15.json","compass_16.json","compass_17.json","compass_18.json","compass_19.json","compass_20.json","compass_21.json","compass_22.json","compass_23.json","compass_24.json","compass_25.json","compass_26.json","compass_27.json","compass_28.json","compass_29.json","compass_30.json","compass_31.json","conduit.json","cooked_beef.json","cooked_chicken.json","cooked_cod.json","cooked_mutton.json","cooked_porkchop.json","cooked_rabbit.json","cooked_salmon.json","cookie.json","copper_door.json","copper_ingot.json","cornflower.json","cow_spawn_egg.json","creaking_spawn_egg.json","creeper_banner_pattern.json","creeper_spawn_egg.json","crimson_door.json","crimson_fungus.json","crimson_hanging_sign.json","crimson_roots.json","crimson_sign.json","crossbow.json","crossbow_arrow.json","crossbow_firework.json","crossbow_pulling_0.json","crossbow_pulling_1.json","crossbow_pulling_2.json","cyan_bed.json","cyan_bundle.json","cyan_bundle_open_back.json","cyan_bundle_open_front.json","cyan_candle.json","cyan_dye.json","cyan_harness.json","cyan_shulker_box.json","cyan_stained_glass_pane.json","dandelion.json","danger_pottery_sherd.json","dark_oak_boat.json","dark_oak_chest_boat.json","dark_oak_door.json","dark_oak_hanging_sign.json","dark_oak_sapling.json","dark_oak_sign.json","dead_brain_coral.json","dead_brain_coral_fan.json","dead_bubble_coral.json","dead_bubble_coral_fan.json","dead_bush.json","dead_fire_coral.json","dead_fire_coral_fan.json","dead_horn_coral.json","dead_horn_coral_fan.json","dead_tube_coral.json","dead_tube_coral_fan.json","debug_stick.json","decorated_pot.json","detector_rail.json","diamond.json","diamond_axe.json","diamond_boots.json","diamond_boots_amethyst_trim.json","diamond_boots_copper_trim.json","diamond_boots_diamond_trim.json","diamond_boots_emerald_trim.json","diamond_boots_gold_trim.json","diamond_boots_iron_trim.json","diamond_boots_lapis_trim.json","diamond_boots_netherite_trim.json","diamond_boots_quartz_trim.json","diamond_boots_redstone_trim.json","diamond_boots_resin_trim.json","diamond_chestplate.json","diamond_chestplate_amethyst_trim.json","diamond_chestplate_copper_trim.json","diamond_chestplate_diamond_trim.json","diamond_chestplate_emerald_trim.json","diamond_chestplate_gold_trim.json","diamond_chestplate_iron_trim.json","diamond_chestplate_lapis_trim.json","diamond_chestplate_netherite_trim.json","diamond_chestplate_quartz_trim.json","diamond_chestplate_redstone_trim.json","diamond_chestplate_resin_trim.json","diamond_helmet.json","diamond_helmet_amethyst_trim.json","diamond_helmet_copper_trim.json","diamond_helmet_diamond_trim.json","diamond_helmet_emerald_trim.json","diamond_helmet_gold_trim.json","diamond_helmet_iron_trim.json","diamond_helmet_lapis_trim.json","diamond_helmet_netherite_trim.json","diamond_helmet_quartz_trim.json","diamond_helmet_redstone_trim.json","diamond_helmet_resin_trim.json","diamond_hoe.json","diamond_horse_armor.json","diamond_leggings.json","diamond_leggings_amethyst_trim.json","diamond_leggings_copper_trim.json","diamond_leggings_diamond_trim.json","diamond_leggings_emerald_trim.json","diamond_leggings_gold_trim.json","diamond_leggings_iron_trim.json","diamond_leggings_lapis_trim.json","diamond_leggings_netherite_trim.json","diamond_leggings_quartz_trim.json","diamond_leggings_redstone_trim.json","diamond_leggings_resin_trim.json","diamond_pickaxe.json","diamond_shovel.json","diamond_sword.json","disc_fragment_5.json","dolphin_spawn_egg.json","donkey_spawn_egg.json","dragon_breath.json","dragon_head.json","dried_kelp.json","drowned_spawn_egg.json","dune_armor_trim_smithing_template.json","echo_shard.json","egg.json","elder_guardian_spawn_egg.json","elytra.json","elytra_broken.json","emerald.json","enchanted_book.json","enchanted_golden_apple.json","end_crystal.json","ender_chest.json","ender_dragon_spawn_egg.json","ender_eye.json","ender_pearl.json","enderman_spawn_egg.json","endermite_spawn_egg.json","evoker_spawn_egg.json","experience_bottle.json","explorer_pottery_sherd.json","exposed_copper_door.json","eye_armor_trim_smithing_template.json","feather.json","fermented_spider_eye.json","fern.json","field_masoned_banner_pattern.json","filled_map.json","fire_charge.json","fire_coral.json","fire_coral_fan.json","firefly_bush.json","firework_rocket.json","firework_star.json","fishing_rod.json","fishing_rod_cast.json","flint.json","flint_and_steel.json","flow_armor_trim_smithing_template.json","flow_banner_pattern.json","flow_pottery_sherd.json","flower_banner_pattern.json","flower_pot.json","fox_spawn_egg.json","friend_pottery_sherd.json","frog_spawn_egg.json","frogspawn.json","furnace_minecart.json","generated.json","ghast_spawn_egg.json","ghast_tear.json","glass_bottle.json","glass_pane.json","glistering_melon_slice.json","globe_banner_pattern.json","glow_berries.json","glow_ink_sac.json","glow_item_frame.json","glow_lichen.json","glow_squid_spawn_egg.json","glowstone_dust.json","goat_horn.json","goat_spawn_egg.json","gold_ingot.json","gold_nugget.json","golden_apple.json","golden_axe.json","golden_boots.json","golden_boots_amethyst_trim.json","golden_boots_copper_trim.json","golden_boots_diamond_trim.json","golden_boots_emerald_trim.json","golden_boots_gold_trim.json","golden_boots_iron_trim.json","golden_boots_lapis_trim.json","golden_boots_netherite_trim.json","golden_boots_quartz_trim.json","golden_boots_redstone_trim.json","golden_boots_resin_trim.json","golden_carrot.json","golden_chestplate.json","golden_chestplate_amethyst_trim.json","golden_chestplate_copper_trim.json","golden_chestplate_diamond_trim.json","golden_chestplate_emerald_trim.json","golden_chestplate_gold_trim.json","golden_chestplate_iron_trim.json","golden_chestplate_lapis_trim.json","golden_chestplate_netherite_trim.json","golden_chestplate_quartz_trim.json","golden_chestplate_redstone_trim.json","golden_chestplate_resin_trim.json","golden_helmet.json","golden_helmet_amethyst_trim.json","golden_helmet_copper_trim.json","golden_helmet_diamond_trim.json","golden_helmet_emerald_trim.json","golden_helmet_gold_trim.json","golden_helmet_iron_trim.json","golden_helmet_lapis_trim.json","golden_helmet_netherite_trim.json","golden_helmet_quartz_trim.json","golden_helmet_redstone_trim.json","golden_helmet_resin_trim.json","golden_hoe.json","golden_horse_armor.json","golden_leggings.json","golden_leggings_amethyst_trim.json","golden_leggings_copper_trim.json","golden_leggings_diamond_trim.json","golden_leggings_emerald_trim.json","golden_leggings_gold_trim.json","golden_leggings_iron_trim.json","golden_leggings_lapis_trim.json","golden_leggings_netherite_trim.json","golden_leggings_quartz_trim.json","golden_leggings_redstone_trim.json","golden_leggings_resin_trim.json","golden_pickaxe.json","golden_shovel.json","golden_sword.json","gray_bed.json","gray_bundle.json","gray_bundle_open_back.json","gray_bundle_open_front.json","gray_candle.json","gray_dye.json","gray_harness.json","gray_shulker_box.json","gray_stained_glass_pane.json","green_bed.json","green_bundle.json","green_bundle_open_back.json","green_bundle_open_front.json","green_candle.json","green_dye.json","green_harness.json","green_shulker_box.json","green_stained_glass_pane.json","guardian_spawn_egg.json","gunpowder.json","guster_banner_pattern.json","guster_pottery_sherd.json","handheld.json","handheld_mace.json","handheld_rod.json","hanging_roots.json","happy_ghast_spawn_egg.json","heart_of_the_sea.json","heart_pottery_sherd.json","heartbreak_pottery_sherd.json","hoglin_spawn_egg.json","honey_bottle.json","honeycomb.json","hopper.json","hopper_minecart.json","horn_coral.json","horn_coral_fan.json","horse_spawn_egg.json","host_armor_trim_smithing_template.json","howl_pottery_sherd.json","husk_spawn_egg.json","ink_sac.json","iron_axe.json","iron_bars.json","iron_boots.json","iron_boots_amethyst_trim.json","iron_boots_copper_trim.json","iron_boots_diamond_trim.json","iron_boots_emerald_trim.json","iron_boots_gold_trim.json","iron_boots_iron_trim.json","iron_boots_lapis_trim.json","iron_boots_netherite_trim.json","iron_boots_quartz_trim.json","iron_boots_redstone_trim.json","iron_boots_resin_trim.json","iron_chestplate.json","iron_chestplate_amethyst_trim.json","iron_chestplate_copper_trim.json","iron_chestplate_diamond_trim.json","iron_chestplate_emerald_trim.json","iron_chestplate_gold_trim.json","iron_chestplate_iron_trim.json","iron_chestplate_lapis_trim.json","iron_chestplate_netherite_trim.json","iron_chestplate_quartz_trim.json","iron_chestplate_redstone_trim.json","iron_chestplate_resin_trim.json","iron_door.json","iron_golem_spawn_egg.json","iron_helmet.json","iron_helmet_amethyst_trim.json","iron_helmet_copper_trim.json","iron_helmet_diamond_trim.json","iron_helmet_emerald_trim.json","iron_helmet_gold_trim.json","iron_helmet_iron_trim.json","iron_helmet_lapis_trim.json","iron_helmet_netherite_trim.json","iron_helmet_quartz_trim.json","iron_helmet_redstone_trim.json","iron_helmet_resin_trim.json","iron_hoe.json","iron_horse_armor.json","iron_ingot.json","iron_leggings.json","iron_leggings_amethyst_trim.json","iron_leggings_copper_trim.json","iron_leggings_diamond_trim.json","iron_leggings_emerald_trim.json","iron_leggings_gold_trim.json","iron_leggings_iron_trim.json","iron_leggings_lapis_trim.json","iron_leggings_netherite_trim.json","iron_leggings_quartz_trim.json","iron_leggings_redstone_trim.json","iron_leggings_resin_trim.json","iron_nugget.json","iron_pickaxe.json","iron_shovel.json","iron_sword.json","item_frame.json","jungle_boat.json","jungle_chest_boat.json","jungle_door.json","jungle_hanging_sign.json","jungle_sapling.json","jungle_sign.json","kelp.json","knowledge_book.json","ladder.json","lantern.json","lapis_lazuli.json","large_amethyst_bud.json","large_fern.json","lava_bucket.json","lead.json","leaf_litter.json","leather.json","leather_boots.json","leather_boots_amethyst_trim.json","leather_boots_copper_trim.json","leather_boots_diamond_trim.json","leather_boots_emerald_trim.json","leather_boots_gold_trim.json","leather_boots_iron_trim.json","leather_boots_lapis_trim.json","leather_boots_netherite_trim.json","leather_boots_quartz_trim.json","leather_boots_redstone_trim.json","leather_boots_resin_trim.json","leather_chestplate.json","leather_chestplate_amethyst_trim.json","leather_chestplate_copper_trim.json","leather_chestplate_diamond_trim.json","leather_chestplate_emerald_trim.json","leather_chestplate_gold_trim.json","leather_chestplate_iron_trim.json","leather_chestplate_lapis_trim.json","leather_chestplate_netherite_trim.json","leather_chestplate_quartz_trim.json","leather_chestplate_redstone_trim.json","leather_chestplate_resin_trim.json","leather_helmet.json","leather_helmet_amethyst_trim.json","leather_helmet_copper_trim.json","leather_helmet_diamond_trim.json","leather_helmet_emerald_trim.json","leather_helmet_gold_trim.json","leather_helmet_iron_trim.json","leather_helmet_lapis_trim.json","leather_helmet_netherite_trim.json","leather_helmet_quartz_trim.json","leather_helmet_redstone_trim.json","leather_helmet_resin_trim.json","leather_horse_armor.json","leather_leggings.json","leather_leggings_amethyst_trim.json","leather_leggings_copper_trim.json","leather_leggings_diamond_trim.json","leather_leggings_emerald_trim.json","leather_leggings_gold_trim.json","leather_leggings_iron_trim.json","leather_leggings_lapis_trim.json","leather_leggings_netherite_trim.json","leather_leggings_quartz_trim.json","leather_leggings_redstone_trim.json","leather_leggings_resin_trim.json","lever.json","light.json","light_00.json","light_01.json","light_02.json","light_03.json","light_04.json","light_05.json","light_06.json","light_07.json","light_08.json","light_09.json","light_10.json","light_11.json","light_12.json","light_13.json","light_14.json","light_15.json","light_blue_bed.json","light_blue_bundle.json","light_blue_bundle_open_back.json","light_blue_bundle_open_front.json","light_blue_candle.json","light_blue_dye.json","light_blue_harness.json","light_blue_shulker_box.json","light_blue_stained_glass_pane.json","light_gray_bed.json","light_gray_bundle.json","light_gray_bundle_open_back.json","light_gray_bundle_open_front.json","light_gray_candle.json","light_gray_dye.json","light_gray_harness.json","light_gray_shulker_box.json","light_gray_stained_glass_pane.json","lilac.json","lily_of_the_valley.json","lily_pad.json","lime_bed.json","lime_bundle.json","lime_bundle_open_back.json","lime_bundle_open_front.json","lime_candle.json","lime_dye.json","lime_harness.json","lime_shulker_box.json","lime_stained_glass_pane.json","lingering_potion.json","llama_spawn_egg.json","mace.json","magenta_bed.json","magenta_bundle.json","magenta_bundle_open_back.json","magenta_bundle_open_front.json","magenta_candle.json","magenta_dye.json","magenta_harness.json","magenta_shulker_box.json","magenta_stained_glass_pane.json","magma_cream.json","magma_cube_spawn_egg.json","mangrove_boat.json","mangrove_chest_boat.json","mangrove_door.json","mangrove_hanging_sign.json","mangrove_propagule.json","mangrove_sign.json","map.json","medium_amethyst_bud.json","melon_seeds.json","melon_slice.json","milk_bucket.json","minecart.json","miner_pottery_sherd.json","mojang_banner_pattern.json","mooshroom_spawn_egg.json","mourner_pottery_sherd.json","mule_spawn_egg.json","mushroom_stew.json","music_disc_11.json","music_disc_13.json","music_disc_5.json","music_disc_blocks.json","music_disc_cat.json","music_disc_chirp.json","music_disc_creator.json","music_disc_creator_music_box.json","music_disc_far.json","music_disc_lava_chicken.json","music_disc_mall.json","music_disc_mellohi.json","music_disc_otherside.json","music_disc_pigstep.json","music_disc_precipice.json","music_disc_relic.json","music_disc_stal.json","music_disc_strad.json","music_disc_tears.json","music_disc_wait.json","music_disc_ward.json","mutton.json","name_tag.json","nautilus_shell.json","nether_brick.json","nether_sprouts.json","nether_star.json","nether_wart.json","netherite_axe.json","netherite_boots.json","netherite_boots_amethyst_trim.json","netherite_boots_copper_trim.json","netherite_boots_diamond_trim.json","netherite_boots_emerald_trim.json","netherite_boots_gold_trim.json","netherite_boots_iron_trim.json","netherite_boots_lapis_trim.json","netherite_boots_netherite_trim.json","netherite_boots_quartz_trim.json","netherite_boots_redstone_trim.json","netherite_boots_resin_trim.json","netherite_chestplate.json","netherite_chestplate_amethyst_trim.json","netherite_chestplate_copper_trim.json","netherite_chestplate_diamond_trim.json","netherite_chestplate_emerald_trim.json","netherite_chestplate_gold_trim.json","netherite_chestplate_iron_trim.json","netherite_chestplate_lapis_trim.json","netherite_chestplate_netherite_trim.json","netherite_chestplate_quartz_trim.json","netherite_chestplate_redstone_trim.json","netherite_chestplate_resin_trim.json","netherite_helmet.json","netherite_helmet_amethyst_trim.json","netherite_helmet_copper_trim.json","netherite_helmet_diamond_trim.json","netherite_helmet_emerald_trim.json","netherite_helmet_gold_trim.json","netherite_helmet_iron_trim.json","netherite_helmet_lapis_trim.json","netherite_helmet_netherite_trim.json","netherite_helmet_quartz_trim.json","netherite_helmet_redstone_trim.json","netherite_helmet_resin_trim.json","netherite_hoe.json","netherite_ingot.json","netherite_leggings.json","netherite_leggings_amethyst_trim.json","netherite_leggings_copper_trim.json","netherite_leggings_diamond_trim.json","netherite_leggings_emerald_trim.json","netherite_leggings_gold_trim.json","netherite_leggings_iron_trim.json","netherite_leggings_lapis_trim.json","netherite_leggings_netherite_trim.json","netherite_leggings_quartz_trim.json","netherite_leggings_redstone_trim.json","netherite_leggings_resin_trim.json","netherite_pickaxe.json","netherite_scrap.json","netherite_shovel.json","netherite_sword.json","netherite_upgrade_smithing_template.json","oak_boat.json","oak_chest_boat.json","oak_door.json","oak_hanging_sign.json","oak_sapling.json","oak_sign.json","ocelot_spawn_egg.json","ominous_bottle.json","ominous_trial_key.json","open_eyeblossom.json","orange_bed.json","orange_bundle.json","orange_bundle_open_back.json","orange_bundle_open_front.json","orange_candle.json","orange_dye.json","orange_harness.json","orange_shulker_box.json","orange_stained_glass_pane.json","orange_tulip.json","oxeye_daisy.json","oxidized_copper_door.json","painting.json","pale_hanging_moss.json","pale_oak_boat.json","pale_oak_chest_boat.json","pale_oak_door.json","pale_oak_hanging_sign.json","pale_oak_sapling.json","pale_oak_sign.json","panda_spawn_egg.json","paper.json","parrot_spawn_egg.json","peony.json","phantom_membrane.json","phantom_spawn_egg.json","pig_spawn_egg.json","piglin_banner_pattern.json","piglin_brute_spawn_egg.json","piglin_spawn_egg.json","pillager_spawn_egg.json","pink_bed.json","pink_bundle.json","pink_bundle_open_back.json","pink_bundle_open_front.json","pink_candle.json","pink_dye.json","pink_harness.json","pink_petals.json","pink_shulker_box.json","pink_stained_glass_pane.json","pink_tulip.json","pitcher_plant.json","pitcher_pod.json","plenty_pottery_sherd.json","pointed_dripstone.json","poisonous_potato.json","polar_bear_spawn_egg.json","popped_chorus_fruit.json","poppy.json","porkchop.json","potato.json","potion.json","powder_snow_bucket.json","powered_rail.json","prismarine_crystals.json","prismarine_shard.json","prize_pottery_sherd.json","pufferfish.json","pufferfish_bucket.json","pufferfish_spawn_egg.json","pumpkin_pie.json","pumpkin_seeds.json","purple_bed.json","purple_bundle.json","purple_bundle_open_back.json","purple_bundle_open_front.json","purple_candle.json","purple_dye.json","purple_harness.json","purple_shulker_box.json","purple_stained_glass_pane.json","quartz.json","rabbit.json","rabbit_foot.json","rabbit_hide.json","rabbit_spawn_egg.json","rabbit_stew.json","rail.json","raiser_armor_trim_smithing_template.json","ravager_spawn_egg.json","raw_copper.json","raw_gold.json","raw_iron.json","recovery_compass_00.json","recovery_compass_01.json","recovery_compass_02.json","recovery_compass_03.json","recovery_compass_04.json","recovery_compass_05.json","recovery_compass_06.json","recovery_compass_07.json","recovery_compass_08.json","recovery_compass_09.json","recovery_compass_10.json","recovery_compass_11.json","recovery_compass_12.json","recovery_compass_13.json","recovery_compass_14.json","recovery_compass_15.json","recovery_compass_16.json","recovery_compass_17.json","recovery_compass_18.json","recovery_compass_19.json","recovery_compass_20.json","recovery_compass_21.json","recovery_compass_22.json","recovery_compass_23.json","recovery_compass_24.json","recovery_compass_25.json","recovery_compass_26.json","recovery_compass_27.json","recovery_compass_28.json","recovery_compass_29.json","recovery_compass_30.json","recovery_compass_31.json","red_bed.json","red_bundle.json","red_bundle_open_back.json","red_bundle_open_front.json","red_candle.json","red_dye.json","red_harness.json","red_mushroom.json","red_shulker_box.json","red_stained_glass_pane.json","red_tulip.json","redstone.json","redstone_torch.json","repeater.json","resin_brick.json","resin_clump.json","rib_armor_trim_smithing_template.json","rose_bush.json","rotten_flesh.json","saddle.json","salmon.json","salmon_bucket.json","salmon_spawn_egg.json","scrape_pottery_sherd.json","sculk_vein.json","sea_pickle.json","seagrass.json","sentry_armor_trim_smithing_template.json","shaper_armor_trim_smithing_template.json","sheaf_pottery_sherd.json","shears.json","sheep_spawn_egg.json","shelter_pottery_sherd.json","shield.json","shield_blocking.json","short_dry_grass.json","short_grass.json","shulker_box.json","shulker_shell.json","shulker_spawn_egg.json","silence_armor_trim_smithing_template.json","silverfish_spawn_egg.json","skeleton_horse_spawn_egg.json","skeleton_spawn_egg.json","skull_banner_pattern.json","skull_pottery_sherd.json","slime_ball.json","slime_spawn_egg.json","small_amethyst_bud.json","small_dripleaf.json","sniffer_egg.json","sniffer_spawn_egg.json","snort_pottery_sherd.json","snout_armor_trim_smithing_template.json","snow_golem_spawn_egg.json","snowball.json","soul_campfire.json","soul_lantern.json","soul_torch.json","spectral_arrow.json","spider_eye.json","spider_spawn_egg.json","spire_armor_trim_smithing_template.json","splash_potion.json","spruce_boat.json","spruce_chest_boat.json","spruce_door.json","spruce_hanging_sign.json","spruce_sapling.json","spruce_sign.json","spyglass.json","spyglass_in_hand.json","squid_spawn_egg.json","stick.json","stone_axe.json","stone_hoe.json","stone_pickaxe.json","stone_shovel.json","stone_sword.json","stray_spawn_egg.json","strider_spawn_egg.json","string.json","structure_void.json","sugar.json","sugar_cane.json","sunflower.json","suspicious_stew.json","sweet_berries.json","tadpole_bucket.json","tadpole_spawn_egg.json","tall_dry_grass.json","tall_grass.json","template_banner.json","template_bed.json","template_bundle_open_back.json","template_bundle_open_front.json","template_chest.json","template_music_disc.json","template_shulker_box.json","template_skull.json","tide_armor_trim_smithing_template.json","tipped_arrow.json","tnt_minecart.json","tooting_goat_horn.json","torch.json","torchflower.json","torchflower_seeds.json","totem_of_undying.json","trader_llama_spawn_egg.json","trapped_chest.json","trial_key.json","trident.json","trident_in_hand.json","trident_throwing.json","tripwire_hook.json","tropical_fish.json","tropical_fish_bucket.json","tropical_fish_spawn_egg.json","tube_coral.json","tube_coral_fan.json","turtle_egg.json","turtle_helmet.json","turtle_helmet_amethyst_trim.json","turtle_helmet_copper_trim.json","turtle_helmet_diamond_trim.json","turtle_helmet_emerald_trim.json","turtle_helmet_gold_trim.json","turtle_helmet_iron_trim.json","turtle_helmet_lapis_trim.json","turtle_helmet_netherite_trim.json","turtle_helmet_quartz_trim.json","turtle_helmet_redstone_trim.json","turtle_helmet_resin_trim.json","turtle_scute.json","turtle_spawn_egg.json","twisting_vines.json","vex_armor_trim_smithing_template.json","vex_spawn_egg.json","villager_spawn_egg.json","vindicator_spawn_egg.json","vine.json","wandering_trader_spawn_egg.json","ward_armor_trim_smithing_template.json","warden_spawn_egg.json","warped_door.json","warped_fungus.json","warped_fungus_on_a_stick.json","warped_hanging_sign.json","warped_roots.json","warped_sign.json","water_bucket.json","wayfinder_armor_trim_smithing_template.json","weathered_copper_door.json","weeping_vines.json","wheat.json","wheat_seeds.json","white_bed.json","white_bundle.json","white_bundle_open_back.json","white_bundle_open_front.json","white_candle.json","white_dye.json","white_harness.json","white_shulker_box.json","white_stained_glass_pane.json","white_tulip.json","wild_armor_trim_smithing_template.json","wildflowers.json","wind_charge.json","witch_spawn_egg.json","wither_rose.json","wither_skeleton_spawn_egg.json","wither_spawn_egg.json","wolf_armor.json","wolf_armor_dyed.json","wolf_spawn_egg.json","wooden_axe.json","wooden_hoe.json","wooden_pickaxe.json","wooden_shovel.json","wooden_sword.json","writable_book.json","written_book.json","yellow_bed.json","yellow_bundle.json","yellow_bundle_open_back.json","yellow_bundle_open_front.json","yellow_candle.json","yellow_dye.json","yellow_harness.json","yellow_shulker_box.json","yellow_stained_glass_pane.json","zoglin_spawn_egg.json","zombie_horse_spawn_egg.json","zombie_spawn_egg.json","zombie_villager_spawn_egg.json","zombified_piglin_spawn_egg.json"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/models/item/legacy/_list.json b/common-files/src/main/resources/internal/models/item/legacy/_list.json deleted file mode 100644 index b000f704f..000000000 --- a/common-files/src/main/resources/internal/models/item/legacy/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["acacia_boat.json","acacia_button.json","acacia_chest_boat.json","acacia_door.json","acacia_fence.json","acacia_fence_gate.json","acacia_hanging_sign.json","acacia_leaves.json","acacia_log.json","acacia_planks.json","acacia_pressure_plate.json","acacia_sapling.json","acacia_sign.json","acacia_slab.json","acacia_stairs.json","acacia_trapdoor.json","acacia_wood.json","activator_rail.json","air.json","allay_spawn_egg.json","allium.json","amethyst_block.json","amethyst_bud.json","amethyst_cluster.json","amethyst_shard.json","ancient_debris.json","andesite.json","andesite_slab.json","andesite_stairs.json","andesite_wall.json","angler_pottery_sherd.json","anvil.json","apple.json","archer_pottery_sherd.json","armadillo_scute.json","armadillo_spawn_egg.json","armor_stand.json","arms_up_pottery_sherd.json","arrow.json","axolotl_bucket.json","axolotl_spawn_egg.json","azalea.json","azalea_leaves.json","azure_bluet.json","baked_potato.json","bamboo.json","bamboo_block.json","bamboo_button.json","bamboo_chest_raft.json","bamboo_door.json","bamboo_fence.json","bamboo_fence_gate.json","bamboo_hanging_sign.json","bamboo_mosaic.json","bamboo_mosaic_slab.json","bamboo_mosaic_stairs.json","bamboo_planks.json","bamboo_pressure_plate.json","bamboo_raft.json","bamboo_sign.json","bamboo_slab.json","bamboo_stairs.json","bamboo_trapdoor.json","barrel.json","barrier.json","basalt.json","bat_spawn_egg.json","beacon.json","bedrock.json","bee_nest.json","bee_nest_empty.json","bee_nest_honey.json","bee_spawn_egg.json","beef.json","beehive.json","beehive_empty.json","beehive_honey.json","beetroot.json","beetroot_seeds.json","beetroot_soup.json","bell.json","big_dripleaf.json","birch_boat.json","birch_button.json","birch_chest_boat.json","birch_door.json","birch_fence.json","birch_fence_gate.json","birch_hanging_sign.json","birch_leaves.json","birch_log.json","birch_planks.json","birch_pressure_plate.json","birch_sapling.json","birch_sign.json","birch_slab.json","birch_stairs.json","birch_trapdoor.json","birch_wood.json","black_banner.json","black_bed.json","black_bundle.json","black_bundle_open_back.json","black_bundle_open_front.json","black_candle.json","black_carpet.json","black_concrete.json","black_concrete_powder.json","black_dye.json","black_glazed_terracotta.json","black_shulker_box.json","black_stained_glass.json","black_stained_glass_pane.json","black_terracotta.json","black_wool.json","blackstone.json","blackstone_slab.json","blackstone_stairs.json","blackstone_wall.json","blade_pottery_sherd.json","blast_furnace.json","blaze_powder.json","blaze_rod.json","blaze_spawn_egg.json","blue_banner.json","blue_bed.json","blue_bundle.json","blue_bundle_open_back.json","blue_bundle_open_front.json","blue_candle.json","blue_carpet.json","blue_concrete.json","blue_concrete_powder.json","blue_dye.json","blue_glazed_terracotta.json","blue_ice.json","blue_orchid.json","blue_shulker_box.json","blue_stained_glass.json","blue_stained_glass_pane.json","blue_terracotta.json","blue_wool.json","bogged_spawn_egg.json","bolt_armor_trim_smithing_template.json","bone.json","bone_block.json","bone_meal.json","book.json","bookshelf.json","bordure_indented_banner_pattern.json","bow.json","bow_pulling_0.json","bow_pulling_1.json","bow_pulling_2.json","bowl.json","brain_coral.json","brain_coral_block.json","brain_coral_fan.json","bread.json","breeze_rod.json","breeze_spawn_egg.json","brewer_pottery_sherd.json","brewing_stand.json","brick.json","brick_slab.json","brick_stairs.json","brick_wall.json","bricks.json","broken_elytra.json","brown_banner.json","brown_bed.json","brown_bundle.json","brown_bundle_open_back.json","brown_bundle_open_front.json","brown_candle.json","brown_carpet.json","brown_concrete.json","brown_concrete_powder.json","brown_dye.json","brown_glazed_terracotta.json","brown_mushroom.json","brown_mushroom_block.json","brown_shulker_box.json","brown_stained_glass.json","brown_stained_glass_pane.json","brown_terracotta.json","brown_wool.json","brush.json","brush_brushing_0.json","brush_brushing_1.json","brush_brushing_2.json","bubble_coral.json","bubble_coral_block.json","bubble_coral_fan.json","bucket.json","budding_amethyst.json","bundle.json","bundle_open_back.json","bundle_open_front.json","burn_pottery_sherd.json","cactus.json","cake.json","calcite.json","calibrated_sculk_sensor.json","camel_spawn_egg.json","campfire.json","candle.json","carrot.json","carrot_on_a_stick.json","cartography_table.json","carved_pumpkin.json","cat_spawn_egg.json","cauldron.json","cave_spider_spawn_egg.json","chain.json","chain_command_block.json","chainmail_boots.json","chainmail_boots_amethyst_trim.json","chainmail_boots_copper_trim.json","chainmail_boots_diamond_trim.json","chainmail_boots_emerald_trim.json","chainmail_boots_gold_trim.json","chainmail_boots_iron_trim.json","chainmail_boots_lapis_trim.json","chainmail_boots_netherite_trim.json","chainmail_boots_quartz_trim.json","chainmail_boots_redstone_trim.json","chainmail_chestplate.json","chainmail_chestplate_amethyst_trim.json","chainmail_chestplate_copper_trim.json","chainmail_chestplate_diamond_trim.json","chainmail_chestplate_emerald_trim.json","chainmail_chestplate_gold_trim.json","chainmail_chestplate_iron_trim.json","chainmail_chestplate_lapis_trim.json","chainmail_chestplate_netherite_trim.json","chainmail_chestplate_quartz_trim.json","chainmail_chestplate_redstone_trim.json","chainmail_helmet.json","chainmail_helmet_amethyst_trim.json","chainmail_helmet_copper_trim.json","chainmail_helmet_diamond_trim.json","chainmail_helmet_emerald_trim.json","chainmail_helmet_gold_trim.json","chainmail_helmet_iron_trim.json","chainmail_helmet_lapis_trim.json","chainmail_helmet_netherite_trim.json","chainmail_helmet_quartz_trim.json","chainmail_helmet_redstone_trim.json","chainmail_leggings.json","chainmail_leggings_amethyst_trim.json","chainmail_leggings_copper_trim.json","chainmail_leggings_diamond_trim.json","chainmail_leggings_emerald_trim.json","chainmail_leggings_gold_trim.json","chainmail_leggings_iron_trim.json","chainmail_leggings_lapis_trim.json","chainmail_leggings_netherite_trim.json","chainmail_leggings_quartz_trim.json","chainmail_leggings_redstone_trim.json","charcoal.json","cherry_boat.json","cherry_button.json","cherry_chest_boat.json","cherry_door.json","cherry_fence.json","cherry_fence_gate.json","cherry_hanging_sign.json","cherry_leaves.json","cherry_log.json","cherry_planks.json","cherry_pressure_plate.json","cherry_sapling.json","cherry_sign.json","cherry_slab.json","cherry_stairs.json","cherry_trapdoor.json","cherry_wood.json","chest.json","chest_minecart.json","chicken.json","chicken_spawn_egg.json","chipped_anvil.json","chiseled_bookshelf.json","chiseled_copper.json","chiseled_deepslate.json","chiseled_nether_bricks.json","chiseled_polished_blackstone.json","chiseled_quartz_block.json","chiseled_red_sandstone.json","chiseled_sandstone.json","chiseled_stone_bricks.json","chiseled_tuff.json","chiseled_tuff_bricks.json","chorus_flower.json","chorus_fruit.json","chorus_plant.json","clay.json","clay_ball.json","clock.json","clock_01.json","clock_02.json","clock_03.json","clock_04.json","clock_05.json","clock_06.json","clock_07.json","clock_08.json","clock_09.json","clock_10.json","clock_11.json","clock_12.json","clock_13.json","clock_14.json","clock_15.json","clock_16.json","clock_17.json","clock_18.json","clock_19.json","clock_20.json","clock_21.json","clock_22.json","clock_23.json","clock_24.json","clock_25.json","clock_26.json","clock_27.json","clock_28.json","clock_29.json","clock_30.json","clock_31.json","clock_32.json","clock_33.json","clock_34.json","clock_35.json","clock_36.json","clock_37.json","clock_38.json","clock_39.json","clock_40.json","clock_41.json","clock_42.json","clock_43.json","clock_44.json","clock_45.json","clock_46.json","clock_47.json","clock_48.json","clock_49.json","clock_50.json","clock_51.json","clock_52.json","clock_53.json","clock_54.json","clock_55.json","clock_56.json","clock_57.json","clock_58.json","clock_59.json","clock_60.json","clock_61.json","clock_62.json","clock_63.json","coal.json","coal_block.json","coal_ore.json","coarse_dirt.json","coast_armor_trim_smithing_template.json","cobbled_deepslate.json","cobbled_deepslate_slab.json","cobbled_deepslate_stairs.json","cobbled_deepslate_wall.json","cobblestone.json","cobblestone_slab.json","cobblestone_stairs.json","cobblestone_wall.json","cobweb.json","cocoa_beans.json","cod.json","cod_bucket.json","cod_spawn_egg.json","command_block.json","command_block_minecart.json","comparator.json","compass.json","compass_00.json","compass_01.json","compass_02.json","compass_03.json","compass_04.json","compass_05.json","compass_06.json","compass_07.json","compass_08.json","compass_09.json","compass_10.json","compass_11.json","compass_12.json","compass_13.json","compass_14.json","compass_15.json","compass_17.json","compass_18.json","compass_19.json","compass_20.json","compass_21.json","compass_22.json","compass_23.json","compass_24.json","compass_25.json","compass_26.json","compass_27.json","compass_28.json","compass_29.json","compass_30.json","compass_31.json","composter.json","conduit.json","cooked_beef.json","cooked_chicken.json","cooked_cod.json","cooked_mutton.json","cooked_porkchop.json","cooked_rabbit.json","cooked_salmon.json","cookie.json","copper_block.json","copper_bulb.json","copper_door.json","copper_grate.json","copper_ingot.json","copper_ore.json","copper_trapdoor.json","cornflower.json","cow_spawn_egg.json","cracked_deepslate_bricks.json","cracked_deepslate_tiles.json","cracked_nether_bricks.json","cracked_polished_blackstone_bricks.json","cracked_stone_bricks.json","crafter.json","crafting_table.json","creaking_heart.json","creaking_spawn_egg.json","creeper_banner_pattern.json","creeper_head.json","creeper_spawn_egg.json","crimson_button.json","crimson_door.json","crimson_fence.json","crimson_fence_gate.json","crimson_fungus.json","crimson_hanging_sign.json","crimson_hyphae.json","crimson_nylium.json","crimson_planks.json","crimson_pressure_plate.json","crimson_roots.json","crimson_sign.json","crimson_slab.json","crimson_stairs.json","crimson_stem.json","crimson_trapdoor.json","crossbow.json","crossbow_arrow.json","crossbow_firework.json","crossbow_pulling_0.json","crossbow_pulling_1.json","crossbow_pulling_2.json","crying_obsidian.json","cut_copper.json","cut_copper_slab.json","cut_copper_stairs.json","cut_red_sandstone.json","cut_red_sandstone_slab.json","cut_sandstone.json","cut_sandstone_slab.json","cyan_banner.json","cyan_bed.json","cyan_bundle.json","cyan_bundle_open_back.json","cyan_bundle_open_front.json","cyan_candle.json","cyan_carpet.json","cyan_concrete.json","cyan_concrete_powder.json","cyan_dye.json","cyan_glazed_terracotta.json","cyan_shulker_box.json","cyan_stained_glass.json","cyan_stained_glass_pane.json","cyan_terracotta.json","cyan_wool.json","damaged_anvil.json","dandelion.json","danger_pottery_sherd.json","dark_oak_boat.json","dark_oak_button.json","dark_oak_chest_boat.json","dark_oak_door.json","dark_oak_fence.json","dark_oak_fence_gate.json","dark_oak_hanging_sign.json","dark_oak_leaves.json","dark_oak_log.json","dark_oak_planks.json","dark_oak_pressure_plate.json","dark_oak_sapling.json","dark_oak_sign.json","dark_oak_slab.json","dark_oak_stairs.json","dark_oak_trapdoor.json","dark_oak_wood.json","dark_prismarine.json","dark_prismarine_slab.json","dark_prismarine_stairs.json","daylight_detector.json","dead_brain_coral.json","dead_brain_coral_block.json","dead_brain_coral_fan.json","dead_bubble_coral.json","dead_bubble_coral_block.json","dead_bubble_coral_fan.json","dead_bush.json","dead_fire_coral.json","dead_fire_coral_block.json","dead_fire_coral_fan.json","dead_horn_coral.json","dead_horn_coral_block.json","dead_horn_coral_fan.json","dead_tube_coral.json","dead_tube_coral_block.json","dead_tube_coral_fan.json","debug_stick.json","decorated_pot.json","deepslate.json","deepslate_brick_slab.json","deepslate_brick_stairs.json","deepslate_brick_wall.json","deepslate_bricks.json","deepslate_coal_ore.json","deepslate_copper_ore.json","deepslate_diamond_ore.json","deepslate_emerald_ore.json","deepslate_gold_ore.json","deepslate_iron_ore.json","deepslate_lapis_ore.json","deepslate_redstone_ore.json","deepslate_tile_slab.json","deepslate_tile_stairs.json","deepslate_tile_wall.json","deepslate_tiles.json","detector_rail.json","diamond.json","diamond_axe.json","diamond_block.json","diamond_boots.json","diamond_boots_amethyst_trim.json","diamond_boots_copper_trim.json","diamond_boots_diamond_darker_trim.json","diamond_boots_emerald_trim.json","diamond_boots_gold_trim.json","diamond_boots_iron_trim.json","diamond_boots_lapis_trim.json","diamond_boots_netherite_trim.json","diamond_boots_quartz_trim.json","diamond_boots_redstone_trim.json","diamond_chestplate.json","diamond_chestplate_amethyst_trim.json","diamond_chestplate_copper_trim.json","diamond_chestplate_diamond_darker_trim.json","diamond_chestplate_emerald_trim.json","diamond_chestplate_gold_trim.json","diamond_chestplate_iron_trim.json","diamond_chestplate_lapis_trim.json","diamond_chestplate_netherite_trim.json","diamond_chestplate_quartz_trim.json","diamond_chestplate_redstone_trim.json","diamond_helmet.json","diamond_helmet_amethyst_trim.json","diamond_helmet_copper_trim.json","diamond_helmet_diamond_darker_trim.json","diamond_helmet_emerald_trim.json","diamond_helmet_gold_trim.json","diamond_helmet_iron_trim.json","diamond_helmet_lapis_trim.json","diamond_helmet_netherite_trim.json","diamond_helmet_quartz_trim.json","diamond_helmet_redstone_trim.json","diamond_hoe.json","diamond_horse_armor.json","diamond_leggings.json","diamond_leggings_amethyst_trim.json","diamond_leggings_copper_trim.json","diamond_leggings_diamond_darker_trim.json","diamond_leggings_emerald_trim.json","diamond_leggings_gold_trim.json","diamond_leggings_iron_trim.json","diamond_leggings_lapis_trim.json","diamond_leggings_netherite_trim.json","diamond_leggings_quartz_trim.json","diamond_leggings_redstone_trim.json","diamond_ore.json","diamond_pickaxe.json","diamond_shovel.json","diamond_sword.json","diorite.json","diorite_slab.json","diorite_stairs.json","diorite_wall.json","dirt.json","dirt_path.json","disc_fragment_5.json","dispenser.json","dolphin_spawn_egg.json","donkey_spawn_egg.json","dragon_breath.json","dragon_egg.json","dragon_head.json","dried_kelp.json","dried_kelp_block.json","dripstone_block.json","dropper.json","drowned_spawn_egg.json","dune_armor_trim_smithing_template.json","echo_shard.json","egg.json","elder_guardian_spawn_egg.json","elytra.json","emerald.json","emerald_block.json","emerald_ore.json","enchanted_book.json","enchanted_golden_apple.json","enchanting_table.json","end_crystal.json","end_portal_frame.json","end_rod.json","end_stone.json","end_stone_brick_slab.json","end_stone_brick_stairs.json","end_stone_brick_wall.json","end_stone_bricks.json","ender_chest.json","ender_dragon_spawn_egg.json","ender_eye.json","ender_pearl.json","enderman_spawn_egg.json","endermite_spawn_egg.json","evoker_spawn_egg.json","experience_bottle.json","explorer_pottery_sherd.json","exposed_chiseled_copper.json","exposed_copper.json","exposed_copper_bulb.json","exposed_copper_door.json","exposed_copper_grate.json","exposed_copper_trapdoor.json","exposed_cut_copper.json","exposed_cut_copper_slab.json","exposed_cut_copper_stairs.json","eye_armor_trim_smithing_template.json","farmland.json","feather.json","fermented_spider_eye.json","fern.json","field_masoned_banner_pattern.json","filled_map.json","fire_charge.json","fire_coral.json","fire_coral_block.json","fire_coral_fan.json","firework_rocket.json","firework_star.json","fishing_rod.json","fishing_rod_cast.json","fletching_table.json","flint.json","flint_and_steel.json","flow_armor_trim_smithing_template.json","flow_banner_pattern.json","flow_pottery_sherd.json","flower_banner_pattern.json","flower_pot.json","flowering_azalea.json","flowering_azalea_leaves.json","fox_spawn_egg.json","friend_pottery_sherd.json","frog_spawn_egg.json","frogspawn.json","furnace.json","furnace_minecart.json","generated.json","ghast_spawn_egg.json","ghast_tear.json","gilded_blackstone.json","glass.json","glass_bottle.json","glass_pane.json","glistering_melon_slice.json","globe_banner_pattern.json","glow_berries.json","glow_ink_sac.json","glow_item_frame.json","glow_lichen.json","glow_squid_spawn_egg.json","glowstone.json","glowstone_dust.json","goat_horn.json","goat_spawn_egg.json","gold_block.json","gold_ingot.json","gold_nugget.json","gold_ore.json","golden_apple.json","golden_axe.json","golden_boots.json","golden_boots_amethyst_trim.json","golden_boots_copper_trim.json","golden_boots_diamond_trim.json","golden_boots_emerald_trim.json","golden_boots_gold_darker_trim.json","golden_boots_iron_trim.json","golden_boots_lapis_trim.json","golden_boots_netherite_trim.json","golden_boots_quartz_trim.json","golden_boots_redstone_trim.json","golden_carrot.json","golden_chestplate.json","golden_chestplate_amethyst_trim.json","golden_chestplate_copper_trim.json","golden_chestplate_diamond_trim.json","golden_chestplate_emerald_trim.json","golden_chestplate_gold_darker_trim.json","golden_chestplate_iron_trim.json","golden_chestplate_lapis_trim.json","golden_chestplate_netherite_trim.json","golden_chestplate_quartz_trim.json","golden_chestplate_redstone_trim.json","golden_helmet.json","golden_helmet_amethyst_trim.json","golden_helmet_copper_trim.json","golden_helmet_diamond_trim.json","golden_helmet_emerald_trim.json","golden_helmet_gold_darker_trim.json","golden_helmet_iron_trim.json","golden_helmet_lapis_trim.json","golden_helmet_netherite_trim.json","golden_helmet_quartz_trim.json","golden_helmet_redstone_trim.json","golden_hoe.json","golden_horse_armor.json","golden_leggings.json","golden_leggings_amethyst_trim.json","golden_leggings_copper_trim.json","golden_leggings_diamond_trim.json","golden_leggings_emerald_trim.json","golden_leggings_gold_darker_trim.json","golden_leggings_iron_trim.json","golden_leggings_lapis_trim.json","golden_leggings_netherite_trim.json","golden_leggings_quartz_trim.json","golden_leggings_redstone_trim.json","golden_pickaxe.json","golden_shovel.json","golden_sword.json","granite.json","granite_slab.json","granite_stairs.json","granite_wall.json","grass_block.json","gravel.json","gray_banner.json","gray_bed.json","gray_bundle.json","gray_bundle_open_back.json","gray_bundle_open_front.json","gray_candle.json","gray_carpet.json","gray_concrete.json","gray_concrete_powder.json","gray_dye.json","gray_glazed_terracotta.json","gray_shulker_box.json","gray_stained_glass.json","gray_stained_glass_pane.json","gray_terracotta.json","gray_wool.json","green_banner.json","green_bed.json","green_bundle.json","green_bundle_open_back.json","green_bundle_open_front.json","green_candle.json","green_carpet.json","green_concrete.json","green_concrete_powder.json","green_dye.json","green_glazed_terracotta.json","green_shulker_box.json","green_stained_glass.json","green_stained_glass_pane.json","green_terracotta.json","green_wool.json","grindstone.json","guardian_spawn_egg.json","gunpowder.json","guster_banner_pattern.json","guster_pottery_sherd.json","handheld.json","handheld_mace.json","handheld_rod.json","hanging_roots.json","hay_block.json","heart_of_the_sea.json","heart_pottery_sherd.json","heartbreak_pottery_sherd.json","heavy_core.json","heavy_weighted_pressure_plate.json","hoglin_spawn_egg.json","honey_block.json","honey_bottle.json","honeycomb.json","honeycomb_block.json","hopper.json","hopper_minecart.json","horn_coral.json","horn_coral_block.json","horn_coral_fan.json","horse_spawn_egg.json","host_armor_trim_smithing_template.json","howl_pottery_sherd.json","husk_spawn_egg.json","ice.json","infested_chiseled_stone_bricks.json","infested_cobblestone.json","infested_cracked_stone_bricks.json","infested_deepslate.json","infested_mossy_stone_bricks.json","infested_stone.json","infested_stone_bricks.json","ink_sac.json","iron_axe.json","iron_bars.json","iron_block.json","iron_boots.json","iron_boots_amethyst_trim.json","iron_boots_copper_trim.json","iron_boots_diamond_trim.json","iron_boots_emerald_trim.json","iron_boots_gold_trim.json","iron_boots_iron_darker_trim.json","iron_boots_lapis_trim.json","iron_boots_netherite_trim.json","iron_boots_quartz_trim.json","iron_boots_redstone_trim.json","iron_chestplate.json","iron_chestplate_amethyst_trim.json","iron_chestplate_copper_trim.json","iron_chestplate_diamond_trim.json","iron_chestplate_emerald_trim.json","iron_chestplate_gold_trim.json","iron_chestplate_iron_darker_trim.json","iron_chestplate_lapis_trim.json","iron_chestplate_netherite_trim.json","iron_chestplate_quartz_trim.json","iron_chestplate_redstone_trim.json","iron_door.json","iron_golem_spawn_egg.json","iron_helmet.json","iron_helmet_amethyst_trim.json","iron_helmet_copper_trim.json","iron_helmet_diamond_trim.json","iron_helmet_emerald_trim.json","iron_helmet_gold_trim.json","iron_helmet_iron_darker_trim.json","iron_helmet_lapis_trim.json","iron_helmet_netherite_trim.json","iron_helmet_quartz_trim.json","iron_helmet_redstone_trim.json","iron_hoe.json","iron_horse_armor.json","iron_ingot.json","iron_leggings.json","iron_leggings_amethyst_trim.json","iron_leggings_copper_trim.json","iron_leggings_diamond_trim.json","iron_leggings_emerald_trim.json","iron_leggings_gold_trim.json","iron_leggings_iron_darker_trim.json","iron_leggings_lapis_trim.json","iron_leggings_netherite_trim.json","iron_leggings_quartz_trim.json","iron_leggings_redstone_trim.json","iron_nugget.json","iron_ore.json","iron_pickaxe.json","iron_shovel.json","iron_sword.json","iron_trapdoor.json","item_frame.json","jack_o_lantern.json","jigsaw.json","jukebox.json","jungle_boat.json","jungle_button.json","jungle_chest_boat.json","jungle_door.json","jungle_fence.json","jungle_fence_gate.json","jungle_hanging_sign.json","jungle_leaves.json","jungle_log.json","jungle_planks.json","jungle_pressure_plate.json","jungle_sapling.json","jungle_sign.json","jungle_slab.json","jungle_stairs.json","jungle_trapdoor.json","jungle_wood.json","kelp.json","knowledge_book.json","ladder.json","lantern.json","lapis_block.json","lapis_lazuli.json","lapis_ore.json","large_amethyst_bud.json","large_fern.json","lava_bucket.json","lead.json","leather.json","leather_boots.json","leather_boots_amethyst_trim.json","leather_boots_copper_trim.json","leather_boots_diamond_trim.json","leather_boots_emerald_trim.json","leather_boots_gold_trim.json","leather_boots_iron_trim.json","leather_boots_lapis_trim.json","leather_boots_netherite_trim.json","leather_boots_quartz_trim.json","leather_boots_redstone_trim.json","leather_chestplate.json","leather_chestplate_amethyst_trim.json","leather_chestplate_copper_trim.json","leather_chestplate_diamond_trim.json","leather_chestplate_emerald_trim.json","leather_chestplate_gold_trim.json","leather_chestplate_iron_trim.json","leather_chestplate_lapis_trim.json","leather_chestplate_netherite_trim.json","leather_chestplate_quartz_trim.json","leather_chestplate_redstone_trim.json","leather_helmet.json","leather_helmet_amethyst_trim.json","leather_helmet_copper_trim.json","leather_helmet_diamond_trim.json","leather_helmet_emerald_trim.json","leather_helmet_gold_trim.json","leather_helmet_iron_trim.json","leather_helmet_lapis_trim.json","leather_helmet_netherite_trim.json","leather_helmet_quartz_trim.json","leather_helmet_redstone_trim.json","leather_horse_armor.json","leather_leggings.json","leather_leggings_amethyst_trim.json","leather_leggings_copper_trim.json","leather_leggings_diamond_trim.json","leather_leggings_emerald_trim.json","leather_leggings_gold_trim.json","leather_leggings_iron_trim.json","leather_leggings_lapis_trim.json","leather_leggings_netherite_trim.json","leather_leggings_quartz_trim.json","leather_leggings_redstone_trim.json","lectern.json","lever.json","light.json","light_00.json","light_01.json","light_02.json","light_03.json","light_04.json","light_05.json","light_06.json","light_07.json","light_08.json","light_09.json","light_10.json","light_11.json","light_12.json","light_13.json","light_14.json","light_15.json","light_blue_banner.json","light_blue_bed.json","light_blue_bundle.json","light_blue_bundle_open_back.json","light_blue_bundle_open_front.json","light_blue_candle.json","light_blue_carpet.json","light_blue_concrete.json","light_blue_concrete_powder.json","light_blue_dye.json","light_blue_glazed_terracotta.json","light_blue_shulker_box.json","light_blue_stained_glass.json","light_blue_stained_glass_pane.json","light_blue_terracotta.json","light_blue_wool.json","light_gray_banner.json","light_gray_bed.json","light_gray_bundle.json","light_gray_bundle_open_back.json","light_gray_bundle_open_front.json","light_gray_candle.json","light_gray_carpet.json","light_gray_concrete.json","light_gray_concrete_powder.json","light_gray_dye.json","light_gray_glazed_terracotta.json","light_gray_shulker_box.json","light_gray_stained_glass.json","light_gray_stained_glass_pane.json","light_gray_terracotta.json","light_gray_wool.json","light_weighted_pressure_plate.json","lightning_rod.json","lilac.json","lily_of_the_valley.json","lily_pad.json","lime_banner.json","lime_bed.json","lime_bundle.json","lime_bundle_open_back.json","lime_bundle_open_front.json","lime_candle.json","lime_carpet.json","lime_concrete.json","lime_concrete_powder.json","lime_dye.json","lime_glazed_terracotta.json","lime_shulker_box.json","lime_stained_glass.json","lime_stained_glass_pane.json","lime_terracotta.json","lime_wool.json","lingering_potion.json","llama_spawn_egg.json","lodestone.json","loom.json","mace.json","magenta_banner.json","magenta_bed.json","magenta_bundle.json","magenta_bundle_open_back.json","magenta_bundle_open_front.json","magenta_candle.json","magenta_carpet.json","magenta_concrete.json","magenta_concrete_powder.json","magenta_dye.json","magenta_glazed_terracotta.json","magenta_shulker_box.json","magenta_stained_glass.json","magenta_stained_glass_pane.json","magenta_terracotta.json","magenta_wool.json","magma_block.json","magma_cream.json","magma_cube_spawn_egg.json","mangrove_boat.json","mangrove_button.json","mangrove_chest_boat.json","mangrove_door.json","mangrove_fence.json","mangrove_fence_gate.json","mangrove_hanging_sign.json","mangrove_leaves.json","mangrove_log.json","mangrove_planks.json","mangrove_pressure_plate.json","mangrove_propagule.json","mangrove_roots.json","mangrove_sign.json","mangrove_slab.json","mangrove_stairs.json","mangrove_trapdoor.json","mangrove_wood.json","map.json","medium_amethyst_bud.json","melon.json","melon_seeds.json","melon_slice.json","milk_bucket.json","minecart.json","miner_pottery_sherd.json","mojang_banner_pattern.json","mooshroom_spawn_egg.json","moss_block.json","moss_carpet.json","mossy_cobblestone.json","mossy_cobblestone_slab.json","mossy_cobblestone_stairs.json","mossy_cobblestone_wall.json","mossy_stone_brick_slab.json","mossy_stone_brick_stairs.json","mossy_stone_brick_wall.json","mossy_stone_bricks.json","mourner_pottery_sherd.json","mud.json","mud_brick_slab.json","mud_brick_stairs.json","mud_brick_wall.json","mud_bricks.json","muddy_mangrove_roots.json","mule_spawn_egg.json","mushroom_stem.json","mushroom_stew.json","music_disc_11.json","music_disc_13.json","music_disc_5.json","music_disc_blocks.json","music_disc_cat.json","music_disc_chirp.json","music_disc_creator.json","music_disc_creator_music_box.json","music_disc_far.json","music_disc_mall.json","music_disc_mellohi.json","music_disc_otherside.json","music_disc_pigstep.json","music_disc_precipice.json","music_disc_relic.json","music_disc_stal.json","music_disc_strad.json","music_disc_wait.json","music_disc_ward.json","mutton.json","mycelium.json","name_tag.json","nautilus_shell.json","nether_brick.json","nether_brick_fence.json","nether_brick_slab.json","nether_brick_stairs.json","nether_brick_wall.json","nether_bricks.json","nether_gold_ore.json","nether_quartz_ore.json","nether_sprouts.json","nether_star.json","nether_wart.json","nether_wart_block.json","netherite_axe.json","netherite_block.json","netherite_boots.json","netherite_boots_amethyst_trim.json","netherite_boots_copper_trim.json","netherite_boots_diamond_trim.json","netherite_boots_emerald_trim.json","netherite_boots_gold_trim.json","netherite_boots_iron_trim.json","netherite_boots_lapis_trim.json","netherite_boots_netherite_darker_trim.json","netherite_boots_quartz_trim.json","netherite_boots_redstone_trim.json","netherite_chestplate.json","netherite_chestplate_amethyst_trim.json","netherite_chestplate_copper_trim.json","netherite_chestplate_diamond_trim.json","netherite_chestplate_emerald_trim.json","netherite_chestplate_gold_trim.json","netherite_chestplate_iron_trim.json","netherite_chestplate_lapis_trim.json","netherite_chestplate_netherite_darker_trim.json","netherite_chestplate_quartz_trim.json","netherite_chestplate_redstone_trim.json","netherite_helmet.json","netherite_helmet_amethyst_trim.json","netherite_helmet_copper_trim.json","netherite_helmet_diamond_trim.json","netherite_helmet_emerald_trim.json","netherite_helmet_gold_trim.json","netherite_helmet_iron_trim.json","netherite_helmet_lapis_trim.json","netherite_helmet_netherite_darker_trim.json","netherite_helmet_quartz_trim.json","netherite_helmet_redstone_trim.json","netherite_hoe.json","netherite_ingot.json","netherite_leggings.json","netherite_leggings_amethyst_trim.json","netherite_leggings_copper_trim.json","netherite_leggings_diamond_trim.json","netherite_leggings_emerald_trim.json","netherite_leggings_gold_trim.json","netherite_leggings_iron_trim.json","netherite_leggings_lapis_trim.json","netherite_leggings_netherite_darker_trim.json","netherite_leggings_quartz_trim.json","netherite_leggings_redstone_trim.json","netherite_pickaxe.json","netherite_scrap.json","netherite_shovel.json","netherite_sword.json","netherite_upgrade_smithing_template.json","netherrack.json","note_block.json","oak_boat.json","oak_button.json","oak_chest_boat.json","oak_door.json","oak_fence.json","oak_fence_gate.json","oak_hanging_sign.json","oak_leaves.json","oak_log.json","oak_planks.json","oak_pressure_plate.json","oak_sapling.json","oak_sign.json","oak_slab.json","oak_stairs.json","oak_trapdoor.json","oak_wood.json","observer.json","obsidian.json","ocelot_spawn_egg.json","ochre_froglight.json","ominous_bottle.json","ominous_trial_key.json","orange_banner.json","orange_bed.json","orange_bundle.json","orange_bundle_open_back.json","orange_bundle_open_front.json","orange_candle.json","orange_carpet.json","orange_concrete.json","orange_concrete_powder.json","orange_dye.json","orange_glazed_terracotta.json","orange_shulker_box.json","orange_stained_glass.json","orange_stained_glass_pane.json","orange_terracotta.json","orange_tulip.json","orange_wool.json","oxeye_daisy.json","oxidized_chiseled_copper.json","oxidized_copper.json","oxidized_copper_bulb.json","oxidized_copper_door.json","oxidized_copper_grate.json","oxidized_copper_trapdoor.json","oxidized_cut_copper.json","oxidized_cut_copper_slab.json","oxidized_cut_copper_stairs.json","packed_ice.json","packed_mud.json","painting.json","pale_hanging_moss.json","pale_moss_block.json","pale_moss_carpet.json","pale_oak_boat.json","pale_oak_button.json","pale_oak_chest_boat.json","pale_oak_door.json","pale_oak_fence.json","pale_oak_fence_gate.json","pale_oak_hanging_sign.json","pale_oak_leaves.json","pale_oak_log.json","pale_oak_planks.json","pale_oak_pressure_plate.json","pale_oak_sapling.json","pale_oak_sign.json","pale_oak_slab.json","pale_oak_stairs.json","pale_oak_trapdoor.json","pale_oak_wood.json","panda_spawn_egg.json","paper.json","parrot_spawn_egg.json","pearlescent_froglight.json","peony.json","petrified_oak_slab.json","phantom_membrane.json","phantom_spawn_egg.json","pig_spawn_egg.json","piglin_banner_pattern.json","piglin_brute_spawn_egg.json","piglin_head.json","piglin_spawn_egg.json","pillager_spawn_egg.json","pink_banner.json","pink_bed.json","pink_bundle.json","pink_bundle_open_back.json","pink_bundle_open_front.json","pink_candle.json","pink_carpet.json","pink_concrete.json","pink_concrete_powder.json","pink_dye.json","pink_glazed_terracotta.json","pink_petals.json","pink_shulker_box.json","pink_stained_glass.json","pink_stained_glass_pane.json","pink_terracotta.json","pink_tulip.json","pink_wool.json","piston.json","pitcher_plant.json","pitcher_pod.json","player_head.json","plenty_pottery_sherd.json","podzol.json","pointed_dripstone.json","poisonous_potato.json","polar_bear_spawn_egg.json","polished_andesite.json","polished_andesite_slab.json","polished_andesite_stairs.json","polished_basalt.json","polished_blackstone.json","polished_blackstone_brick_slab.json","polished_blackstone_brick_stairs.json","polished_blackstone_brick_wall.json","polished_blackstone_bricks.json","polished_blackstone_button.json","polished_blackstone_pressure_plate.json","polished_blackstone_slab.json","polished_blackstone_stairs.json","polished_blackstone_wall.json","polished_deepslate.json","polished_deepslate_slab.json","polished_deepslate_stairs.json","polished_deepslate_wall.json","polished_diorite.json","polished_diorite_slab.json","polished_diorite_stairs.json","polished_granite.json","polished_granite_slab.json","polished_granite_stairs.json","polished_tuff.json","polished_tuff_slab.json","polished_tuff_stairs.json","polished_tuff_wall.json","popped_chorus_fruit.json","poppy.json","porkchop.json","potato.json","potion.json","powder_snow_bucket.json","powered_rail.json","prismarine.json","prismarine_brick_slab.json","prismarine_brick_stairs.json","prismarine_bricks.json","prismarine_crystals.json","prismarine_shard.json","prismarine_slab.json","prismarine_stairs.json","prismarine_wall.json","prize_pottery_sherd.json","pufferfish.json","pufferfish_bucket.json","pufferfish_spawn_egg.json","pumpkin.json","pumpkin_pie.json","pumpkin_seeds.json","purple_banner.json","purple_bed.json","purple_bundle.json","purple_bundle_open_back.json","purple_bundle_open_front.json","purple_candle.json","purple_carpet.json","purple_concrete.json","purple_concrete_powder.json","purple_dye.json","purple_glazed_terracotta.json","purple_shulker_box.json","purple_stained_glass.json","purple_stained_glass_pane.json","purple_terracotta.json","purple_wool.json","purpur_block.json","purpur_pillar.json","purpur_slab.json","purpur_stairs.json","quartz.json","quartz_block.json","quartz_bricks.json","quartz_pillar.json","quartz_slab.json","quartz_stairs.json","rabbit.json","rabbit_foot.json","rabbit_hide.json","rabbit_spawn_egg.json","rabbit_stew.json","rail.json","raiser_armor_trim_smithing_template.json","ravager_spawn_egg.json","raw_copper.json","raw_copper_block.json","raw_gold.json","raw_gold_block.json","raw_iron.json","raw_iron_block.json","recovery_compass.json","recovery_compass_00.json","recovery_compass_01.json","recovery_compass_02.json","recovery_compass_03.json","recovery_compass_04.json","recovery_compass_05.json","recovery_compass_06.json","recovery_compass_07.json","recovery_compass_08.json","recovery_compass_09.json","recovery_compass_10.json","recovery_compass_11.json","recovery_compass_12.json","recovery_compass_13.json","recovery_compass_14.json","recovery_compass_15.json","recovery_compass_17.json","recovery_compass_18.json","recovery_compass_19.json","recovery_compass_20.json","recovery_compass_21.json","recovery_compass_22.json","recovery_compass_23.json","recovery_compass_24.json","recovery_compass_25.json","recovery_compass_26.json","recovery_compass_27.json","recovery_compass_28.json","recovery_compass_29.json","recovery_compass_30.json","recovery_compass_31.json","red_banner.json","red_bed.json","red_bundle.json","red_bundle_open_back.json","red_bundle_open_front.json","red_candle.json","red_carpet.json","red_concrete.json","red_concrete_powder.json","red_dye.json","red_glazed_terracotta.json","red_mushroom.json","red_mushroom_block.json","red_nether_brick_slab.json","red_nether_brick_stairs.json","red_nether_brick_wall.json","red_nether_bricks.json","red_sand.json","red_sandstone.json","red_sandstone_slab.json","red_sandstone_stairs.json","red_sandstone_wall.json","red_shulker_box.json","red_stained_glass.json","red_stained_glass_pane.json","red_terracotta.json","red_tulip.json","red_wool.json","redstone.json","redstone_block.json","redstone_lamp.json","redstone_ore.json","redstone_torch.json","reinforced_deepslate.json","repeater.json","repeating_command_block.json","respawn_anchor.json","rib_armor_trim_smithing_template.json","rooted_dirt.json","rose_bush.json","rotten_flesh.json","saddle.json","salmon.json","salmon_bucket.json","salmon_spawn_egg.json","sand.json","sandstone.json","sandstone_slab.json","sandstone_stairs.json","sandstone_wall.json","scaffolding.json","scrape_pottery_sherd.json","sculk.json","sculk_catalyst.json","sculk_sensor.json","sculk_shrieker.json","sculk_vein.json","sea_lantern.json","sea_pickle.json","seagrass.json","sentry_armor_trim_smithing_template.json","shaper_armor_trim_smithing_template.json","sheaf_pottery_sherd.json","shears.json","sheep_spawn_egg.json","shelter_pottery_sherd.json","shield.json","shield_blocking.json","short_grass.json","shroomlight.json","shulker_box.json","shulker_shell.json","shulker_spawn_egg.json","silence_armor_trim_smithing_template.json","silverfish_spawn_egg.json","skeleton_horse_spawn_egg.json","skeleton_skull.json","skeleton_spawn_egg.json","skull_banner_pattern.json","skull_pottery_sherd.json","slime_ball.json","slime_block.json","slime_spawn_egg.json","small_amethyst_bud.json","small_dripleaf.json","smithing_table.json","smoker.json","smooth_basalt.json","smooth_quartz.json","smooth_quartz_slab.json","smooth_quartz_stairs.json","smooth_red_sandstone.json","smooth_red_sandstone_slab.json","smooth_red_sandstone_stairs.json","smooth_sandstone.json","smooth_sandstone_slab.json","smooth_sandstone_stairs.json","smooth_stone.json","smooth_stone_slab.json","sniffer_egg.json","sniffer_spawn_egg.json","snort_pottery_sherd.json","snout_armor_trim_smithing_template.json","snow.json","snow_block.json","snow_golem_spawn_egg.json","snowball.json","soul_campfire.json","soul_lantern.json","soul_sand.json","soul_soil.json","soul_torch.json","spawner.json","spectral_arrow.json","spider_eye.json","spider_spawn_egg.json","spire_armor_trim_smithing_template.json","splash_potion.json","sponge.json","spore_blossom.json","spruce_boat.json","spruce_button.json","spruce_chest_boat.json","spruce_door.json","spruce_fence.json","spruce_fence_gate.json","spruce_hanging_sign.json","spruce_leaves.json","spruce_log.json","spruce_planks.json","spruce_pressure_plate.json","spruce_sapling.json","spruce_sign.json","spruce_slab.json","spruce_stairs.json","spruce_trapdoor.json","spruce_wood.json","spyglass.json","spyglass_in_hand.json","squid_spawn_egg.json","stick.json","sticky_piston.json","stone.json","stone_axe.json","stone_brick_slab.json","stone_brick_stairs.json","stone_brick_wall.json","stone_bricks.json","stone_button.json","stone_hoe.json","stone_pickaxe.json","stone_pressure_plate.json","stone_shovel.json","stone_slab.json","stone_stairs.json","stone_sword.json","stonecutter.json","stray_spawn_egg.json","strider_spawn_egg.json","string.json","stripped_acacia_log.json","stripped_acacia_wood.json","stripped_bamboo_block.json","stripped_birch_log.json","stripped_birch_wood.json","stripped_cherry_log.json","stripped_cherry_wood.json","stripped_crimson_hyphae.json","stripped_crimson_stem.json","stripped_dark_oak_log.json","stripped_dark_oak_wood.json","stripped_jungle_log.json","stripped_jungle_wood.json","stripped_mangrove_log.json","stripped_mangrove_wood.json","stripped_oak_log.json","stripped_oak_wood.json","stripped_pale_oak_log.json","stripped_pale_oak_wood.json","stripped_spruce_log.json","stripped_spruce_wood.json","stripped_warped_hyphae.json","stripped_warped_stem.json","structure_block.json","structure_void.json","sugar.json","sugar_cane.json","sunflower.json","suspicious_gravel.json","suspicious_sand.json","suspicious_stew.json","sweet_berries.json","tadpole_bucket.json","tadpole_spawn_egg.json","tall_grass.json","target.json","template_banner.json","template_bed.json","template_music_disc.json","template_shulker_box.json","template_skull.json","template_spawn_egg.json","terracotta.json","tide_armor_trim_smithing_template.json","tinted_glass.json","tipped_arrow.json","tnt.json","tnt_minecart.json","tooting_goat_horn.json","torch.json","torchflower.json","torchflower_seeds.json","totem_of_undying.json","trader_llama_spawn_egg.json","trapped_chest.json","trial_key.json","trial_spawner.json","trident.json","trident_in_hand.json","trident_throwing.json","tripwire_hook.json","tropical_fish.json","tropical_fish_bucket.json","tropical_fish_spawn_egg.json","tube_coral.json","tube_coral_block.json","tube_coral_fan.json","tuff.json","tuff_brick_slab.json","tuff_brick_stairs.json","tuff_brick_wall.json","tuff_bricks.json","tuff_slab.json","tuff_stairs.json","tuff_wall.json","turtle_egg.json","turtle_helmet.json","turtle_helmet_amethyst_trim.json","turtle_helmet_copper_trim.json","turtle_helmet_diamond_trim.json","turtle_helmet_emerald_trim.json","turtle_helmet_gold_trim.json","turtle_helmet_iron_trim.json","turtle_helmet_lapis_trim.json","turtle_helmet_netherite_trim.json","turtle_helmet_quartz_trim.json","turtle_helmet_redstone_trim.json","turtle_scute.json","turtle_spawn_egg.json","twisting_vines.json","vault.json","verdant_froglight.json","vex_armor_trim_smithing_template.json","vex_spawn_egg.json","villager_spawn_egg.json","vindicator_spawn_egg.json","vine.json","wandering_trader_spawn_egg.json","ward_armor_trim_smithing_template.json","warden_spawn_egg.json","warped_button.json","warped_door.json","warped_fence.json","warped_fence_gate.json","warped_fungus.json","warped_fungus_on_a_stick.json","warped_hanging_sign.json","warped_hyphae.json","warped_nylium.json","warped_planks.json","warped_pressure_plate.json","warped_roots.json","warped_sign.json","warped_slab.json","warped_stairs.json","warped_stem.json","warped_trapdoor.json","warped_wart_block.json","water_bucket.json","waxed_chiseled_copper.json","waxed_copper_block.json","waxed_copper_bulb.json","waxed_copper_door.json","waxed_copper_grate.json","waxed_copper_trapdoor.json","waxed_cut_copper.json","waxed_cut_copper_slab.json","waxed_cut_copper_stairs.json","waxed_exposed_chiseled_copper.json","waxed_exposed_copper.json","waxed_exposed_copper_bulb.json","waxed_exposed_copper_door.json","waxed_exposed_copper_grate.json","waxed_exposed_copper_trapdoor.json","waxed_exposed_cut_copper.json","waxed_exposed_cut_copper_slab.json","waxed_exposed_cut_copper_stairs.json","waxed_oxidized_chiseled_copper.json","waxed_oxidized_copper.json","waxed_oxidized_copper_bulb.json","waxed_oxidized_copper_door.json","waxed_oxidized_copper_grate.json","waxed_oxidized_copper_trapdoor.json","waxed_oxidized_cut_copper.json","waxed_oxidized_cut_copper_slab.json","waxed_oxidized_cut_copper_stairs.json","waxed_weathered_chiseled_copper.json","waxed_weathered_copper.json","waxed_weathered_copper_bulb.json","waxed_weathered_copper_door.json","waxed_weathered_copper_grate.json","waxed_weathered_copper_trapdoor.json","waxed_weathered_cut_copper.json","waxed_weathered_cut_copper_slab.json","waxed_weathered_cut_copper_stairs.json","wayfinder_armor_trim_smithing_template.json","weathered_chiseled_copper.json","weathered_copper.json","weathered_copper_bulb.json","weathered_copper_door.json","weathered_copper_grate.json","weathered_copper_trapdoor.json","weathered_cut_copper.json","weathered_cut_copper_slab.json","weathered_cut_copper_stairs.json","weeping_vines.json","wet_sponge.json","wheat.json","wheat_seeds.json","white_banner.json","white_bed.json","white_bundle.json","white_bundle_open_back.json","white_bundle_open_front.json","white_candle.json","white_carpet.json","white_concrete.json","white_concrete_powder.json","white_dye.json","white_glazed_terracotta.json","white_shulker_box.json","white_stained_glass.json","white_stained_glass_pane.json","white_terracotta.json","white_tulip.json","white_wool.json","wild_armor_trim_smithing_template.json","wind_charge.json","witch_spawn_egg.json","wither_rose.json","wither_skeleton_skull.json","wither_skeleton_spawn_egg.json","wither_spawn_egg.json","wolf_armor.json","wolf_spawn_egg.json","wooden_axe.json","wooden_hoe.json","wooden_pickaxe.json","wooden_shovel.json","wooden_sword.json","writable_book.json","written_book.json","yellow_banner.json","yellow_bed.json","yellow_bundle.json","yellow_bundle_open_back.json","yellow_bundle_open_front.json","yellow_candle.json","yellow_carpet.json","yellow_concrete.json","yellow_concrete_powder.json","yellow_dye.json","yellow_glazed_terracotta.json","yellow_shulker_box.json","yellow_stained_glass.json","yellow_stained_glass_pane.json","yellow_terracotta.json","yellow_wool.json","zoglin_spawn_egg.json","zombie_head.json","zombie_horse_spawn_egg.json","zombie_spawn_egg.json","zombie_villager_spawn_egg.json","zombified_piglin_spawn_egg.json"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/sounds.json b/common-files/src/main/resources/internal/sounds.json index 1d92846f1..0c1f51a60 100644 --- a/common-files/src/main/resources/internal/sounds.json +++ b/common-files/src/main/resources/internal/sounds.json @@ -3280,9 +3280,18 @@ }, "block.chest.close": { "sounds": [ - "block/chest/close1", - "block/chest/close2", - "block/chest/close3" + { + "attenuation_distance": 12, + "name": "block/chest/close1" + }, + { + "attenuation_distance": 12, + "name": "block/chest/close2" + }, + { + "attenuation_distance": 12, + "name": "block/chest/close3" + } ], "subtitle": "subtitles.block.chest.close" }, @@ -3295,7 +3304,10 @@ }, "block.chest.open": { "sounds": [ - "block/chest/open" + { + "attenuation_distance": 12, + "name": "block/chest/open" + } ], "subtitle": "subtitles.block.chest.open" }, @@ -3892,6 +3904,108 @@ ], "subtitle": "subtitles.block.copper_bulb.turn_on" }, + "block.copper_chest.close": { + "sounds": [ + { + "attenuation_distance": 12, + "name": "block/copper_chest/copper_chest_close1" + }, + { + "attenuation_distance": 12, + "name": "block/copper_chest/copper_chest_close2" + }, + { + "attenuation_distance": 12, + "name": "block/copper_chest/copper_chest_close3" + } + ], + "subtitle": "subtitles.block.copper_chest.close" + }, + "block.copper_chest.open": { + "sounds": [ + { + "attenuation_distance": 12, + "name": "block/copper_chest/copper_chest_open1" + }, + { + "attenuation_distance": 12, + "name": "block/copper_chest/copper_chest_open2" + }, + { + "attenuation_distance": 12, + "name": "block/copper_chest/copper_chest_open3" + } + ], + "subtitle": "subtitles.block.copper_chest.open" + }, + "block.copper_chest_oxidized.close": { + "sounds": [ + { + "attenuation_distance": 12, + "name": "block/copper_chest/copper_chest_oxidized_close1" + }, + { + "attenuation_distance": 12, + "name": "block/copper_chest/copper_chest_oxidized_close2" + }, + { + "attenuation_distance": 12, + "name": "block/copper_chest/copper_chest_oxidized_close3" + } + ], + "subtitle": "subtitles.block.copper_chest.close" + }, + "block.copper_chest_oxidized.open": { + "sounds": [ + { + "attenuation_distance": 12, + "name": "block/copper_chest/copper_chest_oxidized_open1" + }, + { + "attenuation_distance": 12, + "name": "block/copper_chest/copper_chest_oxidized_open2" + }, + { + "attenuation_distance": 12, + "name": "block/copper_chest/copper_chest_oxidized_open3" + } + ], + "subtitle": "subtitles.block.copper_chest.open" + }, + "block.copper_chest_weathered.close": { + "sounds": [ + { + "attenuation_distance": 12, + "name": "block/copper_chest/copper_chest_weathered_close1" + }, + { + "attenuation_distance": 12, + "name": "block/copper_chest/copper_chest_weathered_close2" + }, + { + "attenuation_distance": 12, + "name": "block/copper_chest/copper_chest_weathered_close3" + } + ], + "subtitle": "subtitles.block.copper_chest.close" + }, + "block.copper_chest_weathered.open": { + "sounds": [ + { + "attenuation_distance": 12, + "name": "block/copper_chest/copper_chest_weathered_open1" + }, + { + "attenuation_distance": 12, + "name": "block/copper_chest/copper_chest_weathered_open2" + }, + { + "attenuation_distance": 12, + "name": "block/copper_chest/copper_chest_weathered_open3" + } + ], + "subtitle": "subtitles.block.copper_chest.open" + }, "block.copper_door.close": { "sounds": [ "block/copper_door/toggle1", @@ -3916,6 +4030,50 @@ ], "subtitle": "subtitles.block.door.toggle" }, + "block.copper_golem_statue.break": { + "sounds": [ + "block/copper_statue/break1", + "block/copper_statue/break2", + "block/copper_statue/break3" + ], + "subtitle": "subtitles.block.generic.break" + }, + "block.copper_golem_statue.fall": { + "sounds": [ + "block/copper_statue/hit1", + "block/copper_statue/hit2", + "block/copper_statue/hit3", + "block/copper_statue/hit4" + ], + "subtitle": "subtitles.block.generic.fall" + }, + "block.copper_golem_statue.hit": { + "sounds": [ + "block/copper_statue/hit1", + "block/copper_statue/hit2", + "block/copper_statue/hit3", + "block/copper_statue/hit4" + ], + "subtitle": "subtitles.block.generic.hit" + }, + "block.copper_golem_statue.place": { + "sounds": [ + "block/copper_statue/place1", + "block/copper_statue/place2", + "block/copper_statue/place3", + "block/copper_statue/place4" + ], + "subtitle": "subtitles.block.generic.place" + }, + "block.copper_golem_statue.step": { + "sounds": [ + "block/copper_statue/hit1", + "block/copper_statue/hit2", + "block/copper_statue/hit3", + "block/copper_statue/hit4" + ], + "subtitle": "subtitles.block.generic.footsteps" + }, "block.copper_grate.break": { "sounds": [ "block/copper_grate/break1", @@ -10030,6 +10188,109 @@ ], "subtitle": "subtitles.block.generic.footsteps" }, + "block.shelf.activate": { + "sounds": [ + "block/shelf/activate1", + "block/shelf/activate2", + "block/shelf/activate3" + ], + "subtitle": "subtitles.block.shelf.activate" + }, + "block.shelf.break": { + "sounds": [ + "block/chiseled_bookshelf/break1", + "block/chiseled_bookshelf/break2", + "block/chiseled_bookshelf/break3", + "block/chiseled_bookshelf/break4", + "block/chiseled_bookshelf/break5", + "block/chiseled_bookshelf/break6" + ], + "subtitle": "subtitles.block.generic.break" + }, + "block.shelf.deactivate": { + "sounds": [ + "block/shelf/deactivate1", + "block/shelf/deactivate2", + "block/shelf/deactivate3" + ], + "subtitle": "subtitles.block.shelf.deactivate" + }, + "block.shelf.fall": { + "sounds": [ + "block/chiseled_bookshelf/step1", + "block/chiseled_bookshelf/step2", + "block/chiseled_bookshelf/step3", + "block/chiseled_bookshelf/step4", + "block/chiseled_bookshelf/step5" + ], + "subtitle": "subtitles.block.generic.fall" + }, + "block.shelf.hit": { + "sounds": [ + "block/chiseled_bookshelf/step1", + "block/chiseled_bookshelf/step2", + "block/chiseled_bookshelf/step3", + "block/chiseled_bookshelf/step4", + "block/chiseled_bookshelf/step5" + ], + "subtitle": "subtitles.block.generic.hit" + }, + "block.shelf.multi_swap": { + "sounds": [ + "block/shelf/multi_swap1", + "block/shelf/multi_swap2", + "block/shelf/multi_swap3" + ], + "subtitle": "subtitles.block.shelf.multi_swap" + }, + "block.shelf.place": { + "sounds": [ + "block/chiseled_bookshelf/break1", + "block/chiseled_bookshelf/break2", + "block/chiseled_bookshelf/break3", + "block/chiseled_bookshelf/break4", + "block/chiseled_bookshelf/break5", + "block/chiseled_bookshelf/break6" + ], + "subtitle": "subtitles.block.generic.place" + }, + "block.shelf.place_item": { + "sounds": [ + "block/shelf/place_item1", + "block/shelf/place_item2", + "block/shelf/place_item3", + "block/shelf/place_item4" + ], + "subtitle": "subtitles.block.shelf.place_item" + }, + "block.shelf.single_swap": { + "sounds": [ + "block/shelf/single_swap1", + "block/shelf/single_swap2", + "block/shelf/single_swap3", + "block/shelf/single_swap4" + ], + "subtitle": "subtitles.block.shelf.single_swap" + }, + "block.shelf.step": { + "sounds": [ + "block/chiseled_bookshelf/step1", + "block/chiseled_bookshelf/step2", + "block/chiseled_bookshelf/step3", + "block/chiseled_bookshelf/step4", + "block/chiseled_bookshelf/step5" + ], + "subtitle": "subtitles.block.generic.footsteps" + }, + "block.shelf.take_item": { + "sounds": [ + "block/shelf/single_swap1", + "block/shelf/single_swap2", + "block/shelf/single_swap3", + "block/shelf/single_swap4" + ], + "subtitle": "subtitles.block.shelf.take_item" + }, "block.shroomlight.break": { "sounds": [ "block/shroomlight/break1", @@ -13454,6 +13715,330 @@ ], "subtitle": "subtitles.entity.cod.hurt" }, + "entity.copper_golem.death": { + "sounds": [ + "mob/coppergolem/regular/death" + ], + "subtitle": "subtitles.entity.copper_golem.death" + }, + "entity.copper_golem.hurt": { + "sounds": [ + "mob/coppergolem/regular/hurt1", + "mob/coppergolem/regular/hurt2", + "mob/coppergolem/regular/hurt3", + "mob/coppergolem/regular/hurt4" + ], + "subtitle": "subtitles.entity.copper_golem.hurt" + }, + "entity.copper_golem.item_drop": { + "sounds": [ + { + "attenuation_distance": 12, + "name": "mob/coppergolem/item_drop" + } + ], + "subtitle": "subtitles.entity.copper_golem.item_drop" + }, + "entity.copper_golem.item_no_drop": { + "sounds": [ + { + "attenuation_distance": 12, + "name": "mob/coppergolem/item_no_drop" + } + ], + "subtitle": "subtitles.entity.copper_golem.item_no_drop" + }, + "entity.copper_golem.no_item_get": { + "sounds": [ + { + "attenuation_distance": 12, + "name": "mob/coppergolem/no_item_get" + } + ], + "subtitle": "subtitles.entity.copper_golem.no_item_get" + }, + "entity.copper_golem.no_item_no_get": { + "sounds": [ + { + "attenuation_distance": 12, + "name": "mob/coppergolem/no_item_no_get" + } + ], + "subtitle": "subtitles.entity.copper_golem.no_item_no_get" + }, + "entity.copper_golem.shear": { + "sounds": [ + "mob/sheep/shear" + ], + "subtitle": "subtitles.item.shears.shear" + }, + "entity.copper_golem.spawn": { + "sounds": [ + "mob/coppergolem/spawn" + ], + "subtitle": "subtitles.entity.copper_golem.spawn" + }, + "entity.copper_golem.spin": { + "sounds": [ + { + "attenuation_distance": 12, + "name": "mob/coppergolem/regular/spin1" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/regular/spin2" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/regular/spin3" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/regular/spin4" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/regular/spin5" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/regular/spin6" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/regular/spin7" + } + ], + "subtitle": "subtitles.entity.copper_golem.spin" + }, + "entity.copper_golem.step": { + "sounds": [ + { + "attenuation_distance": 12, + "name": "mob/coppergolem/regular/step1" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/regular/step2" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/regular/step3" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/regular/step4" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/regular/step5" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/regular/step6" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/regular/step7" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/regular/step8" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/regular/step9" + } + ], + "subtitle": "subtitles.block.generic.footsteps" + }, + "entity.copper_golem_become_statue": { + "sounds": [ + "block/copper_statue/become_statue1", + "block/copper_statue/become_statue2", + "block/copper_statue/become_statue3", + "block/copper_statue/become_statue4" + ], + "subtitle": "subtitles.entity.copper_golem_become_statue" + }, + "entity.copper_golem_oxidized.death": { + "sounds": [ + "mob/coppergolem/oxidized/death" + ], + "subtitle": "subtitles.entity.copper_golem.death" + }, + "entity.copper_golem_oxidized.hurt": { + "sounds": [ + "mob/coppergolem/oxidized/hurt1", + "mob/coppergolem/oxidized/hurt2", + "mob/coppergolem/oxidized/hurt3", + "mob/coppergolem/oxidized/hurt4" + ], + "subtitle": "subtitles.entity.copper_golem.hurt" + }, + "entity.copper_golem_oxidized.spin": { + "sounds": [ + { + "attenuation_distance": 12, + "name": "mob/coppergolem/oxidized/spin1" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/oxidized/spin2" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/oxidized/spin3" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/oxidized/spin4" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/oxidized/spin5" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/oxidized/spin6" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/oxidized/spin7" + } + ], + "subtitle": "subtitles.entity.copper_golem.spin" + }, + "entity.copper_golem_oxidized.step": { + "sounds": [ + { + "attenuation_distance": 12, + "name": "mob/coppergolem/oxidized/step1" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/oxidized/step2" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/oxidized/step3" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/oxidized/step4" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/oxidized/step5" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/oxidized/step6" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/oxidized/step7" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/oxidized/step8" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/oxidized/step9" + } + ], + "subtitle": "subtitles.block.generic.footsteps" + }, + "entity.copper_golem_weathered.death": { + "sounds": [ + "mob/coppergolem/weathered/death" + ], + "subtitle": "subtitles.entity.copper_golem.death" + }, + "entity.copper_golem_weathered.hurt": { + "sounds": [ + "mob/coppergolem/weathered/hurt1", + "mob/coppergolem/weathered/hurt2", + "mob/coppergolem/weathered/hurt3", + "mob/coppergolem/weathered/hurt4" + ], + "subtitle": "subtitles.entity.copper_golem.hurt" + }, + "entity.copper_golem_weathered.spin": { + "sounds": [ + { + "attenuation_distance": 12, + "name": "mob/coppergolem/weathered/spin1" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/weathered/spin2" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/weathered/spin3" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/weathered/spin4" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/weathered/spin5" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/weathered/spin6" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/weathered/spin7" + } + ], + "subtitle": "subtitles.entity.copper_golem.spin" + }, + "entity.copper_golem_weathered.step": { + "sounds": [ + { + "attenuation_distance": 12, + "name": "mob/coppergolem/weathered/step1" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/weathered/step2" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/weathered/step3" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/weathered/step4" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/weathered/step5" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/weathered/step6" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/weathered/step7" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/weathered/step8" + }, + { + "attenuation_distance": 12, + "name": "mob/coppergolem/weathered/step9" + } + ], + "subtitle": "subtitles.block.generic.footsteps" + }, "entity.cow.ambient": { "sounds": [ "mob/cow/say1", @@ -20705,6 +21290,17 @@ ], "subtitle": "subtitles.item.armor.equip_chain" }, + "item.armor.equip_copper": { + "sounds": [ + "item/armor/equip_copper1", + "item/armor/equip_copper2", + "item/armor/equip_copper3", + "item/armor/equip_copper4", + "item/armor/equip_copper5", + "item/armor/equip_copper6" + ], + "subtitle": "subtitles.item.armor.equip_copper" + }, "item.armor.equip_diamond": { "sounds": [ "item/armor/equip_diamond1", @@ -23947,6 +24543,19 @@ } ] }, + "weather.end_flash": { + "sounds": [ + "ambient/weather/end_flash1", + "ambient/weather/end_flash2", + "ambient/weather/end_flash3", + "ambient/weather/end_flash4", + "ambient/weather/end_flash5", + "ambient/weather/end_flash6", + "ambient/weather/end_flash7", + "ambient/weather/end_flash8" + ], + "subtitle": "subtitles.weather.end_flash" + }, "weather.rain": { "sounds": [ "ambient/weather/rain1", diff --git a/common-files/src/main/resources/internal/sounds/processed.json b/common-files/src/main/resources/internal/sounds/processed.json new file mode 100644 index 000000000..6e81511d6 --- /dev/null +++ b/common-files/src/main/resources/internal/sounds/processed.json @@ -0,0 +1 @@ +["ambient/cave/cave1","ambient/cave/cave10","ambient/cave/cave11","ambient/cave/cave12","ambient/cave/cave13","ambient/cave/cave14","ambient/cave/cave15","ambient/cave/cave16","ambient/cave/cave17","ambient/cave/cave18","ambient/cave/cave19","ambient/cave/cave2","ambient/cave/cave20","ambient/cave/cave21","ambient/cave/cave22","ambient/cave/cave23","ambient/cave/cave3","ambient/cave/cave4","ambient/cave/cave5","ambient/cave/cave6","ambient/cave/cave7","ambient/cave/cave8","ambient/cave/cave9","ambient/nether/basalt_deltas/active1","ambient/nether/basalt_deltas/active2","ambient/nether/basalt_deltas/active3","ambient/nether/basalt_deltas/active4","ambient/nether/basalt_deltas/ambience","ambient/nether/basalt_deltas/basaltground1","ambient/nether/basalt_deltas/basaltground2","ambient/nether/basalt_deltas/basaltground3","ambient/nether/basalt_deltas/basaltground4","ambient/nether/basalt_deltas/click1","ambient/nether/basalt_deltas/click2","ambient/nether/basalt_deltas/click3","ambient/nether/basalt_deltas/click4","ambient/nether/basalt_deltas/click5","ambient/nether/basalt_deltas/click6","ambient/nether/basalt_deltas/click7","ambient/nether/basalt_deltas/click8","ambient/nether/basalt_deltas/debris1","ambient/nether/basalt_deltas/debris2","ambient/nether/basalt_deltas/debris3","ambient/nether/basalt_deltas/heavy_click1","ambient/nether/basalt_deltas/heavy_click2","ambient/nether/basalt_deltas/long_debris1","ambient/nether/basalt_deltas/long_debris2","ambient/nether/basalt_deltas/plode1","ambient/nether/basalt_deltas/plode2","ambient/nether/basalt_deltas/plode3","ambient/nether/basalt_deltas/twist1","ambient/nether/basalt_deltas/twist2","ambient/nether/basalt_deltas/twist3","ambient/nether/basalt_deltas/twist4","ambient/nether/crimson_forest/addition1","ambient/nether/crimson_forest/addition2","ambient/nether/crimson_forest/addition3","ambient/nether/crimson_forest/ambience","ambient/nether/crimson_forest/mood1","ambient/nether/crimson_forest/mood2","ambient/nether/crimson_forest/mood3","ambient/nether/crimson_forest/mood4","ambient/nether/crimson_forest/particles1","ambient/nether/crimson_forest/particles2","ambient/nether/crimson_forest/particles3","ambient/nether/crimson_forest/shine1","ambient/nether/crimson_forest/shine2","ambient/nether/crimson_forest/shine3","ambient/nether/crimson_forest/shroom1","ambient/nether/crimson_forest/shroom2","ambient/nether/crimson_forest/shroom3","ambient/nether/crimson_forest/twang1","ambient/nether/crimson_forest/voom1","ambient/nether/crimson_forest/voom2","ambient/nether/nether_wastes/addition1","ambient/nether/nether_wastes/addition2","ambient/nether/nether_wastes/addition3","ambient/nether/nether_wastes/addition4","ambient/nether/nether_wastes/addition5","ambient/nether/nether_wastes/addition6","ambient/nether/nether_wastes/addition7","ambient/nether/nether_wastes/addition8","ambient/nether/nether_wastes/ambience","ambient/nether/nether_wastes/dark1","ambient/nether/nether_wastes/dark2","ambient/nether/nether_wastes/ground1","ambient/nether/nether_wastes/ground2","ambient/nether/nether_wastes/ground3","ambient/nether/nether_wastes/ground4","ambient/nether/nether_wastes/mood1","ambient/nether/nether_wastes/mood2","ambient/nether/nether_wastes/mood3","ambient/nether/nether_wastes/mood4","ambient/nether/nether_wastes/mood5","ambient/nether/soulsand_valley/ambience","ambient/nether/soulsand_valley/mood1","ambient/nether/soulsand_valley/mood2","ambient/nether/soulsand_valley/mood3","ambient/nether/soulsand_valley/mood4","ambient/nether/soulsand_valley/sand1","ambient/nether/soulsand_valley/sand2","ambient/nether/soulsand_valley/sand3","ambient/nether/soulsand_valley/voices1","ambient/nether/soulsand_valley/voices2","ambient/nether/soulsand_valley/voices3","ambient/nether/soulsand_valley/voices4","ambient/nether/soulsand_valley/voices5","ambient/nether/soulsand_valley/whisper1","ambient/nether/soulsand_valley/whisper2","ambient/nether/soulsand_valley/whisper3","ambient/nether/soulsand_valley/whisper4","ambient/nether/soulsand_valley/whisper5","ambient/nether/soulsand_valley/whisper6","ambient/nether/soulsand_valley/whisper7","ambient/nether/soulsand_valley/whisper8","ambient/nether/soulsand_valley/wind1","ambient/nether/soulsand_valley/wind2","ambient/nether/soulsand_valley/wind3","ambient/nether/soulsand_valley/wind4","ambient/nether/soulsand_valley/with1","ambient/nether/warped_forest/addition1","ambient/nether/warped_forest/addition2","ambient/nether/warped_forest/addition3","ambient/nether/warped_forest/addition4","ambient/nether/warped_forest/addition5","ambient/nether/warped_forest/addition6","ambient/nether/warped_forest/ambience","ambient/nether/warped_forest/creak1","ambient/nether/warped_forest/creak2","ambient/nether/warped_forest/creak3","ambient/nether/warped_forest/creak4","ambient/nether/warped_forest/creak5","ambient/nether/warped_forest/enish1","ambient/nether/warped_forest/enish2","ambient/nether/warped_forest/enish3","ambient/nether/warped_forest/help1","ambient/nether/warped_forest/help2","ambient/nether/warped_forest/here1","ambient/nether/warped_forest/here2","ambient/nether/warped_forest/here3","ambient/nether/warped_forest/mood1","ambient/nether/warped_forest/mood2","ambient/nether/warped_forest/mood3","ambient/nether/warped_forest/mood4","ambient/nether/warped_forest/mood5","ambient/nether/warped_forest/mood6","ambient/nether/warped_forest/mood7","ambient/nether/warped_forest/mood8","ambient/nether/warped_forest/mood9","ambient/underwater/enter1","ambient/underwater/enter2","ambient/underwater/enter3","ambient/underwater/exit1","ambient/underwater/exit2","ambient/underwater/exit3","ambient/underwater/underwater_ambience","ambient/underwater/additions/animal1","ambient/underwater/additions/animal2","ambient/underwater/additions/bass_whale1","ambient/underwater/additions/bass_whale2","ambient/underwater/additions/bubbles1","ambient/underwater/additions/bubbles2","ambient/underwater/additions/bubbles3","ambient/underwater/additions/bubbles4","ambient/underwater/additions/bubbles5","ambient/underwater/additions/bubbles6","ambient/underwater/additions/crackles1","ambient/underwater/additions/crackles2","ambient/underwater/additions/dark1","ambient/underwater/additions/dark2","ambient/underwater/additions/dark3","ambient/underwater/additions/dark4","ambient/underwater/additions/driplets1","ambient/underwater/additions/driplets2","ambient/underwater/additions/earth_crack","ambient/underwater/additions/water1","ambient/underwater/additions/water2","ambient/weather/end_flash1","ambient/weather/end_flash2","ambient/weather/end_flash3","ambient/weather/end_flash4","ambient/weather/end_flash5","ambient/weather/end_flash6","ambient/weather/end_flash7","ambient/weather/end_flash8","ambient/weather/rain1","ambient/weather/rain2","ambient/weather/rain3","ambient/weather/rain4","ambient/weather/rain5","ambient/weather/rain6","ambient/weather/rain7","ambient/weather/rain8","ambient/weather/thunder1","ambient/weather/thunder2","ambient/weather/thunder3","block/amethyst/break1","block/amethyst/break2","block/amethyst/break3","block/amethyst/break4","block/amethyst/place1","block/amethyst/place2","block/amethyst/place3","block/amethyst/place4","block/amethyst/resonate1","block/amethyst/resonate2","block/amethyst/resonate3","block/amethyst/resonate4","block/amethyst/shimmer","block/amethyst/step1","block/amethyst/step10","block/amethyst/step11","block/amethyst/step12","block/amethyst/step13","block/amethyst/step14","block/amethyst/step2","block/amethyst/step3","block/amethyst/step4","block/amethyst/step5","block/amethyst/step6","block/amethyst/step7","block/amethyst/step8","block/amethyst/step9","block/amethyst_cluster/break1","block/amethyst_cluster/break2","block/amethyst_cluster/break3","block/amethyst_cluster/break4","block/amethyst_cluster/place1","block/amethyst_cluster/place2","block/amethyst_cluster/place3","block/amethyst_cluster/place4","block/ancient_debris/break1","block/ancient_debris/break2","block/ancient_debris/break3","block/ancient_debris/break4","block/ancient_debris/break5","block/azalea/break1","block/azalea/break2","block/azalea/break3","block/azalea/break4","block/azalea/break5","block/azalea/break6","block/azalea/step1","block/azalea/step2","block/azalea/step3","block/azalea/step4","block/azalea/step5","block/azalea/step6","block/azalea_leaves/break1","block/azalea_leaves/break2","block/azalea_leaves/break3","block/azalea_leaves/break4","block/azalea_leaves/break5","block/azalea_leaves/break6","block/azalea_leaves/break7","block/azalea_leaves/step1","block/azalea_leaves/step2","block/azalea_leaves/step3","block/azalea_leaves/step4","block/azalea_leaves/step5","block/bamboo/place1","block/bamboo/place2","block/bamboo/place3","block/bamboo/place4","block/bamboo/place5","block/bamboo/place6","block/bamboo/sapling_hit1","block/bamboo/sapling_hit2","block/bamboo/sapling_hit3","block/bamboo/sapling_hit4","block/bamboo/sapling_hit5","block/bamboo/sapling_place1","block/bamboo/sapling_place2","block/bamboo/sapling_place3","block/bamboo/sapling_place4","block/bamboo/sapling_place5","block/bamboo/sapling_place6","block/bamboo/step1","block/bamboo/step2","block/bamboo/step3","block/bamboo/step4","block/bamboo/step5","block/bamboo/step6","block/bamboo_wood/break1","block/bamboo_wood/break2","block/bamboo_wood/break3","block/bamboo_wood/break4","block/bamboo_wood/break5","block/bamboo_wood/step1","block/bamboo_wood/step2","block/bamboo_wood/step3","block/bamboo_wood/step4","block/bamboo_wood/step5","block/bamboo_wood/step6","block/bamboo_wood_button/bamboo_wood_button","block/bamboo_wood_door/toggle1","block/bamboo_wood_door/toggle2","block/bamboo_wood_door/toggle3","block/bamboo_wood_door/toggle4","block/bamboo_wood_fence/toggle1","block/bamboo_wood_fence/toggle2","block/bamboo_wood_fence/toggle3","block/bamboo_wood_fence/toggle4","block/bamboo_wood_hanging_sign/break1","block/bamboo_wood_hanging_sign/break2","block/bamboo_wood_hanging_sign/break3","block/bamboo_wood_hanging_sign/break4","block/bamboo_wood_hanging_sign/step1","block/bamboo_wood_hanging_sign/step2","block/bamboo_wood_hanging_sign/step3","block/bamboo_wood_hanging_sign/step4","block/bamboo_wood_trapdoor/toggle1","block/bamboo_wood_trapdoor/toggle2","block/bamboo_wood_trapdoor/toggle3","block/bamboo_wood_trapdoor/toggle4","block/barrel/close","block/barrel/open1","block/barrel/open2","block/basalt/break1","block/basalt/break2","block/basalt/break3","block/basalt/break4","block/basalt/break5","block/basalt/step1","block/basalt/step2","block/basalt/step3","block/basalt/step4","block/basalt/step5","block/basalt/step6","block/beacon/activate","block/beacon/ambient","block/beacon/deactivate","block/beacon/power1","block/beacon/power2","block/beacon/power3","block/beehive/drip1","block/beehive/drip2","block/beehive/drip3","block/beehive/drip4","block/beehive/drip5","block/beehive/drip6","block/beehive/enter","block/beehive/exit","block/beehive/shear","block/beehive/work1","block/beehive/work2","block/beehive/work3","block/beehive/work4","block/bell/bell_use01","block/bell/bell_use02","block/bell/resonate","block/big_dripleaf/break1","block/big_dripleaf/break2","block/big_dripleaf/break3","block/big_dripleaf/break4","block/big_dripleaf/break5","block/big_dripleaf/break6","block/big_dripleaf/step1","block/big_dripleaf/step2","block/big_dripleaf/step3","block/big_dripleaf/step4","block/big_dripleaf/step5","block/big_dripleaf/step6","block/big_dripleaf/tilt_down1","block/big_dripleaf/tilt_down2","block/big_dripleaf/tilt_down3","block/big_dripleaf/tilt_down4","block/big_dripleaf/tilt_down5","block/big_dripleaf/tilt_up1","block/big_dripleaf/tilt_up2","block/big_dripleaf/tilt_up3","block/big_dripleaf/tilt_up4","block/blastfurnace/blastfurnace1","block/blastfurnace/blastfurnace2","block/blastfurnace/blastfurnace3","block/blastfurnace/blastfurnace4","block/blastfurnace/blastfurnace5","block/bone_block/break1","block/bone_block/break2","block/bone_block/break3","block/bone_block/break4","block/bone_block/break5","block/bone_block/step1","block/bone_block/step2","block/bone_block/step3","block/bone_block/step4","block/bone_block/step5","block/brewing_stand/brew1","block/brewing_stand/brew2","block/bubble_column/bubble1","block/bubble_column/bubble2","block/bubble_column/bubble3","block/bubble_column/upwards_ambient1","block/bubble_column/upwards_ambient2","block/bubble_column/upwards_ambient3","block/bubble_column/upwards_ambient4","block/bubble_column/upwards_ambient5","block/bubble_column/upwards_inside","block/bubble_column/whirlpool_ambient1","block/bubble_column/whirlpool_ambient2","block/bubble_column/whirlpool_ambient3","block/bubble_column/whirlpool_ambient4","block/bubble_column/whirlpool_ambient5","block/bubble_column/whirlpool_inside","block/cactus_flower/break1","block/cactus_flower/break2","block/cactus_flower/break3","block/cactus_flower/break4","block/cactus_flower/break5","block/cactus_flower/place1","block/cactus_flower/place2","block/cactus_flower/place3","block/cactus_flower/place4","block/cake/add_candle1","block/cake/add_candle2","block/cake/add_candle3","block/calcite/break1","block/calcite/break2","block/calcite/break3","block/calcite/break4","block/calcite/place1","block/calcite/place2","block/calcite/place3","block/calcite/place4","block/calcite/step1","block/calcite/step2","block/calcite/step3","block/calcite/step4","block/calcite/step5","block/calcite/step6","block/campfire/crackle1","block/campfire/crackle2","block/campfire/crackle3","block/campfire/crackle4","block/campfire/crackle5","block/campfire/crackle6","block/candle/ambient1","block/candle/ambient2","block/candle/ambient3","block/candle/ambient4","block/candle/ambient5","block/candle/ambient6","block/candle/ambient7","block/candle/ambient8","block/candle/ambient9","block/candle/break1","block/candle/break2","block/candle/break3","block/candle/break4","block/candle/break5","block/candle/extinguish1","block/candle/extinguish2","block/candle/extinguish3","block/candle/step1","block/candle/step2","block/candle/step3","block/candle/step4","block/candle/step5","block/cauldron/dye1","block/cauldron/dye2","block/cauldron/dye3","block/cave_vines/break1","block/cave_vines/break2","block/cave_vines/break3","block/cave_vines/break4","block/cave_vines/break5","block/chain/break1","block/chain/break2","block/chain/break3","block/chain/break4","block/chain/step1","block/chain/step2","block/chain/step3","block/chain/step4","block/chain/step5","block/chain/step6","block/cherry_leaves/break1","block/cherry_leaves/break2","block/cherry_leaves/break3","block/cherry_leaves/break4","block/cherry_leaves/break5","block/cherry_leaves/step1","block/cherry_leaves/step2","block/cherry_leaves/step3","block/cherry_leaves/step4","block/cherry_leaves/step5","block/cherry_wood/break1","block/cherry_wood/break2","block/cherry_wood/break3","block/cherry_wood/break4","block/cherry_wood/break5","block/cherry_wood/step1","block/cherry_wood/step2","block/cherry_wood/step3","block/cherry_wood/step4","block/cherry_wood/step5","block/cherry_wood/step6","block/cherry_wood_hanging_sign/break1","block/cherry_wood_hanging_sign/break2","block/cherry_wood_hanging_sign/break3","block/cherry_wood_hanging_sign/break4","block/cherry_wood_hanging_sign/step1","block/cherry_wood_hanging_sign/step2","block/cherry_wood_hanging_sign/step3","block/cherry_wood_hanging_sign/step4","block/cherrywood_button/cherrywood_click","block/cherrywood_door/toggle1","block/cherrywood_door/toggle2","block/cherrywood_door/toggle3","block/cherrywood_door/toggle4","block/cherrywood_fence_gate/toggle1","block/cherrywood_fence_gate/toggle2","block/cherrywood_fence_gate/toggle3","block/cherrywood_trapdoor/toggle1","block/cherrywood_trapdoor/toggle2","block/cherrywood_trapdoor/toggle3","block/chest/close1","block/chest/close2","block/chest/close3","block/chest/close_locked","block/chest/open","block/chest/open_locked","block/chiseled_bookshelf/break1","block/chiseled_bookshelf/break2","block/chiseled_bookshelf/break3","block/chiseled_bookshelf/break4","block/chiseled_bookshelf/break5","block/chiseled_bookshelf/break6","block/chiseled_bookshelf/insert1","block/chiseled_bookshelf/insert2","block/chiseled_bookshelf/insert3","block/chiseled_bookshelf/insert4","block/chiseled_bookshelf/insert_enchanted1","block/chiseled_bookshelf/insert_enchanted2","block/chiseled_bookshelf/insert_enchanted3","block/chiseled_bookshelf/insert_enchanted4","block/chiseled_bookshelf/pickup1","block/chiseled_bookshelf/pickup2","block/chiseled_bookshelf/pickup3","block/chiseled_bookshelf/pickup_enchanted1","block/chiseled_bookshelf/pickup_enchanted2","block/chiseled_bookshelf/pickup_enchanted3","block/chiseled_bookshelf/step1","block/chiseled_bookshelf/step2","block/chiseled_bookshelf/step3","block/chiseled_bookshelf/step4","block/chiseled_bookshelf/step5","block/chorus_flower/death1","block/chorus_flower/death2","block/chorus_flower/death3","block/chorus_flower/grow1","block/chorus_flower/grow2","block/chorus_flower/grow3","block/chorus_flower/grow4","block/cobweb/break1","block/cobweb/break2","block/cobweb/break3","block/cobweb/break4","block/cobweb/break5","block/cobweb/break6","block/cobweb/step1","block/cobweb/step2","block/cobweb/step3","block/cobweb/step4","block/cobweb/step5","block/cobweb/step6","block/composter/empty1","block/composter/empty2","block/composter/empty3","block/composter/fill1","block/composter/fill2","block/composter/fill3","block/composter/fill4","block/composter/fill_success1","block/composter/fill_success2","block/composter/fill_success3","block/composter/fill_success4","block/composter/ready1","block/composter/ready2","block/composter/ready3","block/composter/ready4","block/conduit/activate","block/conduit/ambient","block/conduit/attack1","block/conduit/attack2","block/conduit/attack3","block/conduit/deactivate","block/conduit/short1","block/conduit/short2","block/conduit/short3","block/conduit/short4","block/conduit/short5","block/conduit/short6","block/conduit/short7","block/conduit/short8","block/conduit/short9","block/copper/break1","block/copper/break2","block/copper/break3","block/copper/break4","block/copper/step1","block/copper/step2","block/copper/step3","block/copper/step4","block/copper/step5","block/copper/step6","block/copper_bulb/break1","block/copper_bulb/break2","block/copper_bulb/break3","block/copper_bulb/break4","block/copper_bulb/place1","block/copper_bulb/place2","block/copper_bulb/place3","block/copper_bulb/place4","block/copper_bulb/step1","block/copper_bulb/step2","block/copper_bulb/step3","block/copper_bulb/step4","block/copper_bulb/step5","block/copper_bulb/step6","block/copper_bulb/toggle","block/copper_chest/copper_chest_close1","block/copper_chest/copper_chest_close2","block/copper_chest/copper_chest_close3","block/copper_chest/copper_chest_open1","block/copper_chest/copper_chest_open2","block/copper_chest/copper_chest_open3","block/copper_chest/copper_chest_oxidized_close1","block/copper_chest/copper_chest_oxidized_close2","block/copper_chest/copper_chest_oxidized_close3","block/copper_chest/copper_chest_oxidized_open1","block/copper_chest/copper_chest_oxidized_open2","block/copper_chest/copper_chest_oxidized_open3","block/copper_chest/copper_chest_weathered_close1","block/copper_chest/copper_chest_weathered_close2","block/copper_chest/copper_chest_weathered_close3","block/copper_chest/copper_chest_weathered_open1","block/copper_chest/copper_chest_weathered_open2","block/copper_chest/copper_chest_weathered_open3","block/copper_door/toggle1","block/copper_door/toggle2","block/copper_door/toggle3","block/copper_grate/break1","block/copper_grate/break2","block/copper_grate/break3","block/copper_grate/break4","block/copper_grate/step1","block/copper_grate/step2","block/copper_grate/step3","block/copper_grate/step4","block/copper_grate/step5","block/copper_grate/step6","block/copper_statue/become_statue1","block/copper_statue/become_statue2","block/copper_statue/become_statue3","block/copper_statue/become_statue4","block/copper_statue/break1","block/copper_statue/break2","block/copper_statue/break3","block/copper_statue/hit1","block/copper_statue/hit2","block/copper_statue/hit3","block/copper_statue/hit4","block/copper_statue/place1","block/copper_statue/place2","block/copper_statue/place3","block/copper_statue/place4","block/copper_trapdoor/toggle1","block/copper_trapdoor/toggle2","block/copper_trapdoor/toggle3","block/copper_trapdoor/toggle4","block/crafter/craft","block/crafter/fail","block/creaking_heart/break/creaking_heart_break","block/creaking_heart/fall/creaking_heart_fall","block/creaking_heart/hit/creaking_heart_hit1","block/creaking_heart/hit/creaking_heart_hit2","block/creaking_heart/hit/creaking_heart_hit3","block/creaking_heart/hit/creaking_heart_hit4","block/creaking_heart/hit/creaking_heart_hit5","block/creaking_heart/hurt/trail1","block/creaking_heart/hurt/trail2","block/creaking_heart/hurt/trail3","block/creaking_heart/hurt/trail4","block/creaking_heart/hurt/trail5","block/creaking_heart/hurt/trail6","block/creaking_heart/hurt/trail7","block/creaking_heart/idle/creaking_heart_idle1","block/creaking_heart/idle/creaking_heart_idle2","block/creaking_heart/idle/creaking_heart_idle3","block/creaking_heart/idle/creaking_heart_idle4","block/creaking_heart/place/creaking_heart_place1","block/creaking_heart/place/creaking_heart_place2","block/creaking_heart/place/creaking_heart_place3","block/creaking_heart/place/creaking_heart_place4","block/creaking_heart/spawnmob/creaking_heart_spawnmob","block/creaking_heart/step/creaking_heart_step1","block/creaking_heart/step/creaking_heart_step2","block/creaking_heart/step/creaking_heart_step3","block/creaking_heart/step/creaking_heart_step4","block/creaking_heart/step/creaking_heart_step5","block/creaking_heart/step/creaking_heart_step6","block/deadbush/sandblock_version/bushrustle1","block/deadbush/sandblock_version/bushrustle2","block/deadbush/sandblock_version/bushrustle3","block/deadbush/sandblock_version/creakysand1","block/deadbush/sandblock_version/crickets","block/deadbush/sandblock_version/howlingwind1","block/deadbush/sandblock_version/insect1","block/deadbush/sandblock_version/leaves","block/deadbush/sandblock_version/movingsand1","block/deadbush/sandblock_version/movingsand2","block/deadbush/sandblock_version/movingsand3","block/decorated_pot/break1","block/decorated_pot/break2","block/decorated_pot/break3","block/decorated_pot/break4","block/decorated_pot/insert1","block/decorated_pot/insert2","block/decorated_pot/insert3","block/decorated_pot/insert4","block/decorated_pot/insert_fail1","block/decorated_pot/insert_fail2","block/decorated_pot/insert_fail3","block/decorated_pot/insert_fail4","block/decorated_pot/insert_fail5","block/decorated_pot/shatter1","block/decorated_pot/shatter2","block/decorated_pot/shatter3","block/decorated_pot/shatter4","block/decorated_pot/shatter5","block/decorated_pot/step1","block/decorated_pot/step2","block/decorated_pot/step3","block/decorated_pot/step4","block/decorated_pot/step5","block/deepslate/break1","block/deepslate/break2","block/deepslate/break3","block/deepslate/break4","block/deepslate/place1","block/deepslate/place2","block/deepslate/place3","block/deepslate/place4","block/deepslate/place5","block/deepslate/place6","block/deepslate/step1","block/deepslate/step2","block/deepslate/step3","block/deepslate/step4","block/deepslate/step5","block/deepslate/step6","block/deepslate_bricks/place1","block/deepslate_bricks/place2","block/deepslate_bricks/place3","block/deepslate_bricks/place4","block/deepslate_bricks/place5","block/deepslate_bricks/place6","block/deepslate_bricks/step1","block/deepslate_bricks/step2","block/deepslate_bricks/step3","block/deepslate_bricks/step4","block/deepslate_bricks/step5","block/dried_ghast/ambient1","block/dried_ghast/ambient2","block/dried_ghast/ambient3","block/dried_ghast/ambient4","block/dried_ghast/ambient_water1","block/dried_ghast/ambient_water2","block/dried_ghast/break","block/dried_ghast/place1","block/dried_ghast/place2","block/dried_ghast/place3","block/dried_ghast/place4","block/dried_ghast/place5","block/dried_ghast/place6","block/dried_ghast/placeinwater","block/dried_ghast/step1","block/dried_ghast/step2","block/dried_ghast/step3","block/dried_ghast/step4","block/dried_ghast/step5","block/dried_ghast/step6","block/dried_ghast/transition","block/dripstone/break1","block/dripstone/break2","block/dripstone/break3","block/dripstone/break4","block/dripstone/break5","block/dripstone/step1","block/dripstone/step2","block/dripstone/step3","block/dripstone/step4","block/dripstone/step5","block/dripstone/step6","block/dry_grass/wind1","block/dry_grass/wind10","block/dry_grass/wind11","block/dry_grass/wind12","block/dry_grass/wind2","block/dry_grass/wind3","block/dry_grass/wind4","block/dry_grass/wind5","block/dry_grass/wind6","block/dry_grass/wind7","block/dry_grass/wind8","block/dry_grass/wind9","block/enchantment_table/enchant1","block/enchantment_table/enchant2","block/enchantment_table/enchant3","block/end_portal/endportal","block/end_portal/eyeplace1","block/end_portal/eyeplace2","block/end_portal/eyeplace3","block/enderchest/close","block/enderchest/open","block/eyeblossom/eyeblossom_close1","block/eyeblossom/eyeblossom_close2","block/eyeblossom/eyeblossom_close3","block/eyeblossom/eyeblossom_close_long","block/eyeblossom/eyeblossom_idle1","block/eyeblossom/eyeblossom_idle2","block/eyeblossom/eyeblossom_idle3","block/eyeblossom/eyeblossom_idle4","block/eyeblossom/eyeblossom_idle5","block/eyeblossom/eyeblossom_idle6","block/eyeblossom/eyeblossom_open1","block/eyeblossom/eyeblossom_open2","block/eyeblossom/eyeblossom_open3","block/eyeblossom/eyeblossom_open4","block/eyeblossom/eyeblossom_open_long","block/fence_gate/close1","block/fence_gate/close2","block/fence_gate/open1","block/fence_gate/open2","block/firefly_bush/firefly_bush1","block/firefly_bush/firefly_bush10","block/firefly_bush/firefly_bush11","block/firefly_bush/firefly_bush2","block/firefly_bush/firefly_bush3","block/firefly_bush/firefly_bush4","block/firefly_bush/firefly_bush5","block/firefly_bush/firefly_bush6","block/firefly_bush/firefly_bush7","block/firefly_bush/firefly_bush8","block/firefly_bush/firefly_bush9","block/fletching_table/fletching_table1","block/fletching_table/fletching_table2","block/froglight/break1","block/froglight/break2","block/froglight/break3","block/froglight/break4","block/froglight/step1","block/froglight/step2","block/froglight/step3","block/froglight/step4","block/froglight/step5","block/froglight/step6","block/frogspawn/break1","block/frogspawn/break2","block/frogspawn/break3","block/frogspawn/break4","block/frogspawn/hatch1","block/frogspawn/hatch2","block/frogspawn/hatch3","block/frogspawn/hatch4","block/frogspawn/hatch5","block/frogspawn/step1","block/frogspawn/step2","block/frogspawn/step3","block/frogspawn/step4","block/frogspawn/step5","block/frogspawn/step6","block/fungus/break1","block/fungus/break2","block/fungus/break3","block/fungus/break4","block/fungus/break5","block/fungus/break6","block/furnace/fire_crackle1","block/furnace/fire_crackle2","block/furnace/fire_crackle3","block/furnace/fire_crackle4","block/furnace/fire_crackle5","block/grindstone/grindstone1","block/grindstone/grindstone2","block/grindstone/grindstone3","block/hanging_roots/break1","block/hanging_roots/break2","block/hanging_roots/break3","block/hanging_roots/break4","block/hanging_roots/step1","block/hanging_roots/step2","block/hanging_roots/step3","block/hanging_roots/step4","block/hanging_roots/step5","block/hanging_roots/step6","block/hanging_sign/break1","block/hanging_sign/break2","block/hanging_sign/break3","block/hanging_sign/break4","block/hanging_sign/step1","block/hanging_sign/step2","block/hanging_sign/step3","block/hanging_sign/step4","block/heavy_core/break1","block/heavy_core/break2","block/heavy_core/break3","block/heavy_core/break4","block/heavy_core/step1","block/heavy_core/step2","block/heavy_core/step3","block/heavy_core/step4","block/honeyblock/break1","block/honeyblock/break2","block/honeyblock/break3","block/honeyblock/break4","block/honeyblock/break5","block/honeyblock/slide1","block/honeyblock/slide2","block/honeyblock/slide3","block/honeyblock/slide4","block/honeyblock/step1","block/honeyblock/step2","block/honeyblock/step3","block/honeyblock/step4","block/honeyblock/step5","block/iron/break1","block/iron/break2","block/iron/break3","block/iron/break4","block/iron/break5","block/iron/break6","block/iron/break7","block/iron/break8","block/iron/step1","block/iron/step2","block/iron/step3","block/iron/step4","block/iron_door/close1","block/iron_door/close2","block/iron_door/close3","block/iron_door/close4","block/iron_door/open1","block/iron_door/open2","block/iron_door/open3","block/iron_door/open4","block/iron_trapdoor/close1","block/iron_trapdoor/close2","block/iron_trapdoor/close3","block/iron_trapdoor/close4","block/iron_trapdoor/open1","block/iron_trapdoor/open2","block/iron_trapdoor/open3","block/iron_trapdoor/open4","block/lantern/break1","block/lantern/break2","block/lantern/break3","block/lantern/break4","block/lantern/break5","block/lantern/break6","block/lantern/place1","block/lantern/place2","block/lantern/place3","block/lantern/place4","block/lantern/place5","block/lantern/place6","block/leaf_litter/break1","block/leaf_litter/break2","block/leaf_litter/break3","block/leaf_litter/break4","block/leaf_litter/break5","block/leaf_litter/place1","block/leaf_litter/place2","block/leaf_litter/place3","block/leaf_litter/place4","block/leaf_litter/place5","block/leaf_litter/step1","block/leaf_litter/step2","block/leaf_litter/step3","block/leaf_litter/step4","block/leaf_litter/step5","block/leaf_litter/step6","block/lodestone/lock1","block/lodestone/lock2","block/lodestone/place1","block/lodestone/place2","block/lodestone/place3","block/lodestone/place4","block/mangrove_roots/break1","block/mangrove_roots/break2","block/mangrove_roots/break3","block/mangrove_roots/break4","block/mangrove_roots/break5","block/mangrove_roots/break6","block/mangrove_roots/step1","block/mangrove_roots/step2","block/mangrove_roots/step3","block/mangrove_roots/step4","block/mangrove_roots/step5","block/mangrove_roots/step6","block/moss/break1","block/moss/break2","block/moss/break3","block/moss/break4","block/moss/break5","block/moss/step1","block/moss/step2","block/moss/step3","block/moss/step4","block/moss/step5","block/moss/step6","block/mud/break1","block/mud/break2","block/mud/break3","block/mud/break4","block/mud/break5","block/mud/break6","block/mud/step1","block/mud/step2","block/mud/step3","block/mud/step4","block/mud/step5","block/mud/step6","block/mud_bricks/break1","block/mud_bricks/break2","block/mud_bricks/break3","block/mud_bricks/break4","block/mud_bricks/break5","block/mud_bricks/break6","block/mud_bricks/step1","block/mud_bricks/step2","block/mud_bricks/step3","block/mud_bricks/step4","block/mud_bricks/step5","block/mud_bricks/step6","block/muddy_mangrove_roots/break1","block/muddy_mangrove_roots/break2","block/muddy_mangrove_roots/break3","block/muddy_mangrove_roots/break4","block/muddy_mangrove_roots/break5","block/muddy_mangrove_roots/break6","block/muddy_mangrove_roots/step1","block/muddy_mangrove_roots/step2","block/muddy_mangrove_roots/step3","block/muddy_mangrove_roots/step4","block/muddy_mangrove_roots/step5","block/muddy_mangrove_roots/step6","block/nether_bricks/break1","block/nether_bricks/break2","block/nether_bricks/break3","block/nether_bricks/break4","block/nether_bricks/break5","block/nether_bricks/break6","block/nether_bricks/step1","block/nether_bricks/step2","block/nether_bricks/step3","block/nether_bricks/step4","block/nether_bricks/step5","block/nether_bricks/step6","block/nether_ore/break1","block/nether_ore/break2","block/nether_ore/break3","block/nether_ore/break4","block/nether_ore/step1","block/nether_ore/step2","block/nether_ore/step3","block/nether_ore/step4","block/nether_ore/step5","block/nether_sprouts/break1","block/nether_sprouts/break2","block/nether_sprouts/break3","block/nether_sprouts/break4","block/nether_sprouts/step1","block/nether_sprouts/step2","block/nether_sprouts/step3","block/nether_sprouts/step4","block/nether_sprouts/step5","block/nether_wood/break1","block/nether_wood/break2","block/nether_wood/break3","block/nether_wood/break4","block/nether_wood/step1","block/nether_wood/step2","block/nether_wood/step3","block/nether_wood/step4","block/nether_wood/step5","block/nether_wood_button/nether_wood_button","block/nether_wood_door/toggle1","block/nether_wood_door/toggle2","block/nether_wood_door/toggle3","block/nether_wood_door/toggle4","block/nether_wood_fence/toggle1","block/nether_wood_fence/toggle2","block/nether_wood_fence/toggle3","block/nether_wood_fence/toggle4","block/nether_wood_hanging_sign/break1","block/nether_wood_hanging_sign/break2","block/nether_wood_hanging_sign/break3","block/nether_wood_hanging_sign/break4","block/nether_wood_hanging_sign/step1","block/nether_wood_hanging_sign/step2","block/nether_wood_hanging_sign/step3","block/nether_wood_hanging_sign/step4","block/nether_wood_trapdoor/toggle1","block/nether_wood_trapdoor/toggle2","block/nether_wood_trapdoor/toggle3","block/nether_wood_trapdoor/toggle4","block/netherite/break1","block/netherite/break2","block/netherite/break3","block/netherite/break4","block/netherite/step1","block/netherite/step2","block/netherite/step3","block/netherite/step4","block/netherite/step5","block/netherite/step6","block/netherrack/break1","block/netherrack/break2","block/netherrack/break3","block/netherrack/break4","block/netherrack/break5","block/netherrack/break6","block/netherrack/step1","block/netherrack/step2","block/netherrack/step3","block/netherrack/step4","block/netherrack/step5","block/netherrack/step6","block/netherwart/break1","block/netherwart/break2","block/netherwart/break3","block/netherwart/break4","block/netherwart/break5","block/netherwart/break6","block/netherwart/step1","block/netherwart/step2","block/netherwart/step3","block/netherwart/step4","block/netherwart/step5","block/nylium/break1","block/nylium/break2","block/nylium/break3","block/nylium/break4","block/nylium/break5","block/nylium/break6","block/nylium/step1","block/nylium/step2","block/nylium/step3","block/nylium/step4","block/nylium/step5","block/nylium/step6","block/packed_mud/break1","block/packed_mud/break2","block/packed_mud/break3","block/packed_mud/break4","block/packed_mud/break5","block/packed_mud/break6","block/packed_mud/step1","block/packed_mud/step2","block/packed_mud/step3","block/packed_mud/step4","block/packed_mud/step5","block/packed_mud/step6","block/pale_hanging_moss/pale_hanging_moss1","block/pale_hanging_moss/pale_hanging_moss10","block/pale_hanging_moss/pale_hanging_moss11","block/pale_hanging_moss/pale_hanging_moss12","block/pale_hanging_moss/pale_hanging_moss13","block/pale_hanging_moss/pale_hanging_moss14","block/pale_hanging_moss/pale_hanging_moss15","block/pale_hanging_moss/pale_hanging_moss2","block/pale_hanging_moss/pale_hanging_moss3","block/pale_hanging_moss/pale_hanging_moss4","block/pale_hanging_moss/pale_hanging_moss5","block/pale_hanging_moss/pale_hanging_moss6","block/pale_hanging_moss/pale_hanging_moss7","block/pale_hanging_moss/pale_hanging_moss8","block/pale_hanging_moss/pale_hanging_moss9","block/pointed_dripstone/drip_lava1","block/pointed_dripstone/drip_lava2","block/pointed_dripstone/drip_lava3","block/pointed_dripstone/drip_lava4","block/pointed_dripstone/drip_lava5","block/pointed_dripstone/drip_lava6","block/pointed_dripstone/drip_lava_cauldron1","block/pointed_dripstone/drip_lava_cauldron2","block/pointed_dripstone/drip_lava_cauldron3","block/pointed_dripstone/drip_lava_cauldron4","block/pointed_dripstone/drip_water1","block/pointed_dripstone/drip_water10","block/pointed_dripstone/drip_water11","block/pointed_dripstone/drip_water12","block/pointed_dripstone/drip_water13","block/pointed_dripstone/drip_water14","block/pointed_dripstone/drip_water15","block/pointed_dripstone/drip_water2","block/pointed_dripstone/drip_water3","block/pointed_dripstone/drip_water4","block/pointed_dripstone/drip_water5","block/pointed_dripstone/drip_water6","block/pointed_dripstone/drip_water7","block/pointed_dripstone/drip_water8","block/pointed_dripstone/drip_water9","block/pointed_dripstone/drip_water_cauldron1","block/pointed_dripstone/drip_water_cauldron2","block/pointed_dripstone/drip_water_cauldron3","block/pointed_dripstone/drip_water_cauldron4","block/pointed_dripstone/drip_water_cauldron5","block/pointed_dripstone/drip_water_cauldron6","block/pointed_dripstone/drip_water_cauldron7","block/pointed_dripstone/drip_water_cauldron8","block/pointed_dripstone/land1","block/pointed_dripstone/land2","block/pointed_dripstone/land3","block/pointed_dripstone/land4","block/pointed_dripstone/land5","block/powder_snow/break1","block/powder_snow/break2","block/powder_snow/break3","block/powder_snow/break4","block/powder_snow/break5","block/powder_snow/break6","block/powder_snow/break7","block/powder_snow/step1","block/powder_snow/step10","block/powder_snow/step2","block/powder_snow/step3","block/powder_snow/step4","block/powder_snow/step5","block/powder_snow/step6","block/powder_snow/step7","block/powder_snow/step8","block/powder_snow/step9","block/pumpkin/carve1","block/pumpkin/carve2","block/resin/resin_break1","block/resin/resin_break2","block/resin/resin_break3","block/resin/resin_break4","block/resin/resin_break5","block/resin/resin_fall","block/resin/resin_place1","block/resin/resin_place2","block/resin/resin_place3","block/resin/resin_place4","block/resin/resin_step1","block/resin/resin_step2","block/resin/resin_step3","block/resin/resin_step4","block/resin/resin_step5","block/resin_bricks/resin_brick_break","block/resin_bricks/resin_brick_fall","block/resin_bricks/resin_brick_hit1","block/resin_bricks/resin_brick_hit2","block/resin_bricks/resin_brick_hit3","block/resin_bricks/resin_brick_hit4","block/resin_bricks/resin_brick_hit5","block/resin_bricks/resin_brick_place1","block/resin_bricks/resin_brick_place2","block/resin_bricks/resin_brick_place3","block/resin_bricks/resin_brick_place4","block/resin_bricks/resin_brick_place5","block/resin_bricks/resin_brick_step1","block/resin_bricks/resin_brick_step2","block/resin_bricks/resin_brick_step3","block/resin_bricks/resin_brick_step4","block/resin_bricks/resin_brick_step5","block/respawn_anchor/ambient1","block/respawn_anchor/ambient2","block/respawn_anchor/ambient3","block/respawn_anchor/charge1","block/respawn_anchor/charge2","block/respawn_anchor/charge3","block/respawn_anchor/deplete1","block/respawn_anchor/deplete2","block/respawn_anchor/set_spawn1","block/respawn_anchor/set_spawn2","block/respawn_anchor/set_spawn3","block/rooted_dirt/break1","block/rooted_dirt/break2","block/rooted_dirt/break3","block/rooted_dirt/break4","block/rooted_dirt/step1","block/rooted_dirt/step2","block/rooted_dirt/step3","block/rooted_dirt/step4","block/rooted_dirt/step5","block/rooted_dirt/step6","block/roots/break1","block/roots/break2","block/roots/break3","block/roots/break4","block/roots/break5","block/roots/break6","block/roots/step1","block/roots/step2","block/roots/step3","block/roots/step4","block/roots/step5","block/sand/sand1","block/sand/sand10","block/sand/sand11","block/sand/sand12","block/sand/sand13","block/sand/sand14","block/sand/sand15","block/sand/sand16","block/sand/sand17","block/sand/sand18","block/sand/sand19","block/sand/sand2","block/sand/sand20","block/sand/sand21","block/sand/sand3","block/sand/sand4","block/sand/sand5","block/sand/sand6","block/sand/sand7","block/sand/sand8","block/sand/sand9","block/scaffold/place1","block/scaffold/place2","block/scaffold/place3","block/scaffold/place4","block/sculk/break1","block/sculk/break10","block/sculk/break11","block/sculk/break12","block/sculk/break13","block/sculk/break14","block/sculk/break2","block/sculk/break3","block/sculk/break4","block/sculk/break5","block/sculk/break6","block/sculk/break7","block/sculk/break8","block/sculk/break9","block/sculk/charge1","block/sculk/charge2","block/sculk/charge3","block/sculk/charge4","block/sculk/charge5","block/sculk/place1","block/sculk/place2","block/sculk/place3","block/sculk/place4","block/sculk/place5","block/sculk/spread1","block/sculk/spread2","block/sculk/spread3","block/sculk/spread4","block/sculk/spread5","block/sculk/step1","block/sculk/step2","block/sculk/step3","block/sculk/step4","block/sculk/step5","block/sculk/step6","block/sculk_catalyst/break1","block/sculk_catalyst/break10","block/sculk_catalyst/break2","block/sculk_catalyst/break3","block/sculk_catalyst/break4","block/sculk_catalyst/break5","block/sculk_catalyst/break6","block/sculk_catalyst/break7","block/sculk_catalyst/break8","block/sculk_catalyst/break9","block/sculk_catalyst/place1","block/sculk_catalyst/place2","block/sculk_catalyst/place3","block/sculk_catalyst/place4","block/sculk_catalyst/place5","block/sculk_catalyst/step1","block/sculk_catalyst/step2","block/sculk_catalyst/step3","block/sculk_catalyst/step4","block/sculk_catalyst/step5","block/sculk_catalyst/step6","block/sculk_sensor/break1","block/sculk_sensor/break2","block/sculk_sensor/break3","block/sculk_sensor/break4","block/sculk_sensor/break5","block/sculk_sensor/place1","block/sculk_sensor/place2","block/sculk_sensor/place3","block/sculk_sensor/place4","block/sculk_sensor/place5","block/sculk_sensor/sculk_clicking1","block/sculk_sensor/sculk_clicking2","block/sculk_sensor/sculk_clicking3","block/sculk_sensor/sculk_clicking4","block/sculk_sensor/sculk_clicking5","block/sculk_sensor/sculk_clicking6","block/sculk_sensor/sculk_clicking_stop1","block/sculk_sensor/sculk_clicking_stop2","block/sculk_sensor/sculk_clicking_stop3","block/sculk_sensor/sculk_clicking_stop4","block/sculk_sensor/sculk_clicking_stop5","block/sculk_shrieker/break1","block/sculk_shrieker/break2","block/sculk_shrieker/break3","block/sculk_shrieker/break4","block/sculk_shrieker/break5","block/sculk_shrieker/break6","block/sculk_shrieker/place1","block/sculk_shrieker/place2","block/sculk_shrieker/place3","block/sculk_shrieker/place4","block/sculk_shrieker/place5","block/sculk_shrieker/shriek1","block/sculk_shrieker/shriek2","block/sculk_shrieker/shriek3","block/sculk_shrieker/shriek4","block/sculk_shrieker/shriek5","block/sculk_vein/break1","block/sculk_vein/break2","block/sculk_vein/break3","block/sculk_vein/break4","block/sculk_vein/break5","block/shelf/activate1","block/shelf/activate2","block/shelf/activate3","block/shelf/deactivate1","block/shelf/deactivate2","block/shelf/deactivate3","block/shelf/multi_swap1","block/shelf/multi_swap2","block/shelf/multi_swap3","block/shelf/place_item1","block/shelf/place_item2","block/shelf/place_item3","block/shelf/place_item4","block/shelf/single_swap1","block/shelf/single_swap2","block/shelf/single_swap3","block/shelf/single_swap4","block/shroomlight/break1","block/shroomlight/break2","block/shroomlight/break3","block/shroomlight/break4","block/shroomlight/break5","block/shroomlight/step1","block/shroomlight/step2","block/shroomlight/step3","block/shroomlight/step4","block/shroomlight/step5","block/shroomlight/step6","block/shulker_box/close","block/shulker_box/open","block/sign/waxed_interact_fail1","block/sign/waxed_interact_fail2","block/sign/waxed_interact_fail3","block/smithing_table/smithing_table1","block/smithing_table/smithing_table2","block/smithing_table/smithing_table3","block/smoker/smoker1","block/smoker/smoker2","block/smoker/smoker3","block/smoker/smoker4","block/smoker/smoker5","block/soul_sand/break1","block/soul_sand/break2","block/soul_sand/break3","block/soul_sand/break4","block/soul_sand/break5","block/soul_sand/break6","block/soul_sand/break7","block/soul_sand/break8","block/soul_sand/break9","block/soul_sand/step1","block/soul_sand/step2","block/soul_sand/step3","block/soul_sand/step4","block/soul_sand/step5","block/soul_soil/break1","block/soul_soil/break2","block/soul_soil/break3","block/soul_soil/break4","block/soul_soil/break5","block/soul_soil/break6","block/soul_soil/step1","block/soul_soil/step2","block/soul_soil/step3","block/soul_soil/step4","block/soul_soil/step5","block/spawner/break1","block/spawner/break2","block/spawner/break3","block/spawner/break4","block/spawner/step1","block/spawner/step2","block/spawner/step3","block/spawner/step4","block/spawner/step5","block/sponge/absorb1","block/sponge/absorb2","block/sponge/absorb3","block/sponge/break1","block/sponge/break2","block/sponge/break3","block/sponge/break4","block/sponge/step1","block/sponge/step2","block/sponge/step3","block/sponge/step4","block/sponge/step5","block/sponge/step6","block/sponge/wet_sponge/break1","block/sponge/wet_sponge/break2","block/sponge/wet_sponge/break3","block/sponge/wet_sponge/break4","block/sponge/wet_sponge/step1","block/sponge/wet_sponge/step2","block/sponge/wet_sponge/step3","block/sponge/wet_sponge/step4","block/spore_blossom/break1","block/spore_blossom/break2","block/spore_blossom/break3","block/spore_blossom/break4","block/spore_blossom/break5","block/spore_blossom/step1","block/spore_blossom/step2","block/spore_blossom/step3","block/spore_blossom/step4","block/spore_blossom/step5","block/spore_blossom/step6","block/stem/break1","block/stem/break2","block/stem/break3","block/stem/break4","block/stem/break5","block/stem/break6","block/stem/step1","block/stem/step2","block/stem/step3","block/stem/step4","block/stem/step5","block/stem/step6","block/suspicious_gravel/break1","block/suspicious_gravel/break2","block/suspicious_gravel/break3","block/suspicious_gravel/break4","block/suspicious_gravel/break5","block/suspicious_gravel/break6","block/suspicious_gravel/place1","block/suspicious_gravel/place2","block/suspicious_gravel/place3","block/suspicious_gravel/place4","block/suspicious_gravel/step1","block/suspicious_gravel/step2","block/suspicious_gravel/step3","block/suspicious_gravel/step4","block/suspicious_sand/break1","block/suspicious_sand/break2","block/suspicious_sand/break3","block/suspicious_sand/break4","block/suspicious_sand/break5","block/suspicious_sand/break6","block/suspicious_sand/place1","block/suspicious_sand/place2","block/suspicious_sand/place3","block/suspicious_sand/place4","block/suspicious_sand/place5","block/suspicious_sand/step1","block/suspicious_sand/step2","block/suspicious_sand/step3","block/suspicious_sand/step4","block/suspicious_sand/step5","block/sweet_berry_bush/break1","block/sweet_berry_bush/break2","block/sweet_berry_bush/break3","block/sweet_berry_bush/break4","block/sweet_berry_bush/place1","block/sweet_berry_bush/place2","block/sweet_berry_bush/place3","block/sweet_berry_bush/place4","block/sweet_berry_bush/place5","block/sweet_berry_bush/place6","block/trial_spawner/about_to_spawn_item","block/trial_spawner/ambient1","block/trial_spawner/ambient2","block/trial_spawner/ambient3","block/trial_spawner/ambient4","block/trial_spawner/ambient5","block/trial_spawner/ambient_ominous1","block/trial_spawner/ambient_ominous2","block/trial_spawner/ambient_ominous3","block/trial_spawner/ambient_ominous4","block/trial_spawner/ambient_ominous5","block/trial_spawner/break1","block/trial_spawner/break2","block/trial_spawner/break3","block/trial_spawner/close_shutter","block/trial_spawner/detect_player1","block/trial_spawner/detect_player2","block/trial_spawner/detect_player3","block/trial_spawner/eject_item1","block/trial_spawner/ominous_activate","block/trial_spawner/open_shutter","block/trial_spawner/place1","block/trial_spawner/place2","block/trial_spawner/place3","block/trial_spawner/spawn1","block/trial_spawner/spawn2","block/trial_spawner/spawn3","block/trial_spawner/spawn4","block/trial_spawner/spawn_item1","block/trial_spawner/spawn_item2","block/trial_spawner/spawn_item3","block/trial_spawner/spawn_item_begin1","block/trial_spawner/spawn_item_begin2","block/trial_spawner/spawn_item_begin3","block/trial_spawner/step1","block/trial_spawner/step2","block/trial_spawner/step3","block/trial_spawner/step4","block/trial_spawner/step5","block/tuff/break1","block/tuff/break2","block/tuff/break3","block/tuff/break4","block/tuff/break5","block/tuff/step1","block/tuff/step2","block/tuff/step3","block/tuff/step4","block/tuff/step5","block/tuff/step6","block/tuff_bricks/place1","block/tuff_bricks/place2","block/tuff_bricks/place3","block/tuff_bricks/place4","block/tuff_bricks/place5","block/tuff_bricks/step1","block/tuff_bricks/step2","block/tuff_bricks/step3","block/tuff_bricks/step4","block/tuff_bricks/step5","block/tuff_bricks/step6","block/vault/activate","block/vault/ambient1","block/vault/ambient2","block/vault/ambient3","block/vault/break1","block/vault/break2","block/vault/break3","block/vault/break4","block/vault/deactivate","block/vault/eject1","block/vault/eject2","block/vault/eject3","block/vault/insert","block/vault/insert_fail","block/vault/open_shutter","block/vault/place1","block/vault/place2","block/vault/place3","block/vault/place4","block/vault/reject_rewarded_player","block/vault/step1","block/vault/step2","block/vault/step3","block/vault/step4","block/vault/step5","block/vault/step6","block/vault/step7","block/vault/step8","block/vine/break1","block/vine/break2","block/vine/break3","block/vine/break4","block/vine/climb1","block/vine/climb2","block/vine/climb3","block/vine/climb4","block/vine/climb5","block/waterlily/place1","block/waterlily/place2","block/waterlily/place3","block/waterlily/place4","block/wooden_door/close1","block/wooden_door/close2","block/wooden_door/close3","block/wooden_door/open1","block/wooden_door/open2","block/wooden_trapdoor/close1","block/wooden_trapdoor/close2","block/wooden_trapdoor/close3","block/wooden_trapdoor/open1","block/wooden_trapdoor/open2","block/wooden_trapdoor/open3","block/wooden_trapdoor/open4","block/wooden_trapdoor/open5","damage/fallbig","damage/fallsmall","damage/hit1","damage/hit2","damage/hit3","dig/cloth1","dig/cloth2","dig/cloth3","dig/cloth4","dig/coral1","dig/coral2","dig/coral3","dig/coral4","dig/grass1","dig/grass2","dig/grass3","dig/grass4","dig/gravel1","dig/gravel2","dig/gravel3","dig/gravel4","dig/sand1","dig/sand2","dig/sand3","dig/sand4","dig/snow1","dig/snow2","dig/snow3","dig/snow4","dig/stone1","dig/stone2","dig/stone3","dig/stone4","dig/wet_grass1","dig/wet_grass2","dig/wet_grass3","dig/wet_grass4","dig/wood1","dig/wood2","dig/wood3","dig/wood4","enchant/soulspeed/soulspeed1","enchant/soulspeed/soulspeed10","enchant/soulspeed/soulspeed11","enchant/soulspeed/soulspeed12","enchant/soulspeed/soulspeed13","enchant/soulspeed/soulspeed2","enchant/soulspeed/soulspeed3","enchant/soulspeed/soulspeed4","enchant/soulspeed/soulspeed5","enchant/soulspeed/soulspeed6","enchant/soulspeed/soulspeed7","enchant/soulspeed/soulspeed8","enchant/soulspeed/soulspeed9","enchant/thorns/hit1","enchant/thorns/hit2","enchant/thorns/hit3","enchant/thorns/hit4","entity/armorstand/break1","entity/armorstand/break2","entity/armorstand/break3","entity/armorstand/break4","entity/armorstand/hit1","entity/armorstand/hit2","entity/armorstand/hit3","entity/armorstand/hit4","entity/boat/paddle_land1","entity/boat/paddle_land2","entity/boat/paddle_land3","entity/boat/paddle_land4","entity/boat/paddle_land5","entity/boat/paddle_land6","entity/boat/paddle_water1","entity/boat/paddle_water2","entity/boat/paddle_water3","entity/boat/paddle_water4","entity/boat/paddle_water5","entity/boat/paddle_water6","entity/boat/paddle_water7","entity/boat/paddle_water8","entity/bobber/castfast","entity/bobber/retrieve1","entity/bobber/retrieve2","entity/bobber/retrieve3","entity/cow/milk1","entity/cow/milk2","entity/cow/milk3","entity/endereye/dead1","entity/endereye/dead2","entity/endereye/endereye_launch1","entity/endereye/endereye_launch2","entity/fish/flop1","entity/fish/flop2","entity/fish/flop3","entity/fish/flop4","entity/fish/hurt1","entity/fish/hurt2","entity/fish/hurt3","entity/fish/hurt4","entity/fish/swim1","entity/fish/swim2","entity/fish/swim3","entity/fish/swim4","entity/fish/swim5","entity/fish/swim6","entity/fish/swim7","entity/itemframe/add_item1","entity/itemframe/add_item2","entity/itemframe/add_item3","entity/itemframe/add_item4","entity/itemframe/break1","entity/itemframe/break2","entity/itemframe/break3","entity/itemframe/place1","entity/itemframe/place2","entity/itemframe/place3","entity/itemframe/place4","entity/itemframe/remove_item1","entity/itemframe/remove_item2","entity/itemframe/remove_item3","entity/itemframe/remove_item4","entity/itemframe/rotate_item1","entity/itemframe/rotate_item2","entity/itemframe/rotate_item3","entity/itemframe/rotate_item4","entity/leashknot/break","entity/leashknot/leash1","entity/leashknot/leash2","entity/leashknot/leash3","entity/leashknot/unleash1","entity/leashknot/unleash2","entity/leashknot/unleash3","entity/painting/break1","entity/painting/break2","entity/painting/break3","entity/painting/place1","entity/painting/place2","entity/painting/place3","entity/painting/place4","entity/player/attack/crit1","entity/player/attack/crit2","entity/player/attack/crit3","entity/player/attack/knockback1","entity/player/attack/knockback2","entity/player/attack/knockback3","entity/player/attack/knockback4","entity/player/attack/strong1","entity/player/attack/strong2","entity/player/attack/strong3","entity/player/attack/strong4","entity/player/attack/strong5","entity/player/attack/strong6","entity/player/attack/sweep1","entity/player/attack/sweep2","entity/player/attack/sweep3","entity/player/attack/sweep4","entity/player/attack/sweep5","entity/player/attack/sweep6","entity/player/attack/sweep7","entity/player/attack/weak1","entity/player/attack/weak2","entity/player/attack/weak3","entity/player/attack/weak4","entity/player/hurt/berrybush_hurt1","entity/player/hurt/berrybush_hurt2","entity/player/hurt/drown1","entity/player/hurt/drown2","entity/player/hurt/drown3","entity/player/hurt/drown4","entity/player/hurt/fire_hurt1","entity/player/hurt/fire_hurt2","entity/player/hurt/fire_hurt3","entity/player/hurt/freeze_hurt1","entity/player/hurt/freeze_hurt2","entity/player/hurt/freeze_hurt3","entity/player/hurt/freeze_hurt4","entity/player/hurt/freeze_hurt5","entity/shulker/ambient1","entity/shulker/ambient2","entity/shulker/ambient3","entity/shulker/ambient4","entity/shulker/ambient5","entity/shulker/ambient6","entity/shulker/ambient7","entity/shulker/close1","entity/shulker/close2","entity/shulker/close3","entity/shulker/close4","entity/shulker/close5","entity/shulker/death1","entity/shulker/death2","entity/shulker/death3","entity/shulker/death4","entity/shulker/hurt1","entity/shulker/hurt2","entity/shulker/hurt3","entity/shulker/hurt4","entity/shulker/hurt_closed1","entity/shulker/hurt_closed2","entity/shulker/hurt_closed3","entity/shulker/hurt_closed4","entity/shulker/hurt_closed5","entity/shulker/open1","entity/shulker/open2","entity/shulker/open3","entity/shulker/open4","entity/shulker/open5","entity/shulker/shoot1","entity/shulker/shoot2","entity/shulker/shoot3","entity/shulker/shoot4","entity/shulker_bullet/hit1","entity/shulker_bullet/hit2","entity/shulker_bullet/hit3","entity/shulker_bullet/hit4","entity/snowman/death1","entity/snowman/death2","entity/snowman/death3","entity/snowman/hurt1","entity/snowman/hurt2","entity/snowman/hurt3","entity/wind_charge/wind_burst1","entity/wind_charge/wind_burst2","entity/wind_charge/wind_burst3","entity/witch/ambient1","entity/witch/ambient2","entity/witch/ambient3","entity/witch/ambient4","entity/witch/ambient5","entity/witch/celebrate","entity/witch/death1","entity/witch/death2","entity/witch/death3","entity/witch/drink1","entity/witch/drink2","entity/witch/drink3","entity/witch/drink4","entity/witch/hurt1","entity/witch/hurt2","entity/witch/hurt3","entity/witch/throw1","entity/witch/throw2","entity/witch/throw3","event/mob_effects/bad_omen","event/mob_effects/raid_omen","event/mob_effects/trial_omen","event/raid/raidhorn_01","event/raid/raidhorn_02","event/raid/raidhorn_03","event/raid/raidhorn_04","fire/fire","fire/ignite","fireworks/blast1","fireworks/blast_far1","fireworks/largeblast1","fireworks/largeblast_far1","fireworks/launch1","fireworks/twinkle1","fireworks/twinkle_far1","item/armor/break_wolf","item/armor/crack_wolf1","item/armor/crack_wolf2","item/armor/crack_wolf3","item/armor/crack_wolf4","item/armor/damage_wolf1","item/armor/damage_wolf2","item/armor/damage_wolf3","item/armor/damage_wolf4","item/armor/equip_chain1","item/armor/equip_chain2","item/armor/equip_chain3","item/armor/equip_chain4","item/armor/equip_chain5","item/armor/equip_chain6","item/armor/equip_copper1","item/armor/equip_copper2","item/armor/equip_copper3","item/armor/equip_copper4","item/armor/equip_copper5","item/armor/equip_copper6","item/armor/equip_diamond1","item/armor/equip_diamond2","item/armor/equip_diamond3","item/armor/equip_diamond4","item/armor/equip_diamond5","item/armor/equip_diamond6","item/armor/equip_generic1","item/armor/equip_generic2","item/armor/equip_generic3","item/armor/equip_generic4","item/armor/equip_generic5","item/armor/equip_generic6","item/armor/equip_gold1","item/armor/equip_gold2","item/armor/equip_gold3","item/armor/equip_gold4","item/armor/equip_gold5","item/armor/equip_gold6","item/armor/equip_iron1","item/armor/equip_iron2","item/armor/equip_iron3","item/armor/equip_iron4","item/armor/equip_iron5","item/armor/equip_iron6","item/armor/equip_leather1","item/armor/equip_leather2","item/armor/equip_leather3","item/armor/equip_leather4","item/armor/equip_leather5","item/armor/equip_leather6","item/armor/equip_netherite1","item/armor/equip_netherite2","item/armor/equip_netherite3","item/armor/equip_netherite4","item/armor/equip_wolf1","item/armor/equip_wolf2","item/armor/repair_wolf1","item/armor/repair_wolf2","item/armor/repair_wolf3","item/armor/repair_wolf4","item/armor/unequip_wolf1","item/armor/unequip_wolf2","item/axe/scrape1","item/axe/scrape2","item/axe/scrape3","item/axe/strip1","item/axe/strip2","item/axe/strip3","item/axe/strip4","item/axe/wax_off1","item/axe/wax_off2","item/axe/wax_off3","item/bonemeal/bonemeal1","item/bonemeal/bonemeal2","item/bonemeal/bonemeal3","item/bonemeal/bonemeal4","item/bonemeal/bonemeal5","item/book/close_put1","item/book/close_put2","item/book/open_flip1","item/book/open_flip2","item/book/open_flip3","item/bottle/drink_honey1","item/bottle/drink_honey2","item/bottle/drink_honey3","item/bottle/empty1","item/bottle/empty2","item/bottle/fill1","item/bottle/fill2","item/bottle/fill3","item/bottle/fill4","item/bottle/fill_dragonbreath1","item/bottle/fill_dragonbreath2","item/brush/brush_sand_complete1","item/brush/brush_sand_complete2","item/brush/brush_sand_complete3","item/brush/brush_sand_complete4","item/brush/brush_sand_complete5","item/brush/brushing_generic1","item/brush/brushing_generic2","item/brush/brushing_generic3","item/brush/brushing_generic4","item/brush/brushing_gravel1","item/brush/brushing_gravel2","item/brush/brushing_gravel3","item/brush/brushing_gravel4","item/brush/brushing_gravel_complete1","item/brush/brushing_gravel_complete2","item/brush/brushing_gravel_complete3","item/brush/brushing_gravel_complete4","item/brush/brushing_sand1","item/brush/brushing_sand2","item/brush/brushing_sand3","item/brush/brushing_sand4","item/bucket/empty1","item/bucket/empty2","item/bucket/empty3","item/bucket/empty_fish1","item/bucket/empty_fish2","item/bucket/empty_fish3","item/bucket/empty_lava1","item/bucket/empty_lava2","item/bucket/empty_lava3","item/bucket/empty_powder_snow1","item/bucket/empty_powder_snow2","item/bucket/fill1","item/bucket/fill2","item/bucket/fill3","item/bucket/fill_axolotl1","item/bucket/fill_axolotl2","item/bucket/fill_axolotl3","item/bucket/fill_fish1","item/bucket/fill_fish2","item/bucket/fill_fish3","item/bucket/fill_lava1","item/bucket/fill_lava2","item/bucket/fill_lava3","item/bucket/fill_powder_snow1","item/bucket/fill_powder_snow2","item/bundle/drop_contents1","item/bundle/drop_contents2","item/bundle/drop_contents3","item/bundle/insert1","item/bundle/insert2","item/bundle/insert3","item/bundle/insert_fail","item/bundle/remove_one1","item/bundle/remove_one2","item/bundle/remove_one3","item/crossbow/loading_end","item/crossbow/loading_middle1","item/crossbow/loading_middle2","item/crossbow/loading_middle3","item/crossbow/loading_middle4","item/crossbow/loading_start","item/crossbow/shoot1","item/crossbow/shoot2","item/crossbow/shoot3","item/crossbow/quick_charge/quick1_1","item/crossbow/quick_charge/quick1_2","item/crossbow/quick_charge/quick1_3","item/crossbow/quick_charge/quick2_1","item/crossbow/quick_charge/quick2_2","item/crossbow/quick_charge/quick2_3","item/crossbow/quick_charge/quick3_1","item/crossbow/quick_charge/quick3_2","item/crossbow/quick_charge/quick3_3","item/dye/dye","item/elytra/elytra_loop","item/goat_horn/call0","item/goat_horn/call1","item/goat_horn/call2","item/goat_horn/call3","item/goat_horn/call4","item/goat_horn/call5","item/goat_horn/call6","item/goat_horn/call7","item/hoe/till1","item/hoe/till2","item/hoe/till3","item/hoe/till4","item/honeycomb/wax_on1","item/honeycomb/wax_on2","item/honeycomb/wax_on3","item/ink_sac/ink_sac1","item/ink_sac/ink_sac2","item/ink_sac/ink_sac3","item/mace/smash_air1","item/mace/smash_air2","item/mace/smash_air3","item/mace/smash_ground1","item/mace/smash_ground2","item/mace/smash_ground3","item/mace/smash_ground4","item/mace/smash_ground_heavy","item/ominous_bottle/dispose","item/plant/crop1","item/plant/crop2","item/plant/crop3","item/plant/crop4","item/plant/crop5","item/plant/crop6","item/plant/netherwart1","item/plant/netherwart2","item/plant/netherwart3","item/plant/netherwart4","item/plant/netherwart5","item/plant/netherwart6","item/shield/block1","item/shield/block2","item/shield/block3","item/shield/block4","item/shield/block5","item/shovel/flatten1","item/shovel/flatten2","item/shovel/flatten3","item/shovel/flatten4","item/spyglass/stop","item/spyglass/use","item/sweet_berries/pick_from_bush1","item/sweet_berries/pick_from_bush2","item/totem/use_totem","item/trident/ground_impact1","item/trident/ground_impact2","item/trident/ground_impact3","item/trident/ground_impact4","item/trident/pierce1","item/trident/pierce2","item/trident/pierce3","item/trident/return1","item/trident/return2","item/trident/return3","item/trident/riptide1","item/trident/riptide2","item/trident/riptide3","item/trident/throw1","item/trident/throw2","item/trident/thunder1","item/trident/thunder2","liquid/heavy_splash","liquid/lava","liquid/lavapop","liquid/splash","liquid/splash2","liquid/swim1","liquid/swim10","liquid/swim11","liquid/swim12","liquid/swim13","liquid/swim14","liquid/swim15","liquid/swim16","liquid/swim17","liquid/swim18","liquid/swim2","liquid/swim3","liquid/swim4","liquid/swim5","liquid/swim6","liquid/swim7","liquid/swim8","liquid/swim9","liquid/water","minecart/base","minecart/inside","minecart/inside_underwater1","minecart/inside_underwater2","minecart/inside_underwater3","mob/allay/death1","mob/allay/death2","mob/allay/hurt1","mob/allay/hurt2","mob/allay/idle_with_item1","mob/allay/idle_with_item2","mob/allay/idle_with_item3","mob/allay/idle_with_item4","mob/allay/idle_without_item1","mob/allay/idle_without_item2","mob/allay/idle_without_item3","mob/allay/idle_without_item4","mob/allay/item_given1","mob/allay/item_given2","mob/allay/item_given3","mob/allay/item_given4","mob/allay/item_taken1","mob/allay/item_taken2","mob/allay/item_taken3","mob/allay/item_taken4","mob/allay/item_thrown1","mob/armadillo/ambient1","mob/armadillo/ambient2","mob/armadillo/ambient3","mob/armadillo/ambient4","mob/armadillo/ambient5","mob/armadillo/ambient6","mob/armadillo/ambient7","mob/armadillo/ambient8","mob/armadillo/brush_armadillo1","mob/armadillo/brush_armadillo2","mob/armadillo/death1","mob/armadillo/death2","mob/armadillo/death3","mob/armadillo/death4","mob/armadillo/eat1","mob/armadillo/eat2","mob/armadillo/eat3","mob/armadillo/hurt1","mob/armadillo/hurt2","mob/armadillo/hurt3","mob/armadillo/hurt4","mob/armadillo/hurt5","mob/armadillo/hurt_reduced1","mob/armadillo/hurt_reduced2","mob/armadillo/hurt_reduced3","mob/armadillo/hurt_reduced4","mob/armadillo/land1","mob/armadillo/land2","mob/armadillo/land3","mob/armadillo/land4","mob/armadillo/peek","mob/armadillo/roll1","mob/armadillo/roll2","mob/armadillo/roll3","mob/armadillo/roll4","mob/armadillo/scute_drop1","mob/armadillo/scute_drop2","mob/armadillo/step1","mob/armadillo/step2","mob/armadillo/step3","mob/armadillo/step4","mob/armadillo/step5","mob/armadillo/unroll_finish1","mob/armadillo/unroll_finish2","mob/armadillo/unroll_start","mob/axolotl/attack1","mob/axolotl/attack2","mob/axolotl/attack3","mob/axolotl/attack4","mob/axolotl/death1","mob/axolotl/death2","mob/axolotl/hurt1","mob/axolotl/hurt2","mob/axolotl/hurt3","mob/axolotl/hurt4","mob/axolotl/idle1","mob/axolotl/idle2","mob/axolotl/idle3","mob/axolotl/idle4","mob/axolotl/idle5","mob/axolotl/idle_air1","mob/axolotl/idle_air2","mob/axolotl/idle_air3","mob/axolotl/idle_air4","mob/axolotl/idle_air5","mob/bat/death","mob/bat/hurt1","mob/bat/hurt2","mob/bat/hurt3","mob/bat/hurt4","mob/bat/idle1","mob/bat/idle2","mob/bat/idle3","mob/bat/idle4","mob/bat/loop","mob/bat/takeoff","mob/bee/aggressive1","mob/bee/aggressive2","mob/bee/aggressive3","mob/bee/death1","mob/bee/death2","mob/bee/hurt1","mob/bee/hurt2","mob/bee/hurt3","mob/bee/loop1","mob/bee/loop2","mob/bee/loop3","mob/bee/loop4","mob/bee/loop5","mob/bee/pollinate1","mob/bee/pollinate2","mob/bee/pollinate3","mob/bee/pollinate4","mob/bee/sting","mob/blaze/breathe1","mob/blaze/breathe2","mob/blaze/breathe3","mob/blaze/breathe4","mob/blaze/death","mob/blaze/hit1","mob/blaze/hit2","mob/blaze/hit3","mob/blaze/hit4","mob/bogged/ambient1","mob/bogged/ambient2","mob/bogged/ambient3","mob/bogged/ambient4","mob/bogged/death","mob/bogged/hurt1","mob/bogged/hurt2","mob/bogged/hurt3","mob/bogged/hurt4","mob/bogged/step1","mob/bogged/step2","mob/bogged/step3","mob/bogged/step4","mob/breeze/charge1","mob/breeze/charge2","mob/breeze/charge3","mob/breeze/death1","mob/breeze/death2","mob/breeze/deflect1","mob/breeze/deflect2","mob/breeze/deflect3","mob/breeze/hurt1","mob/breeze/hurt2","mob/breeze/hurt3","mob/breeze/idle1","mob/breeze/idle2","mob/breeze/idle3","mob/breeze/idle4","mob/breeze/idle_air1","mob/breeze/idle_air2","mob/breeze/idle_air3","mob/breeze/idle_air4","mob/breeze/inhale1","mob/breeze/inhale2","mob/breeze/jump1","mob/breeze/jump2","mob/breeze/land1","mob/breeze/land2","mob/breeze/shoot","mob/breeze/slide1","mob/breeze/slide2","mob/breeze/slide3","mob/breeze/slide4","mob/breeze/whirl","mob/breeze/wind_burst1","mob/breeze/wind_burst2","mob/breeze/wind_burst3","mob/camel/ambient1","mob/camel/ambient2","mob/camel/ambient3","mob/camel/ambient4","mob/camel/ambient5","mob/camel/ambient6","mob/camel/ambient7","mob/camel/ambient8","mob/camel/dash1","mob/camel/dash2","mob/camel/dash3","mob/camel/dash4","mob/camel/dash5","mob/camel/dash6","mob/camel/dash_ready1","mob/camel/death1","mob/camel/death2","mob/camel/eat1","mob/camel/eat2","mob/camel/eat3","mob/camel/eat4","mob/camel/eat5","mob/camel/hurt1","mob/camel/hurt2","mob/camel/hurt3","mob/camel/hurt4","mob/camel/sit1","mob/camel/sit2","mob/camel/sit3","mob/camel/sit4","mob/camel/stand1","mob/camel/stand2","mob/camel/stand3","mob/camel/stand4","mob/camel/stand5","mob/camel/step1","mob/camel/step2","mob/camel/step3","mob/camel/step4","mob/camel/step5","mob/camel/step6","mob/camel/step_sand1","mob/camel/step_sand2","mob/camel/step_sand3","mob/camel/step_sand4","mob/camel/step_sand5","mob/camel/step_sand6","mob/cat/beg1","mob/cat/beg2","mob/cat/beg3","mob/cat/eat1","mob/cat/eat2","mob/cat/hiss1","mob/cat/hiss2","mob/cat/hiss3","mob/cat/hitt1","mob/cat/hitt2","mob/cat/hitt3","mob/cat/meow1","mob/cat/meow2","mob/cat/meow3","mob/cat/meow4","mob/cat/purr1","mob/cat/purr2","mob/cat/purr3","mob/cat/purreow1","mob/cat/purreow2","mob/cat/ocelot/death1","mob/cat/ocelot/death2","mob/cat/ocelot/death3","mob/cat/ocelot/idle1","mob/cat/ocelot/idle2","mob/cat/ocelot/idle3","mob/cat/ocelot/idle4","mob/cat/stray/idle1","mob/cat/stray/idle2","mob/cat/stray/idle3","mob/cat/stray/idle4","mob/chicken/hurt1","mob/chicken/hurt2","mob/chicken/plop","mob/chicken/say1","mob/chicken/say2","mob/chicken/say3","mob/chicken/step1","mob/chicken/step2","mob/coppergolem/item_drop","mob/coppergolem/item_no_drop","mob/coppergolem/no_item_get","mob/coppergolem/no_item_no_get","mob/coppergolem/spawn","mob/coppergolem/oxidized/death","mob/coppergolem/oxidized/hurt1","mob/coppergolem/oxidized/hurt2","mob/coppergolem/oxidized/hurt3","mob/coppergolem/oxidized/hurt4","mob/coppergolem/oxidized/spin1","mob/coppergolem/oxidized/spin2","mob/coppergolem/oxidized/spin3","mob/coppergolem/oxidized/spin4","mob/coppergolem/oxidized/spin5","mob/coppergolem/oxidized/spin6","mob/coppergolem/oxidized/spin7","mob/coppergolem/oxidized/step1","mob/coppergolem/oxidized/step2","mob/coppergolem/oxidized/step3","mob/coppergolem/oxidized/step4","mob/coppergolem/oxidized/step5","mob/coppergolem/oxidized/step6","mob/coppergolem/oxidized/step7","mob/coppergolem/oxidized/step8","mob/coppergolem/oxidized/step9","mob/coppergolem/regular/death","mob/coppergolem/regular/hurt1","mob/coppergolem/regular/hurt2","mob/coppergolem/regular/hurt3","mob/coppergolem/regular/hurt4","mob/coppergolem/regular/spin1","mob/coppergolem/regular/spin2","mob/coppergolem/regular/spin3","mob/coppergolem/regular/spin4","mob/coppergolem/regular/spin5","mob/coppergolem/regular/spin6","mob/coppergolem/regular/spin7","mob/coppergolem/regular/step1","mob/coppergolem/regular/step2","mob/coppergolem/regular/step3","mob/coppergolem/regular/step4","mob/coppergolem/regular/step5","mob/coppergolem/regular/step6","mob/coppergolem/regular/step7","mob/coppergolem/regular/step8","mob/coppergolem/regular/step9","mob/coppergolem/weathered/death","mob/coppergolem/weathered/hurt1","mob/coppergolem/weathered/hurt2","mob/coppergolem/weathered/hurt3","mob/coppergolem/weathered/hurt4","mob/coppergolem/weathered/spin1","mob/coppergolem/weathered/spin2","mob/coppergolem/weathered/spin3","mob/coppergolem/weathered/spin4","mob/coppergolem/weathered/spin5","mob/coppergolem/weathered/spin6","mob/coppergolem/weathered/spin7","mob/coppergolem/weathered/step1","mob/coppergolem/weathered/step2","mob/coppergolem/weathered/step3","mob/coppergolem/weathered/step4","mob/coppergolem/weathered/step5","mob/coppergolem/weathered/step6","mob/coppergolem/weathered/step7","mob/coppergolem/weathered/step8","mob/coppergolem/weathered/step9","mob/cow/hurt1","mob/cow/hurt2","mob/cow/hurt3","mob/cow/say1","mob/cow/say2","mob/cow/say3","mob/cow/say4","mob/cow/step1","mob/cow/step2","mob/cow/step3","mob/cow/step4","mob/creaking/creaking_activate","mob/creaking/creaking_attack1","mob/creaking/creaking_attack2","mob/creaking/creaking_attack3","mob/creaking/creaking_attack4","mob/creaking/creaking_deactivate","mob/creaking/creaking_death","mob/creaking/creaking_freeze1","mob/creaking/creaking_freeze2","mob/creaking/creaking_freeze3","mob/creaking/creaking_freeze4","mob/creaking/creaking_idle1","mob/creaking/creaking_idle2","mob/creaking/creaking_idle3","mob/creaking/creaking_idle4","mob/creaking/creaking_idle5","mob/creaking/creaking_idle6","mob/creaking/creaking_spawn","mob/creaking/creaking_step1","mob/creaking/creaking_step2","mob/creaking/creaking_step3","mob/creaking/creaking_step4","mob/creaking/creaking_step5","mob/creaking/creaking_sway1","mob/creaking/creaking_sway2","mob/creaking/creaking_sway3","mob/creaking/creaking_sway4","mob/creaking/creaking_twitch","mob/creaking/creaking_unfreeze1","mob/creaking/creaking_unfreeze2","mob/creaking/creaking_unfreeze3","mob/creaking/parrot_imitate_creaking","mob/creeper/death","mob/creeper/say1","mob/creeper/say2","mob/creeper/say3","mob/creeper/say4","mob/dolphin/attack1","mob/dolphin/attack2","mob/dolphin/attack3","mob/dolphin/blowhole1","mob/dolphin/blowhole2","mob/dolphin/death1","mob/dolphin/death2","mob/dolphin/eat1","mob/dolphin/eat2","mob/dolphin/eat3","mob/dolphin/hurt1","mob/dolphin/hurt2","mob/dolphin/hurt3","mob/dolphin/idle1","mob/dolphin/idle2","mob/dolphin/idle3","mob/dolphin/idle4","mob/dolphin/idle5","mob/dolphin/idle6","mob/dolphin/idle_water1","mob/dolphin/idle_water10","mob/dolphin/idle_water2","mob/dolphin/idle_water3","mob/dolphin/idle_water4","mob/dolphin/idle_water5","mob/dolphin/idle_water6","mob/dolphin/idle_water7","mob/dolphin/idle_water8","mob/dolphin/idle_water9","mob/dolphin/jump1","mob/dolphin/jump2","mob/dolphin/jump3","mob/dolphin/play1","mob/dolphin/play2","mob/dolphin/splash1","mob/dolphin/splash2","mob/dolphin/splash3","mob/dolphin/swim1","mob/dolphin/swim2","mob/dolphin/swim3","mob/dolphin/swim4","mob/drowned/convert1","mob/drowned/convert2","mob/drowned/convert3","mob/drowned/death1","mob/drowned/death2","mob/drowned/hurt1","mob/drowned/hurt2","mob/drowned/hurt3","mob/drowned/idle1","mob/drowned/idle2","mob/drowned/idle3","mob/drowned/idle4","mob/drowned/idle5","mob/drowned/step1","mob/drowned/step2","mob/drowned/step3","mob/drowned/step4","mob/drowned/step5","mob/drowned/water/death1","mob/drowned/water/death2","mob/drowned/water/hurt1","mob/drowned/water/hurt2","mob/drowned/water/hurt3","mob/drowned/water/idle1","mob/drowned/water/idle2","mob/drowned/water/idle3","mob/drowned/water/idle4","mob/enderdragon/end","mob/enderdragon/growl1","mob/enderdragon/growl2","mob/enderdragon/growl3","mob/enderdragon/growl4","mob/enderdragon/hit1","mob/enderdragon/hit2","mob/enderdragon/hit3","mob/enderdragon/hit4","mob/enderdragon/wings1","mob/enderdragon/wings2","mob/enderdragon/wings3","mob/enderdragon/wings4","mob/enderdragon/wings5","mob/enderdragon/wings6","mob/endermen/death","mob/endermen/hit1","mob/endermen/hit2","mob/endermen/hit3","mob/endermen/hit4","mob/endermen/idle1","mob/endermen/idle2","mob/endermen/idle3","mob/endermen/idle4","mob/endermen/idle5","mob/endermen/portal","mob/endermen/portal2","mob/endermen/scream1","mob/endermen/scream2","mob/endermen/scream3","mob/endermen/scream4","mob/endermen/stare","mob/evocation_illager/cast1","mob/evocation_illager/cast2","mob/evocation_illager/celebrate","mob/evocation_illager/death1","mob/evocation_illager/death2","mob/evocation_illager/fangs","mob/evocation_illager/hurt1","mob/evocation_illager/hurt2","mob/evocation_illager/idle1","mob/evocation_illager/idle2","mob/evocation_illager/idle3","mob/evocation_illager/idle4","mob/evocation_illager/prepare_attack1","mob/evocation_illager/prepare_attack2","mob/evocation_illager/prepare_summon","mob/evocation_illager/prepare_wololo","mob/fox/aggro1","mob/fox/aggro2","mob/fox/aggro3","mob/fox/aggro4","mob/fox/aggro5","mob/fox/aggro6","mob/fox/aggro7","mob/fox/bite1","mob/fox/bite2","mob/fox/bite3","mob/fox/death1","mob/fox/death2","mob/fox/eat1","mob/fox/eat2","mob/fox/eat3","mob/fox/hurt1","mob/fox/hurt2","mob/fox/hurt3","mob/fox/hurt4","mob/fox/idle1","mob/fox/idle2","mob/fox/idle3","mob/fox/idle4","mob/fox/idle5","mob/fox/idle6","mob/fox/screech1","mob/fox/screech2","mob/fox/screech3","mob/fox/screech4","mob/fox/sleep1","mob/fox/sleep2","mob/fox/sleep3","mob/fox/sleep4","mob/fox/sleep5","mob/fox/sniff1","mob/fox/sniff2","mob/fox/sniff3","mob/fox/sniff4","mob/fox/spit1","mob/fox/spit2","mob/fox/spit3","mob/frog/death1","mob/frog/death2","mob/frog/death3","mob/frog/eat1","mob/frog/eat2","mob/frog/eat3","mob/frog/eat4","mob/frog/hurt1","mob/frog/hurt2","mob/frog/hurt3","mob/frog/hurt4","mob/frog/hurt5","mob/frog/idle1","mob/frog/idle2","mob/frog/idle3","mob/frog/idle4","mob/frog/idle5","mob/frog/idle6","mob/frog/idle7","mob/frog/idle8","mob/frog/lay_spawn1","mob/frog/lay_spawn2","mob/frog/long_jump1","mob/frog/long_jump2","mob/frog/long_jump3","mob/frog/long_jump4","mob/frog/step1","mob/frog/step2","mob/frog/step3","mob/frog/step4","mob/frog/tongue1","mob/frog/tongue2","mob/frog/tongue3","mob/frog/tongue4","mob/ghast/affectionate_scream","mob/ghast/charge","mob/ghast/death","mob/ghast/fireball4","mob/ghast/moan1","mob/ghast/moan2","mob/ghast/moan3","mob/ghast/moan4","mob/ghast/moan5","mob/ghast/moan6","mob/ghast/moan7","mob/ghast/scream1","mob/ghast/scream2","mob/ghast/scream3","mob/ghast/scream4","mob/ghast/scream5","mob/ghastling/death","mob/ghastling/ghastling1","mob/ghastling/ghastling2","mob/ghastling/ghastling3","mob/ghastling/ghastling4","mob/ghastling/ghastling5","mob/ghastling/ghastling6","mob/ghastling/ghastling7","mob/ghastling/hurt1","mob/ghastling/hurt2","mob/ghastling/hurt3","mob/ghastling/hurt4","mob/ghastling/hurt5","mob/ghastling/spawn","mob/glow_squid/ambient1","mob/glow_squid/ambient2","mob/glow_squid/ambient3","mob/glow_squid/ambient4","mob/glow_squid/ambient5","mob/glow_squid/death1","mob/glow_squid/death2","mob/glow_squid/death3","mob/glow_squid/hurt1","mob/glow_squid/hurt2","mob/glow_squid/hurt3","mob/glow_squid/hurt4","mob/glow_squid/squirt1","mob/glow_squid/squirt2","mob/glow_squid/squirt3","mob/goat/death1","mob/goat/death2","mob/goat/death3","mob/goat/death4","mob/goat/death5","mob/goat/eat1","mob/goat/eat2","mob/goat/eat3","mob/goat/horn_break1","mob/goat/horn_break2","mob/goat/horn_break3","mob/goat/horn_break4","mob/goat/hurt1","mob/goat/hurt2","mob/goat/hurt3","mob/goat/hurt4","mob/goat/idle1","mob/goat/idle2","mob/goat/idle3","mob/goat/idle4","mob/goat/idle5","mob/goat/idle6","mob/goat/idle7","mob/goat/idle8","mob/goat/impact1","mob/goat/impact2","mob/goat/impact3","mob/goat/jump1","mob/goat/jump2","mob/goat/pre_ram1","mob/goat/pre_ram2","mob/goat/pre_ram3","mob/goat/pre_ram4","mob/goat/scream1","mob/goat/scream2","mob/goat/scream3","mob/goat/scream4","mob/goat/scream5","mob/goat/scream6","mob/goat/scream7","mob/goat/scream8","mob/goat/scream9","mob/goat/screaming_death1","mob/goat/screaming_death2","mob/goat/screaming_death3","mob/goat/screaming_hurt1","mob/goat/screaming_hurt2","mob/goat/screaming_hurt3","mob/goat/screaming_milk1","mob/goat/screaming_milk2","mob/goat/screaming_milk3","mob/goat/screaming_milk4","mob/goat/screaming_milk5","mob/goat/screaming_pre_ram1","mob/goat/screaming_pre_ram2","mob/goat/screaming_pre_ram3","mob/goat/screaming_pre_ram4","mob/goat/screaming_pre_ram5","mob/goat/step1","mob/goat/step2","mob/goat/step3","mob/goat/step4","mob/goat/step5","mob/goat/step6","mob/guardian/attack_loop","mob/guardian/curse","mob/guardian/elder_death","mob/guardian/elder_hit1","mob/guardian/elder_hit2","mob/guardian/elder_hit3","mob/guardian/elder_hit4","mob/guardian/elder_idle1","mob/guardian/elder_idle2","mob/guardian/elder_idle3","mob/guardian/elder_idle4","mob/guardian/flop1","mob/guardian/flop2","mob/guardian/flop3","mob/guardian/flop4","mob/guardian/guardian_death","mob/guardian/guardian_hit1","mob/guardian/guardian_hit2","mob/guardian/guardian_hit3","mob/guardian/guardian_hit4","mob/guardian/guardian_idle1","mob/guardian/guardian_idle2","mob/guardian/guardian_idle3","mob/guardian/guardian_idle4","mob/guardian/land_death","mob/guardian/land_hit1","mob/guardian/land_hit2","mob/guardian/land_hit3","mob/guardian/land_hit4","mob/guardian/land_idle1","mob/guardian/land_idle2","mob/guardian/land_idle3","mob/guardian/land_idle4","mob/happy_ghast/ambient1","mob/happy_ghast/ambient10","mob/happy_ghast/ambient11","mob/happy_ghast/ambient12","mob/happy_ghast/ambient13","mob/happy_ghast/ambient14","mob/happy_ghast/ambient2","mob/happy_ghast/ambient3","mob/happy_ghast/ambient4","mob/happy_ghast/ambient5","mob/happy_ghast/ambient6","mob/happy_ghast/ambient7","mob/happy_ghast/ambient8","mob/happy_ghast/ambient9","mob/happy_ghast/death","mob/happy_ghast/ghast_ride","mob/happy_ghast/goggles_down","mob/happy_ghast/goggles_up","mob/happy_ghast/harness_equip","mob/happy_ghast/harness_unequip","mob/happy_ghast/hurt1","mob/happy_ghast/hurt2","mob/happy_ghast/hurt3","mob/happy_ghast/hurt4","mob/happy_ghast/hurt5","mob/happy_ghast/hurt6","mob/hoglin/angry1","mob/hoglin/angry2","mob/hoglin/angry3","mob/hoglin/angry4","mob/hoglin/angry5","mob/hoglin/angry6","mob/hoglin/attack1","mob/hoglin/attack2","mob/hoglin/converted1","mob/hoglin/converted2","mob/hoglin/death1","mob/hoglin/death2","mob/hoglin/death3","mob/hoglin/hurt1","mob/hoglin/hurt2","mob/hoglin/hurt3","mob/hoglin/hurt4","mob/hoglin/idle1","mob/hoglin/idle10","mob/hoglin/idle11","mob/hoglin/idle2","mob/hoglin/idle3","mob/hoglin/idle4","mob/hoglin/idle5","mob/hoglin/idle6","mob/hoglin/idle7","mob/hoglin/idle8","mob/hoglin/idle9","mob/hoglin/retreat1","mob/hoglin/retreat2","mob/hoglin/retreat3","mob/hoglin/step1","mob/hoglin/step2","mob/hoglin/step3","mob/hoglin/step4","mob/hoglin/step5","mob/hoglin/step6","mob/horse/angry1","mob/horse/armor","mob/horse/armor_unequip","mob/horse/breathe1","mob/horse/breathe2","mob/horse/breathe3","mob/horse/death","mob/horse/eat1","mob/horse/eat2","mob/horse/eat3","mob/horse/eat4","mob/horse/eat5","mob/horse/gallop1","mob/horse/gallop2","mob/horse/gallop3","mob/horse/gallop4","mob/horse/hit1","mob/horse/hit2","mob/horse/hit3","mob/horse/hit4","mob/horse/idle1","mob/horse/idle2","mob/horse/idle3","mob/horse/jump","mob/horse/land","mob/horse/leather","mob/horse/saddle_unequip","mob/horse/soft1","mob/horse/soft2","mob/horse/soft3","mob/horse/soft4","mob/horse/soft5","mob/horse/soft6","mob/horse/wood1","mob/horse/wood2","mob/horse/wood3","mob/horse/wood4","mob/horse/wood5","mob/horse/wood6","mob/horse/donkey/angry1","mob/horse/donkey/angry2","mob/horse/donkey/death","mob/horse/donkey/hit1","mob/horse/donkey/hit2","mob/horse/donkey/hit3","mob/horse/donkey/idle1","mob/horse/donkey/idle2","mob/horse/donkey/idle3","mob/horse/skeleton/death","mob/horse/skeleton/hit1","mob/horse/skeleton/hit2","mob/horse/skeleton/hit3","mob/horse/skeleton/hit4","mob/horse/skeleton/idle1","mob/horse/skeleton/idle2","mob/horse/skeleton/idle3","mob/horse/skeleton/water/gallop1","mob/horse/skeleton/water/gallop2","mob/horse/skeleton/water/gallop3","mob/horse/skeleton/water/gallop4","mob/horse/skeleton/water/idle1","mob/horse/skeleton/water/idle2","mob/horse/skeleton/water/idle3","mob/horse/skeleton/water/idle4","mob/horse/skeleton/water/idle5","mob/horse/skeleton/water/jump","mob/horse/skeleton/water/soft1","mob/horse/skeleton/water/soft2","mob/horse/skeleton/water/soft3","mob/horse/skeleton/water/soft4","mob/horse/skeleton/water/soft5","mob/horse/skeleton/water/soft6","mob/horse/zombie/death","mob/horse/zombie/hit1","mob/horse/zombie/hit2","mob/horse/zombie/hit3","mob/horse/zombie/hit4","mob/horse/zombie/idle1","mob/horse/zombie/idle2","mob/horse/zombie/idle3","mob/husk/convert1","mob/husk/convert2","mob/husk/death1","mob/husk/death2","mob/husk/hurt1","mob/husk/hurt2","mob/husk/idle1","mob/husk/idle2","mob/husk/idle3","mob/husk/step1","mob/husk/step2","mob/husk/step3","mob/husk/step4","mob/husk/step5","mob/illusion_illager/death1","mob/illusion_illager/death2","mob/illusion_illager/hurt1","mob/illusion_illager/hurt2","mob/illusion_illager/hurt3","mob/illusion_illager/idle1","mob/illusion_illager/idle2","mob/illusion_illager/idle3","mob/illusion_illager/idle4","mob/illusion_illager/mirror_move1","mob/illusion_illager/mirror_move2","mob/illusion_illager/prepare_blind","mob/illusion_illager/prepare_mirror","mob/irongolem/damage1","mob/irongolem/damage2","mob/irongolem/death","mob/irongolem/hit1","mob/irongolem/hit2","mob/irongolem/hit3","mob/irongolem/hit4","mob/irongolem/repair","mob/irongolem/throw","mob/irongolem/walk1","mob/irongolem/walk2","mob/irongolem/walk3","mob/irongolem/walk4","mob/llama/angry1","mob/llama/death1","mob/llama/death2","mob/llama/eat1","mob/llama/eat2","mob/llama/eat3","mob/llama/hurt1","mob/llama/hurt2","mob/llama/hurt3","mob/llama/idle1","mob/llama/idle2","mob/llama/idle3","mob/llama/idle4","mob/llama/idle5","mob/llama/spit1","mob/llama/spit2","mob/llama/step1","mob/llama/step2","mob/llama/step3","mob/llama/step4","mob/llama/step5","mob/llama/swag","mob/llama/unequip","mob/magmacube/big1","mob/magmacube/big2","mob/magmacube/big3","mob/magmacube/big4","mob/magmacube/jump1","mob/magmacube/jump2","mob/magmacube/jump3","mob/magmacube/jump4","mob/magmacube/small1","mob/magmacube/small2","mob/magmacube/small3","mob/magmacube/small4","mob/magmacube/small5","mob/mooshroom/convert1","mob/mooshroom/convert2","mob/mooshroom/eat1","mob/mooshroom/eat2","mob/mooshroom/eat3","mob/mooshroom/eat4","mob/mooshroom/milk1","mob/mooshroom/milk2","mob/mooshroom/milk3","mob/panda/bite1","mob/panda/bite2","mob/panda/bite3","mob/panda/cant_breed1","mob/panda/cant_breed2","mob/panda/cant_breed3","mob/panda/cant_breed4","mob/panda/cant_breed5","mob/panda/death1","mob/panda/death2","mob/panda/death3","mob/panda/death4","mob/panda/eat1","mob/panda/eat10","mob/panda/eat11","mob/panda/eat12","mob/panda/eat2","mob/panda/eat3","mob/panda/eat4","mob/panda/eat5","mob/panda/eat6","mob/panda/eat7","mob/panda/eat8","mob/panda/eat9","mob/panda/hurt1","mob/panda/hurt2","mob/panda/hurt3","mob/panda/hurt4","mob/panda/hurt5","mob/panda/hurt6","mob/panda/idle1","mob/panda/idle2","mob/panda/idle3","mob/panda/idle4","mob/panda/nosebreath1","mob/panda/nosebreath2","mob/panda/nosebreath3","mob/panda/pant1","mob/panda/pant2","mob/panda/pre_sneeze","mob/panda/sneeze1","mob/panda/sneeze2","mob/panda/sneeze3","mob/panda/step1","mob/panda/step2","mob/panda/step3","mob/panda/step4","mob/panda/step5","mob/panda/aggressive/aggressive1","mob/panda/aggressive/aggressive2","mob/panda/aggressive/aggressive3","mob/panda/aggressive/aggressive4","mob/panda/worried/worried1","mob/panda/worried/worried2","mob/panda/worried/worried3","mob/panda/worried/worried4","mob/panda/worried/worried5","mob/panda/worried/worried6","mob/parrot/death1","mob/parrot/death2","mob/parrot/death3","mob/parrot/death4","mob/parrot/eat1","mob/parrot/eat2","mob/parrot/eat3","mob/parrot/fly1","mob/parrot/fly2","mob/parrot/fly3","mob/parrot/fly4","mob/parrot/fly5","mob/parrot/fly6","mob/parrot/fly7","mob/parrot/fly8","mob/parrot/hurt1","mob/parrot/hurt2","mob/parrot/idle1","mob/parrot/idle2","mob/parrot/idle3","mob/parrot/idle4","mob/parrot/idle5","mob/parrot/idle6","mob/parrot/step1","mob/parrot/step2","mob/parrot/step3","mob/parrot/step4","mob/parrot/step5","mob/phantom/bite1","mob/phantom/bite2","mob/phantom/death1","mob/phantom/death2","mob/phantom/death3","mob/phantom/flap1","mob/phantom/flap2","mob/phantom/flap3","mob/phantom/flap4","mob/phantom/flap5","mob/phantom/flap6","mob/phantom/hurt1","mob/phantom/hurt2","mob/phantom/hurt3","mob/phantom/idle1","mob/phantom/idle2","mob/phantom/idle3","mob/phantom/idle4","mob/phantom/idle5","mob/phantom/swoop1","mob/phantom/swoop2","mob/phantom/swoop3","mob/phantom/swoop4","mob/pig/death","mob/pig/say1","mob/pig/say2","mob/pig/say3","mob/pig/step1","mob/pig/step2","mob/pig/step3","mob/pig/step4","mob/pig/step5","mob/piglin/admire1","mob/piglin/admire2","mob/piglin/angry1","mob/piglin/angry2","mob/piglin/angry3","mob/piglin/angry4","mob/piglin/celebrate1","mob/piglin/celebrate2","mob/piglin/celebrate3","mob/piglin/celebrate4","mob/piglin/converted1","mob/piglin/converted2","mob/piglin/death1","mob/piglin/death2","mob/piglin/death3","mob/piglin/death4","mob/piglin/hurt1","mob/piglin/hurt2","mob/piglin/hurt3","mob/piglin/idle1","mob/piglin/idle2","mob/piglin/idle3","mob/piglin/idle4","mob/piglin/idle5","mob/piglin/jealous1","mob/piglin/jealous2","mob/piglin/jealous3","mob/piglin/jealous4","mob/piglin/jealous5","mob/piglin/retreat1","mob/piglin/retreat2","mob/piglin/retreat3","mob/piglin/retreat4","mob/piglin/step1","mob/piglin/step2","mob/piglin/step3","mob/piglin/step4","mob/piglin/step5","mob/piglin_brute/angry1","mob/piglin_brute/angry2","mob/piglin_brute/angry3","mob/piglin_brute/angry4","mob/piglin_brute/angry5","mob/piglin_brute/death1","mob/piglin_brute/death2","mob/piglin_brute/death3","mob/piglin_brute/hurt1","mob/piglin_brute/hurt2","mob/piglin_brute/hurt3","mob/piglin_brute/hurt4","mob/piglin_brute/idle1","mob/piglin_brute/idle2","mob/piglin_brute/idle3","mob/piglin_brute/idle4","mob/piglin_brute/idle5","mob/piglin_brute/idle6","mob/piglin_brute/idle7","mob/piglin_brute/idle8","mob/piglin_brute/idle9","mob/piglin_brute/step1","mob/piglin_brute/step2","mob/piglin_brute/step3","mob/piglin_brute/step4","mob/piglin_brute/step5","mob/pillager/celebrate1","mob/pillager/celebrate2","mob/pillager/celebrate3","mob/pillager/celebrate4","mob/pillager/death1","mob/pillager/death2","mob/pillager/horn_celebrate","mob/pillager/hurt1","mob/pillager/hurt2","mob/pillager/hurt3","mob/pillager/idle1","mob/pillager/idle2","mob/pillager/idle3","mob/pillager/idle4","mob/polarbear/death1","mob/polarbear/death2","mob/polarbear/death3","mob/polarbear/hurt1","mob/polarbear/hurt2","mob/polarbear/hurt3","mob/polarbear/hurt4","mob/polarbear/idle1","mob/polarbear/idle2","mob/polarbear/idle3","mob/polarbear/idle4","mob/polarbear/step1","mob/polarbear/step2","mob/polarbear/step3","mob/polarbear/step4","mob/polarbear/warning1","mob/polarbear/warning2","mob/polarbear/warning3","mob/polarbear_baby/idle1","mob/polarbear_baby/idle2","mob/polarbear_baby/idle3","mob/polarbear_baby/idle4","mob/pufferfish/blow_out1","mob/pufferfish/blow_out2","mob/pufferfish/blow_up1","mob/pufferfish/blow_up2","mob/pufferfish/death1","mob/pufferfish/death2","mob/pufferfish/flop1","mob/pufferfish/flop2","mob/pufferfish/flop3","mob/pufferfish/flop4","mob/pufferfish/hurt1","mob/pufferfish/hurt2","mob/pufferfish/sting1","mob/pufferfish/sting2","mob/rabbit/attack1","mob/rabbit/attack2","mob/rabbit/attack3","mob/rabbit/attack4","mob/rabbit/bunnymurder","mob/rabbit/hop1","mob/rabbit/hop2","mob/rabbit/hop3","mob/rabbit/hop4","mob/rabbit/hurt1","mob/rabbit/hurt2","mob/rabbit/hurt3","mob/rabbit/hurt4","mob/rabbit/idle1","mob/rabbit/idle2","mob/rabbit/idle3","mob/rabbit/idle4","mob/ravager/bite1","mob/ravager/bite2","mob/ravager/bite3","mob/ravager/celebrate1","mob/ravager/celebrate2","mob/ravager/death1","mob/ravager/death2","mob/ravager/death3","mob/ravager/hurt1","mob/ravager/hurt2","mob/ravager/hurt3","mob/ravager/hurt4","mob/ravager/idle1","mob/ravager/idle2","mob/ravager/idle3","mob/ravager/idle4","mob/ravager/idle5","mob/ravager/idle6","mob/ravager/idle7","mob/ravager/idle8","mob/ravager/roar1","mob/ravager/roar2","mob/ravager/roar3","mob/ravager/roar4","mob/ravager/step1","mob/ravager/step2","mob/ravager/step3","mob/ravager/step4","mob/ravager/step5","mob/ravager/stun1","mob/ravager/stun2","mob/ravager/stun3","mob/sheep/say1","mob/sheep/say2","mob/sheep/say3","mob/sheep/shear","mob/sheep/step1","mob/sheep/step2","mob/sheep/step3","mob/sheep/step4","mob/sheep/step5","mob/silverfish/hit1","mob/silverfish/hit2","mob/silverfish/hit3","mob/silverfish/kill","mob/silverfish/say1","mob/silverfish/say2","mob/silverfish/say3","mob/silverfish/say4","mob/silverfish/step1","mob/silverfish/step2","mob/silverfish/step3","mob/silverfish/step4","mob/skeleton/death","mob/skeleton/hurt1","mob/skeleton/hurt2","mob/skeleton/hurt3","mob/skeleton/hurt4","mob/skeleton/say1","mob/skeleton/say2","mob/skeleton/say3","mob/skeleton/step1","mob/skeleton/step2","mob/skeleton/step3","mob/skeleton/step4","mob/slime/attack1","mob/slime/attack2","mob/slime/big1","mob/slime/big2","mob/slime/big3","mob/slime/big4","mob/slime/small1","mob/slime/small2","mob/slime/small3","mob/slime/small4","mob/slime/small5","mob/sniffer/death1","mob/sniffer/death2","mob/sniffer/digging_stop1","mob/sniffer/digging_stop2","mob/sniffer/eat1","mob/sniffer/eat2","mob/sniffer/eat3","mob/sniffer/happy1","mob/sniffer/happy2","mob/sniffer/happy3","mob/sniffer/happy4","mob/sniffer/happy5","mob/sniffer/hurt1","mob/sniffer/hurt2","mob/sniffer/hurt3","mob/sniffer/idle1","mob/sniffer/idle10","mob/sniffer/idle11","mob/sniffer/idle2","mob/sniffer/idle3","mob/sniffer/idle4","mob/sniffer/idle5","mob/sniffer/idle6","mob/sniffer/idle7","mob/sniffer/idle8","mob/sniffer/idle9","mob/sniffer/longdig1","mob/sniffer/longdig2","mob/sniffer/scenting1","mob/sniffer/scenting2","mob/sniffer/scenting3","mob/sniffer/searching1","mob/sniffer/searching2","mob/sniffer/searching3","mob/sniffer/searching4","mob/sniffer/searching5","mob/sniffer/searching6","mob/sniffer/sniffing1","mob/sniffer/sniffing2","mob/sniffer/sniffing3","mob/sniffer/step1","mob/sniffer/step2","mob/sniffer/step3","mob/sniffer/step4","mob/sniffer/step5","mob/sniffer/step6","mob/spider/death","mob/spider/say1","mob/spider/say2","mob/spider/say3","mob/spider/say4","mob/spider/step1","mob/spider/step2","mob/spider/step3","mob/spider/step4","mob/squid/ambient1","mob/squid/ambient2","mob/squid/ambient3","mob/squid/ambient4","mob/squid/ambient5","mob/squid/death1","mob/squid/death2","mob/squid/death3","mob/squid/hurt1","mob/squid/hurt2","mob/squid/hurt3","mob/squid/hurt4","mob/squid/squirt1","mob/squid/squirt2","mob/squid/squirt3","mob/stray/convert1","mob/stray/convert2","mob/stray/convert3","mob/stray/death1","mob/stray/death2","mob/stray/hurt1","mob/stray/hurt2","mob/stray/hurt3","mob/stray/hurt4","mob/stray/idle1","mob/stray/idle2","mob/stray/idle3","mob/stray/idle4","mob/stray/step1","mob/stray/step2","mob/stray/step3","mob/stray/step4","mob/strider/death1","mob/strider/death2","mob/strider/death3","mob/strider/death4","mob/strider/eat1","mob/strider/eat2","mob/strider/eat3","mob/strider/happy1","mob/strider/happy2","mob/strider/happy3","mob/strider/happy4","mob/strider/happy5","mob/strider/hurt1","mob/strider/hurt2","mob/strider/hurt3","mob/strider/hurt4","mob/strider/idle1","mob/strider/idle2","mob/strider/idle3","mob/strider/idle4","mob/strider/idle5","mob/strider/idle6","mob/strider/retreat1","mob/strider/retreat2","mob/strider/retreat3","mob/strider/retreat4","mob/strider/retreat5","mob/strider/step1","mob/strider/step2","mob/strider/step3","mob/strider/step4","mob/strider/step5","mob/strider/step_lava1","mob/strider/step_lava2","mob/strider/step_lava3","mob/strider/step_lava4","mob/strider/step_lava5","mob/strider/step_lava6","mob/tadpole/death1","mob/tadpole/death2","mob/tadpole/hurt1","mob/tadpole/hurt2","mob/tadpole/hurt3","mob/tadpole/hurt4","mob/turtle/armor","mob/turtle/death1","mob/turtle/death2","mob/turtle/death3","mob/turtle/hurt1","mob/turtle/hurt2","mob/turtle/hurt3","mob/turtle/hurt4","mob/turtle/hurt5","mob/turtle/idle1","mob/turtle/idle2","mob/turtle/idle3","mob/turtle/walk1","mob/turtle/walk2","mob/turtle/walk3","mob/turtle/walk4","mob/turtle/walk5","mob/turtle/baby/death1","mob/turtle/baby/death2","mob/turtle/baby/egg_hatched1","mob/turtle/baby/egg_hatched2","mob/turtle/baby/egg_hatched3","mob/turtle/baby/hurt1","mob/turtle/baby/hurt2","mob/turtle/baby/shamble1","mob/turtle/baby/shamble2","mob/turtle/baby/shamble3","mob/turtle/baby/shamble4","mob/turtle/egg/drop_egg1","mob/turtle/egg/drop_egg2","mob/turtle/egg/egg_break1","mob/turtle/egg/egg_break2","mob/turtle/egg/egg_crack1","mob/turtle/egg/egg_crack2","mob/turtle/egg/egg_crack3","mob/turtle/egg/egg_crack4","mob/turtle/egg/egg_crack5","mob/turtle/egg/jump_egg1","mob/turtle/egg/jump_egg2","mob/turtle/egg/jump_egg3","mob/turtle/egg/jump_egg4","mob/turtle/swim/swim1","mob/turtle/swim/swim2","mob/turtle/swim/swim3","mob/turtle/swim/swim4","mob/turtle/swim/swim5","mob/vex/charge1","mob/vex/charge2","mob/vex/charge3","mob/vex/death1","mob/vex/death2","mob/vex/hurt1","mob/vex/hurt2","mob/vex/idle1","mob/vex/idle2","mob/vex/idle3","mob/vex/idle4","mob/villager/death","mob/villager/haggle1","mob/villager/haggle2","mob/villager/haggle3","mob/villager/hit1","mob/villager/hit2","mob/villager/hit3","mob/villager/hit4","mob/villager/idle1","mob/villager/idle2","mob/villager/idle3","mob/villager/no1","mob/villager/no2","mob/villager/no3","mob/villager/yes1","mob/villager/yes2","mob/villager/yes3","mob/vindication_illager/celebrate1","mob/vindication_illager/celebrate2","mob/vindication_illager/death1","mob/vindication_illager/death2","mob/vindication_illager/hurt1","mob/vindication_illager/hurt2","mob/vindication_illager/hurt3","mob/vindication_illager/idle1","mob/vindication_illager/idle2","mob/vindication_illager/idle3","mob/vindication_illager/idle4","mob/vindication_illager/idle5","mob/wandering_trader/appeared1","mob/wandering_trader/appeared2","mob/wandering_trader/death","mob/wandering_trader/disappeared1","mob/wandering_trader/disappeared2","mob/wandering_trader/drink_milk1","mob/wandering_trader/drink_milk2","mob/wandering_trader/drink_milk3","mob/wandering_trader/drink_milk4","mob/wandering_trader/drink_milk5","mob/wandering_trader/drink_potion","mob/wandering_trader/haggle1","mob/wandering_trader/haggle2","mob/wandering_trader/haggle3","mob/wandering_trader/hurt1","mob/wandering_trader/hurt2","mob/wandering_trader/hurt3","mob/wandering_trader/hurt4","mob/wandering_trader/idle1","mob/wandering_trader/idle2","mob/wandering_trader/idle3","mob/wandering_trader/idle4","mob/wandering_trader/idle5","mob/wandering_trader/no1","mob/wandering_trader/no2","mob/wandering_trader/no3","mob/wandering_trader/no4","mob/wandering_trader/no5","mob/wandering_trader/reappeared1","mob/wandering_trader/reappeared2","mob/wandering_trader/yes1","mob/wandering_trader/yes2","mob/wandering_trader/yes3","mob/wandering_trader/yes4","mob/warden/agitated_1","mob/warden/agitated_2","mob/warden/agitated_3","mob/warden/agitated_4","mob/warden/agitated_5","mob/warden/agitated_6","mob/warden/ambient_1","mob/warden/ambient_10","mob/warden/ambient_11","mob/warden/ambient_12","mob/warden/ambient_2","mob/warden/ambient_3","mob/warden/ambient_4","mob/warden/ambient_5","mob/warden/ambient_6","mob/warden/ambient_7","mob/warden/ambient_8","mob/warden/ambient_9","mob/warden/angry_1","mob/warden/angry_2","mob/warden/angry_3","mob/warden/angry_4","mob/warden/angry_5","mob/warden/angry_6","mob/warden/attack_impact_1","mob/warden/attack_impact_2","mob/warden/death_1","mob/warden/death_2","mob/warden/dig","mob/warden/emerge","mob/warden/heartbeat_1","mob/warden/heartbeat_2","mob/warden/heartbeat_3","mob/warden/heartbeat_4","mob/warden/hurt_1","mob/warden/hurt_2","mob/warden/hurt_3","mob/warden/hurt_4","mob/warden/listening_1","mob/warden/listening_2","mob/warden/listening_3","mob/warden/listening_4","mob/warden/listening_5","mob/warden/listening_angry_1","mob/warden/listening_angry_2","mob/warden/listening_angry_3","mob/warden/listening_angry_4","mob/warden/listening_angry_5","mob/warden/nearby_close_1","mob/warden/nearby_close_2","mob/warden/nearby_close_3","mob/warden/nearby_close_4","mob/warden/nearby_closer_1","mob/warden/nearby_closer_2","mob/warden/nearby_closer_3","mob/warden/nearby_closest_1","mob/warden/nearby_closest_2","mob/warden/nearby_closest_3","mob/warden/roar_1","mob/warden/roar_2","mob/warden/roar_3","mob/warden/roar_4","mob/warden/roar_5","mob/warden/sniff_1","mob/warden/sniff_2","mob/warden/sniff_3","mob/warden/sniff_4","mob/warden/sonic_boom1","mob/warden/sonic_boom2","mob/warden/sonic_boom3","mob/warden/sonic_boom4","mob/warden/sonic_charge1","mob/warden/sonic_charge2","mob/warden/sonic_charge3","mob/warden/sonic_charge4","mob/warden/step_1","mob/warden/step_2","mob/warden/step_3","mob/warden/step_4","mob/warden/tendril_clicks_1","mob/warden/tendril_clicks_2","mob/warden/tendril_clicks_3","mob/warden/tendril_clicks_4","mob/warden/tendril_clicks_5","mob/warden/tendril_clicks_6","mob/wither/death","mob/wither/hurt1","mob/wither/hurt2","mob/wither/hurt3","mob/wither/hurt4","mob/wither/idle1","mob/wither/idle2","mob/wither/idle3","mob/wither/idle4","mob/wither/shoot","mob/wither/spawn","mob/wither_skeleton/death1","mob/wither_skeleton/death2","mob/wither_skeleton/hurt1","mob/wither_skeleton/hurt2","mob/wither_skeleton/hurt3","mob/wither_skeleton/hurt4","mob/wither_skeleton/idle1","mob/wither_skeleton/idle2","mob/wither_skeleton/idle3","mob/wither_skeleton/step1","mob/wither_skeleton/step2","mob/wither_skeleton/step3","mob/wither_skeleton/step4","mob/wolf/shake","mob/wolf/step1","mob/wolf/step2","mob/wolf/step3","mob/wolf/step4","mob/wolf/step5","mob/wolf/angry/bark1","mob/wolf/angry/bark2","mob/wolf/angry/bark3","mob/wolf/angry/death","mob/wolf/angry/growl1","mob/wolf/angry/growl2","mob/wolf/angry/growl3","mob/wolf/angry/hurt1","mob/wolf/angry/hurt2","mob/wolf/angry/hurt3","mob/wolf/angry/panting","mob/wolf/angry/whine","mob/wolf/big/bark1","mob/wolf/big/bark2","mob/wolf/big/bark3","mob/wolf/big/death","mob/wolf/big/growl1","mob/wolf/big/growl2","mob/wolf/big/growl3","mob/wolf/big/hurt1","mob/wolf/big/hurt2","mob/wolf/big/hurt3","mob/wolf/big/panting","mob/wolf/big/whine","mob/wolf/classic/bark1","mob/wolf/classic/bark2","mob/wolf/classic/bark3","mob/wolf/classic/death","mob/wolf/classic/growl1","mob/wolf/classic/growl2","mob/wolf/classic/growl3","mob/wolf/classic/hurt1","mob/wolf/classic/hurt2","mob/wolf/classic/hurt3","mob/wolf/classic/panting","mob/wolf/classic/whine","mob/wolf/cute/bark1","mob/wolf/cute/bark2","mob/wolf/cute/bark3","mob/wolf/cute/death","mob/wolf/cute/growl1","mob/wolf/cute/growl2","mob/wolf/cute/growl3","mob/wolf/cute/hurt1","mob/wolf/cute/hurt2","mob/wolf/cute/hurt3","mob/wolf/cute/panting","mob/wolf/cute/whine","mob/wolf/grumpy/bark1","mob/wolf/grumpy/bark2","mob/wolf/grumpy/bark3","mob/wolf/grumpy/death","mob/wolf/grumpy/growl1","mob/wolf/grumpy/growl2","mob/wolf/grumpy/growl3","mob/wolf/grumpy/hurt1","mob/wolf/grumpy/hurt2","mob/wolf/grumpy/hurt3","mob/wolf/grumpy/panting","mob/wolf/grumpy/whine","mob/wolf/puglin/bark1","mob/wolf/puglin/bark2","mob/wolf/puglin/bark3","mob/wolf/puglin/death","mob/wolf/puglin/growl1","mob/wolf/puglin/growl2","mob/wolf/puglin/growl3","mob/wolf/puglin/hurt1","mob/wolf/puglin/hurt2","mob/wolf/puglin/hurt3","mob/wolf/puglin/panting","mob/wolf/puglin/whine","mob/wolf/sad/bark1","mob/wolf/sad/bark2","mob/wolf/sad/bark3","mob/wolf/sad/death","mob/wolf/sad/growl1","mob/wolf/sad/growl2","mob/wolf/sad/growl3","mob/wolf/sad/hurt1","mob/wolf/sad/hurt2","mob/wolf/sad/hurt3","mob/wolf/sad/panting","mob/wolf/sad/whine","mob/zoglin/angry1","mob/zoglin/angry2","mob/zoglin/angry3","mob/zoglin/attack1","mob/zoglin/attack2","mob/zoglin/death1","mob/zoglin/death2","mob/zoglin/death3","mob/zoglin/hurt1","mob/zoglin/hurt2","mob/zoglin/hurt3","mob/zoglin/idle1","mob/zoglin/idle2","mob/zoglin/idle3","mob/zoglin/idle4","mob/zoglin/idle5","mob/zoglin/idle6","mob/zoglin/step1","mob/zoglin/step2","mob/zoglin/step3","mob/zoglin/step4","mob/zoglin/step5","mob/zombie/death","mob/zombie/hurt1","mob/zombie/hurt2","mob/zombie/infect","mob/zombie/metal1","mob/zombie/metal2","mob/zombie/metal3","mob/zombie/remedy","mob/zombie/say1","mob/zombie/say2","mob/zombie/say3","mob/zombie/step1","mob/zombie/step2","mob/zombie/step3","mob/zombie/step4","mob/zombie/step5","mob/zombie/unfect","mob/zombie/wood1","mob/zombie/wood2","mob/zombie/wood3","mob/zombie/wood4","mob/zombie/woodbreak","mob/zombie_villager/death","mob/zombie_villager/hurt1","mob/zombie_villager/hurt2","mob/zombie_villager/say1","mob/zombie_villager/say2","mob/zombie_villager/say3","mob/zombified_piglin/zpig1","mob/zombified_piglin/zpig2","mob/zombified_piglin/zpig3","mob/zombified_piglin/zpig4","mob/zombified_piglin/zpigangry1","mob/zombified_piglin/zpigangry2","mob/zombified_piglin/zpigangry3","mob/zombified_piglin/zpigangry4","mob/zombified_piglin/zpigdeath","mob/zombified_piglin/zpighurt1","mob/zombified_piglin/zpighurt2","music/game/a_familiar_room","music/game/an_ordinary_day","music/game/ancestry","music/game/below_and_above","music/game/broken_clocks","music/game/bromeliad","music/game/clark","music/game/comforting_memories","music/game/crescent_dunes","music/game/danny","music/game/deeper","music/game/dry_hands","music/game/echo_in_the_wind","music/game/eld_unknown","music/game/endless","music/game/featherfall","music/game/fireflies","music/game/floating_dream","music/game/haggstrom","music/game/infinite_amethyst","music/game/key","music/game/komorebi","music/game/left_to_bloom","music/game/lilypad","music/game/living_mice","music/game/mice_on_venus","music/game/minecraft","music/game/one_more_day","music/game/os_piano","music/game/oxygene","music/game/pokopoko","music/game/puzzlebox","music/game/stand_tall","music/game/subwoofer_lullaby","music/game/sweden","music/game/watcher","music/game/wending","music/game/wet_hands","music/game/yakusoku","music/game/creative/aria_math","music/game/creative/biome_fest","music/game/creative/blind_spots","music/game/creative/dreiton","music/game/creative/haunt_muskie","music/game/creative/taswell","music/game/end/alpha","music/game/end/boss","music/game/end/the_end","music/game/nether/ballad_of_the_cats","music/game/nether/concrete_halls","music/game/nether/dead_voxel","music/game/nether/warmth","music/game/nether/crimson_forest/chrysopoeia","music/game/nether/nether_wastes/rubedo","music/game/nether/soulsand_valley/so_below","music/game/swamp/aerie","music/game/swamp/firebugs","music/game/swamp/labyrinthine","music/game/water/axolotl","music/game/water/dragon_fish","music/game/water/shuniji","music/menu/beginning_2","music/menu/floating_trees","music/menu/moog_city_2","music/menu/mutation","note/banjo","note/bass","note/bassattack","note/bd","note/bell","note/bit","note/cow_bell","note/didgeridoo","note/flute","note/guitar","note/harp","note/harp2","note/hat","note/icechime","note/iron_xylophone","note/pling","note/snare","note/xylobone","portal/portal","portal/travel","portal/trigger","random/anvil_break","random/anvil_land","random/anvil_use","random/bow","random/bowhit1","random/bowhit2","random/bowhit3","random/bowhit4","random/break","random/breath","random/burp","random/chestclosed","random/chestopen","random/classic_hurt","random/click","random/click_stereo","random/door_close","random/door_open","random/drink","random/eat1","random/eat2","random/eat3","random/explode1","random/explode2","random/explode3","random/explode4","random/fizz","random/fuse","random/glass1","random/glass2","random/glass3","random/levelup","random/orb","random/pop","random/splash","random/successful_hit","random/wood_click","records/11","records/13","records/5","records/blocks","records/cat","records/chirp","records/creator","records/creator_music_box","records/far","records/lava_chicken","records/mall","records/mellohi","records/otherside","records/pigstep","records/precipice","records/relic","records/stal","records/strad","records/tears","records/wait","records/ward","step/cloth1","step/cloth2","step/cloth3","step/cloth4","step/coral1","step/coral2","step/coral3","step/coral4","step/coral5","step/coral6","step/grass1","step/grass2","step/grass3","step/grass4","step/grass5","step/grass6","step/gravel1","step/gravel2","step/gravel3","step/gravel4","step/ladder1","step/ladder2","step/ladder3","step/ladder4","step/ladder5","step/sand1","step/sand2","step/sand3","step/sand4","step/sand5","step/scaffold1","step/scaffold2","step/scaffold3","step/scaffold4","step/scaffold5","step/scaffold6","step/scaffold7","step/snow1","step/snow2","step/snow3","step/snow4","step/stone1","step/stone2","step/stone3","step/stone4","step/stone5","step/stone6","step/wet_grass1","step/wet_grass2","step/wet_grass3","step/wet_grass4","step/wet_grass5","step/wet_grass6","step/wood1","step/wood2","step/wood3","step/wood4","step/wood5","step/wood6","tile/piston/in","tile/piston/out","ui/cartography_table/drawmap1","ui/cartography_table/drawmap2","ui/cartography_table/drawmap3","ui/hud/hud_bubble","ui/loom/select_pattern1","ui/loom/select_pattern2","ui/loom/select_pattern3","ui/loom/select_pattern4","ui/loom/select_pattern5","ui/loom/take_result1","ui/loom/take_result2","ui/stonecutter/cut1","ui/stonecutter/cut2","ui/toast/challenge_complete","ui/toast/in","ui/toast/out"] \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/_list.json b/common-files/src/main/resources/internal/textures/_list.json deleted file mode 100644 index 23a92e099..000000000 --- a/common-files/src/main/resources/internal/textures/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":["block","colormap","effect","entity","environment","font","gui","item","map","misc","mob_effect","painting","particle","trims"],"files":[]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/block/_list.json b/common-files/src/main/resources/internal/textures/block/_list.json deleted file mode 100644 index b2de739a7..000000000 --- a/common-files/src/main/resources/internal/textures/block/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["acacia_door_bottom.png","acacia_door_top.png","acacia_leaves.png","acacia_log.png","acacia_log_top.png","acacia_planks.png","acacia_sapling.png","acacia_trapdoor.png","activator_rail.png","activator_rail_on.png","allium.png","amethyst_block.png","amethyst_cluster.png","ancient_debris_side.png","ancient_debris_top.png","andesite.png","anvil.png","anvil_top.png","attached_melon_stem.png","attached_pumpkin_stem.png","azalea_leaves.png","azalea_plant.png","azalea_side.png","azalea_top.png","azure_bluet.png","bamboo_block.png","bamboo_block_top.png","bamboo_door_bottom.png","bamboo_door_top.png","bamboo_fence.png","bamboo_fence_gate.png","bamboo_fence_gate_particle.png","bamboo_fence_particle.png","bamboo_large_leaves.png","bamboo_mosaic.png","bamboo_planks.png","bamboo_singleleaf.png","bamboo_small_leaves.png","bamboo_stage0.png","bamboo_stalk.png","bamboo_trapdoor.png","barrel_bottom.png","barrel_side.png","barrel_top.png","barrel_top_open.png","basalt_side.png","basalt_top.png","beacon.png","bedrock.png","bee_nest_bottom.png","bee_nest_front.png","bee_nest_front_honey.png","bee_nest_side.png","bee_nest_top.png","beehive_end.png","beehive_front.png","beehive_front_honey.png","beehive_side.png","beetroots_stage0.png","beetroots_stage1.png","beetroots_stage2.png","beetroots_stage3.png","bell_bottom.png","bell_side.png","bell_top.png","big_dripleaf_side.png","big_dripleaf_stem.png","big_dripleaf_tip.png","big_dripleaf_top.png","birch_door_bottom.png","birch_door_top.png","birch_leaves.png","birch_log.png","birch_log_top.png","birch_planks.png","birch_sapling.png","birch_trapdoor.png","black_candle.png","black_candle_lit.png","black_concrete.png","black_concrete_powder.png","black_glazed_terracotta.png","black_shulker_box.png","black_stained_glass.png","black_stained_glass_pane_top.png","black_terracotta.png","black_wool.png","blackstone.png","blackstone_top.png","blast_furnace_front.png","blast_furnace_front_on.png","blast_furnace_front_on.png.mcmeta","blast_furnace_side.png","blast_furnace_top.png","blue_candle.png","blue_candle_lit.png","blue_concrete.png","blue_concrete_powder.png","blue_glazed_terracotta.png","blue_ice.png","blue_orchid.png","blue_shulker_box.png","blue_stained_glass.png","blue_stained_glass_pane_top.png","blue_terracotta.png","blue_wool.png","bone_block_side.png","bone_block_top.png","bookshelf.png","brain_coral.png","brain_coral_block.png","brain_coral_fan.png","brewing_stand.png","brewing_stand_base.png","bricks.png","brown_candle.png","brown_candle_lit.png","brown_concrete.png","brown_concrete_powder.png","brown_glazed_terracotta.png","brown_mushroom.png","brown_mushroom_block.png","brown_shulker_box.png","brown_stained_glass.png","brown_stained_glass_pane_top.png","brown_terracotta.png","brown_wool.png","bubble_coral.png","bubble_coral_block.png","bubble_coral_fan.png","budding_amethyst.png","bush.png","cactus_bottom.png","cactus_flower.png","cactus_side.png","cactus_top.png","cake_bottom.png","cake_inner.png","cake_side.png","cake_top.png","calcite.png","calibrated_sculk_sensor_amethyst.png","calibrated_sculk_sensor_input_side.png","calibrated_sculk_sensor_top.png","campfire_fire.png","campfire_fire.png.mcmeta","campfire_log.png","campfire_log_lit.png","campfire_log_lit.png.mcmeta","candle.png","candle_lit.png","carrots_stage0.png","carrots_stage1.png","carrots_stage2.png","carrots_stage3.png","cartography_table_side1.png","cartography_table_side2.png","cartography_table_side3.png","cartography_table_top.png","carved_pumpkin.png","cauldron_bottom.png","cauldron_inner.png","cauldron_side.png","cauldron_top.png","cave_vines.png","cave_vines_lit.png","cave_vines_plant.png","cave_vines_plant_lit.png","chain.png","chain_command_block_back.png","chain_command_block_back.png.mcmeta","chain_command_block_conditional.png","chain_command_block_conditional.png.mcmeta","chain_command_block_front.png","chain_command_block_front.png.mcmeta","chain_command_block_side.png","chain_command_block_side.png.mcmeta","cherry_door_bottom.png","cherry_door_top.png","cherry_leaves.png","cherry_log.png","cherry_log_top.png","cherry_planks.png","cherry_sapling.png","cherry_trapdoor.png","chipped_anvil_top.png","chiseled_bookshelf_empty.png","chiseled_bookshelf_occupied.png","chiseled_bookshelf_side.png","chiseled_bookshelf_top.png","chiseled_copper.png","chiseled_deepslate.png","chiseled_nether_bricks.png","chiseled_polished_blackstone.png","chiseled_quartz_block.png","chiseled_quartz_block_top.png","chiseled_red_sandstone.png","chiseled_resin_bricks.png","chiseled_sandstone.png","chiseled_stone_bricks.png","chiseled_tuff.png","chiseled_tuff_bricks.png","chiseled_tuff_bricks_top.png","chiseled_tuff_top.png","chorus_flower.png","chorus_flower_dead.png","chorus_plant.png","clay.png","closed_eyeblossom.png","coal_block.png","coal_ore.png","coarse_dirt.png","cobbled_deepslate.png","cobblestone.png","cobweb.png","cocoa_stage0.png","cocoa_stage1.png","cocoa_stage2.png","command_block_back.png","command_block_back.png.mcmeta","command_block_conditional.png","command_block_conditional.png.mcmeta","command_block_front.png","command_block_front.png.mcmeta","command_block_side.png","command_block_side.png.mcmeta","comparator.png","comparator_on.png","composter_bottom.png","composter_compost.png","composter_ready.png","composter_side.png","composter_top.png","conduit.png","copper_block.png","copper_bulb.png","copper_bulb_lit.png","copper_bulb_lit_powered.png","copper_bulb_powered.png","copper_door_bottom.png","copper_door_top.png","copper_grate.png","copper_ore.png","copper_trapdoor.png","cornflower.png","cracked_deepslate_bricks.png","cracked_deepslate_tiles.png","cracked_nether_bricks.png","cracked_polished_blackstone_bricks.png","cracked_stone_bricks.png","crafter_bottom.png","crafter_east.png","crafter_east_crafting.png","crafter_east_triggered.png","crafter_north.png","crafter_north_crafting.png","crafter_south.png","crafter_south_triggered.png","crafter_top.png","crafter_top_crafting.png","crafter_top_triggered.png","crafter_west.png","crafter_west_crafting.png","crafter_west_triggered.png","crafting_table_front.png","crafting_table_side.png","crafting_table_top.png","creaking_heart.png","creaking_heart_awake.png","creaking_heart_dormant.png","creaking_heart_top.png","creaking_heart_top_awake.png","creaking_heart_top_dormant.png","crimson_door_bottom.png","crimson_door_top.png","crimson_fungus.png","crimson_nylium.png","crimson_nylium_side.png","crimson_planks.png","crimson_roots.png","crimson_roots_pot.png","crimson_stem.png","crimson_stem.png.mcmeta","crimson_stem_top.png","crimson_trapdoor.png","crying_obsidian.png","cut_copper.png","cut_red_sandstone.png","cut_sandstone.png","cyan_candle.png","cyan_candle_lit.png","cyan_concrete.png","cyan_concrete_powder.png","cyan_glazed_terracotta.png","cyan_shulker_box.png","cyan_stained_glass.png","cyan_stained_glass_pane_top.png","cyan_terracotta.png","cyan_wool.png","damaged_anvil_top.png","dandelion.png","dark_oak_door_bottom.png","dark_oak_door_top.png","dark_oak_leaves.png","dark_oak_log.png","dark_oak_log_top.png","dark_oak_planks.png","dark_oak_sapling.png","dark_oak_trapdoor.png","dark_prismarine.png","daylight_detector_inverted_top.png","daylight_detector_side.png","daylight_detector_top.png","dead_brain_coral.png","dead_brain_coral_block.png","dead_brain_coral_fan.png","dead_bubble_coral.png","dead_bubble_coral_block.png","dead_bubble_coral_fan.png","dead_bush.png","dead_fire_coral.png","dead_fire_coral_block.png","dead_fire_coral_fan.png","dead_horn_coral.png","dead_horn_coral_block.png","dead_horn_coral_fan.png","dead_tube_coral.png","dead_tube_coral_block.png","dead_tube_coral_fan.png","debug.png","debug2.png","deepslate.png","deepslate_bricks.png","deepslate_coal_ore.png","deepslate_copper_ore.png","deepslate_diamond_ore.png","deepslate_emerald_ore.png","deepslate_gold_ore.png","deepslate_iron_ore.png","deepslate_lapis_ore.png","deepslate_redstone_ore.png","deepslate_tiles.png","deepslate_top.png","destroy_stage_0.png","destroy_stage_1.png","destroy_stage_2.png","destroy_stage_3.png","destroy_stage_4.png","destroy_stage_5.png","destroy_stage_6.png","destroy_stage_7.png","destroy_stage_8.png","destroy_stage_9.png","detector_rail.png","detector_rail_on.png","diamond_block.png","diamond_ore.png","diorite.png","dirt.png","dirt_path_side.png","dirt_path_top.png","dispenser_front.png","dispenser_front_vertical.png","dragon_egg.png","dried_ghast_hydration_0_bottom.png","dried_ghast_hydration_0_east.png","dried_ghast_hydration_0_north.png","dried_ghast_hydration_0_south.png","dried_ghast_hydration_0_tentacles.png","dried_ghast_hydration_0_top.png","dried_ghast_hydration_0_west.png","dried_ghast_hydration_1_bottom.png","dried_ghast_hydration_1_east.png","dried_ghast_hydration_1_north.png","dried_ghast_hydration_1_south.png","dried_ghast_hydration_1_tentacles.png","dried_ghast_hydration_1_top.png","dried_ghast_hydration_1_west.png","dried_ghast_hydration_2_bottom.png","dried_ghast_hydration_2_east.png","dried_ghast_hydration_2_north.png","dried_ghast_hydration_2_south.png","dried_ghast_hydration_2_tentacles.png","dried_ghast_hydration_2_top.png","dried_ghast_hydration_2_west.png","dried_ghast_hydration_3_bottom.png","dried_ghast_hydration_3_east.png","dried_ghast_hydration_3_north.png","dried_ghast_hydration_3_south.png","dried_ghast_hydration_3_tentacles.png","dried_ghast_hydration_3_top.png","dried_ghast_hydration_3_west.png","dried_kelp_bottom.png","dried_kelp_side.png","dried_kelp_top.png","dripstone_block.png","dropper_front.png","dropper_front_vertical.png","emerald_block.png","emerald_ore.png","enchanting_table_bottom.png","enchanting_table_side.png","enchanting_table_top.png","end_portal_frame_eye.png","end_portal_frame_side.png","end_portal_frame_top.png","end_rod.png","end_stone.png","end_stone_bricks.png","exposed_chiseled_copper.png","exposed_copper.png","exposed_copper_bulb.png","exposed_copper_bulb_lit.png","exposed_copper_bulb_lit_powered.png","exposed_copper_bulb_powered.png","exposed_copper_door_bottom.png","exposed_copper_door_top.png","exposed_copper_grate.png","exposed_copper_trapdoor.png","exposed_cut_copper.png","farmland.png","farmland_moist.png","fern.png","fire_0.png","fire_0.png.mcmeta","fire_1.png","fire_1.png.mcmeta","fire_coral.png","fire_coral_block.png","fire_coral_fan.png","firefly_bush.png","firefly_bush_emissive.png","firefly_bush_emissive.png.mcmeta","fletching_table_front.png","fletching_table_side.png","fletching_table_top.png","flower_pot.png","flowering_azalea_leaves.png","flowering_azalea_side.png","flowering_azalea_top.png","frogspawn.png","frosted_ice_0.png","frosted_ice_1.png","frosted_ice_2.png","frosted_ice_3.png","furnace_front.png","furnace_front_on.png","furnace_side.png","furnace_top.png","gilded_blackstone.png","glass.png","glass_pane_top.png","glow_item_frame.png","glow_lichen.png","glowstone.png","gold_block.png","gold_ore.png","granite.png","grass_block_side.png","grass_block_side_overlay.png","grass_block_snow.png","grass_block_top.png","gravel.png","gray_candle.png","gray_candle_lit.png","gray_concrete.png","gray_concrete_powder.png","gray_glazed_terracotta.png","gray_shulker_box.png","gray_stained_glass.png","gray_stained_glass_pane_top.png","gray_terracotta.png","gray_wool.png","green_candle.png","green_candle_lit.png","green_concrete.png","green_concrete_powder.png","green_glazed_terracotta.png","green_shulker_box.png","green_stained_glass.png","green_stained_glass_pane_top.png","green_terracotta.png","green_wool.png","grindstone_pivot.png","grindstone_round.png","grindstone_side.png","hanging_roots.png","hay_block_side.png","hay_block_top.png","heavy_core.png","honey_block_bottom.png","honey_block_side.png","honey_block_top.png","honeycomb_block.png","hopper_inside.png","hopper_outside.png","hopper_top.png","horn_coral.png","horn_coral_block.png","horn_coral_fan.png","ice.png","iron_bars.png","iron_block.png","iron_door_bottom.png","iron_door_top.png","iron_ore.png","iron_trapdoor.png","item_frame.png","jack_o_lantern.png","jigsaw_bottom.png","jigsaw_lock.png","jigsaw_side.png","jigsaw_top.png","jukebox_side.png","jukebox_top.png","jungle_door_bottom.png","jungle_door_top.png","jungle_leaves.png","jungle_log.png","jungle_log_top.png","jungle_planks.png","jungle_sapling.png","jungle_trapdoor.png","kelp.png","kelp.png.mcmeta","kelp_plant.png","kelp_plant.png.mcmeta","ladder.png","lantern.png","lantern.png.mcmeta","lapis_block.png","lapis_ore.png","large_amethyst_bud.png","large_fern_bottom.png","large_fern_top.png","lava_flow.png","lava_flow.png.mcmeta","lava_still.png","lava_still.png.mcmeta","leaf_litter.png","lectern_base.png","lectern_front.png","lectern_sides.png","lectern_top.png","lever.png","light_blue_candle.png","light_blue_candle_lit.png","light_blue_concrete.png","light_blue_concrete_powder.png","light_blue_glazed_terracotta.png","light_blue_shulker_box.png","light_blue_stained_glass.png","light_blue_stained_glass_pane_top.png","light_blue_terracotta.png","light_blue_wool.png","light_gray_candle.png","light_gray_candle_lit.png","light_gray_concrete.png","light_gray_concrete_powder.png","light_gray_glazed_terracotta.png","light_gray_shulker_box.png","light_gray_stained_glass.png","light_gray_stained_glass_pane_top.png","light_gray_terracotta.png","light_gray_wool.png","lightning_rod.png","lightning_rod_on.png","lilac_bottom.png","lilac_top.png","lily_of_the_valley.png","lily_pad.png","lime_candle.png","lime_candle_lit.png","lime_concrete.png","lime_concrete_powder.png","lime_glazed_terracotta.png","lime_shulker_box.png","lime_stained_glass.png","lime_stained_glass_pane_top.png","lime_terracotta.png","lime_wool.png","lodestone_side.png","lodestone_top.png","loom_bottom.png","loom_front.png","loom_side.png","loom_top.png","magenta_candle.png","magenta_candle_lit.png","magenta_concrete.png","magenta_concrete_powder.png","magenta_glazed_terracotta.png","magenta_shulker_box.png","magenta_stained_glass.png","magenta_stained_glass_pane_top.png","magenta_terracotta.png","magenta_wool.png","magma.png","magma.png.mcmeta","mangrove_door_bottom.png","mangrove_door_top.png","mangrove_leaves.png","mangrove_log.png","mangrove_log_top.png","mangrove_planks.png","mangrove_propagule.png","mangrove_propagule_hanging.png","mangrove_roots_side.png","mangrove_roots_top.png","mangrove_trapdoor.png","medium_amethyst_bud.png","melon_side.png","melon_stem.png","melon_top.png","moss_block.png","mossy_cobblestone.png","mossy_stone_bricks.png","mud.png","mud_bricks.png","muddy_mangrove_roots_side.png","muddy_mangrove_roots_top.png","mushroom_block_inside.png","mushroom_stem.png","mycelium_side.png","mycelium_top.png","nether_bricks.png","nether_gold_ore.png","nether_portal.png","nether_portal.png.mcmeta","nether_quartz_ore.png","nether_sprouts.png","nether_wart_block.png","nether_wart_stage0.png","nether_wart_stage1.png","nether_wart_stage2.png","netherite_block.png","netherrack.png","note_block.png","oak_door_bottom.png","oak_door_top.png","oak_leaves.png","oak_log.png","oak_log_top.png","oak_planks.png","oak_sapling.png","oak_trapdoor.png","observer_back.png","observer_back_on.png","observer_front.png","observer_side.png","observer_top.png","obsidian.png","ochre_froglight_side.png","ochre_froglight_top.png","open_eyeblossom.png","open_eyeblossom_emissive.png","orange_candle.png","orange_candle_lit.png","orange_concrete.png","orange_concrete_powder.png","orange_glazed_terracotta.png","orange_shulker_box.png","orange_stained_glass.png","orange_stained_glass_pane_top.png","orange_terracotta.png","orange_tulip.png","orange_wool.png","oxeye_daisy.png","oxidized_chiseled_copper.png","oxidized_copper.png","oxidized_copper_bulb.png","oxidized_copper_bulb_lit.png","oxidized_copper_bulb_lit_powered.png","oxidized_copper_bulb_powered.png","oxidized_copper_door_bottom.png","oxidized_copper_door_top.png","oxidized_copper_grate.png","oxidized_copper_trapdoor.png","oxidized_cut_copper.png","packed_ice.png","packed_mud.png","pale_hanging_moss.png","pale_hanging_moss_tip.png","pale_moss_block.png","pale_moss_carpet.png","pale_moss_carpet_side_small.png","pale_moss_carpet_side_tall.png","pale_oak_door_bottom.png","pale_oak_door_top.png","pale_oak_leaves.png","pale_oak_log.png","pale_oak_log_top.png","pale_oak_planks.png","pale_oak_sapling.png","pale_oak_trapdoor.png","pearlescent_froglight_side.png","pearlescent_froglight_top.png","peony_bottom.png","peony_top.png","pink_candle.png","pink_candle_lit.png","pink_concrete.png","pink_concrete_powder.png","pink_glazed_terracotta.png","pink_petals.png","pink_petals_stem.png","pink_shulker_box.png","pink_stained_glass.png","pink_stained_glass_pane_top.png","pink_terracotta.png","pink_tulip.png","pink_wool.png","piston_bottom.png","piston_inner.png","piston_side.png","piston_top.png","piston_top_sticky.png","pitcher_crop_bottom.png","pitcher_crop_bottom_stage_1.png","pitcher_crop_bottom_stage_2.png","pitcher_crop_bottom_stage_3.png","pitcher_crop_bottom_stage_4.png","pitcher_crop_side.png","pitcher_crop_top.png","pitcher_crop_top_stage_3.png","pitcher_crop_top_stage_4.png","podzol_side.png","podzol_top.png","pointed_dripstone_down_base.png","pointed_dripstone_down_frustum.png","pointed_dripstone_down_middle.png","pointed_dripstone_down_tip.png","pointed_dripstone_down_tip_merge.png","pointed_dripstone_up_base.png","pointed_dripstone_up_frustum.png","pointed_dripstone_up_middle.png","pointed_dripstone_up_tip.png","pointed_dripstone_up_tip_merge.png","polished_andesite.png","polished_basalt_side.png","polished_basalt_top.png","polished_blackstone.png","polished_blackstone_bricks.png","polished_deepslate.png","polished_diorite.png","polished_granite.png","polished_tuff.png","poppy.png","potatoes_stage0.png","potatoes_stage1.png","potatoes_stage2.png","potatoes_stage3.png","potted_azalea_bush_plant.png","potted_azalea_bush_side.png","potted_azalea_bush_top.png","potted_flowering_azalea_bush_plant.png","potted_flowering_azalea_bush_side.png","potted_flowering_azalea_bush_top.png","powder_snow.png","powered_rail.png","powered_rail_on.png","prismarine.png","prismarine.png.mcmeta","prismarine_bricks.png","pumpkin_side.png","pumpkin_stem.png","pumpkin_top.png","purple_candle.png","purple_candle_lit.png","purple_concrete.png","purple_concrete_powder.png","purple_glazed_terracotta.png","purple_shulker_box.png","purple_stained_glass.png","purple_stained_glass_pane_top.png","purple_terracotta.png","purple_wool.png","purpur_block.png","purpur_pillar.png","purpur_pillar_top.png","quartz_block_bottom.png","quartz_block_side.png","quartz_block_top.png","quartz_bricks.png","quartz_pillar.png","quartz_pillar_top.png","rail.png","rail_corner.png","raw_copper_block.png","raw_gold_block.png","raw_iron_block.png","red_candle.png","red_candle_lit.png","red_concrete.png","red_concrete_powder.png","red_glazed_terracotta.png","red_mushroom.png","red_mushroom_block.png","red_nether_bricks.png","red_sand.png","red_sandstone.png","red_sandstone_bottom.png","red_sandstone_top.png","red_shulker_box.png","red_stained_glass.png","red_stained_glass_pane_top.png","red_terracotta.png","red_tulip.png","red_wool.png","redstone_block.png","redstone_dust_dot.png","redstone_dust_line0.png","redstone_dust_line1.png","redstone_dust_overlay.png","redstone_lamp.png","redstone_lamp_on.png","redstone_ore.png","redstone_torch.png","redstone_torch_off.png","reinforced_deepslate_bottom.png","reinforced_deepslate_side.png","reinforced_deepslate_top.png","repeater.png","repeater_on.png","repeating_command_block_back.png","repeating_command_block_back.png.mcmeta","repeating_command_block_conditional.png","repeating_command_block_conditional.png.mcmeta","repeating_command_block_front.png","repeating_command_block_front.png.mcmeta","repeating_command_block_side.png","repeating_command_block_side.png.mcmeta","resin_block.png","resin_bricks.png","resin_clump.png","respawn_anchor_bottom.png","respawn_anchor_side0.png","respawn_anchor_side1.png","respawn_anchor_side2.png","respawn_anchor_side3.png","respawn_anchor_side4.png","respawn_anchor_top.png","respawn_anchor_top.png.mcmeta","respawn_anchor_top_off.png","rooted_dirt.png","rose_bush_bottom.png","rose_bush_top.png","sand.png","sandstone.png","sandstone_bottom.png","sandstone_top.png","scaffolding_bottom.png","scaffolding_side.png","scaffolding_top.png","sculk.png","sculk.png.mcmeta","sculk_catalyst_bottom.png","sculk_catalyst_side.png","sculk_catalyst_side_bloom.png","sculk_catalyst_side_bloom.png.mcmeta","sculk_catalyst_top.png","sculk_catalyst_top_bloom.png","sculk_catalyst_top_bloom.png.mcmeta","sculk_sensor_bottom.png","sculk_sensor_side.png","sculk_sensor_tendril_active.png","sculk_sensor_tendril_active.png.mcmeta","sculk_sensor_tendril_inactive.png","sculk_sensor_tendril_inactive.png.mcmeta","sculk_sensor_top.png","sculk_shrieker_bottom.png","sculk_shrieker_can_summon_inner_top.png","sculk_shrieker_can_summon_inner_top.png.mcmeta","sculk_shrieker_inner_top.png","sculk_shrieker_inner_top.png.mcmeta","sculk_shrieker_side.png","sculk_shrieker_top.png","sculk_vein.png","sculk_vein.png.mcmeta","sea_lantern.png","sea_lantern.png.mcmeta","sea_pickle.png","seagrass.png","seagrass.png.mcmeta","short_dry_grass.png","short_grass.png","shroomlight.png","shulker_box.png","slime_block.png","small_amethyst_bud.png","small_dripleaf_side.png","small_dripleaf_stem_bottom.png","small_dripleaf_stem_top.png","small_dripleaf_top.png","smithing_table_bottom.png","smithing_table_front.png","smithing_table_side.png","smithing_table_top.png","smoker_bottom.png","smoker_front.png","smoker_front_on.png","smoker_front_on.png.mcmeta","smoker_side.png","smoker_top.png","smooth_basalt.png","smooth_stone.png","smooth_stone_slab_side.png","sniffer_egg_not_cracked_bottom.png","sniffer_egg_not_cracked_east.png","sniffer_egg_not_cracked_north.png","sniffer_egg_not_cracked_south.png","sniffer_egg_not_cracked_top.png","sniffer_egg_not_cracked_west.png","sniffer_egg_slightly_cracked_bottom.png","sniffer_egg_slightly_cracked_east.png","sniffer_egg_slightly_cracked_north.png","sniffer_egg_slightly_cracked_south.png","sniffer_egg_slightly_cracked_top.png","sniffer_egg_slightly_cracked_west.png","sniffer_egg_very_cracked_bottom.png","sniffer_egg_very_cracked_east.png","sniffer_egg_very_cracked_north.png","sniffer_egg_very_cracked_south.png","sniffer_egg_very_cracked_top.png","sniffer_egg_very_cracked_west.png","snow.png","soul_campfire_fire.png","soul_campfire_fire.png.mcmeta","soul_campfire_log_lit.png","soul_campfire_log_lit.png.mcmeta","soul_fire_0.png","soul_fire_0.png.mcmeta","soul_fire_1.png","soul_fire_1.png.mcmeta","soul_lantern.png","soul_lantern.png.mcmeta","soul_sand.png","soul_soil.png","soul_torch.png","spawner.png","sponge.png","spore_blossom.png","spore_blossom_base.png","spruce_door_bottom.png","spruce_door_top.png","spruce_leaves.png","spruce_log.png","spruce_log_top.png","spruce_planks.png","spruce_sapling.png","spruce_trapdoor.png","stone.png","stone_bricks.png","stonecutter_bottom.png","stonecutter_saw.png","stonecutter_saw.png.mcmeta","stonecutter_side.png","stonecutter_top.png","stripped_acacia_log.png","stripped_acacia_log_top.png","stripped_bamboo_block.png","stripped_bamboo_block_top.png","stripped_birch_log.png","stripped_birch_log_top.png","stripped_cherry_log.png","stripped_cherry_log_top.png","stripped_crimson_stem.png","stripped_crimson_stem_top.png","stripped_dark_oak_log.png","stripped_dark_oak_log_top.png","stripped_jungle_log.png","stripped_jungle_log_top.png","stripped_mangrove_log.png","stripped_mangrove_log_top.png","stripped_oak_log.png","stripped_oak_log_top.png","stripped_pale_oak_log.png","stripped_pale_oak_log_top.png","stripped_spruce_log.png","stripped_spruce_log_top.png","stripped_warped_stem.png","stripped_warped_stem_top.png","structure_block.png","structure_block_corner.png","structure_block_data.png","structure_block_load.png","structure_block_save.png","sugar_cane.png","sunflower_back.png","sunflower_bottom.png","sunflower_front.png","sunflower_top.png","suspicious_gravel_0.png","suspicious_gravel_1.png","suspicious_gravel_2.png","suspicious_gravel_3.png","suspicious_sand_0.png","suspicious_sand_1.png","suspicious_sand_2.png","suspicious_sand_3.png","sweet_berry_bush_stage0.png","sweet_berry_bush_stage1.png","sweet_berry_bush_stage2.png","sweet_berry_bush_stage3.png","tall_dry_grass.png","tall_grass_bottom.png","tall_grass_top.png","tall_seagrass_bottom.png","tall_seagrass_bottom.png.mcmeta","tall_seagrass_top.png","tall_seagrass_top.png.mcmeta","target_side.png","target_top.png","terracotta.png","test_block_accept.png","test_block_fail.png","test_block_log.png","test_block_start.png","test_instance_block.png","tinted_glass.png","tnt_bottom.png","tnt_side.png","tnt_top.png","torch.png","torchflower.png","torchflower_crop_stage0.png","torchflower_crop_stage1.png","trial_spawner_bottom.png","trial_spawner_side_active.png","trial_spawner_side_active_ominous.png","trial_spawner_side_inactive.png","trial_spawner_side_inactive_ominous.png","trial_spawner_top_active.png","trial_spawner_top_active_ominous.png","trial_spawner_top_ejecting_reward.png","trial_spawner_top_ejecting_reward_ominous.png","trial_spawner_top_inactive.png","trial_spawner_top_inactive_ominous.png","tripwire.png","tripwire_hook.png","tube_coral.png","tube_coral_block.png","tube_coral_fan.png","tuff.png","tuff_bricks.png","turtle_egg.png","turtle_egg_slightly_cracked.png","turtle_egg_very_cracked.png","twisting_vines.png","twisting_vines_plant.png","vault_bottom.png","vault_bottom_ominous.png","vault_front_ejecting.png","vault_front_ejecting_ominous.png","vault_front_off.png","vault_front_off_ominous.png","vault_front_on.png","vault_front_on_ominous.png","vault_side_off.png","vault_side_off_ominous.png","vault_side_on.png","vault_side_on_ominous.png","vault_top.png","vault_top_ejecting.png","vault_top_ejecting_ominous.png","vault_top_ominous.png","verdant_froglight_side.png","verdant_froglight_top.png","vine.png","warped_door_bottom.png","warped_door_top.png","warped_fungus.png","warped_nylium.png","warped_nylium_side.png","warped_planks.png","warped_roots.png","warped_roots_pot.png","warped_stem.png","warped_stem.png.mcmeta","warped_stem_top.png","warped_trapdoor.png","warped_wart_block.png","water_flow.png","water_flow.png.mcmeta","water_overlay.png","water_still.png","water_still.png.mcmeta","weathered_chiseled_copper.png","weathered_copper.png","weathered_copper_bulb.png","weathered_copper_bulb_lit.png","weathered_copper_bulb_lit_powered.png","weathered_copper_bulb_powered.png","weathered_copper_door_bottom.png","weathered_copper_door_top.png","weathered_copper_grate.png","weathered_copper_trapdoor.png","weathered_cut_copper.png","weeping_vines.png","weeping_vines_plant.png","wet_sponge.png","wheat_stage0.png","wheat_stage1.png","wheat_stage2.png","wheat_stage3.png","wheat_stage4.png","wheat_stage5.png","wheat_stage6.png","wheat_stage7.png","white_candle.png","white_candle_lit.png","white_concrete.png","white_concrete_powder.png","white_glazed_terracotta.png","white_shulker_box.png","white_stained_glass.png","white_stained_glass_pane_top.png","white_terracotta.png","white_tulip.png","white_wool.png","wildflowers.png","wildflowers_stem.png","wither_rose.png","yellow_candle.png","yellow_candle_lit.png","yellow_concrete.png","yellow_concrete_powder.png","yellow_glazed_terracotta.png","yellow_shulker_box.png","yellow_stained_glass.png","yellow_stained_glass_pane_top.png","yellow_terracotta.png","yellow_wool.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/colormap/_list.json b/common-files/src/main/resources/internal/textures/colormap/_list.json deleted file mode 100644 index fd3061f96..000000000 --- a/common-files/src/main/resources/internal/textures/colormap/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["dry_foliage.png","foliage.png","grass.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/effect/_list.json b/common-files/src/main/resources/internal/textures/effect/_list.json deleted file mode 100644 index b7964a7e8..000000000 --- a/common-files/src/main/resources/internal/textures/effect/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["dither.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/_list.json b/common-files/src/main/resources/internal/textures/entity/_list.json deleted file mode 100644 index df6072166..000000000 --- a/common-files/src/main/resources/internal/textures/entity/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":["allay","armorstand","axolotl","banner","bear","bed","bee","bell","boat","breeze","camel","cat","chest","chest_boat","chicken","conduit","cow","creaking","creeper","decorated_pot","end_crystal","enderdragon","enderman","equipment","fish","fox","frog","ghast","goat","hoglin","horse","illager","iron_golem","llama","panda","parrot","pig","piglin","player","projectiles","rabbit","sheep","shield","shulker","signs","skeleton","slime","sniffer","spider","squid","strider","tadpole","turtle","villager","warden","wither","wolf","zombie","zombie_villager"],"files":["armadillo.png","banner_base.png","bat.png","beacon_beam.png","blaze.png","dolphin.png","enchanting_table_book.png","end_gateway_beam.png","end_portal.png","endermite.png","experience_orb.png","fishing_hook.png","guardian.png","guardian_beam.png","guardian_elder.png","lead_knot.png","minecart.png","phantom.png","phantom_eyes.png","shield_base.png","shield_base_nopattern.png","silverfish.png","snow_golem.png","spider_eyes.png","trident.png","trident_riptide.png","wandering_trader.png","witch.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/allay/_list.json b/common-files/src/main/resources/internal/textures/entity/allay/_list.json deleted file mode 100644 index 4b84e0759..000000000 --- a/common-files/src/main/resources/internal/textures/entity/allay/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["allay.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/armorstand/_list.json b/common-files/src/main/resources/internal/textures/entity/armorstand/_list.json deleted file mode 100644 index c9664e3db..000000000 --- a/common-files/src/main/resources/internal/textures/entity/armorstand/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["wood.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/axolotl/_list.json b/common-files/src/main/resources/internal/textures/entity/axolotl/_list.json deleted file mode 100644 index 6fcc3c555..000000000 --- a/common-files/src/main/resources/internal/textures/entity/axolotl/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["axolotl_blue.png","axolotl_cyan.png","axolotl_gold.png","axolotl_lucy.png","axolotl_wild.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/banner/_list.json b/common-files/src/main/resources/internal/textures/entity/banner/_list.json deleted file mode 100644 index 02dea7b61..000000000 --- a/common-files/src/main/resources/internal/textures/entity/banner/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["base.png","border.png","bricks.png","circle.png","creeper.png","cross.png","curly_border.png","diagonal_left.png","diagonal_right.png","diagonal_up_left.png","diagonal_up_right.png","flow.png","flower.png","globe.png","gradient.png","gradient_up.png","guster.png","half_horizontal.png","half_horizontal_bottom.png","half_vertical.png","half_vertical_right.png","mojang.png","piglin.png","rhombus.png","skull.png","small_stripes.png","square_bottom_left.png","square_bottom_right.png","square_top_left.png","square_top_right.png","straight_cross.png","stripe_bottom.png","stripe_center.png","stripe_downleft.png","stripe_downright.png","stripe_left.png","stripe_middle.png","stripe_right.png","stripe_top.png","triangle_bottom.png","triangle_top.png","triangles_bottom.png","triangles_top.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/bear/_list.json b/common-files/src/main/resources/internal/textures/entity/bear/_list.json deleted file mode 100644 index 604c3116a..000000000 --- a/common-files/src/main/resources/internal/textures/entity/bear/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["polarbear.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/bed/_list.json b/common-files/src/main/resources/internal/textures/entity/bed/_list.json deleted file mode 100644 index d8fd32e3e..000000000 --- a/common-files/src/main/resources/internal/textures/entity/bed/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["black.png","blue.png","brown.png","cyan.png","gray.png","green.png","light_blue.png","light_gray.png","lime.png","magenta.png","orange.png","pink.png","purple.png","red.png","white.png","yellow.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/bee/_list.json b/common-files/src/main/resources/internal/textures/entity/bee/_list.json deleted file mode 100644 index 5ae018a30..000000000 --- a/common-files/src/main/resources/internal/textures/entity/bee/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["bee.png","bee_angry.png","bee_angry_nectar.png","bee_nectar.png","bee_stinger.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/bell/_list.json b/common-files/src/main/resources/internal/textures/entity/bell/_list.json deleted file mode 100644 index 159c5031b..000000000 --- a/common-files/src/main/resources/internal/textures/entity/bell/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["bell_body.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/boat/_list.json b/common-files/src/main/resources/internal/textures/entity/boat/_list.json deleted file mode 100644 index 46a5ff587..000000000 --- a/common-files/src/main/resources/internal/textures/entity/boat/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["acacia.png","bamboo.png","birch.png","cherry.png","dark_oak.png","jungle.png","mangrove.png","oak.png","pale_oak.png","spruce.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/breeze/_list.json b/common-files/src/main/resources/internal/textures/entity/breeze/_list.json deleted file mode 100644 index e681d8b4b..000000000 --- a/common-files/src/main/resources/internal/textures/entity/breeze/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["breeze.png","breeze_eyes.png","breeze_wind.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/camel/_list.json b/common-files/src/main/resources/internal/textures/entity/camel/_list.json deleted file mode 100644 index 770128b32..000000000 --- a/common-files/src/main/resources/internal/textures/entity/camel/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["camel.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/cat/_list.json b/common-files/src/main/resources/internal/textures/entity/cat/_list.json deleted file mode 100644 index e51c0a28c..000000000 --- a/common-files/src/main/resources/internal/textures/entity/cat/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["all_black.png","black.png","british_shorthair.png","calico.png","cat_collar.png","jellie.png","ocelot.png","persian.png","ragdoll.png","red.png","siamese.png","tabby.png","white.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/chest/_list.json b/common-files/src/main/resources/internal/textures/entity/chest/_list.json deleted file mode 100644 index 16abd3651..000000000 --- a/common-files/src/main/resources/internal/textures/entity/chest/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["christmas.png","christmas_left.png","christmas_right.png","ender.png","normal.png","normal_left.png","normal_right.png","trapped.png","trapped_left.png","trapped_right.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/chest_boat/_list.json b/common-files/src/main/resources/internal/textures/entity/chest_boat/_list.json deleted file mode 100644 index 46a5ff587..000000000 --- a/common-files/src/main/resources/internal/textures/entity/chest_boat/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["acacia.png","bamboo.png","birch.png","cherry.png","dark_oak.png","jungle.png","mangrove.png","oak.png","pale_oak.png","spruce.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/chicken/_list.json b/common-files/src/main/resources/internal/textures/entity/chicken/_list.json deleted file mode 100644 index 7e8ceb878..000000000 --- a/common-files/src/main/resources/internal/textures/entity/chicken/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["cold_chicken.png","temperate_chicken.png","warm_chicken.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/conduit/_list.json b/common-files/src/main/resources/internal/textures/entity/conduit/_list.json deleted file mode 100644 index 932a0a3f9..000000000 --- a/common-files/src/main/resources/internal/textures/entity/conduit/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["base.png","break_particle.png","cage.png","closed_eye.png","open_eye.png","wind.png","wind.png.mcmeta","wind_vertical.png","wind_vertical.png.mcmeta"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/cow/_list.json b/common-files/src/main/resources/internal/textures/entity/cow/_list.json deleted file mode 100644 index 1e5b91ac4..000000000 --- a/common-files/src/main/resources/internal/textures/entity/cow/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["brown_mooshroom.png","cold_cow.png","red_mooshroom.png","temperate_cow.png","warm_cow.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/creaking/_list.json b/common-files/src/main/resources/internal/textures/entity/creaking/_list.json deleted file mode 100644 index 344c44c3b..000000000 --- a/common-files/src/main/resources/internal/textures/entity/creaking/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["creaking.png","creaking_eyes.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/creeper/_list.json b/common-files/src/main/resources/internal/textures/entity/creeper/_list.json deleted file mode 100644 index c300b9b6f..000000000 --- a/common-files/src/main/resources/internal/textures/entity/creeper/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["creeper.png","creeper_armor.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/decorated_pot/_list.json b/common-files/src/main/resources/internal/textures/entity/decorated_pot/_list.json deleted file mode 100644 index 8dd45ed1e..000000000 --- a/common-files/src/main/resources/internal/textures/entity/decorated_pot/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["angler_pottery_pattern.png","archer_pottery_pattern.png","arms_up_pottery_pattern.png","blade_pottery_pattern.png","brewer_pottery_pattern.png","burn_pottery_pattern.png","danger_pottery_pattern.png","decorated_pot_base.png","decorated_pot_side.png","explorer_pottery_pattern.png","flow_pottery_pattern.png","friend_pottery_pattern.png","guster_pottery_pattern.png","heart_pottery_pattern.png","heartbreak_pottery_pattern.png","howl_pottery_pattern.png","miner_pottery_pattern.png","mourner_pottery_pattern.png","plenty_pottery_pattern.png","prize_pottery_pattern.png","scrape_pottery_pattern.png","sheaf_pottery_pattern.png","shelter_pottery_pattern.png","skull_pottery_pattern.png","snort_pottery_pattern.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/end_crystal/_list.json b/common-files/src/main/resources/internal/textures/entity/end_crystal/_list.json deleted file mode 100644 index c60d817e2..000000000 --- a/common-files/src/main/resources/internal/textures/entity/end_crystal/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["end_crystal.png","end_crystal_beam.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/enderdragon/_list.json b/common-files/src/main/resources/internal/textures/entity/enderdragon/_list.json deleted file mode 100644 index c22c3a70f..000000000 --- a/common-files/src/main/resources/internal/textures/entity/enderdragon/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["dragon.png","dragon_exploding.png","dragon_eyes.png","dragon_fireball.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/enderman/_list.json b/common-files/src/main/resources/internal/textures/entity/enderman/_list.json deleted file mode 100644 index fea7ba8d3..000000000 --- a/common-files/src/main/resources/internal/textures/entity/enderman/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["enderman.png","enderman_eyes.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/equipment/_list.json b/common-files/src/main/resources/internal/textures/entity/equipment/_list.json deleted file mode 100644 index 08aee7726..000000000 --- a/common-files/src/main/resources/internal/textures/entity/equipment/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":["camel_saddle","donkey_saddle","happy_ghast_body","horse_body","horse_saddle","humanoid","humanoid_leggings","llama_body","mule_saddle","pig_saddle","skeleton_horse_saddle","strider_saddle","wings","wolf_body","zombie_horse_saddle"],"files":[]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/equipment/camel_saddle/_list.json b/common-files/src/main/resources/internal/textures/entity/equipment/camel_saddle/_list.json deleted file mode 100644 index b7f1238d5..000000000 --- a/common-files/src/main/resources/internal/textures/entity/equipment/camel_saddle/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["saddle.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/equipment/donkey_saddle/_list.json b/common-files/src/main/resources/internal/textures/entity/equipment/donkey_saddle/_list.json deleted file mode 100644 index b7f1238d5..000000000 --- a/common-files/src/main/resources/internal/textures/entity/equipment/donkey_saddle/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["saddle.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/equipment/happy_ghast_body/_list.json b/common-files/src/main/resources/internal/textures/entity/equipment/happy_ghast_body/_list.json deleted file mode 100644 index 290eb50e0..000000000 --- a/common-files/src/main/resources/internal/textures/entity/equipment/happy_ghast_body/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["black_harness.png","blue_harness.png","brown_harness.png","cyan_harness.png","gray_harness.png","green_harness.png","light_blue_harness.png","light_gray_harness.png","lime_harness.png","magenta_harness.png","orange_harness.png","pink_harness.png","purple_harness.png","red_harness.png","white_harness.png","yellow_harness.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/equipment/horse_body/_list.json b/common-files/src/main/resources/internal/textures/entity/equipment/horse_body/_list.json deleted file mode 100644 index 72b60f36b..000000000 --- a/common-files/src/main/resources/internal/textures/entity/equipment/horse_body/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["diamond.png","gold.png","iron.png","leather.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/equipment/horse_saddle/_list.json b/common-files/src/main/resources/internal/textures/entity/equipment/horse_saddle/_list.json deleted file mode 100644 index b7f1238d5..000000000 --- a/common-files/src/main/resources/internal/textures/entity/equipment/horse_saddle/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["saddle.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/equipment/humanoid/_list.json b/common-files/src/main/resources/internal/textures/entity/equipment/humanoid/_list.json deleted file mode 100644 index 53e6a8655..000000000 --- a/common-files/src/main/resources/internal/textures/entity/equipment/humanoid/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["chainmail.png","diamond.png","gold.png","iron.png","leather.png","leather_overlay.png","netherite.png","turtle_scute.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/equipment/humanoid_leggings/_list.json b/common-files/src/main/resources/internal/textures/entity/equipment/humanoid_leggings/_list.json deleted file mode 100644 index 28c51fb23..000000000 --- a/common-files/src/main/resources/internal/textures/entity/equipment/humanoid_leggings/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["chainmail.png","diamond.png","gold.png","iron.png","leather.png","leather_overlay.png","netherite.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/equipment/llama_body/_list.json b/common-files/src/main/resources/internal/textures/entity/equipment/llama_body/_list.json deleted file mode 100644 index 2593c143d..000000000 --- a/common-files/src/main/resources/internal/textures/entity/equipment/llama_body/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["black.png","blue.png","brown.png","cyan.png","gray.png","green.png","light_blue.png","light_gray.png","lime.png","magenta.png","orange.png","pink.png","purple.png","red.png","trader_llama.png","white.png","yellow.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/equipment/mule_saddle/_list.json b/common-files/src/main/resources/internal/textures/entity/equipment/mule_saddle/_list.json deleted file mode 100644 index b7f1238d5..000000000 --- a/common-files/src/main/resources/internal/textures/entity/equipment/mule_saddle/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["saddle.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/equipment/pig_saddle/_list.json b/common-files/src/main/resources/internal/textures/entity/equipment/pig_saddle/_list.json deleted file mode 100644 index b7f1238d5..000000000 --- a/common-files/src/main/resources/internal/textures/entity/equipment/pig_saddle/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["saddle.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/equipment/skeleton_horse_saddle/_list.json b/common-files/src/main/resources/internal/textures/entity/equipment/skeleton_horse_saddle/_list.json deleted file mode 100644 index b7f1238d5..000000000 --- a/common-files/src/main/resources/internal/textures/entity/equipment/skeleton_horse_saddle/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["saddle.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/equipment/strider_saddle/_list.json b/common-files/src/main/resources/internal/textures/entity/equipment/strider_saddle/_list.json deleted file mode 100644 index b7f1238d5..000000000 --- a/common-files/src/main/resources/internal/textures/entity/equipment/strider_saddle/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["saddle.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/equipment/wings/_list.json b/common-files/src/main/resources/internal/textures/entity/equipment/wings/_list.json deleted file mode 100644 index d45d2352d..000000000 --- a/common-files/src/main/resources/internal/textures/entity/equipment/wings/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["elytra.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/equipment/wolf_body/_list.json b/common-files/src/main/resources/internal/textures/entity/equipment/wolf_body/_list.json deleted file mode 100644 index 1db139a97..000000000 --- a/common-files/src/main/resources/internal/textures/entity/equipment/wolf_body/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["armadillo_scute.png","armadillo_scute_overlay.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/equipment/zombie_horse_saddle/_list.json b/common-files/src/main/resources/internal/textures/entity/equipment/zombie_horse_saddle/_list.json deleted file mode 100644 index b7f1238d5..000000000 --- a/common-files/src/main/resources/internal/textures/entity/equipment/zombie_horse_saddle/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["saddle.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/fish/_list.json b/common-files/src/main/resources/internal/textures/entity/fish/_list.json deleted file mode 100644 index bc6f96eef..000000000 --- a/common-files/src/main/resources/internal/textures/entity/fish/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["cod.png","pufferfish.png","salmon.png","tropical_a.png","tropical_a_pattern_1.png","tropical_a_pattern_2.png","tropical_a_pattern_3.png","tropical_a_pattern_4.png","tropical_a_pattern_5.png","tropical_a_pattern_6.png","tropical_b.png","tropical_b_pattern_1.png","tropical_b_pattern_2.png","tropical_b_pattern_3.png","tropical_b_pattern_4.png","tropical_b_pattern_5.png","tropical_b_pattern_6.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/fox/_list.json b/common-files/src/main/resources/internal/textures/entity/fox/_list.json deleted file mode 100644 index 320e3dae2..000000000 --- a/common-files/src/main/resources/internal/textures/entity/fox/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["fox.png","fox_sleep.png","snow_fox.png","snow_fox_sleep.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/frog/_list.json b/common-files/src/main/resources/internal/textures/entity/frog/_list.json deleted file mode 100644 index 8b019a6f2..000000000 --- a/common-files/src/main/resources/internal/textures/entity/frog/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["cold_frog.png","temperate_frog.png","warm_frog.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/ghast/_list.json b/common-files/src/main/resources/internal/textures/entity/ghast/_list.json deleted file mode 100644 index d5a30ad8f..000000000 --- a/common-files/src/main/resources/internal/textures/entity/ghast/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["ghast.png","ghast_shooting.png","happy_ghast.png","happy_ghast_baby.png","happy_ghast_ropes.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/goat/_list.json b/common-files/src/main/resources/internal/textures/entity/goat/_list.json deleted file mode 100644 index 58f641aa2..000000000 --- a/common-files/src/main/resources/internal/textures/entity/goat/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["goat.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/hoglin/_list.json b/common-files/src/main/resources/internal/textures/entity/hoglin/_list.json deleted file mode 100644 index a20b41a1d..000000000 --- a/common-files/src/main/resources/internal/textures/entity/hoglin/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["hoglin.png","zoglin.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/horse/_list.json b/common-files/src/main/resources/internal/textures/entity/horse/_list.json deleted file mode 100644 index 9613d1423..000000000 --- a/common-files/src/main/resources/internal/textures/entity/horse/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["donkey.png","horse_black.png","horse_brown.png","horse_chestnut.png","horse_creamy.png","horse_darkbrown.png","horse_gray.png","horse_markings_blackdots.png","horse_markings_white.png","horse_markings_whitedots.png","horse_markings_whitefield.png","horse_skeleton.png","horse_white.png","horse_zombie.png","mule.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/illager/_list.json b/common-files/src/main/resources/internal/textures/entity/illager/_list.json deleted file mode 100644 index db15d5786..000000000 --- a/common-files/src/main/resources/internal/textures/entity/illager/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["evoker.png","evoker_fangs.png","illusioner.png","pillager.png","ravager.png","vex.png","vex_charging.png","vindicator.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/iron_golem/_list.json b/common-files/src/main/resources/internal/textures/entity/iron_golem/_list.json deleted file mode 100644 index 51c3aa9e3..000000000 --- a/common-files/src/main/resources/internal/textures/entity/iron_golem/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["iron_golem.png","iron_golem_crackiness_high.png","iron_golem_crackiness_low.png","iron_golem_crackiness_medium.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/llama/_list.json b/common-files/src/main/resources/internal/textures/entity/llama/_list.json deleted file mode 100644 index 66e40a5ae..000000000 --- a/common-files/src/main/resources/internal/textures/entity/llama/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["brown.png","creamy.png","gray.png","spit.png","white.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/panda/_list.json b/common-files/src/main/resources/internal/textures/entity/panda/_list.json deleted file mode 100644 index 594b1c532..000000000 --- a/common-files/src/main/resources/internal/textures/entity/panda/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["aggressive_panda.png","brown_panda.png","lazy_panda.png","panda.png","playful_panda.png","weak_panda.png","worried_panda.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/parrot/_list.json b/common-files/src/main/resources/internal/textures/entity/parrot/_list.json deleted file mode 100644 index 4f63b2e79..000000000 --- a/common-files/src/main/resources/internal/textures/entity/parrot/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["parrot_blue.png","parrot_green.png","parrot_grey.png","parrot_red_blue.png","parrot_yellow_blue.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/pig/_list.json b/common-files/src/main/resources/internal/textures/entity/pig/_list.json deleted file mode 100644 index 72a5cf3c5..000000000 --- a/common-files/src/main/resources/internal/textures/entity/pig/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["cold_pig.png","temperate_pig.png","warm_pig.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/piglin/_list.json b/common-files/src/main/resources/internal/textures/entity/piglin/_list.json deleted file mode 100644 index 245d48595..000000000 --- a/common-files/src/main/resources/internal/textures/entity/piglin/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["piglin.png","piglin_brute.png","zombified_piglin.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/player/_list.json b/common-files/src/main/resources/internal/textures/entity/player/_list.json deleted file mode 100644 index 281e580c3..000000000 --- a/common-files/src/main/resources/internal/textures/entity/player/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":["slim","wide"],"files":[]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/player/slim/_list.json b/common-files/src/main/resources/internal/textures/entity/player/slim/_list.json deleted file mode 100644 index c92ed32f5..000000000 --- a/common-files/src/main/resources/internal/textures/entity/player/slim/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["alex.png","ari.png","efe.png","kai.png","makena.png","noor.png","steve.png","sunny.png","zuri.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/player/wide/_list.json b/common-files/src/main/resources/internal/textures/entity/player/wide/_list.json deleted file mode 100644 index c92ed32f5..000000000 --- a/common-files/src/main/resources/internal/textures/entity/player/wide/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["alex.png","ari.png","efe.png","kai.png","makena.png","noor.png","steve.png","sunny.png","zuri.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/projectiles/_list.json b/common-files/src/main/resources/internal/textures/entity/projectiles/_list.json deleted file mode 100644 index 55bf4ee20..000000000 --- a/common-files/src/main/resources/internal/textures/entity/projectiles/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["arrow.png","spectral_arrow.png","tipped_arrow.png","wind_charge.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/rabbit/_list.json b/common-files/src/main/resources/internal/textures/entity/rabbit/_list.json deleted file mode 100644 index 7ff22481e..000000000 --- a/common-files/src/main/resources/internal/textures/entity/rabbit/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["black.png","brown.png","caerbannog.png","gold.png","salt.png","toast.png","white.png","white_splotched.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/sheep/_list.json b/common-files/src/main/resources/internal/textures/entity/sheep/_list.json deleted file mode 100644 index 7545044da..000000000 --- a/common-files/src/main/resources/internal/textures/entity/sheep/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["sheep.png","sheep_wool.png","sheep_wool_undercoat.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/shield/_list.json b/common-files/src/main/resources/internal/textures/entity/shield/_list.json deleted file mode 100644 index 02dea7b61..000000000 --- a/common-files/src/main/resources/internal/textures/entity/shield/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["base.png","border.png","bricks.png","circle.png","creeper.png","cross.png","curly_border.png","diagonal_left.png","diagonal_right.png","diagonal_up_left.png","diagonal_up_right.png","flow.png","flower.png","globe.png","gradient.png","gradient_up.png","guster.png","half_horizontal.png","half_horizontal_bottom.png","half_vertical.png","half_vertical_right.png","mojang.png","piglin.png","rhombus.png","skull.png","small_stripes.png","square_bottom_left.png","square_bottom_right.png","square_top_left.png","square_top_right.png","straight_cross.png","stripe_bottom.png","stripe_center.png","stripe_downleft.png","stripe_downright.png","stripe_left.png","stripe_middle.png","stripe_right.png","stripe_top.png","triangle_bottom.png","triangle_top.png","triangles_bottom.png","triangles_top.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/shulker/_list.json b/common-files/src/main/resources/internal/textures/entity/shulker/_list.json deleted file mode 100644 index e69a9ac97..000000000 --- a/common-files/src/main/resources/internal/textures/entity/shulker/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["shulker.png","shulker_black.png","shulker_blue.png","shulker_brown.png","shulker_cyan.png","shulker_gray.png","shulker_green.png","shulker_light_blue.png","shulker_light_gray.png","shulker_lime.png","shulker_magenta.png","shulker_orange.png","shulker_pink.png","shulker_purple.png","shulker_red.png","shulker_white.png","shulker_yellow.png","spark.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/signs/_list.json b/common-files/src/main/resources/internal/textures/entity/signs/_list.json deleted file mode 100644 index 234a278ed..000000000 --- a/common-files/src/main/resources/internal/textures/entity/signs/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":["hanging"],"files":["acacia.png","bamboo.png","birch.png","cherry.png","crimson.png","dark_oak.png","jungle.png","mangrove.png","oak.png","pale_oak.png","spruce.png","warped.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/signs/hanging/_list.json b/common-files/src/main/resources/internal/textures/entity/signs/hanging/_list.json deleted file mode 100644 index 01b318f31..000000000 --- a/common-files/src/main/resources/internal/textures/entity/signs/hanging/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["acacia.png","bamboo.png","birch.png","cherry.png","crimson.png","dark_oak.png","jungle.png","mangrove.png","oak.png","pale_oak.png","spruce.png","warped.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/skeleton/_list.json b/common-files/src/main/resources/internal/textures/entity/skeleton/_list.json deleted file mode 100644 index 12a88023d..000000000 --- a/common-files/src/main/resources/internal/textures/entity/skeleton/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["bogged.png","bogged_overlay.png","skeleton.png","stray.png","stray_overlay.png","wither_skeleton.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/slime/_list.json b/common-files/src/main/resources/internal/textures/entity/slime/_list.json deleted file mode 100644 index 63730a800..000000000 --- a/common-files/src/main/resources/internal/textures/entity/slime/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["magmacube.png","slime.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/sniffer/_list.json b/common-files/src/main/resources/internal/textures/entity/sniffer/_list.json deleted file mode 100644 index 3897fab4d..000000000 --- a/common-files/src/main/resources/internal/textures/entity/sniffer/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["sniffer.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/spider/_list.json b/common-files/src/main/resources/internal/textures/entity/spider/_list.json deleted file mode 100644 index f45ff752b..000000000 --- a/common-files/src/main/resources/internal/textures/entity/spider/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["cave_spider.png","spider.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/squid/_list.json b/common-files/src/main/resources/internal/textures/entity/squid/_list.json deleted file mode 100644 index 74da4a96d..000000000 --- a/common-files/src/main/resources/internal/textures/entity/squid/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["glow_squid.png","squid.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/strider/_list.json b/common-files/src/main/resources/internal/textures/entity/strider/_list.json deleted file mode 100644 index 2e88186eb..000000000 --- a/common-files/src/main/resources/internal/textures/entity/strider/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["strider.png","strider_cold.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/tadpole/_list.json b/common-files/src/main/resources/internal/textures/entity/tadpole/_list.json deleted file mode 100644 index a95050a5f..000000000 --- a/common-files/src/main/resources/internal/textures/entity/tadpole/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["tadpole.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/turtle/_list.json b/common-files/src/main/resources/internal/textures/entity/turtle/_list.json deleted file mode 100644 index ddb182b27..000000000 --- a/common-files/src/main/resources/internal/textures/entity/turtle/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["big_sea_turtle.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/villager/_list.json b/common-files/src/main/resources/internal/textures/entity/villager/_list.json deleted file mode 100644 index 430228faa..000000000 --- a/common-files/src/main/resources/internal/textures/entity/villager/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":["profession","profession_level","type"],"files":["villager.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/villager/profession/_list.json b/common-files/src/main/resources/internal/textures/entity/villager/profession/_list.json deleted file mode 100644 index fab07c7a9..000000000 --- a/common-files/src/main/resources/internal/textures/entity/villager/profession/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["armorer.png","butcher.png","butcher.png.mcmeta","cartographer.png","cleric.png","farmer.png","farmer.png.mcmeta","fisherman.png","fisherman.png.mcmeta","fletcher.png","fletcher.png.mcmeta","leatherworker.png","librarian.png","librarian.png.mcmeta","mason.png","nitwit.png","shepherd.png","shepherd.png.mcmeta","toolsmith.png","weaponsmith.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/villager/profession_level/_list.json b/common-files/src/main/resources/internal/textures/entity/villager/profession_level/_list.json deleted file mode 100644 index f7755ab5d..000000000 --- a/common-files/src/main/resources/internal/textures/entity/villager/profession_level/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["diamond.png","emerald.png","gold.png","iron.png","stone.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/villager/type/_list.json b/common-files/src/main/resources/internal/textures/entity/villager/type/_list.json deleted file mode 100644 index 955f2f36f..000000000 --- a/common-files/src/main/resources/internal/textures/entity/villager/type/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["desert.png","desert.png.mcmeta","jungle.png","plains.png","savanna.png","snow.png","snow.png.mcmeta","swamp.png","taiga.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/warden/_list.json b/common-files/src/main/resources/internal/textures/entity/warden/_list.json deleted file mode 100644 index af8aee6ab..000000000 --- a/common-files/src/main/resources/internal/textures/entity/warden/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["warden.png","warden_bioluminescent_layer.png","warden_heart.png","warden_pulsating_spots_1.png","warden_pulsating_spots_2.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/wither/_list.json b/common-files/src/main/resources/internal/textures/entity/wither/_list.json deleted file mode 100644 index 6f8da04a6..000000000 --- a/common-files/src/main/resources/internal/textures/entity/wither/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["wither.png","wither_armor.png","wither_invulnerable.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/wolf/_list.json b/common-files/src/main/resources/internal/textures/entity/wolf/_list.json deleted file mode 100644 index 60a55f125..000000000 --- a/common-files/src/main/resources/internal/textures/entity/wolf/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["wolf.png","wolf_angry.png","wolf_armor_crackiness_high.png","wolf_armor_crackiness_low.png","wolf_armor_crackiness_medium.png","wolf_ashen.png","wolf_ashen_angry.png","wolf_ashen_tame.png","wolf_black.png","wolf_black_angry.png","wolf_black_tame.png","wolf_chestnut.png","wolf_chestnut_angry.png","wolf_chestnut_tame.png","wolf_collar.png","wolf_rusty.png","wolf_rusty_angry.png","wolf_rusty_tame.png","wolf_snowy.png","wolf_snowy_angry.png","wolf_snowy_tame.png","wolf_spotted.png","wolf_spotted_angry.png","wolf_spotted_tame.png","wolf_striped.png","wolf_striped_angry.png","wolf_striped_tame.png","wolf_tame.png","wolf_woods.png","wolf_woods_angry.png","wolf_woods_tame.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/zombie/_list.json b/common-files/src/main/resources/internal/textures/entity/zombie/_list.json deleted file mode 100644 index 6b15d775b..000000000 --- a/common-files/src/main/resources/internal/textures/entity/zombie/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["drowned.png","drowned_outer_layer.png","husk.png","zombie.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/zombie_villager/_list.json b/common-files/src/main/resources/internal/textures/entity/zombie_villager/_list.json deleted file mode 100644 index bb0feeea4..000000000 --- a/common-files/src/main/resources/internal/textures/entity/zombie_villager/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":["profession","profession_level","type"],"files":["zombie_villager.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/zombie_villager/profession/_list.json b/common-files/src/main/resources/internal/textures/entity/zombie_villager/profession/_list.json deleted file mode 100644 index fab07c7a9..000000000 --- a/common-files/src/main/resources/internal/textures/entity/zombie_villager/profession/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["armorer.png","butcher.png","butcher.png.mcmeta","cartographer.png","cleric.png","farmer.png","farmer.png.mcmeta","fisherman.png","fisherman.png.mcmeta","fletcher.png","fletcher.png.mcmeta","leatherworker.png","librarian.png","librarian.png.mcmeta","mason.png","nitwit.png","shepherd.png","shepherd.png.mcmeta","toolsmith.png","weaponsmith.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/zombie_villager/profession_level/_list.json b/common-files/src/main/resources/internal/textures/entity/zombie_villager/profession_level/_list.json deleted file mode 100644 index f7755ab5d..000000000 --- a/common-files/src/main/resources/internal/textures/entity/zombie_villager/profession_level/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["diamond.png","emerald.png","gold.png","iron.png","stone.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/entity/zombie_villager/type/_list.json b/common-files/src/main/resources/internal/textures/entity/zombie_villager/type/_list.json deleted file mode 100644 index 9377957e7..000000000 --- a/common-files/src/main/resources/internal/textures/entity/zombie_villager/type/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["desert.png","jungle.png","plains.png","savanna.png","snow.png","swamp.png","taiga.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/environment/_list.json b/common-files/src/main/resources/internal/textures/environment/_list.json deleted file mode 100644 index 163742403..000000000 --- a/common-files/src/main/resources/internal/textures/environment/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["clouds.png","end_sky.png","moon_phases.png","rain.png","snow.png","sun.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/font/_list.json b/common-files/src/main/resources/internal/textures/font/_list.json deleted file mode 100644 index 38229e133..000000000 --- a/common-files/src/main/resources/internal/textures/font/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["accented.png","ascii.png","ascii_sga.png","asciillager.png","nonlatin_european.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/_list.json b/common-files/src/main/resources/internal/textures/gui/_list.json deleted file mode 100644 index 82692295c..000000000 --- a/common-files/src/main/resources/internal/textures/gui/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":["advancements","container","hanging_signs","presets","realms","sprites","title"],"files":["book.png","demo_background.png","footer_separator.png","header_separator.png","inworld_footer_separator.png","inworld_header_separator.png","inworld_menu_background.png","inworld_menu_list_background.png","menu_background.png","menu_list_background.png","recipe_book.png","tab_header_background.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/advancements/_list.json b/common-files/src/main/resources/internal/textures/gui/advancements/_list.json deleted file mode 100644 index 1e94e545e..000000000 --- a/common-files/src/main/resources/internal/textures/gui/advancements/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":["backgrounds"],"files":["window.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/advancements/backgrounds/_list.json b/common-files/src/main/resources/internal/textures/gui/advancements/backgrounds/_list.json deleted file mode 100644 index 6907edff2..000000000 --- a/common-files/src/main/resources/internal/textures/gui/advancements/backgrounds/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["adventure.png","end.png","husbandry.png","nether.png","stone.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/container/_list.json b/common-files/src/main/resources/internal/textures/gui/container/_list.json deleted file mode 100644 index f94e1bca8..000000000 --- a/common-files/src/main/resources/internal/textures/gui/container/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":["creative_inventory"],"files":["anvil.png","beacon.png","blast_furnace.png","brewing_stand.png","cartography_table.png","crafter.png","crafting_table.png","dispenser.png","enchanting_table.png","furnace.png","gamemode_switcher.png","generic_54.png","grindstone.png","hopper.png","horse.png","inventory.png","loom.png","shulker_box.png","smithing.png","smoker.png","stonecutter.png","villager.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/container/creative_inventory/_list.json b/common-files/src/main/resources/internal/textures/gui/container/creative_inventory/_list.json deleted file mode 100644 index 1b959be88..000000000 --- a/common-files/src/main/resources/internal/textures/gui/container/creative_inventory/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["tab_inventory.png","tab_item_search.png","tab_items.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/hanging_signs/_list.json b/common-files/src/main/resources/internal/textures/gui/hanging_signs/_list.json deleted file mode 100644 index 01b318f31..000000000 --- a/common-files/src/main/resources/internal/textures/gui/hanging_signs/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["acacia.png","bamboo.png","birch.png","cherry.png","crimson.png","dark_oak.png","jungle.png","mangrove.png","oak.png","pale_oak.png","spruce.png","warped.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/presets/_list.json b/common-files/src/main/resources/internal/textures/gui/presets/_list.json deleted file mode 100644 index 4e31f7674..000000000 --- a/common-files/src/main/resources/internal/textures/gui/presets/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["isles.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/realms/_list.json b/common-files/src/main/resources/internal/textures/gui/realms/_list.json deleted file mode 100644 index 968bfc415..000000000 --- a/common-files/src/main/resources/internal/textures/gui/realms/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["adventure.png","empty_frame.png","experience.png","inspiration.png","new_world.png","no_realms.png","snapshot_realms.png","survival_spawn.png","upload.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/_list.json deleted file mode 100644 index fb88aca52..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":["advancements","boss_bar","container","dialog","gamemode_switcher","hud","icon","notification","pending_invite","player_list","popup","realm_status","recipe_book","server_list","social_interactions","spectator","statistics","toast","tooltip","transferable_list","widget","world_list"],"files":[]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/advancements/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/advancements/_list.json deleted file mode 100644 index 479c28d1d..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/advancements/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["box_obtained.png","box_obtained.png.mcmeta","box_unobtained.png","box_unobtained.png.mcmeta","challenge_frame_obtained.png","challenge_frame_unobtained.png","goal_frame_obtained.png","goal_frame_unobtained.png","tab_above_left.png","tab_above_left_selected.png","tab_above_middle.png","tab_above_middle_selected.png","tab_above_right.png","tab_above_right_selected.png","tab_below_left.png","tab_below_left_selected.png","tab_below_middle.png","tab_below_middle_selected.png","tab_below_right.png","tab_below_right_selected.png","tab_left_bottom.png","tab_left_bottom_selected.png","tab_left_middle.png","tab_left_middle_selected.png","tab_left_top.png","tab_left_top_selected.png","tab_right_bottom.png","tab_right_bottom_selected.png","tab_right_middle.png","tab_right_middle_selected.png","tab_right_top.png","tab_right_top_selected.png","task_frame_obtained.png","task_frame_unobtained.png","title_box.png","title_box.png.mcmeta"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/boss_bar/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/boss_bar/_list.json deleted file mode 100644 index 20ca628e6..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/boss_bar/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["blue_background.png","blue_progress.png","green_background.png","green_progress.png","notched_10_background.png","notched_10_progress.png","notched_12_background.png","notched_12_progress.png","notched_20_background.png","notched_20_progress.png","notched_6_background.png","notched_6_progress.png","pink_background.png","pink_progress.png","purple_background.png","purple_progress.png","red_background.png","red_progress.png","white_background.png","white_progress.png","yellow_background.png","yellow_progress.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/container/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/container/_list.json deleted file mode 100644 index 49fb80ef2..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/container/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":["anvil","beacon","blast_furnace","brewing_stand","bundle","cartography_table","crafter","creative_inventory","enchanting_table","furnace","grindstone","horse","inventory","loom","slot","smithing","smoker","stonecutter","villager"],"files":["slot.png","slot_highlight_back.png","slot_highlight_back.png.mcmeta","slot_highlight_front.png","slot_highlight_front.png.mcmeta"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/container/anvil/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/container/anvil/_list.json deleted file mode 100644 index 2cd44e6ee..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/container/anvil/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["error.png","text_field.png","text_field_disabled.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/container/beacon/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/container/beacon/_list.json deleted file mode 100644 index 4e8ea5c0b..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/container/beacon/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["button.png","button_disabled.png","button_highlighted.png","button_selected.png","cancel.png","confirm.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/container/blast_furnace/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/container/blast_furnace/_list.json deleted file mode 100644 index f891fb3d7..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/container/blast_furnace/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["burn_progress.png","lit_progress.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/container/brewing_stand/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/container/brewing_stand/_list.json deleted file mode 100644 index 8de2f8377..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/container/brewing_stand/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["brew_progress.png","bubbles.png","fuel_length.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/container/bundle/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/container/bundle/_list.json deleted file mode 100644 index 046222c39..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/container/bundle/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["bundle_progressbar_border.png","bundle_progressbar_border.png.mcmeta","bundle_progressbar_fill.png","bundle_progressbar_fill.png.mcmeta","bundle_progressbar_full.png","bundle_progressbar_full.png.mcmeta","slot_background.png","slot_background.png.mcmeta","slot_highlight_back.png","slot_highlight_back.png.mcmeta","slot_highlight_front.png","slot_highlight_front.png.mcmeta"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/container/cartography_table/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/container/cartography_table/_list.json deleted file mode 100644 index f53282e48..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/container/cartography_table/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["duplicated_map.png","error.png","locked.png","map.png","scaled_map.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/container/crafter/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/container/crafter/_list.json deleted file mode 100644 index e0a16fa8a..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/container/crafter/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["disabled_slot.png","powered_redstone.png","unpowered_redstone.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/container/creative_inventory/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/container/creative_inventory/_list.json deleted file mode 100644 index 7c5c38f45..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/container/creative_inventory/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["scroller.png","scroller_disabled.png","tab_bottom_selected_1.png","tab_bottom_selected_2.png","tab_bottom_selected_3.png","tab_bottom_selected_4.png","tab_bottom_selected_5.png","tab_bottom_selected_6.png","tab_bottom_selected_7.png","tab_bottom_unselected_1.png","tab_bottom_unselected_2.png","tab_bottom_unselected_3.png","tab_bottom_unselected_4.png","tab_bottom_unselected_5.png","tab_bottom_unselected_6.png","tab_bottom_unselected_7.png","tab_top_selected_1.png","tab_top_selected_2.png","tab_top_selected_3.png","tab_top_selected_4.png","tab_top_selected_5.png","tab_top_selected_6.png","tab_top_selected_7.png","tab_top_unselected_1.png","tab_top_unselected_2.png","tab_top_unselected_3.png","tab_top_unselected_4.png","tab_top_unselected_5.png","tab_top_unselected_6.png","tab_top_unselected_7.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/container/enchanting_table/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/container/enchanting_table/_list.json deleted file mode 100644 index d3d611f13..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/container/enchanting_table/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["enchantment_slot.png","enchantment_slot_disabled.png","enchantment_slot_highlighted.png","level_1.png","level_1_disabled.png","level_2.png","level_2_disabled.png","level_3.png","level_3_disabled.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/container/furnace/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/container/furnace/_list.json deleted file mode 100644 index f891fb3d7..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/container/furnace/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["burn_progress.png","lit_progress.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/container/grindstone/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/container/grindstone/_list.json deleted file mode 100644 index 74845b898..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/container/grindstone/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["error.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/container/horse/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/container/horse/_list.json deleted file mode 100644 index 1526e5cb1..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/container/horse/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["chest_slots.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/container/inventory/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/container/inventory/_list.json deleted file mode 100644 index 431a683d3..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/container/inventory/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["effect_background_large.png","effect_background_small.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/container/loom/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/container/loom/_list.json deleted file mode 100644 index f4d9ef802..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/container/loom/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["error.png","pattern.png","pattern_highlighted.png","pattern_selected.png","scroller.png","scroller_disabled.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/container/slot/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/container/slot/_list.json deleted file mode 100644 index d10743a6c..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/container/slot/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["amethyst_shard.png","axe.png","banner.png","banner_pattern.png","boots.png","brewing_fuel.png","chestplate.png","diamond.png","dye.png","emerald.png","helmet.png","hoe.png","horse_armor.png","ingot.png","lapis_lazuli.png","leggings.png","llama_armor.png","pickaxe.png","potion.png","quartz.png","redstone_dust.png","saddle.png","shield.png","shovel.png","smithing_template_armor_trim.png","smithing_template_netherite_upgrade.png","sword.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/container/smithing/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/container/smithing/_list.json deleted file mode 100644 index 74845b898..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/container/smithing/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["error.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/container/smoker/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/container/smoker/_list.json deleted file mode 100644 index f891fb3d7..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/container/smoker/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["burn_progress.png","lit_progress.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/container/stonecutter/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/container/stonecutter/_list.json deleted file mode 100644 index e623a34d6..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/container/stonecutter/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["recipe.png","recipe_highlighted.png","recipe_selected.png","scroller.png","scroller_disabled.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/container/villager/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/container/villager/_list.json deleted file mode 100644 index 83242e7c1..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/container/villager/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["discount_strikethrough.png","experience_bar_background.png","experience_bar_current.png","experience_bar_result.png","out_of_stock.png","scroller.png","scroller_disabled.png","trade_arrow.png","trade_arrow_out_of_stock.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/dialog/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/dialog/_list.json deleted file mode 100644 index 99850b9bf..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/dialog/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["warning_button.png","warning_button_disabled.png","warning_button_highlighted.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/gamemode_switcher/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/gamemode_switcher/_list.json deleted file mode 100644 index e9fca1783..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/gamemode_switcher/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["selection.png","slot.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/hud/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/hud/_list.json deleted file mode 100644 index 832cc2466..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/hud/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":["heart","locator_bar_dot"],"files":["air.png","air_bursting.png","air_empty.png","armor_empty.png","armor_full.png","armor_half.png","crosshair.png","crosshair_attack_indicator_background.png","crosshair_attack_indicator_full.png","crosshair_attack_indicator_progress.png","effect_background.png","effect_background_ambient.png","experience_bar_background.png","experience_bar_progress.png","food_empty.png","food_empty_hunger.png","food_full.png","food_full_hunger.png","food_half.png","food_half_hunger.png","hotbar.png","hotbar_attack_indicator_background.png","hotbar_attack_indicator_progress.png","hotbar_offhand_left.png","hotbar_offhand_right.png","hotbar_selection.png","jump_bar_background.png","jump_bar_cooldown.png","jump_bar_progress.png","locator_bar_arrow_down.png","locator_bar_arrow_down.png.mcmeta","locator_bar_arrow_up.png","locator_bar_arrow_up.png.mcmeta","locator_bar_background.png","locator_bar_background.png.mcmeta"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/hud/heart/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/hud/heart/_list.json deleted file mode 100644 index 3db88fec5..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/hud/heart/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["absorbing_full.png","absorbing_full_blinking.png","absorbing_half.png","absorbing_half_blinking.png","absorbing_hardcore_full.png","absorbing_hardcore_full_blinking.png","absorbing_hardcore_half.png","absorbing_hardcore_half_blinking.png","container.png","container_blinking.png","container_hardcore.png","container_hardcore_blinking.png","frozen_full.png","frozen_full_blinking.png","frozen_half.png","frozen_half_blinking.png","frozen_hardcore_full.png","frozen_hardcore_full_blinking.png","frozen_hardcore_half.png","frozen_hardcore_half_blinking.png","full.png","full_blinking.png","half.png","half_blinking.png","hardcore_full.png","hardcore_full_blinking.png","hardcore_half.png","hardcore_half_blinking.png","poisoned_full.png","poisoned_full_blinking.png","poisoned_half.png","poisoned_half_blinking.png","poisoned_hardcore_full.png","poisoned_hardcore_full_blinking.png","poisoned_hardcore_half.png","poisoned_hardcore_half_blinking.png","vehicle_container.png","vehicle_full.png","vehicle_half.png","withered_full.png","withered_full_blinking.png","withered_half.png","withered_half_blinking.png","withered_hardcore_full.png","withered_hardcore_full_blinking.png","withered_hardcore_half.png","withered_hardcore_half_blinking.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/hud/locator_bar_dot/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/hud/locator_bar_dot/_list.json deleted file mode 100644 index a6dedcc7c..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/hud/locator_bar_dot/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["bowtie.png","default_0.png","default_1.png","default_2.png","default_3.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/icon/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/icon/_list.json deleted file mode 100644 index 58af4118c..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/icon/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["accessibility.png","chat_modified.png","checkmark.png","draft_report.png","info.png","invite.png","language.png","link.png","link_highlighted.png","music_notes.png","music_notes.png.mcmeta","new_realm.png","news.png","ping_1.png","ping_2.png","ping_3.png","ping_4.png","ping_5.png","ping_unknown.png","search.png","trial_available.png","trial_available.png.mcmeta","unseen_notification.png","video_link.png","video_link_highlighted.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/notification/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/notification/_list.json deleted file mode 100644 index 2bbcba83c..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/notification/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["1.png","2.png","3.png","4.png","5.png","more.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/pending_invite/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/pending_invite/_list.json deleted file mode 100644 index 02f121666..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/pending_invite/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["accept.png","accept_highlighted.png","reject.png","reject_highlighted.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/player_list/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/player_list/_list.json deleted file mode 100644 index 32cbc9e1e..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/player_list/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["make_operator.png","remove_operator.png","remove_player.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/popup/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/popup/_list.json deleted file mode 100644 index c43ec2824..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/popup/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["background.png","background.png.mcmeta"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/realm_status/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/realm_status/_list.json deleted file mode 100644 index 89ac5b05a..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/realm_status/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["closed.png","expired.png","expires_soon.png","expires_soon.png.mcmeta","open.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/recipe_book/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/recipe_book/_list.json deleted file mode 100644 index 3be688a32..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/recipe_book/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["button.png","button_highlighted.png","crafting_overlay.png","crafting_overlay_disabled.png","crafting_overlay_disabled_highlighted.png","crafting_overlay_highlighted.png","filter_disabled.png","filter_disabled_highlighted.png","filter_enabled.png","filter_enabled_highlighted.png","furnace_filter_disabled.png","furnace_filter_disabled_highlighted.png","furnace_filter_enabled.png","furnace_filter_enabled_highlighted.png","furnace_overlay.png","furnace_overlay_disabled.png","furnace_overlay_disabled_highlighted.png","furnace_overlay_highlighted.png","overlay_recipe.png","overlay_recipe.png.mcmeta","page_backward.png","page_backward_highlighted.png","page_forward.png","page_forward_highlighted.png","slot_craftable.png","slot_many_craftable.png","slot_many_uncraftable.png","slot_uncraftable.png","tab.png","tab_selected.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/server_list/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/server_list/_list.json deleted file mode 100644 index b0a5b11ce..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/server_list/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["incompatible.png","join.png","join_highlighted.png","move_down.png","move_down_highlighted.png","move_up.png","move_up_highlighted.png","ping_1.png","ping_2.png","ping_3.png","ping_4.png","ping_5.png","pinging_1.png","pinging_2.png","pinging_3.png","pinging_4.png","pinging_5.png","unreachable.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/social_interactions/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/social_interactions/_list.json deleted file mode 100644 index 174cdea8d..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/social_interactions/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["background.png","background.png.mcmeta","mute_button.png","mute_button_highlighted.png","report_button.png","report_button_disabled.png","report_button_highlighted.png","unmute_button.png","unmute_button_highlighted.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/spectator/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/spectator/_list.json deleted file mode 100644 index ffcb28c96..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/spectator/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["close.png","scroll_left.png","scroll_right.png","teleport_to_player.png","teleport_to_team.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/statistics/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/statistics/_list.json deleted file mode 100644 index 4309efab4..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/statistics/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["block_mined.png","header.png","item_broken.png","item_crafted.png","item_dropped.png","item_picked_up.png","item_used.png","sort_down.png","sort_up.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/toast/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/toast/_list.json deleted file mode 100644 index c88f5be25..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/toast/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["advancement.png","mouse.png","movement_keys.png","now_playing.png","now_playing.png.mcmeta","recipe.png","recipe_book.png","right_click.png","social_interactions.png","system.png","system.png.mcmeta","tree.png","tutorial.png","tutorial.png.mcmeta","wooden_planks.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/tooltip/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/tooltip/_list.json deleted file mode 100644 index d8471254d..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/tooltip/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["background.png","background.png.mcmeta","frame.png","frame.png.mcmeta"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/transferable_list/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/transferable_list/_list.json deleted file mode 100644 index 95e0eac44..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/transferable_list/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["move_down.png","move_down_highlighted.png","move_up.png","move_up_highlighted.png","select.png","select_highlighted.png","unselect.png","unselect_highlighted.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/widget/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/widget/_list.json deleted file mode 100644 index db3873f6c..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/widget/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["button.png","button.png.mcmeta","button_disabled.png","button_disabled.png.mcmeta","button_highlighted.png","button_highlighted.png.mcmeta","checkbox.png","checkbox_highlighted.png","checkbox_selected.png","checkbox_selected_highlighted.png","cross_button.png","cross_button_highlighted.png","locked_button.png","locked_button_disabled.png","locked_button_highlighted.png","page_backward.png","page_backward_highlighted.png","page_forward.png","page_forward_highlighted.png","scroller.png","scroller.png.mcmeta","scroller_background.png","scroller_background.png.mcmeta","slider.png","slider.png.mcmeta","slider_handle.png","slider_handle.png.mcmeta","slider_handle_highlighted.png","slider_handle_highlighted.png.mcmeta","slider_highlighted.png","slider_highlighted.png.mcmeta","slot_frame.png","tab.png","tab.png.mcmeta","tab_highlighted.png","tab_highlighted.png.mcmeta","tab_selected.png","tab_selected.png.mcmeta","tab_selected_highlighted.png","tab_selected_highlighted.png.mcmeta","text_field.png","text_field.png.mcmeta","text_field_highlighted.png","text_field_highlighted.png.mcmeta","unlocked_button.png","unlocked_button_disabled.png","unlocked_button_highlighted.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/sprites/world_list/_list.json b/common-files/src/main/resources/internal/textures/gui/sprites/world_list/_list.json deleted file mode 100644 index 421742c94..000000000 --- a/common-files/src/main/resources/internal/textures/gui/sprites/world_list/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["error.png","error_highlighted.png","join.png","join_highlighted.png","marked_join.png","marked_join_highlighted.png","warning.png","warning_highlighted.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/title/_list.json b/common-files/src/main/resources/internal/textures/gui/title/_list.json deleted file mode 100644 index 632a4a79a..000000000 --- a/common-files/src/main/resources/internal/textures/gui/title/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":["background"],"files":["edition.png","minceraft.png","minecraft.png","mojangstudios.png","realms.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/gui/title/background/_list.json b/common-files/src/main/resources/internal/textures/gui/title/background/_list.json deleted file mode 100644 index 7fb955917..000000000 --- a/common-files/src/main/resources/internal/textures/gui/title/background/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["panorama_0.png","panorama_1.png","panorama_2.png","panorama_3.png","panorama_4.png","panorama_5.png","panorama_overlay.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/item/_list.json b/common-files/src/main/resources/internal/textures/item/_list.json deleted file mode 100644 index f66a314cb..000000000 --- a/common-files/src/main/resources/internal/textures/item/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["acacia_boat.png","acacia_chest_boat.png","acacia_door.png","acacia_hanging_sign.png","acacia_sign.png","allay_spawn_egg.png","amethyst_shard.png","angler_pottery_sherd.png","apple.png","archer_pottery_sherd.png","armadillo_scute.png","armadillo_spawn_egg.png","armor_stand.png","arms_up_pottery_sherd.png","arrow.png","axolotl_bucket.png","axolotl_spawn_egg.png","baked_potato.png","bamboo.png","bamboo_chest_raft.png","bamboo_door.png","bamboo_hanging_sign.png","bamboo_raft.png","bamboo_sign.png","barrier.png","bat_spawn_egg.png","bee_spawn_egg.png","beef.png","beetroot.png","beetroot_seeds.png","beetroot_soup.png","bell.png","birch_boat.png","birch_chest_boat.png","birch_door.png","birch_hanging_sign.png","birch_sign.png","black_bundle.png","black_bundle_open_back.png","black_bundle_open_front.png","black_candle.png","black_dye.png","black_harness.png","blade_pottery_sherd.png","blaze_powder.png","blaze_rod.png","blaze_spawn_egg.png","blue_bundle.png","blue_bundle_open_back.png","blue_bundle_open_front.png","blue_candle.png","blue_dye.png","blue_egg.png","blue_harness.png","bogged_spawn_egg.png","bolt_armor_trim_smithing_template.png","bone.png","bone_meal.png","book.png","bordure_indented_banner_pattern.png","bow.png","bow_pulling_0.png","bow_pulling_1.png","bow_pulling_2.png","bowl.png","bread.png","breeze_rod.png","breeze_spawn_egg.png","brewer_pottery_sherd.png","brewing_stand.png","brick.png","brown_bundle.png","brown_bundle_open_back.png","brown_bundle_open_front.png","brown_candle.png","brown_dye.png","brown_egg.png","brown_harness.png","brush.png","bucket.png","bundle.png","bundle_open_back.png","bundle_open_front.png","burn_pottery_sherd.png","cake.png","camel_spawn_egg.png","campfire.png","candle.png","carrot.png","carrot_on_a_stick.png","cat_spawn_egg.png","cauldron.png","cave_spider_spawn_egg.png","chain.png","chainmail_boots.png","chainmail_chestplate.png","chainmail_helmet.png","chainmail_leggings.png","charcoal.png","cherry_boat.png","cherry_chest_boat.png","cherry_door.png","cherry_hanging_sign.png","cherry_sign.png","chest_minecart.png","chicken.png","chicken_spawn_egg.png","chorus_fruit.png","clay_ball.png","clock_00.png","clock_01.png","clock_02.png","clock_03.png","clock_04.png","clock_05.png","clock_06.png","clock_07.png","clock_08.png","clock_09.png","clock_10.png","clock_11.png","clock_12.png","clock_13.png","clock_14.png","clock_15.png","clock_16.png","clock_17.png","clock_18.png","clock_19.png","clock_20.png","clock_21.png","clock_22.png","clock_23.png","clock_24.png","clock_25.png","clock_26.png","clock_27.png","clock_28.png","clock_29.png","clock_30.png","clock_31.png","clock_32.png","clock_33.png","clock_34.png","clock_35.png","clock_36.png","clock_37.png","clock_38.png","clock_39.png","clock_40.png","clock_41.png","clock_42.png","clock_43.png","clock_44.png","clock_45.png","clock_46.png","clock_47.png","clock_48.png","clock_49.png","clock_50.png","clock_51.png","clock_52.png","clock_53.png","clock_54.png","clock_55.png","clock_56.png","clock_57.png","clock_58.png","clock_59.png","clock_60.png","clock_61.png","clock_62.png","clock_63.png","coal.png","coast_armor_trim_smithing_template.png","cocoa_beans.png","cod.png","cod_bucket.png","cod_spawn_egg.png","command_block_minecart.png","comparator.png","compass_00.png","compass_01.png","compass_02.png","compass_03.png","compass_04.png","compass_05.png","compass_06.png","compass_07.png","compass_08.png","compass_09.png","compass_10.png","compass_11.png","compass_12.png","compass_13.png","compass_14.png","compass_15.png","compass_16.png","compass_17.png","compass_18.png","compass_19.png","compass_20.png","compass_21.png","compass_22.png","compass_23.png","compass_24.png","compass_25.png","compass_26.png","compass_27.png","compass_28.png","compass_29.png","compass_30.png","compass_31.png","cooked_beef.png","cooked_chicken.png","cooked_cod.png","cooked_mutton.png","cooked_porkchop.png","cooked_rabbit.png","cooked_salmon.png","cookie.png","copper_door.png","copper_ingot.png","cow_spawn_egg.png","creaking_spawn_egg.png","creeper_banner_pattern.png","creeper_spawn_egg.png","crimson_door.png","crimson_hanging_sign.png","crimson_sign.png","crossbow_arrow.png","crossbow_firework.png","crossbow_pulling_0.png","crossbow_pulling_1.png","crossbow_pulling_2.png","crossbow_standby.png","cyan_bundle.png","cyan_bundle_open_back.png","cyan_bundle_open_front.png","cyan_candle.png","cyan_dye.png","cyan_harness.png","danger_pottery_sherd.png","dark_oak_boat.png","dark_oak_chest_boat.png","dark_oak_door.png","dark_oak_hanging_sign.png","dark_oak_sign.png","diamond.png","diamond_axe.png","diamond_boots.png","diamond_chestplate.png","diamond_helmet.png","diamond_hoe.png","diamond_horse_armor.png","diamond_leggings.png","diamond_pickaxe.png","diamond_shovel.png","diamond_sword.png","disc_fragment_5.png","dolphin_spawn_egg.png","donkey_spawn_egg.png","dragon_breath.png","dried_kelp.png","drowned_spawn_egg.png","dune_armor_trim_smithing_template.png","echo_shard.png","egg.png","elder_guardian_spawn_egg.png","elytra.png","elytra_broken.png","emerald.png","enchanted_book.png","end_crystal.png","ender_dragon_spawn_egg.png","ender_eye.png","ender_pearl.png","enderman_spawn_egg.png","endermite_spawn_egg.png","evoker_spawn_egg.png","experience_bottle.png","explorer_pottery_sherd.png","exposed_copper_door.png","eye_armor_trim_smithing_template.png","feather.png","fermented_spider_eye.png","field_masoned_banner_pattern.png","filled_map.png","filled_map_markings.png","fire_charge.png","firefly_bush.png","firework_rocket.png","firework_star.png","firework_star_overlay.png","fishing_rod.png","fishing_rod_cast.png","flint.png","flint_and_steel.png","flow_armor_trim_smithing_template.png","flow_banner_pattern.png","flow_pottery_sherd.png","flower_banner_pattern.png","flower_pot.png","fox_spawn_egg.png","friend_pottery_sherd.png","frog_spawn_egg.png","furnace_minecart.png","ghast_spawn_egg.png","ghast_tear.png","glass_bottle.png","glistering_melon_slice.png","globe_banner_pattern.png","glow_berries.png","glow_ink_sac.png","glow_item_frame.png","glow_squid_spawn_egg.png","glowstone_dust.png","goat_horn.png","goat_spawn_egg.png","gold_ingot.png","gold_nugget.png","golden_apple.png","golden_axe.png","golden_boots.png","golden_carrot.png","golden_chestplate.png","golden_helmet.png","golden_hoe.png","golden_horse_armor.png","golden_leggings.png","golden_pickaxe.png","golden_shovel.png","golden_sword.png","gray_bundle.png","gray_bundle_open_back.png","gray_bundle_open_front.png","gray_candle.png","gray_dye.png","gray_harness.png","green_bundle.png","green_bundle_open_back.png","green_bundle_open_front.png","green_candle.png","green_dye.png","green_harness.png","guardian_spawn_egg.png","gunpowder.png","guster_banner_pattern.png","guster_pottery_sherd.png","happy_ghast_spawn_egg.png","heart_of_the_sea.png","heart_pottery_sherd.png","heartbreak_pottery_sherd.png","hoglin_spawn_egg.png","honey_bottle.png","honeycomb.png","hopper.png","hopper_minecart.png","horse_spawn_egg.png","host_armor_trim_smithing_template.png","howl_pottery_sherd.png","husk_spawn_egg.png","ink_sac.png","iron_axe.png","iron_boots.png","iron_chestplate.png","iron_door.png","iron_golem_spawn_egg.png","iron_helmet.png","iron_hoe.png","iron_horse_armor.png","iron_ingot.png","iron_leggings.png","iron_nugget.png","iron_pickaxe.png","iron_shovel.png","iron_sword.png","item_frame.png","jungle_boat.png","jungle_chest_boat.png","jungle_door.png","jungle_hanging_sign.png","jungle_sign.png","kelp.png","knowledge_book.png","lantern.png","lapis_lazuli.png","lava_bucket.png","lead.png","leaf_litter.png","leather.png","leather_boots.png","leather_boots_overlay.png","leather_chestplate.png","leather_chestplate_overlay.png","leather_helmet.png","leather_helmet_overlay.png","leather_horse_armor.png","leather_leggings.png","leather_leggings_overlay.png","light.png","light_00.png","light_01.png","light_02.png","light_03.png","light_04.png","light_05.png","light_06.png","light_07.png","light_08.png","light_09.png","light_10.png","light_11.png","light_12.png","light_13.png","light_14.png","light_15.png","light_blue_bundle.png","light_blue_bundle_open_back.png","light_blue_bundle_open_front.png","light_blue_candle.png","light_blue_dye.png","light_blue_harness.png","light_gray_bundle.png","light_gray_bundle_open_back.png","light_gray_bundle_open_front.png","light_gray_candle.png","light_gray_dye.png","light_gray_harness.png","lime_bundle.png","lime_bundle_open_back.png","lime_bundle_open_front.png","lime_candle.png","lime_dye.png","lime_harness.png","lingering_potion.png","llama_spawn_egg.png","mace.png","magenta_bundle.png","magenta_bundle_open_back.png","magenta_bundle_open_front.png","magenta_candle.png","magenta_dye.png","magenta_harness.png","magma_cream.png","magma_cube_spawn_egg.png","mangrove_boat.png","mangrove_chest_boat.png","mangrove_door.png","mangrove_hanging_sign.png","mangrove_propagule.png","mangrove_sign.png","map.png","melon_seeds.png","melon_slice.png","milk_bucket.png","minecart.png","miner_pottery_sherd.png","mojang_banner_pattern.png","mooshroom_spawn_egg.png","mourner_pottery_sherd.png","mule_spawn_egg.png","mushroom_stew.png","music_disc_11.png","music_disc_13.png","music_disc_5.png","music_disc_blocks.png","music_disc_cat.png","music_disc_chirp.png","music_disc_creator.png","music_disc_creator_music_box.png","music_disc_far.png","music_disc_lava_chicken.png","music_disc_mall.png","music_disc_mellohi.png","music_disc_otherside.png","music_disc_pigstep.png","music_disc_precipice.png","music_disc_relic.png","music_disc_stal.png","music_disc_strad.png","music_disc_tears.png","music_disc_wait.png","music_disc_ward.png","mutton.png","name_tag.png","nautilus_shell.png","nether_brick.png","nether_sprouts.png","nether_star.png","nether_wart.png","netherite_axe.png","netherite_boots.png","netherite_chestplate.png","netherite_helmet.png","netherite_hoe.png","netherite_ingot.png","netherite_leggings.png","netherite_pickaxe.png","netherite_scrap.png","netherite_shovel.png","netherite_sword.png","netherite_upgrade_smithing_template.png","oak_boat.png","oak_chest_boat.png","oak_door.png","oak_hanging_sign.png","oak_sign.png","ocelot_spawn_egg.png","ominous_bottle.png","ominous_trial_key.png","orange_bundle.png","orange_bundle_open_back.png","orange_bundle_open_front.png","orange_candle.png","orange_dye.png","orange_harness.png","oxidized_copper_door.png","painting.png","pale_oak_boat.png","pale_oak_chest_boat.png","pale_oak_door.png","pale_oak_hanging_sign.png","pale_oak_sign.png","panda_spawn_egg.png","paper.png","parrot_spawn_egg.png","phantom_membrane.png","phantom_spawn_egg.png","pig_spawn_egg.png","piglin_banner_pattern.png","piglin_brute_spawn_egg.png","piglin_spawn_egg.png","pillager_spawn_egg.png","pink_bundle.png","pink_bundle_open_back.png","pink_bundle_open_front.png","pink_candle.png","pink_dye.png","pink_harness.png","pink_petals.png","pitcher_plant.png","pitcher_pod.png","plenty_pottery_sherd.png","pointed_dripstone.png","poisonous_potato.png","polar_bear_spawn_egg.png","popped_chorus_fruit.png","porkchop.png","potato.png","potion.png","potion_overlay.png","powder_snow_bucket.png","prismarine_crystals.png","prismarine_shard.png","prize_pottery_sherd.png","pufferfish.png","pufferfish_bucket.png","pufferfish_spawn_egg.png","pumpkin_pie.png","pumpkin_seeds.png","purple_bundle.png","purple_bundle_open_back.png","purple_bundle_open_front.png","purple_candle.png","purple_dye.png","purple_harness.png","quartz.png","rabbit.png","rabbit_foot.png","rabbit_hide.png","rabbit_spawn_egg.png","rabbit_stew.png","raiser_armor_trim_smithing_template.png","ravager_spawn_egg.png","raw_copper.png","raw_gold.png","raw_iron.png","recovery_compass_00.png","recovery_compass_01.png","recovery_compass_02.png","recovery_compass_03.png","recovery_compass_04.png","recovery_compass_05.png","recovery_compass_06.png","recovery_compass_07.png","recovery_compass_08.png","recovery_compass_09.png","recovery_compass_10.png","recovery_compass_11.png","recovery_compass_12.png","recovery_compass_13.png","recovery_compass_14.png","recovery_compass_15.png","recovery_compass_16.png","recovery_compass_17.png","recovery_compass_18.png","recovery_compass_19.png","recovery_compass_20.png","recovery_compass_21.png","recovery_compass_22.png","recovery_compass_23.png","recovery_compass_24.png","recovery_compass_25.png","recovery_compass_26.png","recovery_compass_27.png","recovery_compass_28.png","recovery_compass_29.png","recovery_compass_30.png","recovery_compass_31.png","red_bundle.png","red_bundle_open_back.png","red_bundle_open_front.png","red_candle.png","red_dye.png","red_harness.png","redstone.png","repeater.png","resin_brick.png","resin_clump.png","rib_armor_trim_smithing_template.png","rotten_flesh.png","saddle.png","salmon.png","salmon_bucket.png","salmon_spawn_egg.png","scrape_pottery_sherd.png","sea_pickle.png","seagrass.png","sentry_armor_trim_smithing_template.png","shaper_armor_trim_smithing_template.png","sheaf_pottery_sherd.png","shears.png","sheep_spawn_egg.png","shelter_pottery_sherd.png","shulker_shell.png","shulker_spawn_egg.png","silence_armor_trim_smithing_template.png","silverfish_spawn_egg.png","skeleton_horse_spawn_egg.png","skeleton_spawn_egg.png","skull_banner_pattern.png","skull_pottery_sherd.png","slime_ball.png","slime_spawn_egg.png","sniffer_egg.png","sniffer_spawn_egg.png","snort_pottery_sherd.png","snout_armor_trim_smithing_template.png","snow_golem_spawn_egg.png","snowball.png","soul_campfire.png","soul_lantern.png","spectral_arrow.png","spider_eye.png","spider_spawn_egg.png","spire_armor_trim_smithing_template.png","splash_potion.png","spruce_boat.png","spruce_chest_boat.png","spruce_door.png","spruce_hanging_sign.png","spruce_sign.png","spyglass.png","spyglass_model.png","squid_spawn_egg.png","stick.png","stone_axe.png","stone_hoe.png","stone_pickaxe.png","stone_shovel.png","stone_sword.png","stray_spawn_egg.png","strider_spawn_egg.png","string.png","structure_void.png","sugar.png","sugar_cane.png","suspicious_stew.png","sweet_berries.png","tadpole_bucket.png","tadpole_spawn_egg.png","tide_armor_trim_smithing_template.png","tipped_arrow_base.png","tipped_arrow_head.png","tnt_minecart.png","torchflower_seeds.png","totem_of_undying.png","trader_llama_spawn_egg.png","trial_key.png","trident.png","tropical_fish.png","tropical_fish_bucket.png","tropical_fish_spawn_egg.png","turtle_egg.png","turtle_helmet.png","turtle_scute.png","turtle_spawn_egg.png","vex_armor_trim_smithing_template.png","vex_spawn_egg.png","villager_spawn_egg.png","vindicator_spawn_egg.png","wandering_trader_spawn_egg.png","ward_armor_trim_smithing_template.png","warden_spawn_egg.png","warped_door.png","warped_fungus_on_a_stick.png","warped_hanging_sign.png","warped_sign.png","water_bucket.png","wayfinder_armor_trim_smithing_template.png","weathered_copper_door.png","wheat.png","wheat_seeds.png","white_bundle.png","white_bundle_open_back.png","white_bundle_open_front.png","white_candle.png","white_dye.png","white_harness.png","wild_armor_trim_smithing_template.png","wildflowers.png","wind_charge.png","witch_spawn_egg.png","wither_skeleton_spawn_egg.png","wither_spawn_egg.png","wolf_armor.png","wolf_armor_overlay.png","wolf_spawn_egg.png","wooden_axe.png","wooden_hoe.png","wooden_pickaxe.png","wooden_shovel.png","wooden_sword.png","writable_book.png","written_book.png","yellow_bundle.png","yellow_bundle_open_back.png","yellow_bundle_open_front.png","yellow_candle.png","yellow_dye.png","yellow_harness.png","zoglin_spawn_egg.png","zombie_horse_spawn_egg.png","zombie_spawn_egg.png","zombie_villager_spawn_egg.png","zombified_piglin_spawn_egg.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/map/_list.json b/common-files/src/main/resources/internal/textures/map/_list.json deleted file mode 100644 index ba655cf14..000000000 --- a/common-files/src/main/resources/internal/textures/map/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":["decorations"],"files":["map_background.png","map_background_checkerboard.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/map/decorations/_list.json b/common-files/src/main/resources/internal/textures/map/decorations/_list.json deleted file mode 100644 index 8482cc88f..000000000 --- a/common-files/src/main/resources/internal/textures/map/decorations/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["black_banner.png","blue_banner.png","blue_marker.png","brown_banner.png","cyan_banner.png","desert_village.png","frame.png","gray_banner.png","green_banner.png","jungle_temple.png","light_blue_banner.png","light_gray_banner.png","lime_banner.png","magenta_banner.png","ocean_monument.png","orange_banner.png","pink_banner.png","plains_village.png","player.png","player_off_limits.png","player_off_map.png","purple_banner.png","red_banner.png","red_marker.png","red_x.png","savanna_village.png","snowy_village.png","swamp_hut.png","taiga_village.png","target_point.png","target_x.png","trial_chambers.png","white_banner.png","woodland_mansion.png","yellow_banner.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/misc/_list.json b/common-files/src/main/resources/internal/textures/misc/_list.json deleted file mode 100644 index 5e62d577f..000000000 --- a/common-files/src/main/resources/internal/textures/misc/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["credits_vignette.png","credits_vignette.png.mcmeta","enchanted_glint_armor.png","enchanted_glint_armor.png.mcmeta","enchanted_glint_item.png","enchanted_glint_item.png.mcmeta","forcefield.png","nausea.png","nausea.png.mcmeta","powder_snow_outline.png","pumpkinblur.png","pumpkinblur.png.mcmeta","shadow.png","shadow.png.mcmeta","spyglass_scope.png","underwater.png","unknown_pack.png","unknown_server.png","vignette.png","vignette.png.mcmeta","white.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/mob_effect/_list.json b/common-files/src/main/resources/internal/textures/mob_effect/_list.json deleted file mode 100644 index 351bdea95..000000000 --- a/common-files/src/main/resources/internal/textures/mob_effect/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["absorption.png","bad_omen.png","blindness.png","conduit_power.png","darkness.png","dolphins_grace.png","fire_resistance.png","glowing.png","haste.png","health_boost.png","hero_of_the_village.png","hunger.png","infested.png","instant_damage.png","instant_health.png","invisibility.png","jump_boost.png","levitation.png","luck.png","mining_fatigue.png","nausea.png","night_vision.png","oozing.png","poison.png","raid_omen.png","regeneration.png","resistance.png","saturation.png","slow_falling.png","slowness.png","speed.png","strength.png","trial_omen.png","unluck.png","water_breathing.png","weakness.png","weaving.png","wind_charged.png","wither.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/painting/_list.json b/common-files/src/main/resources/internal/textures/painting/_list.json deleted file mode 100644 index ae4993796..000000000 --- a/common-files/src/main/resources/internal/textures/painting/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["alban.png","aztec.png","aztec2.png","back.png","backyard.png","baroque.png","bomb.png","bouquet.png","burning_skull.png","bust.png","cavebird.png","changing.png","cotan.png","courbet.png","creebet.png","dennis.png","donkey_kong.png","earth.png","endboss.png","fern.png","fighters.png","finding.png","fire.png","graham.png","humble.png","kebab.png","lowmist.png","match.png","meditative.png","orb.png","owlemons.png","passage.png","pigscene.png","plant.png","pointer.png","pond.png","pool.png","prairie_ride.png","sea.png","skeleton.png","skull_and_roses.png","stage.png","sunflowers.png","sunset.png","tides.png","unpacked.png","void.png","wanderer.png","wasteland.png","water.png","wind.png","wither.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/particle/_list.json b/common-files/src/main/resources/internal/textures/particle/_list.json deleted file mode 100644 index 5dd5db100..000000000 --- a/common-files/src/main/resources/internal/textures/particle/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["angry.png","big_smoke_0.png","big_smoke_1.png","big_smoke_10.png","big_smoke_11.png","big_smoke_2.png","big_smoke_3.png","big_smoke_4.png","big_smoke_5.png","big_smoke_6.png","big_smoke_7.png","big_smoke_8.png","big_smoke_9.png","bubble.png","bubble_pop_0.png","bubble_pop_1.png","bubble_pop_2.png","bubble_pop_3.png","bubble_pop_4.png","cherry_0.png","cherry_1.png","cherry_10.png","cherry_11.png","cherry_2.png","cherry_3.png","cherry_4.png","cherry_5.png","cherry_6.png","cherry_7.png","cherry_8.png","cherry_9.png","critical_hit.png","damage.png","drip_fall.png","drip_hang.png","drip_land.png","effect_0.png","effect_1.png","effect_2.png","effect_3.png","effect_4.png","effect_5.png","effect_6.png","effect_7.png","enchanted_hit.png","explosion_0.png","explosion_1.png","explosion_10.png","explosion_11.png","explosion_12.png","explosion_13.png","explosion_14.png","explosion_15.png","explosion_2.png","explosion_3.png","explosion_4.png","explosion_5.png","explosion_6.png","explosion_7.png","explosion_8.png","explosion_9.png","firefly.png","flame.png","flash.png","generic_0.png","generic_1.png","generic_2.png","generic_3.png","generic_4.png","generic_5.png","generic_6.png","generic_7.png","glint.png","glitter_0.png","glitter_1.png","glitter_2.png","glitter_3.png","glitter_4.png","glitter_5.png","glitter_6.png","glitter_7.png","glow.png","goldheart_0.png","goldheart_1.png","goldheart_2.png","gust_0.png","gust_1.png","gust_10.png","gust_11.png","gust_2.png","gust_3.png","gust_4.png","gust_5.png","gust_6.png","gust_7.png","gust_8.png","gust_9.png","heart.png","infested.png","lava.png","leaf_0.png","leaf_1.png","leaf_10.png","leaf_11.png","leaf_2.png","leaf_3.png","leaf_4.png","leaf_5.png","leaf_6.png","leaf_7.png","leaf_8.png","leaf_9.png","nautilus.png","note.png","ominous_spawning.png","pale_oak_0.png","pale_oak_1.png","pale_oak_10.png","pale_oak_11.png","pale_oak_2.png","pale_oak_3.png","pale_oak_4.png","pale_oak_5.png","pale_oak_6.png","pale_oak_7.png","pale_oak_8.png","pale_oak_9.png","raid_omen.png","sculk_charge_0.png","sculk_charge_1.png","sculk_charge_2.png","sculk_charge_3.png","sculk_charge_4.png","sculk_charge_5.png","sculk_charge_6.png","sculk_charge_pop_0.png","sculk_charge_pop_1.png","sculk_charge_pop_2.png","sculk_charge_pop_3.png","sculk_soul_0.png","sculk_soul_1.png","sculk_soul_10.png","sculk_soul_2.png","sculk_soul_3.png","sculk_soul_4.png","sculk_soul_5.png","sculk_soul_6.png","sculk_soul_7.png","sculk_soul_8.png","sculk_soul_9.png","sga_a.png","sga_b.png","sga_c.png","sga_d.png","sga_e.png","sga_f.png","sga_g.png","sga_h.png","sga_i.png","sga_j.png","sga_k.png","sga_l.png","sga_m.png","sga_n.png","sga_o.png","sga_p.png","sga_q.png","sga_r.png","sga_s.png","sga_t.png","sga_u.png","sga_v.png","sga_w.png","sga_x.png","sga_y.png","sga_z.png","shriek.png","small_gust_0.png","small_gust_1.png","small_gust_2.png","small_gust_3.png","small_gust_4.png","small_gust_5.png","small_gust_6.png","sonic_boom_0.png","sonic_boom_1.png","sonic_boom_10.png","sonic_boom_11.png","sonic_boom_12.png","sonic_boom_13.png","sonic_boom_14.png","sonic_boom_15.png","sonic_boom_2.png","sonic_boom_3.png","sonic_boom_4.png","sonic_boom_5.png","sonic_boom_6.png","sonic_boom_7.png","sonic_boom_8.png","sonic_boom_9.png","soul_0.png","soul_1.png","soul_10.png","soul_2.png","soul_3.png","soul_4.png","soul_5.png","soul_6.png","soul_7.png","soul_8.png","soul_9.png","soul_fire_flame.png","spark_0.png","spark_1.png","spark_2.png","spark_3.png","spark_4.png","spark_5.png","spark_6.png","spark_7.png","spell_0.png","spell_1.png","spell_2.png","spell_3.png","spell_4.png","spell_5.png","spell_6.png","spell_7.png","splash_0.png","splash_1.png","splash_2.png","splash_3.png","sweep_0.png","sweep_1.png","sweep_2.png","sweep_3.png","sweep_4.png","sweep_5.png","sweep_6.png","sweep_7.png","trial_omen.png","trial_spawner_detection_0.png","trial_spawner_detection_1.png","trial_spawner_detection_2.png","trial_spawner_detection_3.png","trial_spawner_detection_4.png","trial_spawner_detection_ominous_0.png","trial_spawner_detection_ominous_1.png","trial_spawner_detection_ominous_2.png","trial_spawner_detection_ominous_3.png","trial_spawner_detection_ominous_4.png","vault_connection.png","vibration.png","vibration.png.mcmeta"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/processed.json b/common-files/src/main/resources/internal/textures/processed.json new file mode 100644 index 000000000..5a03349e8 --- /dev/null +++ b/common-files/src/main/resources/internal/textures/processed.json @@ -0,0 +1 @@ +["block/acacia_door_bottom","block/acacia_door_top","block/acacia_leaves","block/acacia_log","block/acacia_log_top","block/acacia_planks","block/acacia_sapling","block/acacia_shelf","block/acacia_trapdoor","block/activator_rail","block/activator_rail_on","block/allium","block/amethyst_block","block/amethyst_cluster","block/ancient_debris_side","block/ancient_debris_top","block/andesite","block/anvil","block/anvil_top","block/attached_melon_stem","block/attached_pumpkin_stem","block/azalea_leaves","block/azalea_plant","block/azalea_side","block/azalea_top","block/azure_bluet","block/bamboo_block","block/bamboo_block_top","block/bamboo_door_bottom","block/bamboo_door_top","block/bamboo_fence","block/bamboo_fence_gate","block/bamboo_fence_gate_particle","block/bamboo_fence_particle","block/bamboo_large_leaves","block/bamboo_mosaic","block/bamboo_planks","block/bamboo_shelf","block/bamboo_singleleaf","block/bamboo_small_leaves","block/bamboo_stage0","block/bamboo_stalk","block/bamboo_trapdoor","block/barrel_bottom","block/barrel_side","block/barrel_top","block/barrel_top_open","block/basalt_side","block/basalt_top","block/beacon","block/bedrock","block/bee_nest_bottom","block/bee_nest_front","block/bee_nest_front_honey","block/bee_nest_side","block/bee_nest_top","block/beehive_end","block/beehive_front","block/beehive_front_honey","block/beehive_side","block/beetroots_stage0","block/beetroots_stage1","block/beetroots_stage2","block/beetroots_stage3","block/bell_bottom","block/bell_side","block/bell_top","block/big_dripleaf_side","block/big_dripleaf_stem","block/big_dripleaf_tip","block/big_dripleaf_top","block/birch_door_bottom","block/birch_door_top","block/birch_leaves","block/birch_log","block/birch_log_top","block/birch_planks","block/birch_sapling","block/birch_shelf","block/birch_trapdoor","block/black_candle","block/black_candle_lit","block/black_concrete","block/black_concrete_powder","block/black_glazed_terracotta","block/black_shulker_box","block/black_stained_glass","block/black_stained_glass_pane_top","block/black_terracotta","block/black_wool","block/blackstone","block/blackstone_top","block/blast_furnace_front","block/blast_furnace_front_on","block/blast_furnace_front_on.png","block/blast_furnace_side","block/blast_furnace_top","block/blue_candle","block/blue_candle_lit","block/blue_concrete","block/blue_concrete_powder","block/blue_glazed_terracotta","block/blue_ice","block/blue_orchid","block/blue_shulker_box","block/blue_stained_glass","block/blue_stained_glass_pane_top","block/blue_terracotta","block/blue_wool","block/bone_block_side","block/bone_block_top","block/bookshelf","block/brain_coral","block/brain_coral_block","block/brain_coral_fan","block/brewing_stand","block/brewing_stand_base","block/bricks","block/brown_candle","block/brown_candle_lit","block/brown_concrete","block/brown_concrete_powder","block/brown_glazed_terracotta","block/brown_mushroom","block/brown_mushroom_block","block/brown_shulker_box","block/brown_stained_glass","block/brown_stained_glass_pane_top","block/brown_terracotta","block/brown_wool","block/bubble_coral","block/bubble_coral_block","block/bubble_coral_fan","block/budding_amethyst","block/bush","block/cactus_bottom","block/cactus_flower","block/cactus_side","block/cactus_top","block/cake_bottom","block/cake_inner","block/cake_side","block/cake_top","block/calcite","block/calibrated_sculk_sensor_amethyst","block/calibrated_sculk_sensor_input_side","block/calibrated_sculk_sensor_top","block/campfire_fire","block/campfire_fire.png","block/campfire_log","block/campfire_log_lit","block/campfire_log_lit.png","block/candle","block/candle_lit","block/carrots_stage0","block/carrots_stage1","block/carrots_stage2","block/carrots_stage3","block/cartography_table_side1","block/cartography_table_side2","block/cartography_table_side3","block/cartography_table_top","block/carved_pumpkin","block/cauldron_bottom","block/cauldron_inner","block/cauldron_side","block/cauldron_top","block/cave_vines","block/cave_vines_lit","block/cave_vines_plant","block/cave_vines_plant_lit","block/chain_command_block_back","block/chain_command_block_back.png","block/chain_command_block_conditional","block/chain_command_block_conditional.png","block/chain_command_block_front","block/chain_command_block_front.png","block/chain_command_block_side","block/chain_command_block_side.png","block/cherry_door_bottom","block/cherry_door_top","block/cherry_leaves","block/cherry_log","block/cherry_log_top","block/cherry_planks","block/cherry_sapling","block/cherry_shelf","block/cherry_trapdoor","block/chipped_anvil_top","block/chiseled_bookshelf_empty","block/chiseled_bookshelf_occupied","block/chiseled_bookshelf_side","block/chiseled_bookshelf_top","block/chiseled_copper","block/chiseled_deepslate","block/chiseled_nether_bricks","block/chiseled_polished_blackstone","block/chiseled_quartz_block","block/chiseled_quartz_block_top","block/chiseled_red_sandstone","block/chiseled_resin_bricks","block/chiseled_sandstone","block/chiseled_stone_bricks","block/chiseled_tuff","block/chiseled_tuff_bricks","block/chiseled_tuff_bricks_top","block/chiseled_tuff_top","block/chorus_flower","block/chorus_flower_dead","block/chorus_plant","block/clay","block/closed_eyeblossom","block/coal_block","block/coal_ore","block/coarse_dirt","block/cobbled_deepslate","block/cobblestone","block/cobweb","block/cocoa_stage0","block/cocoa_stage1","block/cocoa_stage2","block/command_block_back","block/command_block_back.png","block/command_block_conditional","block/command_block_conditional.png","block/command_block_front","block/command_block_front.png","block/command_block_side","block/command_block_side.png","block/comparator","block/comparator_on","block/composter_bottom","block/composter_compost","block/composter_ready","block/composter_side","block/composter_top","block/conduit","block/copper_bars","block/copper_block","block/copper_bulb","block/copper_bulb_lit","block/copper_bulb_lit_powered","block/copper_bulb_powered","block/copper_chain","block/copper_door_bottom","block/copper_door_top","block/copper_grate","block/copper_lantern","block/copper_lantern.png","block/copper_ore","block/copper_torch","block/copper_trapdoor","block/cornflower","block/cracked_deepslate_bricks","block/cracked_deepslate_tiles","block/cracked_nether_bricks","block/cracked_polished_blackstone_bricks","block/cracked_stone_bricks","block/crafter_bottom","block/crafter_east","block/crafter_east_crafting","block/crafter_east_triggered","block/crafter_north","block/crafter_north_crafting","block/crafter_south","block/crafter_south_triggered","block/crafter_top","block/crafter_top_crafting","block/crafter_top_triggered","block/crafter_west","block/crafter_west_crafting","block/crafter_west_triggered","block/crafting_table_front","block/crafting_table_side","block/crafting_table_top","block/creaking_heart","block/creaking_heart_awake","block/creaking_heart_dormant","block/creaking_heart_top","block/creaking_heart_top_awake","block/creaking_heart_top_dormant","block/crimson_door_bottom","block/crimson_door_top","block/crimson_fungus","block/crimson_nylium","block/crimson_nylium_side","block/crimson_planks","block/crimson_roots","block/crimson_roots_pot","block/crimson_shelf","block/crimson_stem","block/crimson_stem.png","block/crimson_stem_top","block/crimson_trapdoor","block/crying_obsidian","block/cut_copper","block/cut_red_sandstone","block/cut_sandstone","block/cyan_candle","block/cyan_candle_lit","block/cyan_concrete","block/cyan_concrete_powder","block/cyan_glazed_terracotta","block/cyan_shulker_box","block/cyan_stained_glass","block/cyan_stained_glass_pane_top","block/cyan_terracotta","block/cyan_wool","block/damaged_anvil_top","block/dandelion","block/dark_oak_door_bottom","block/dark_oak_door_top","block/dark_oak_leaves","block/dark_oak_log","block/dark_oak_log_top","block/dark_oak_planks","block/dark_oak_sapling","block/dark_oak_shelf","block/dark_oak_trapdoor","block/dark_prismarine","block/daylight_detector_inverted_top","block/daylight_detector_side","block/daylight_detector_top","block/dead_brain_coral","block/dead_brain_coral_block","block/dead_brain_coral_fan","block/dead_bubble_coral","block/dead_bubble_coral_block","block/dead_bubble_coral_fan","block/dead_bush","block/dead_fire_coral","block/dead_fire_coral_block","block/dead_fire_coral_fan","block/dead_horn_coral","block/dead_horn_coral_block","block/dead_horn_coral_fan","block/dead_tube_coral","block/dead_tube_coral_block","block/dead_tube_coral_fan","block/debug","block/debug2","block/deepslate","block/deepslate_bricks","block/deepslate_coal_ore","block/deepslate_copper_ore","block/deepslate_diamond_ore","block/deepslate_emerald_ore","block/deepslate_gold_ore","block/deepslate_iron_ore","block/deepslate_lapis_ore","block/deepslate_redstone_ore","block/deepslate_tiles","block/deepslate_top","block/destroy_stage_0","block/destroy_stage_1","block/destroy_stage_2","block/destroy_stage_3","block/destroy_stage_4","block/destroy_stage_5","block/destroy_stage_6","block/destroy_stage_7","block/destroy_stage_8","block/destroy_stage_9","block/detector_rail","block/detector_rail_on","block/diamond_block","block/diamond_ore","block/diorite","block/dirt","block/dirt_path_side","block/dirt_path_top","block/dispenser_front","block/dispenser_front_vertical","block/dragon_egg","block/dried_ghast_hydration_0_bottom","block/dried_ghast_hydration_0_east","block/dried_ghast_hydration_0_north","block/dried_ghast_hydration_0_south","block/dried_ghast_hydration_0_tentacles","block/dried_ghast_hydration_0_top","block/dried_ghast_hydration_0_west","block/dried_ghast_hydration_1_bottom","block/dried_ghast_hydration_1_east","block/dried_ghast_hydration_1_north","block/dried_ghast_hydration_1_south","block/dried_ghast_hydration_1_tentacles","block/dried_ghast_hydration_1_top","block/dried_ghast_hydration_1_west","block/dried_ghast_hydration_2_bottom","block/dried_ghast_hydration_2_east","block/dried_ghast_hydration_2_north","block/dried_ghast_hydration_2_south","block/dried_ghast_hydration_2_tentacles","block/dried_ghast_hydration_2_top","block/dried_ghast_hydration_2_west","block/dried_ghast_hydration_3_bottom","block/dried_ghast_hydration_3_east","block/dried_ghast_hydration_3_north","block/dried_ghast_hydration_3_south","block/dried_ghast_hydration_3_tentacles","block/dried_ghast_hydration_3_top","block/dried_ghast_hydration_3_west","block/dried_kelp_bottom","block/dried_kelp_side","block/dried_kelp_top","block/dripstone_block","block/dropper_front","block/dropper_front_vertical","block/emerald_block","block/emerald_ore","block/enchanting_table_bottom","block/enchanting_table_side","block/enchanting_table_top","block/end_portal_frame_eye","block/end_portal_frame_side","block/end_portal_frame_top","block/end_rod","block/end_stone","block/end_stone_bricks","block/exposed_chiseled_copper","block/exposed_copper","block/exposed_copper_bars","block/exposed_copper_bulb","block/exposed_copper_bulb_lit","block/exposed_copper_bulb_lit_powered","block/exposed_copper_bulb_powered","block/exposed_copper_chain","block/exposed_copper_door_bottom","block/exposed_copper_door_top","block/exposed_copper_grate","block/exposed_copper_lantern","block/exposed_copper_lantern.png","block/exposed_copper_trapdoor","block/exposed_cut_copper","block/exposed_lightning_rod","block/farmland","block/farmland_moist","block/fern","block/fire_0","block/fire_0.png","block/fire_1","block/fire_1.png","block/fire_coral","block/fire_coral_block","block/fire_coral_fan","block/firefly_bush","block/firefly_bush_emissive","block/firefly_bush_emissive.png","block/fletching_table_front","block/fletching_table_side","block/fletching_table_top","block/flower_pot","block/flowering_azalea_leaves","block/flowering_azalea_side","block/flowering_azalea_top","block/frogspawn","block/frosted_ice_0","block/frosted_ice_1","block/frosted_ice_2","block/frosted_ice_3","block/furnace_front","block/furnace_front_on","block/furnace_side","block/furnace_top","block/gilded_blackstone","block/glass","block/glass_pane_top","block/glow_item_frame","block/glow_lichen","block/glowstone","block/gold_block","block/gold_ore","block/granite","block/grass_block_side","block/grass_block_side_overlay","block/grass_block_snow","block/grass_block_top","block/gravel","block/gray_candle","block/gray_candle_lit","block/gray_concrete","block/gray_concrete_powder","block/gray_glazed_terracotta","block/gray_shulker_box","block/gray_stained_glass","block/gray_stained_glass_pane_top","block/gray_terracotta","block/gray_wool","block/green_candle","block/green_candle_lit","block/green_concrete","block/green_concrete_powder","block/green_glazed_terracotta","block/green_shulker_box","block/green_stained_glass","block/green_stained_glass_pane_top","block/green_terracotta","block/green_wool","block/grindstone_pivot","block/grindstone_round","block/grindstone_side","block/hanging_roots","block/hay_block_side","block/hay_block_top","block/heavy_core","block/honey_block_bottom","block/honey_block_side","block/honey_block_top","block/honeycomb_block","block/hopper_inside","block/hopper_outside","block/hopper_top","block/horn_coral","block/horn_coral_block","block/horn_coral_fan","block/ice","block/iron_bars","block/iron_block","block/iron_chain","block/iron_door_bottom","block/iron_door_top","block/iron_ore","block/iron_trapdoor","block/item_frame","block/jack_o_lantern","block/jigsaw_bottom","block/jigsaw_lock","block/jigsaw_side","block/jigsaw_top","block/jukebox_side","block/jukebox_top","block/jungle_door_bottom","block/jungle_door_top","block/jungle_leaves","block/jungle_log","block/jungle_log_top","block/jungle_planks","block/jungle_sapling","block/jungle_shelf","block/jungle_trapdoor","block/kelp","block/kelp.png","block/kelp_plant","block/kelp_plant.png","block/ladder","block/lantern","block/lantern.png","block/lapis_block","block/lapis_ore","block/large_amethyst_bud","block/large_fern_bottom","block/large_fern_top","block/lava_flow","block/lava_flow.png","block/lava_still","block/lava_still.png","block/leaf_litter","block/lectern_base","block/lectern_front","block/lectern_sides","block/lectern_top","block/lever","block/light_blue_candle","block/light_blue_candle_lit","block/light_blue_concrete","block/light_blue_concrete_powder","block/light_blue_glazed_terracotta","block/light_blue_shulker_box","block/light_blue_stained_glass","block/light_blue_stained_glass_pane_top","block/light_blue_terracotta","block/light_blue_wool","block/light_gray_candle","block/light_gray_candle_lit","block/light_gray_concrete","block/light_gray_concrete_powder","block/light_gray_glazed_terracotta","block/light_gray_shulker_box","block/light_gray_stained_glass","block/light_gray_stained_glass_pane_top","block/light_gray_terracotta","block/light_gray_wool","block/lightning_rod","block/lightning_rod_on","block/lilac_bottom","block/lilac_top","block/lily_of_the_valley","block/lily_pad","block/lime_candle","block/lime_candle_lit","block/lime_concrete","block/lime_concrete_powder","block/lime_glazed_terracotta","block/lime_shulker_box","block/lime_stained_glass","block/lime_stained_glass_pane_top","block/lime_terracotta","block/lime_wool","block/lodestone_side","block/lodestone_top","block/loom_bottom","block/loom_front","block/loom_side","block/loom_top","block/magenta_candle","block/magenta_candle_lit","block/magenta_concrete","block/magenta_concrete_powder","block/magenta_glazed_terracotta","block/magenta_shulker_box","block/magenta_stained_glass","block/magenta_stained_glass_pane_top","block/magenta_terracotta","block/magenta_wool","block/magma","block/magma.png","block/mangrove_door_bottom","block/mangrove_door_top","block/mangrove_leaves","block/mangrove_log","block/mangrove_log_top","block/mangrove_planks","block/mangrove_propagule","block/mangrove_propagule_hanging","block/mangrove_roots_side","block/mangrove_roots_top","block/mangrove_shelf","block/mangrove_trapdoor","block/medium_amethyst_bud","block/melon_side","block/melon_stem","block/melon_top","block/moss_block","block/mossy_cobblestone","block/mossy_stone_bricks","block/mud","block/mud_bricks","block/muddy_mangrove_roots_side","block/muddy_mangrove_roots_top","block/mushroom_block_inside","block/mushroom_stem","block/mycelium_side","block/mycelium_top","block/nether_bricks","block/nether_gold_ore","block/nether_portal","block/nether_portal.png","block/nether_quartz_ore","block/nether_sprouts","block/nether_wart_block","block/nether_wart_stage0","block/nether_wart_stage1","block/nether_wart_stage2","block/netherite_block","block/netherrack","block/note_block","block/oak_door_bottom","block/oak_door_top","block/oak_leaves","block/oak_log","block/oak_log_top","block/oak_planks","block/oak_sapling","block/oak_shelf","block/oak_trapdoor","block/observer_back","block/observer_back_on","block/observer_front","block/observer_side","block/observer_top","block/obsidian","block/ochre_froglight_side","block/ochre_froglight_top","block/open_eyeblossom","block/open_eyeblossom_emissive","block/orange_candle","block/orange_candle_lit","block/orange_concrete","block/orange_concrete_powder","block/orange_glazed_terracotta","block/orange_shulker_box","block/orange_stained_glass","block/orange_stained_glass_pane_top","block/orange_terracotta","block/orange_tulip","block/orange_wool","block/oxeye_daisy","block/oxidized_chiseled_copper","block/oxidized_copper","block/oxidized_copper_bars","block/oxidized_copper_bulb","block/oxidized_copper_bulb_lit","block/oxidized_copper_bulb_lit_powered","block/oxidized_copper_bulb_powered","block/oxidized_copper_chain","block/oxidized_copper_door_bottom","block/oxidized_copper_door_top","block/oxidized_copper_grate","block/oxidized_copper_lantern","block/oxidized_copper_lantern.png","block/oxidized_copper_trapdoor","block/oxidized_cut_copper","block/oxidized_lightning_rod","block/packed_ice","block/packed_mud","block/pale_hanging_moss","block/pale_hanging_moss_tip","block/pale_moss_block","block/pale_moss_carpet","block/pale_moss_carpet_side_small","block/pale_moss_carpet_side_tall","block/pale_oak_door_bottom","block/pale_oak_door_top","block/pale_oak_leaves","block/pale_oak_log","block/pale_oak_log_top","block/pale_oak_planks","block/pale_oak_sapling","block/pale_oak_shelf","block/pale_oak_trapdoor","block/pearlescent_froglight_side","block/pearlescent_froglight_top","block/peony_bottom","block/peony_top","block/pink_candle","block/pink_candle_lit","block/pink_concrete","block/pink_concrete_powder","block/pink_glazed_terracotta","block/pink_petals","block/pink_petals_stem","block/pink_shulker_box","block/pink_stained_glass","block/pink_stained_glass_pane_top","block/pink_terracotta","block/pink_tulip","block/pink_wool","block/piston_bottom","block/piston_inner","block/piston_side","block/piston_top","block/piston_top_sticky","block/pitcher_crop_bottom","block/pitcher_crop_bottom_stage_1","block/pitcher_crop_bottom_stage_2","block/pitcher_crop_bottom_stage_3","block/pitcher_crop_bottom_stage_4","block/pitcher_crop_side","block/pitcher_crop_top","block/pitcher_crop_top_stage_3","block/pitcher_crop_top_stage_4","block/podzol_side","block/podzol_top","block/pointed_dripstone_down_base","block/pointed_dripstone_down_frustum","block/pointed_dripstone_down_middle","block/pointed_dripstone_down_tip","block/pointed_dripstone_down_tip_merge","block/pointed_dripstone_up_base","block/pointed_dripstone_up_frustum","block/pointed_dripstone_up_middle","block/pointed_dripstone_up_tip","block/pointed_dripstone_up_tip_merge","block/polished_andesite","block/polished_basalt_side","block/polished_basalt_top","block/polished_blackstone","block/polished_blackstone_bricks","block/polished_deepslate","block/polished_diorite","block/polished_granite","block/polished_tuff","block/poppy","block/potatoes_stage0","block/potatoes_stage1","block/potatoes_stage2","block/potatoes_stage3","block/potted_azalea_bush_plant","block/potted_azalea_bush_side","block/potted_azalea_bush_top","block/potted_flowering_azalea_bush_plant","block/potted_flowering_azalea_bush_side","block/potted_flowering_azalea_bush_top","block/powder_snow","block/powered_rail","block/powered_rail_on","block/prismarine","block/prismarine.png","block/prismarine_bricks","block/pumpkin_side","block/pumpkin_stem","block/pumpkin_top","block/purple_candle","block/purple_candle_lit","block/purple_concrete","block/purple_concrete_powder","block/purple_glazed_terracotta","block/purple_shulker_box","block/purple_stained_glass","block/purple_stained_glass_pane_top","block/purple_terracotta","block/purple_wool","block/purpur_block","block/purpur_pillar","block/purpur_pillar_top","block/quartz_block_bottom","block/quartz_block_side","block/quartz_block_top","block/quartz_bricks","block/quartz_pillar","block/quartz_pillar_top","block/rail","block/rail_corner","block/raw_copper_block","block/raw_gold_block","block/raw_iron_block","block/red_candle","block/red_candle_lit","block/red_concrete","block/red_concrete_powder","block/red_glazed_terracotta","block/red_mushroom","block/red_mushroom_block","block/red_nether_bricks","block/red_sand","block/red_sandstone","block/red_sandstone_bottom","block/red_sandstone_top","block/red_shulker_box","block/red_stained_glass","block/red_stained_glass_pane_top","block/red_terracotta","block/red_tulip","block/red_wool","block/redstone_block","block/redstone_dust_dot","block/redstone_dust_line0","block/redstone_dust_line1","block/redstone_dust_overlay","block/redstone_lamp","block/redstone_lamp_on","block/redstone_ore","block/redstone_torch","block/redstone_torch_off","block/reinforced_deepslate_bottom","block/reinforced_deepslate_side","block/reinforced_deepslate_top","block/repeater","block/repeater_on","block/repeating_command_block_back","block/repeating_command_block_back.png","block/repeating_command_block_conditional","block/repeating_command_block_conditional.png","block/repeating_command_block_front","block/repeating_command_block_front.png","block/repeating_command_block_side","block/repeating_command_block_side.png","block/resin_block","block/resin_bricks","block/resin_clump","block/respawn_anchor_bottom","block/respawn_anchor_side0","block/respawn_anchor_side1","block/respawn_anchor_side2","block/respawn_anchor_side3","block/respawn_anchor_side4","block/respawn_anchor_top","block/respawn_anchor_top.png","block/respawn_anchor_top_off","block/rooted_dirt","block/rose_bush_bottom","block/rose_bush_top","block/sand","block/sandstone","block/sandstone_bottom","block/sandstone_top","block/scaffolding_bottom","block/scaffolding_side","block/scaffolding_top","block/sculk","block/sculk.png","block/sculk_catalyst_bottom","block/sculk_catalyst_side","block/sculk_catalyst_side_bloom","block/sculk_catalyst_side_bloom.png","block/sculk_catalyst_top","block/sculk_catalyst_top_bloom","block/sculk_catalyst_top_bloom.png","block/sculk_sensor_bottom","block/sculk_sensor_side","block/sculk_sensor_tendril_active","block/sculk_sensor_tendril_active.png","block/sculk_sensor_tendril_inactive","block/sculk_sensor_tendril_inactive.png","block/sculk_sensor_top","block/sculk_shrieker_bottom","block/sculk_shrieker_can_summon_inner_top","block/sculk_shrieker_can_summon_inner_top.png","block/sculk_shrieker_inner_top","block/sculk_shrieker_inner_top.png","block/sculk_shrieker_side","block/sculk_shrieker_top","block/sculk_vein","block/sculk_vein.png","block/sea_lantern","block/sea_lantern.png","block/sea_pickle","block/seagrass","block/seagrass.png","block/short_dry_grass","block/short_grass","block/shroomlight","block/shulker_box","block/slime_block","block/small_amethyst_bud","block/small_dripleaf_side","block/small_dripleaf_stem_bottom","block/small_dripleaf_stem_top","block/small_dripleaf_top","block/smithing_table_bottom","block/smithing_table_front","block/smithing_table_side","block/smithing_table_top","block/smoker_bottom","block/smoker_front","block/smoker_front_on","block/smoker_front_on.png","block/smoker_side","block/smoker_top","block/smooth_basalt","block/smooth_stone","block/smooth_stone_slab_side","block/sniffer_egg_not_cracked_bottom","block/sniffer_egg_not_cracked_east","block/sniffer_egg_not_cracked_north","block/sniffer_egg_not_cracked_south","block/sniffer_egg_not_cracked_top","block/sniffer_egg_not_cracked_west","block/sniffer_egg_slightly_cracked_bottom","block/sniffer_egg_slightly_cracked_east","block/sniffer_egg_slightly_cracked_north","block/sniffer_egg_slightly_cracked_south","block/sniffer_egg_slightly_cracked_top","block/sniffer_egg_slightly_cracked_west","block/sniffer_egg_very_cracked_bottom","block/sniffer_egg_very_cracked_east","block/sniffer_egg_very_cracked_north","block/sniffer_egg_very_cracked_south","block/sniffer_egg_very_cracked_top","block/sniffer_egg_very_cracked_west","block/snow","block/soul_campfire_fire","block/soul_campfire_fire.png","block/soul_campfire_log_lit","block/soul_campfire_log_lit.png","block/soul_fire_0","block/soul_fire_0.png","block/soul_fire_1","block/soul_fire_1.png","block/soul_lantern","block/soul_lantern.png","block/soul_sand","block/soul_soil","block/soul_torch","block/spawner","block/sponge","block/spore_blossom","block/spore_blossom_base","block/spruce_door_bottom","block/spruce_door_top","block/spruce_leaves","block/spruce_log","block/spruce_log_top","block/spruce_planks","block/spruce_sapling","block/spruce_shelf","block/spruce_trapdoor","block/stone","block/stone_bricks","block/stonecutter_bottom","block/stonecutter_saw","block/stonecutter_saw.png","block/stonecutter_side","block/stonecutter_top","block/stripped_acacia_log","block/stripped_acacia_log_top","block/stripped_bamboo_block","block/stripped_bamboo_block_top","block/stripped_birch_log","block/stripped_birch_log_top","block/stripped_cherry_log","block/stripped_cherry_log_top","block/stripped_crimson_stem","block/stripped_crimson_stem_top","block/stripped_dark_oak_log","block/stripped_dark_oak_log_top","block/stripped_jungle_log","block/stripped_jungle_log_top","block/stripped_mangrove_log","block/stripped_mangrove_log_top","block/stripped_oak_log","block/stripped_oak_log_top","block/stripped_pale_oak_log","block/stripped_pale_oak_log_top","block/stripped_spruce_log","block/stripped_spruce_log_top","block/stripped_warped_stem","block/stripped_warped_stem_top","block/structure_block","block/structure_block_corner","block/structure_block_data","block/structure_block_load","block/structure_block_save","block/sugar_cane","block/sunflower_back","block/sunflower_bottom","block/sunflower_front","block/sunflower_top","block/suspicious_gravel_0","block/suspicious_gravel_1","block/suspicious_gravel_2","block/suspicious_gravel_3","block/suspicious_sand_0","block/suspicious_sand_1","block/suspicious_sand_2","block/suspicious_sand_3","block/sweet_berry_bush_stage0","block/sweet_berry_bush_stage1","block/sweet_berry_bush_stage2","block/sweet_berry_bush_stage3","block/tall_dry_grass","block/tall_grass_bottom","block/tall_grass_top","block/tall_seagrass_bottom","block/tall_seagrass_bottom.png","block/tall_seagrass_top","block/tall_seagrass_top.png","block/target_side","block/target_top","block/terracotta","block/test_block_accept","block/test_block_fail","block/test_block_log","block/test_block_start","block/test_instance_block","block/tinted_glass","block/tnt_bottom","block/tnt_side","block/tnt_top","block/torch","block/torchflower","block/torchflower_crop_stage0","block/torchflower_crop_stage1","block/trial_spawner_bottom","block/trial_spawner_side_active","block/trial_spawner_side_active_ominous","block/trial_spawner_side_inactive","block/trial_spawner_side_inactive_ominous","block/trial_spawner_top_active","block/trial_spawner_top_active_ominous","block/trial_spawner_top_ejecting_reward","block/trial_spawner_top_ejecting_reward_ominous","block/trial_spawner_top_inactive","block/trial_spawner_top_inactive_ominous","block/tripwire","block/tripwire_hook","block/tube_coral","block/tube_coral_block","block/tube_coral_fan","block/tuff","block/tuff_bricks","block/turtle_egg","block/turtle_egg_slightly_cracked","block/turtle_egg_very_cracked","block/twisting_vines","block/twisting_vines_plant","block/vault_bottom","block/vault_bottom_ominous","block/vault_front_ejecting","block/vault_front_ejecting_ominous","block/vault_front_off","block/vault_front_off_ominous","block/vault_front_on","block/vault_front_on_ominous","block/vault_side_off","block/vault_side_off_ominous","block/vault_side_on","block/vault_side_on_ominous","block/vault_top","block/vault_top_ejecting","block/vault_top_ejecting_ominous","block/vault_top_ominous","block/verdant_froglight_side","block/verdant_froglight_top","block/vine","block/warped_door_bottom","block/warped_door_top","block/warped_fungus","block/warped_nylium","block/warped_nylium_side","block/warped_planks","block/warped_roots","block/warped_roots_pot","block/warped_shelf","block/warped_stem","block/warped_stem.png","block/warped_stem_top","block/warped_trapdoor","block/warped_wart_block","block/water_flow","block/water_flow.png","block/water_overlay","block/water_still","block/water_still.png","block/weathered_chiseled_copper","block/weathered_copper","block/weathered_copper_bars","block/weathered_copper_bulb","block/weathered_copper_bulb_lit","block/weathered_copper_bulb_lit_powered","block/weathered_copper_bulb_powered","block/weathered_copper_chain","block/weathered_copper_door_bottom","block/weathered_copper_door_top","block/weathered_copper_grate","block/weathered_copper_lantern","block/weathered_copper_lantern.png","block/weathered_copper_trapdoor","block/weathered_cut_copper","block/weathered_lightning_rod","block/weeping_vines","block/weeping_vines_plant","block/wet_sponge","block/wheat_stage0","block/wheat_stage1","block/wheat_stage2","block/wheat_stage3","block/wheat_stage4","block/wheat_stage5","block/wheat_stage6","block/wheat_stage7","block/white_candle","block/white_candle_lit","block/white_concrete","block/white_concrete_powder","block/white_glazed_terracotta","block/white_shulker_box","block/white_stained_glass","block/white_stained_glass_pane_top","block/white_terracotta","block/white_tulip","block/white_wool","block/wildflowers","block/wildflowers_stem","block/wither_rose","block/yellow_candle","block/yellow_candle_lit","block/yellow_concrete","block/yellow_concrete_powder","block/yellow_glazed_terracotta","block/yellow_shulker_box","block/yellow_stained_glass","block/yellow_stained_glass_pane_top","block/yellow_terracotta","block/yellow_wool","colormap/dry_foliage","colormap/foliage","colormap/grass","effect/dither","entity/armadillo","entity/banner_base","entity/bat","entity/beacon_beam","entity/blaze","entity/dolphin","entity/enchanting_table_book","entity/end_gateway_beam","entity/end_portal","entity/endermite","entity/experience_orb","entity/fishing_hook","entity/guardian","entity/guardian_beam","entity/guardian_elder","entity/lead_knot","entity/minecart","entity/phantom","entity/phantom_eyes","entity/shield_base","entity/shield_base_nopattern","entity/silverfish","entity/snow_golem","entity/spider_eyes","entity/trident","entity/trident_riptide","entity/wandering_trader","entity/witch","entity/allay/allay","entity/armorstand/wood","entity/axolotl/axolotl_blue","entity/axolotl/axolotl_cyan","entity/axolotl/axolotl_gold","entity/axolotl/axolotl_lucy","entity/axolotl/axolotl_wild","entity/banner/base","entity/banner/border","entity/banner/bricks","entity/banner/circle","entity/banner/creeper","entity/banner/cross","entity/banner/curly_border","entity/banner/diagonal_left","entity/banner/diagonal_right","entity/banner/diagonal_up_left","entity/banner/diagonal_up_right","entity/banner/flow","entity/banner/flower","entity/banner/globe","entity/banner/gradient","entity/banner/gradient_up","entity/banner/guster","entity/banner/half_horizontal","entity/banner/half_horizontal_bottom","entity/banner/half_vertical","entity/banner/half_vertical_right","entity/banner/mojang","entity/banner/piglin","entity/banner/rhombus","entity/banner/skull","entity/banner/small_stripes","entity/banner/square_bottom_left","entity/banner/square_bottom_right","entity/banner/square_top_left","entity/banner/square_top_right","entity/banner/straight_cross","entity/banner/stripe_bottom","entity/banner/stripe_center","entity/banner/stripe_downleft","entity/banner/stripe_downright","entity/banner/stripe_left","entity/banner/stripe_middle","entity/banner/stripe_right","entity/banner/stripe_top","entity/banner/triangle_bottom","entity/banner/triangle_top","entity/banner/triangles_bottom","entity/banner/triangles_top","entity/bear/polarbear","entity/bed/black","entity/bed/blue","entity/bed/brown","entity/bed/cyan","entity/bed/gray","entity/bed/green","entity/bed/light_blue","entity/bed/light_gray","entity/bed/lime","entity/bed/magenta","entity/bed/orange","entity/bed/pink","entity/bed/purple","entity/bed/red","entity/bed/white","entity/bed/yellow","entity/bee/bee","entity/bee/bee_angry","entity/bee/bee_angry_nectar","entity/bee/bee_nectar","entity/bee/bee_stinger","entity/bell/bell_body","entity/boat/acacia","entity/boat/bamboo","entity/boat/birch","entity/boat/cherry","entity/boat/dark_oak","entity/boat/jungle","entity/boat/mangrove","entity/boat/oak","entity/boat/pale_oak","entity/boat/spruce","entity/breeze/breeze","entity/breeze/breeze_eyes","entity/breeze/breeze_wind","entity/camel/camel","entity/cat/all_black","entity/cat/black","entity/cat/british_shorthair","entity/cat/calico","entity/cat/cat_collar","entity/cat/jellie","entity/cat/ocelot","entity/cat/persian","entity/cat/ragdoll","entity/cat/red","entity/cat/siamese","entity/cat/tabby","entity/cat/white","entity/chest/christmas","entity/chest/christmas_left","entity/chest/christmas_right","entity/chest/copper","entity/chest/copper_exposed","entity/chest/copper_exposed_left","entity/chest/copper_exposed_right","entity/chest/copper_left","entity/chest/copper_oxidized","entity/chest/copper_oxidized_left","entity/chest/copper_oxidized_right","entity/chest/copper_right","entity/chest/copper_weathered","entity/chest/copper_weathered_left","entity/chest/copper_weathered_right","entity/chest/ender","entity/chest/normal","entity/chest/normal_left","entity/chest/normal_right","entity/chest/trapped","entity/chest/trapped_left","entity/chest/trapped_right","entity/chest_boat/acacia","entity/chest_boat/bamboo","entity/chest_boat/birch","entity/chest_boat/cherry","entity/chest_boat/dark_oak","entity/chest_boat/jungle","entity/chest_boat/mangrove","entity/chest_boat/oak","entity/chest_boat/pale_oak","entity/chest_boat/spruce","entity/chicken/cold_chicken","entity/chicken/temperate_chicken","entity/chicken/warm_chicken","entity/conduit/base","entity/conduit/break_particle","entity/conduit/cage","entity/conduit/closed_eye","entity/conduit/open_eye","entity/conduit/wind","entity/conduit/wind.png","entity/conduit/wind_vertical","entity/conduit/wind_vertical.png","entity/copper_golem/copper_golem","entity/copper_golem/copper_golem_eyes","entity/copper_golem/exposed_copper_golem","entity/copper_golem/exposed_copper_golem_eyes","entity/copper_golem/oxidized_copper_golem","entity/copper_golem/oxidized_copper_golem_eyes","entity/copper_golem/weathered_copper_golem","entity/copper_golem/weathered_copper_golem_eyes","entity/cow/brown_mooshroom","entity/cow/cold_cow","entity/cow/red_mooshroom","entity/cow/temperate_cow","entity/cow/warm_cow","entity/creaking/creaking","entity/creaking/creaking_eyes","entity/creeper/creeper","entity/creeper/creeper_armor","entity/decorated_pot/angler_pottery_pattern","entity/decorated_pot/archer_pottery_pattern","entity/decorated_pot/arms_up_pottery_pattern","entity/decorated_pot/blade_pottery_pattern","entity/decorated_pot/brewer_pottery_pattern","entity/decorated_pot/burn_pottery_pattern","entity/decorated_pot/danger_pottery_pattern","entity/decorated_pot/decorated_pot_base","entity/decorated_pot/decorated_pot_side","entity/decorated_pot/explorer_pottery_pattern","entity/decorated_pot/flow_pottery_pattern","entity/decorated_pot/friend_pottery_pattern","entity/decorated_pot/guster_pottery_pattern","entity/decorated_pot/heart_pottery_pattern","entity/decorated_pot/heartbreak_pottery_pattern","entity/decorated_pot/howl_pottery_pattern","entity/decorated_pot/miner_pottery_pattern","entity/decorated_pot/mourner_pottery_pattern","entity/decorated_pot/plenty_pottery_pattern","entity/decorated_pot/prize_pottery_pattern","entity/decorated_pot/scrape_pottery_pattern","entity/decorated_pot/sheaf_pottery_pattern","entity/decorated_pot/shelter_pottery_pattern","entity/decorated_pot/skull_pottery_pattern","entity/decorated_pot/snort_pottery_pattern","entity/end_crystal/end_crystal","entity/end_crystal/end_crystal_beam","entity/enderdragon/dragon","entity/enderdragon/dragon_exploding","entity/enderdragon/dragon_eyes","entity/enderdragon/dragon_fireball","entity/enderman/enderman","entity/enderman/enderman_eyes","entity/equipment/camel_saddle/saddle","entity/equipment/donkey_saddle/saddle","entity/equipment/happy_ghast_body/black_harness","entity/equipment/happy_ghast_body/blue_harness","entity/equipment/happy_ghast_body/brown_harness","entity/equipment/happy_ghast_body/cyan_harness","entity/equipment/happy_ghast_body/gray_harness","entity/equipment/happy_ghast_body/green_harness","entity/equipment/happy_ghast_body/light_blue_harness","entity/equipment/happy_ghast_body/light_gray_harness","entity/equipment/happy_ghast_body/lime_harness","entity/equipment/happy_ghast_body/magenta_harness","entity/equipment/happy_ghast_body/orange_harness","entity/equipment/happy_ghast_body/pink_harness","entity/equipment/happy_ghast_body/purple_harness","entity/equipment/happy_ghast_body/red_harness","entity/equipment/happy_ghast_body/white_harness","entity/equipment/happy_ghast_body/yellow_harness","entity/equipment/horse_body/copper","entity/equipment/horse_body/diamond","entity/equipment/horse_body/gold","entity/equipment/horse_body/iron","entity/equipment/horse_body/leather","entity/equipment/horse_saddle/saddle","entity/equipment/humanoid/chainmail","entity/equipment/humanoid/copper","entity/equipment/humanoid/diamond","entity/equipment/humanoid/gold","entity/equipment/humanoid/iron","entity/equipment/humanoid/leather","entity/equipment/humanoid/leather_overlay","entity/equipment/humanoid/netherite","entity/equipment/humanoid/turtle_scute","entity/equipment/humanoid_leggings/chainmail","entity/equipment/humanoid_leggings/copper","entity/equipment/humanoid_leggings/diamond","entity/equipment/humanoid_leggings/gold","entity/equipment/humanoid_leggings/iron","entity/equipment/humanoid_leggings/leather","entity/equipment/humanoid_leggings/leather_overlay","entity/equipment/humanoid_leggings/netherite","entity/equipment/llama_body/black","entity/equipment/llama_body/blue","entity/equipment/llama_body/brown","entity/equipment/llama_body/cyan","entity/equipment/llama_body/gray","entity/equipment/llama_body/green","entity/equipment/llama_body/light_blue","entity/equipment/llama_body/light_gray","entity/equipment/llama_body/lime","entity/equipment/llama_body/magenta","entity/equipment/llama_body/orange","entity/equipment/llama_body/pink","entity/equipment/llama_body/purple","entity/equipment/llama_body/red","entity/equipment/llama_body/trader_llama","entity/equipment/llama_body/white","entity/equipment/llama_body/yellow","entity/equipment/mule_saddle/saddle","entity/equipment/pig_saddle/saddle","entity/equipment/skeleton_horse_saddle/saddle","entity/equipment/strider_saddle/saddle","entity/equipment/wings/elytra","entity/equipment/wolf_body/armadillo_scute","entity/equipment/wolf_body/armadillo_scute_overlay","entity/equipment/zombie_horse_saddle/saddle","entity/fish/cod","entity/fish/pufferfish","entity/fish/salmon","entity/fish/tropical_a","entity/fish/tropical_a_pattern_1","entity/fish/tropical_a_pattern_2","entity/fish/tropical_a_pattern_3","entity/fish/tropical_a_pattern_4","entity/fish/tropical_a_pattern_5","entity/fish/tropical_a_pattern_6","entity/fish/tropical_b","entity/fish/tropical_b_pattern_1","entity/fish/tropical_b_pattern_2","entity/fish/tropical_b_pattern_3","entity/fish/tropical_b_pattern_4","entity/fish/tropical_b_pattern_5","entity/fish/tropical_b_pattern_6","entity/fox/fox","entity/fox/fox_sleep","entity/fox/snow_fox","entity/fox/snow_fox_sleep","entity/frog/cold_frog","entity/frog/temperate_frog","entity/frog/warm_frog","entity/ghast/ghast","entity/ghast/ghast_shooting","entity/ghast/happy_ghast","entity/ghast/happy_ghast_baby","entity/ghast/happy_ghast_ropes","entity/goat/goat","entity/hoglin/hoglin","entity/hoglin/zoglin","entity/horse/donkey","entity/horse/horse_black","entity/horse/horse_brown","entity/horse/horse_chestnut","entity/horse/horse_creamy","entity/horse/horse_darkbrown","entity/horse/horse_gray","entity/horse/horse_markings_blackdots","entity/horse/horse_markings_white","entity/horse/horse_markings_whitedots","entity/horse/horse_markings_whitefield","entity/horse/horse_skeleton","entity/horse/horse_white","entity/horse/horse_zombie","entity/horse/mule","entity/illager/evoker","entity/illager/evoker_fangs","entity/illager/illusioner","entity/illager/pillager","entity/illager/ravager","entity/illager/vex","entity/illager/vex_charging","entity/illager/vindicator","entity/iron_golem/iron_golem","entity/iron_golem/iron_golem_crackiness_high","entity/iron_golem/iron_golem_crackiness_low","entity/iron_golem/iron_golem_crackiness_medium","entity/llama/brown","entity/llama/creamy","entity/llama/gray","entity/llama/spit","entity/llama/white","entity/panda/aggressive_panda","entity/panda/brown_panda","entity/panda/lazy_panda","entity/panda/panda","entity/panda/playful_panda","entity/panda/weak_panda","entity/panda/worried_panda","entity/parrot/parrot_blue","entity/parrot/parrot_green","entity/parrot/parrot_grey","entity/parrot/parrot_red_blue","entity/parrot/parrot_yellow_blue","entity/pig/cold_pig","entity/pig/temperate_pig","entity/pig/warm_pig","entity/piglin/piglin","entity/piglin/piglin_brute","entity/piglin/zombified_piglin","entity/player/slim/alex","entity/player/slim/ari","entity/player/slim/efe","entity/player/slim/kai","entity/player/slim/makena","entity/player/slim/noor","entity/player/slim/steve","entity/player/slim/sunny","entity/player/slim/zuri","entity/player/wide/alex","entity/player/wide/ari","entity/player/wide/efe","entity/player/wide/kai","entity/player/wide/makena","entity/player/wide/noor","entity/player/wide/steve","entity/player/wide/sunny","entity/player/wide/zuri","entity/projectiles/arrow","entity/projectiles/spectral_arrow","entity/projectiles/tipped_arrow","entity/projectiles/wind_charge","entity/rabbit/black","entity/rabbit/brown","entity/rabbit/caerbannog","entity/rabbit/gold","entity/rabbit/salt","entity/rabbit/toast","entity/rabbit/white","entity/rabbit/white_splotched","entity/sheep/sheep","entity/sheep/sheep_wool","entity/sheep/sheep_wool_undercoat","entity/shield/base","entity/shield/border","entity/shield/bricks","entity/shield/circle","entity/shield/creeper","entity/shield/cross","entity/shield/curly_border","entity/shield/diagonal_left","entity/shield/diagonal_right","entity/shield/diagonal_up_left","entity/shield/diagonal_up_right","entity/shield/flow","entity/shield/flower","entity/shield/globe","entity/shield/gradient","entity/shield/gradient_up","entity/shield/guster","entity/shield/half_horizontal","entity/shield/half_horizontal_bottom","entity/shield/half_vertical","entity/shield/half_vertical_right","entity/shield/mojang","entity/shield/piglin","entity/shield/rhombus","entity/shield/skull","entity/shield/small_stripes","entity/shield/square_bottom_left","entity/shield/square_bottom_right","entity/shield/square_top_left","entity/shield/square_top_right","entity/shield/straight_cross","entity/shield/stripe_bottom","entity/shield/stripe_center","entity/shield/stripe_downleft","entity/shield/stripe_downright","entity/shield/stripe_left","entity/shield/stripe_middle","entity/shield/stripe_right","entity/shield/stripe_top","entity/shield/triangle_bottom","entity/shield/triangle_top","entity/shield/triangles_bottom","entity/shield/triangles_top","entity/shulker/shulker","entity/shulker/shulker_black","entity/shulker/shulker_blue","entity/shulker/shulker_brown","entity/shulker/shulker_cyan","entity/shulker/shulker_gray","entity/shulker/shulker_green","entity/shulker/shulker_light_blue","entity/shulker/shulker_light_gray","entity/shulker/shulker_lime","entity/shulker/shulker_magenta","entity/shulker/shulker_orange","entity/shulker/shulker_pink","entity/shulker/shulker_purple","entity/shulker/shulker_red","entity/shulker/shulker_white","entity/shulker/shulker_yellow","entity/shulker/spark","entity/signs/acacia","entity/signs/bamboo","entity/signs/birch","entity/signs/cherry","entity/signs/crimson","entity/signs/dark_oak","entity/signs/jungle","entity/signs/mangrove","entity/signs/oak","entity/signs/pale_oak","entity/signs/spruce","entity/signs/warped","entity/signs/hanging/acacia","entity/signs/hanging/bamboo","entity/signs/hanging/birch","entity/signs/hanging/cherry","entity/signs/hanging/crimson","entity/signs/hanging/dark_oak","entity/signs/hanging/jungle","entity/signs/hanging/mangrove","entity/signs/hanging/oak","entity/signs/hanging/pale_oak","entity/signs/hanging/spruce","entity/signs/hanging/warped","entity/skeleton/bogged","entity/skeleton/bogged_overlay","entity/skeleton/skeleton","entity/skeleton/stray","entity/skeleton/stray_overlay","entity/skeleton/wither_skeleton","entity/slime/magmacube","entity/slime/slime","entity/sniffer/sniffer","entity/spider/cave_spider","entity/spider/spider","entity/squid/glow_squid","entity/squid/squid","entity/strider/strider","entity/strider/strider_cold","entity/tadpole/tadpole","entity/turtle/big_sea_turtle","entity/villager/villager","entity/villager/profession/armorer","entity/villager/profession/butcher","entity/villager/profession/butcher.png","entity/villager/profession/cartographer","entity/villager/profession/cleric","entity/villager/profession/farmer","entity/villager/profession/farmer.png","entity/villager/profession/fisherman","entity/villager/profession/fisherman.png","entity/villager/profession/fletcher","entity/villager/profession/fletcher.png","entity/villager/profession/leatherworker","entity/villager/profession/librarian","entity/villager/profession/librarian.png","entity/villager/profession/mason","entity/villager/profession/nitwit","entity/villager/profession/shepherd","entity/villager/profession/shepherd.png","entity/villager/profession/toolsmith","entity/villager/profession/weaponsmith","entity/villager/profession_level/diamond","entity/villager/profession_level/emerald","entity/villager/profession_level/gold","entity/villager/profession_level/iron","entity/villager/profession_level/stone","entity/villager/type/desert","entity/villager/type/desert.png","entity/villager/type/jungle","entity/villager/type/plains","entity/villager/type/savanna","entity/villager/type/snow","entity/villager/type/snow.png","entity/villager/type/swamp","entity/villager/type/taiga","entity/warden/warden","entity/warden/warden_bioluminescent_layer","entity/warden/warden_heart","entity/warden/warden_pulsating_spots_1","entity/warden/warden_pulsating_spots_2","entity/wither/wither","entity/wither/wither_armor","entity/wither/wither_invulnerable","entity/wolf/wolf","entity/wolf/wolf_angry","entity/wolf/wolf_armor_crackiness_high","entity/wolf/wolf_armor_crackiness_low","entity/wolf/wolf_armor_crackiness_medium","entity/wolf/wolf_ashen","entity/wolf/wolf_ashen_angry","entity/wolf/wolf_ashen_tame","entity/wolf/wolf_black","entity/wolf/wolf_black_angry","entity/wolf/wolf_black_tame","entity/wolf/wolf_chestnut","entity/wolf/wolf_chestnut_angry","entity/wolf/wolf_chestnut_tame","entity/wolf/wolf_collar","entity/wolf/wolf_rusty","entity/wolf/wolf_rusty_angry","entity/wolf/wolf_rusty_tame","entity/wolf/wolf_snowy","entity/wolf/wolf_snowy_angry","entity/wolf/wolf_snowy_tame","entity/wolf/wolf_spotted","entity/wolf/wolf_spotted_angry","entity/wolf/wolf_spotted_tame","entity/wolf/wolf_striped","entity/wolf/wolf_striped_angry","entity/wolf/wolf_striped_tame","entity/wolf/wolf_tame","entity/wolf/wolf_woods","entity/wolf/wolf_woods_angry","entity/wolf/wolf_woods_tame","entity/zombie/drowned","entity/zombie/drowned_outer_layer","entity/zombie/husk","entity/zombie/zombie","entity/zombie_villager/zombie_villager","entity/zombie_villager/profession/armorer","entity/zombie_villager/profession/butcher","entity/zombie_villager/profession/butcher.png","entity/zombie_villager/profession/cartographer","entity/zombie_villager/profession/cleric","entity/zombie_villager/profession/farmer","entity/zombie_villager/profession/farmer.png","entity/zombie_villager/profession/fisherman","entity/zombie_villager/profession/fisherman.png","entity/zombie_villager/profession/fletcher","entity/zombie_villager/profession/fletcher.png","entity/zombie_villager/profession/leatherworker","entity/zombie_villager/profession/librarian","entity/zombie_villager/profession/librarian.png","entity/zombie_villager/profession/mason","entity/zombie_villager/profession/nitwit","entity/zombie_villager/profession/shepherd","entity/zombie_villager/profession/shepherd.png","entity/zombie_villager/profession/toolsmith","entity/zombie_villager/profession/weaponsmith","entity/zombie_villager/profession_level/diamond","entity/zombie_villager/profession_level/emerald","entity/zombie_villager/profession_level/gold","entity/zombie_villager/profession_level/iron","entity/zombie_villager/profession_level/stone","entity/zombie_villager/type/desert","entity/zombie_villager/type/jungle","entity/zombie_villager/type/plains","entity/zombie_villager/type/savanna","entity/zombie_villager/type/snow","entity/zombie_villager/type/swamp","entity/zombie_villager/type/taiga","environment/clouds","environment/end_flash","environment/end_sky","environment/moon_phases","environment/rain","environment/snow","environment/sun","font/accented","font/ascii","font/ascii_sga","font/asciillager","font/nonlatin_european","gui/book","gui/demo_background","gui/footer_separator","gui/header_separator","gui/inworld_footer_separator","gui/inworld_header_separator","gui/inworld_menu_background","gui/inworld_menu_list_background","gui/menu_background","gui/menu_list_background","gui/recipe_book","gui/tab_header_background","gui/advancements/window","gui/advancements/backgrounds/adventure","gui/advancements/backgrounds/end","gui/advancements/backgrounds/husbandry","gui/advancements/backgrounds/nether","gui/advancements/backgrounds/stone","gui/container/anvil","gui/container/beacon","gui/container/blast_furnace","gui/container/brewing_stand","gui/container/cartography_table","gui/container/crafter","gui/container/crafting_table","gui/container/dispenser","gui/container/enchanting_table","gui/container/furnace","gui/container/gamemode_switcher","gui/container/generic_54","gui/container/grindstone","gui/container/hopper","gui/container/horse","gui/container/inventory","gui/container/loom","gui/container/shulker_box","gui/container/smithing","gui/container/smoker","gui/container/stonecutter","gui/container/villager","gui/container/creative_inventory/tab_inventory","gui/container/creative_inventory/tab_item_search","gui/container/creative_inventory/tab_items","gui/hanging_signs/acacia","gui/hanging_signs/bamboo","gui/hanging_signs/birch","gui/hanging_signs/cherry","gui/hanging_signs/crimson","gui/hanging_signs/dark_oak","gui/hanging_signs/jungle","gui/hanging_signs/mangrove","gui/hanging_signs/oak","gui/hanging_signs/pale_oak","gui/hanging_signs/spruce","gui/hanging_signs/warped","gui/presets/isles","gui/realms/adventure","gui/realms/empty_frame","gui/realms/experience","gui/realms/inspiration","gui/realms/new_world","gui/realms/no_realms","gui/realms/snapshot_realms","gui/realms/survival_spawn","gui/realms/upload","gui/sprites/advancements/box_obtained","gui/sprites/advancements/box_obtained.png","gui/sprites/advancements/box_unobtained","gui/sprites/advancements/box_unobtained.png","gui/sprites/advancements/challenge_frame_obtained","gui/sprites/advancements/challenge_frame_unobtained","gui/sprites/advancements/goal_frame_obtained","gui/sprites/advancements/goal_frame_unobtained","gui/sprites/advancements/tab_above_left","gui/sprites/advancements/tab_above_left_selected","gui/sprites/advancements/tab_above_middle","gui/sprites/advancements/tab_above_middle_selected","gui/sprites/advancements/tab_above_right","gui/sprites/advancements/tab_above_right_selected","gui/sprites/advancements/tab_below_left","gui/sprites/advancements/tab_below_left_selected","gui/sprites/advancements/tab_below_middle","gui/sprites/advancements/tab_below_middle_selected","gui/sprites/advancements/tab_below_right","gui/sprites/advancements/tab_below_right_selected","gui/sprites/advancements/tab_left_bottom","gui/sprites/advancements/tab_left_bottom_selected","gui/sprites/advancements/tab_left_middle","gui/sprites/advancements/tab_left_middle_selected","gui/sprites/advancements/tab_left_top","gui/sprites/advancements/tab_left_top_selected","gui/sprites/advancements/tab_right_bottom","gui/sprites/advancements/tab_right_bottom_selected","gui/sprites/advancements/tab_right_middle","gui/sprites/advancements/tab_right_middle_selected","gui/sprites/advancements/tab_right_top","gui/sprites/advancements/tab_right_top_selected","gui/sprites/advancements/task_frame_obtained","gui/sprites/advancements/task_frame_unobtained","gui/sprites/advancements/title_box","gui/sprites/advancements/title_box.png","gui/sprites/boss_bar/blue_background","gui/sprites/boss_bar/blue_progress","gui/sprites/boss_bar/green_background","gui/sprites/boss_bar/green_progress","gui/sprites/boss_bar/notched_10_background","gui/sprites/boss_bar/notched_10_progress","gui/sprites/boss_bar/notched_12_background","gui/sprites/boss_bar/notched_12_progress","gui/sprites/boss_bar/notched_20_background","gui/sprites/boss_bar/notched_20_progress","gui/sprites/boss_bar/notched_6_background","gui/sprites/boss_bar/notched_6_progress","gui/sprites/boss_bar/pink_background","gui/sprites/boss_bar/pink_progress","gui/sprites/boss_bar/purple_background","gui/sprites/boss_bar/purple_progress","gui/sprites/boss_bar/red_background","gui/sprites/boss_bar/red_progress","gui/sprites/boss_bar/white_background","gui/sprites/boss_bar/white_progress","gui/sprites/boss_bar/yellow_background","gui/sprites/boss_bar/yellow_progress","gui/sprites/container/slot","gui/sprites/container/slot_highlight_back","gui/sprites/container/slot_highlight_back.png","gui/sprites/container/slot_highlight_front","gui/sprites/container/slot_highlight_front.png","gui/sprites/container/anvil/error","gui/sprites/container/anvil/text_field","gui/sprites/container/anvil/text_field_disabled","gui/sprites/container/beacon/button","gui/sprites/container/beacon/button_disabled","gui/sprites/container/beacon/button_highlighted","gui/sprites/container/beacon/button_selected","gui/sprites/container/beacon/cancel","gui/sprites/container/beacon/confirm","gui/sprites/container/blast_furnace/burn_progress","gui/sprites/container/blast_furnace/lit_progress","gui/sprites/container/brewing_stand/brew_progress","gui/sprites/container/brewing_stand/bubbles","gui/sprites/container/brewing_stand/fuel_length","gui/sprites/container/bundle/bundle_progressbar_border","gui/sprites/container/bundle/bundle_progressbar_border.png","gui/sprites/container/bundle/bundle_progressbar_fill","gui/sprites/container/bundle/bundle_progressbar_fill.png","gui/sprites/container/bundle/bundle_progressbar_full","gui/sprites/container/bundle/bundle_progressbar_full.png","gui/sprites/container/bundle/slot_background","gui/sprites/container/bundle/slot_background.png","gui/sprites/container/bundle/slot_highlight_back","gui/sprites/container/bundle/slot_highlight_back.png","gui/sprites/container/bundle/slot_highlight_front","gui/sprites/container/bundle/slot_highlight_front.png","gui/sprites/container/cartography_table/duplicated_map","gui/sprites/container/cartography_table/error","gui/sprites/container/cartography_table/locked","gui/sprites/container/cartography_table/map","gui/sprites/container/cartography_table/scaled_map","gui/sprites/container/crafter/disabled_slot","gui/sprites/container/crafter/powered_redstone","gui/sprites/container/crafter/unpowered_redstone","gui/sprites/container/creative_inventory/scroller","gui/sprites/container/creative_inventory/scroller_disabled","gui/sprites/container/creative_inventory/tab_bottom_selected_1","gui/sprites/container/creative_inventory/tab_bottom_selected_2","gui/sprites/container/creative_inventory/tab_bottom_selected_3","gui/sprites/container/creative_inventory/tab_bottom_selected_4","gui/sprites/container/creative_inventory/tab_bottom_selected_5","gui/sprites/container/creative_inventory/tab_bottom_selected_6","gui/sprites/container/creative_inventory/tab_bottom_selected_7","gui/sprites/container/creative_inventory/tab_bottom_unselected_1","gui/sprites/container/creative_inventory/tab_bottom_unselected_2","gui/sprites/container/creative_inventory/tab_bottom_unselected_3","gui/sprites/container/creative_inventory/tab_bottom_unselected_4","gui/sprites/container/creative_inventory/tab_bottom_unselected_5","gui/sprites/container/creative_inventory/tab_bottom_unselected_6","gui/sprites/container/creative_inventory/tab_bottom_unselected_7","gui/sprites/container/creative_inventory/tab_top_selected_1","gui/sprites/container/creative_inventory/tab_top_selected_2","gui/sprites/container/creative_inventory/tab_top_selected_3","gui/sprites/container/creative_inventory/tab_top_selected_4","gui/sprites/container/creative_inventory/tab_top_selected_5","gui/sprites/container/creative_inventory/tab_top_selected_6","gui/sprites/container/creative_inventory/tab_top_selected_7","gui/sprites/container/creative_inventory/tab_top_unselected_1","gui/sprites/container/creative_inventory/tab_top_unselected_2","gui/sprites/container/creative_inventory/tab_top_unselected_3","gui/sprites/container/creative_inventory/tab_top_unselected_4","gui/sprites/container/creative_inventory/tab_top_unselected_5","gui/sprites/container/creative_inventory/tab_top_unselected_6","gui/sprites/container/creative_inventory/tab_top_unselected_7","gui/sprites/container/enchanting_table/enchantment_slot","gui/sprites/container/enchanting_table/enchantment_slot_disabled","gui/sprites/container/enchanting_table/enchantment_slot_highlighted","gui/sprites/container/enchanting_table/level_1","gui/sprites/container/enchanting_table/level_1_disabled","gui/sprites/container/enchanting_table/level_2","gui/sprites/container/enchanting_table/level_2_disabled","gui/sprites/container/enchanting_table/level_3","gui/sprites/container/enchanting_table/level_3_disabled","gui/sprites/container/furnace/burn_progress","gui/sprites/container/furnace/lit_progress","gui/sprites/container/grindstone/error","gui/sprites/container/horse/chest_slots","gui/sprites/container/inventory/effect_background_large","gui/sprites/container/inventory/effect_background_small","gui/sprites/container/loom/error","gui/sprites/container/loom/pattern","gui/sprites/container/loom/pattern_highlighted","gui/sprites/container/loom/pattern_selected","gui/sprites/container/loom/scroller","gui/sprites/container/loom/scroller_disabled","gui/sprites/container/slot/amethyst_shard","gui/sprites/container/slot/axe","gui/sprites/container/slot/banner","gui/sprites/container/slot/banner_pattern","gui/sprites/container/slot/boots","gui/sprites/container/slot/brewing_fuel","gui/sprites/container/slot/chestplate","gui/sprites/container/slot/diamond","gui/sprites/container/slot/dye","gui/sprites/container/slot/emerald","gui/sprites/container/slot/helmet","gui/sprites/container/slot/hoe","gui/sprites/container/slot/horse_armor","gui/sprites/container/slot/ingot","gui/sprites/container/slot/lapis_lazuli","gui/sprites/container/slot/leggings","gui/sprites/container/slot/llama_armor","gui/sprites/container/slot/pickaxe","gui/sprites/container/slot/potion","gui/sprites/container/slot/quartz","gui/sprites/container/slot/redstone_dust","gui/sprites/container/slot/saddle","gui/sprites/container/slot/shield","gui/sprites/container/slot/shovel","gui/sprites/container/slot/smithing_template_armor_trim","gui/sprites/container/slot/smithing_template_netherite_upgrade","gui/sprites/container/slot/sword","gui/sprites/container/smithing/error","gui/sprites/container/smoker/burn_progress","gui/sprites/container/smoker/lit_progress","gui/sprites/container/stonecutter/recipe","gui/sprites/container/stonecutter/recipe_highlighted","gui/sprites/container/stonecutter/recipe_selected","gui/sprites/container/stonecutter/scroller","gui/sprites/container/stonecutter/scroller_disabled","gui/sprites/container/villager/discount_strikethrough","gui/sprites/container/villager/experience_bar_background","gui/sprites/container/villager/experience_bar_current","gui/sprites/container/villager/experience_bar_result","gui/sprites/container/villager/out_of_stock","gui/sprites/container/villager/scroller","gui/sprites/container/villager/scroller_disabled","gui/sprites/container/villager/trade_arrow","gui/sprites/container/villager/trade_arrow_out_of_stock","gui/sprites/dialog/warning_button","gui/sprites/dialog/warning_button_disabled","gui/sprites/dialog/warning_button_highlighted","gui/sprites/gamemode_switcher/selection","gui/sprites/gamemode_switcher/slot","gui/sprites/hud/air","gui/sprites/hud/air_bursting","gui/sprites/hud/air_empty","gui/sprites/hud/armor_empty","gui/sprites/hud/armor_full","gui/sprites/hud/armor_half","gui/sprites/hud/crosshair","gui/sprites/hud/crosshair_attack_indicator_background","gui/sprites/hud/crosshair_attack_indicator_full","gui/sprites/hud/crosshair_attack_indicator_progress","gui/sprites/hud/effect_background","gui/sprites/hud/effect_background_ambient","gui/sprites/hud/experience_bar_background","gui/sprites/hud/experience_bar_progress","gui/sprites/hud/food_empty","gui/sprites/hud/food_empty_hunger","gui/sprites/hud/food_full","gui/sprites/hud/food_full_hunger","gui/sprites/hud/food_half","gui/sprites/hud/food_half_hunger","gui/sprites/hud/hotbar","gui/sprites/hud/hotbar_attack_indicator_background","gui/sprites/hud/hotbar_attack_indicator_progress","gui/sprites/hud/hotbar_offhand_left","gui/sprites/hud/hotbar_offhand_right","gui/sprites/hud/hotbar_selection","gui/sprites/hud/jump_bar_background","gui/sprites/hud/jump_bar_cooldown","gui/sprites/hud/jump_bar_progress","gui/sprites/hud/locator_bar_arrow_down","gui/sprites/hud/locator_bar_arrow_down.png","gui/sprites/hud/locator_bar_arrow_up","gui/sprites/hud/locator_bar_arrow_up.png","gui/sprites/hud/locator_bar_background","gui/sprites/hud/locator_bar_background.png","gui/sprites/hud/heart/absorbing_full","gui/sprites/hud/heart/absorbing_full_blinking","gui/sprites/hud/heart/absorbing_half","gui/sprites/hud/heart/absorbing_half_blinking","gui/sprites/hud/heart/absorbing_hardcore_full","gui/sprites/hud/heart/absorbing_hardcore_full_blinking","gui/sprites/hud/heart/absorbing_hardcore_half","gui/sprites/hud/heart/absorbing_hardcore_half_blinking","gui/sprites/hud/heart/container","gui/sprites/hud/heart/container_blinking","gui/sprites/hud/heart/container_hardcore","gui/sprites/hud/heart/container_hardcore_blinking","gui/sprites/hud/heart/frozen_full","gui/sprites/hud/heart/frozen_full_blinking","gui/sprites/hud/heart/frozen_half","gui/sprites/hud/heart/frozen_half_blinking","gui/sprites/hud/heart/frozen_hardcore_full","gui/sprites/hud/heart/frozen_hardcore_full_blinking","gui/sprites/hud/heart/frozen_hardcore_half","gui/sprites/hud/heart/frozen_hardcore_half_blinking","gui/sprites/hud/heart/full","gui/sprites/hud/heart/full_blinking","gui/sprites/hud/heart/half","gui/sprites/hud/heart/half_blinking","gui/sprites/hud/heart/hardcore_full","gui/sprites/hud/heart/hardcore_full_blinking","gui/sprites/hud/heart/hardcore_half","gui/sprites/hud/heart/hardcore_half_blinking","gui/sprites/hud/heart/poisoned_full","gui/sprites/hud/heart/poisoned_full_blinking","gui/sprites/hud/heart/poisoned_half","gui/sprites/hud/heart/poisoned_half_blinking","gui/sprites/hud/heart/poisoned_hardcore_full","gui/sprites/hud/heart/poisoned_hardcore_full_blinking","gui/sprites/hud/heart/poisoned_hardcore_half","gui/sprites/hud/heart/poisoned_hardcore_half_blinking","gui/sprites/hud/heart/vehicle_container","gui/sprites/hud/heart/vehicle_full","gui/sprites/hud/heart/vehicle_half","gui/sprites/hud/heart/withered_full","gui/sprites/hud/heart/withered_full_blinking","gui/sprites/hud/heart/withered_half","gui/sprites/hud/heart/withered_half_blinking","gui/sprites/hud/heart/withered_hardcore_full","gui/sprites/hud/heart/withered_hardcore_full_blinking","gui/sprites/hud/heart/withered_hardcore_half","gui/sprites/hud/heart/withered_hardcore_half_blinking","gui/sprites/hud/locator_bar_dot/bowtie","gui/sprites/hud/locator_bar_dot/default_0","gui/sprites/hud/locator_bar_dot/default_1","gui/sprites/hud/locator_bar_dot/default_2","gui/sprites/hud/locator_bar_dot/default_3","gui/sprites/icon/accessibility","gui/sprites/icon/chat_modified","gui/sprites/icon/checkmark","gui/sprites/icon/draft_report","gui/sprites/icon/info","gui/sprites/icon/invite","gui/sprites/icon/language","gui/sprites/icon/link","gui/sprites/icon/link_highlighted","gui/sprites/icon/music_notes","gui/sprites/icon/music_notes.png","gui/sprites/icon/new_realm","gui/sprites/icon/news","gui/sprites/icon/ping_1","gui/sprites/icon/ping_2","gui/sprites/icon/ping_3","gui/sprites/icon/ping_4","gui/sprites/icon/ping_5","gui/sprites/icon/ping_unknown","gui/sprites/icon/search","gui/sprites/icon/trial_available","gui/sprites/icon/trial_available.png","gui/sprites/icon/unseen_notification","gui/sprites/icon/video_link","gui/sprites/icon/video_link_highlighted","gui/sprites/notification/1","gui/sprites/notification/2","gui/sprites/notification/3","gui/sprites/notification/4","gui/sprites/notification/5","gui/sprites/notification/more","gui/sprites/pending_invite/accept","gui/sprites/pending_invite/accept_highlighted","gui/sprites/pending_invite/reject","gui/sprites/pending_invite/reject_highlighted","gui/sprites/player_list/make_operator","gui/sprites/player_list/remove_operator","gui/sprites/player_list/remove_player","gui/sprites/popup/background","gui/sprites/popup/background.png","gui/sprites/realm_status/closed","gui/sprites/realm_status/expired","gui/sprites/realm_status/expires_soon","gui/sprites/realm_status/expires_soon.png","gui/sprites/realm_status/open","gui/sprites/recipe_book/button","gui/sprites/recipe_book/button_highlighted","gui/sprites/recipe_book/crafting_overlay","gui/sprites/recipe_book/crafting_overlay_disabled","gui/sprites/recipe_book/crafting_overlay_disabled_highlighted","gui/sprites/recipe_book/crafting_overlay_highlighted","gui/sprites/recipe_book/filter_disabled","gui/sprites/recipe_book/filter_disabled_highlighted","gui/sprites/recipe_book/filter_enabled","gui/sprites/recipe_book/filter_enabled_highlighted","gui/sprites/recipe_book/furnace_filter_disabled","gui/sprites/recipe_book/furnace_filter_disabled_highlighted","gui/sprites/recipe_book/furnace_filter_enabled","gui/sprites/recipe_book/furnace_filter_enabled_highlighted","gui/sprites/recipe_book/furnace_overlay","gui/sprites/recipe_book/furnace_overlay_disabled","gui/sprites/recipe_book/furnace_overlay_disabled_highlighted","gui/sprites/recipe_book/furnace_overlay_highlighted","gui/sprites/recipe_book/overlay_recipe","gui/sprites/recipe_book/overlay_recipe.png","gui/sprites/recipe_book/page_backward","gui/sprites/recipe_book/page_backward_highlighted","gui/sprites/recipe_book/page_forward","gui/sprites/recipe_book/page_forward_highlighted","gui/sprites/recipe_book/slot_craftable","gui/sprites/recipe_book/slot_many_craftable","gui/sprites/recipe_book/slot_many_uncraftable","gui/sprites/recipe_book/slot_uncraftable","gui/sprites/recipe_book/tab","gui/sprites/recipe_book/tab_selected","gui/sprites/server_list/incompatible","gui/sprites/server_list/join","gui/sprites/server_list/join_highlighted","gui/sprites/server_list/move_down","gui/sprites/server_list/move_down_highlighted","gui/sprites/server_list/move_up","gui/sprites/server_list/move_up_highlighted","gui/sprites/server_list/ping_1","gui/sprites/server_list/ping_2","gui/sprites/server_list/ping_3","gui/sprites/server_list/ping_4","gui/sprites/server_list/ping_5","gui/sprites/server_list/pinging_1","gui/sprites/server_list/pinging_2","gui/sprites/server_list/pinging_3","gui/sprites/server_list/pinging_4","gui/sprites/server_list/pinging_5","gui/sprites/server_list/unreachable","gui/sprites/social_interactions/background","gui/sprites/social_interactions/background.png","gui/sprites/social_interactions/mute_button","gui/sprites/social_interactions/mute_button_highlighted","gui/sprites/social_interactions/report_button","gui/sprites/social_interactions/report_button_disabled","gui/sprites/social_interactions/report_button_highlighted","gui/sprites/social_interactions/unmute_button","gui/sprites/social_interactions/unmute_button_highlighted","gui/sprites/spectator/close","gui/sprites/spectator/scroll_left","gui/sprites/spectator/scroll_right","gui/sprites/spectator/teleport_to_player","gui/sprites/spectator/teleport_to_team","gui/sprites/statistics/block_mined","gui/sprites/statistics/header","gui/sprites/statistics/item_broken","gui/sprites/statistics/item_crafted","gui/sprites/statistics/item_dropped","gui/sprites/statistics/item_picked_up","gui/sprites/statistics/item_used","gui/sprites/statistics/sort_down","gui/sprites/statistics/sort_up","gui/sprites/toast/advancement","gui/sprites/toast/mouse","gui/sprites/toast/movement_keys","gui/sprites/toast/now_playing","gui/sprites/toast/now_playing.png","gui/sprites/toast/recipe","gui/sprites/toast/recipe_book","gui/sprites/toast/right_click","gui/sprites/toast/social_interactions","gui/sprites/toast/system","gui/sprites/toast/system.png","gui/sprites/toast/tree","gui/sprites/toast/tutorial","gui/sprites/toast/tutorial.png","gui/sprites/toast/wooden_planks","gui/sprites/tooltip/background","gui/sprites/tooltip/background.png","gui/sprites/tooltip/frame","gui/sprites/tooltip/frame.png","gui/sprites/transferable_list/move_down","gui/sprites/transferable_list/move_down_highlighted","gui/sprites/transferable_list/move_up","gui/sprites/transferable_list/move_up_highlighted","gui/sprites/transferable_list/select","gui/sprites/transferable_list/select_highlighted","gui/sprites/transferable_list/unselect","gui/sprites/transferable_list/unselect_highlighted","gui/sprites/widget/button","gui/sprites/widget/button.png","gui/sprites/widget/button_disabled","gui/sprites/widget/button_disabled.png","gui/sprites/widget/button_highlighted","gui/sprites/widget/button_highlighted.png","gui/sprites/widget/checkbox","gui/sprites/widget/checkbox_highlighted","gui/sprites/widget/checkbox_selected","gui/sprites/widget/checkbox_selected_highlighted","gui/sprites/widget/cross_button","gui/sprites/widget/cross_button_highlighted","gui/sprites/widget/locked_button","gui/sprites/widget/locked_button_disabled","gui/sprites/widget/locked_button_highlighted","gui/sprites/widget/page_backward","gui/sprites/widget/page_backward_highlighted","gui/sprites/widget/page_forward","gui/sprites/widget/page_forward_highlighted","gui/sprites/widget/scroller","gui/sprites/widget/scroller.png","gui/sprites/widget/scroller_background","gui/sprites/widget/scroller_background.png","gui/sprites/widget/slider","gui/sprites/widget/slider.png","gui/sprites/widget/slider_handle","gui/sprites/widget/slider_handle.png","gui/sprites/widget/slider_handle_highlighted","gui/sprites/widget/slider_handle_highlighted.png","gui/sprites/widget/slider_highlighted","gui/sprites/widget/slider_highlighted.png","gui/sprites/widget/slot_frame","gui/sprites/widget/tab","gui/sprites/widget/tab.png","gui/sprites/widget/tab_highlighted","gui/sprites/widget/tab_highlighted.png","gui/sprites/widget/tab_selected","gui/sprites/widget/tab_selected.png","gui/sprites/widget/tab_selected_highlighted","gui/sprites/widget/tab_selected_highlighted.png","gui/sprites/widget/text_field","gui/sprites/widget/text_field.png","gui/sprites/widget/text_field_highlighted","gui/sprites/widget/text_field_highlighted.png","gui/sprites/widget/unlocked_button","gui/sprites/widget/unlocked_button_disabled","gui/sprites/widget/unlocked_button_highlighted","gui/sprites/world_list/error","gui/sprites/world_list/error_highlighted","gui/sprites/world_list/join","gui/sprites/world_list/join_highlighted","gui/sprites/world_list/marked_join","gui/sprites/world_list/marked_join_highlighted","gui/sprites/world_list/warning","gui/sprites/world_list/warning_highlighted","gui/title/edition","gui/title/minceraft","gui/title/minecraft","gui/title/mojangstudios","gui/title/realms","gui/title/background/panorama_0","gui/title/background/panorama_1","gui/title/background/panorama_2","gui/title/background/panorama_3","gui/title/background/panorama_4","gui/title/background/panorama_5","gui/title/background/panorama_overlay","item/acacia_boat","item/acacia_chest_boat","item/acacia_door","item/acacia_hanging_sign","item/acacia_sign","item/allay_spawn_egg","item/amethyst_shard","item/angler_pottery_sherd","item/apple","item/archer_pottery_sherd","item/armadillo_scute","item/armadillo_spawn_egg","item/armor_stand","item/arms_up_pottery_sherd","item/arrow","item/axolotl_bucket","item/axolotl_spawn_egg","item/baked_potato","item/bamboo","item/bamboo_chest_raft","item/bamboo_door","item/bamboo_hanging_sign","item/bamboo_raft","item/bamboo_sign","item/barrier","item/bat_spawn_egg","item/bee_spawn_egg","item/beef","item/beetroot","item/beetroot_seeds","item/beetroot_soup","item/bell","item/birch_boat","item/birch_chest_boat","item/birch_door","item/birch_hanging_sign","item/birch_sign","item/black_bundle","item/black_bundle_open_back","item/black_bundle_open_front","item/black_candle","item/black_dye","item/black_harness","item/blade_pottery_sherd","item/blaze_powder","item/blaze_rod","item/blaze_spawn_egg","item/blue_bundle","item/blue_bundle_open_back","item/blue_bundle_open_front","item/blue_candle","item/blue_dye","item/blue_egg","item/blue_harness","item/bogged_spawn_egg","item/bolt_armor_trim_smithing_template","item/bone","item/bone_meal","item/book","item/bordure_indented_banner_pattern","item/bow","item/bow_pulling_0","item/bow_pulling_1","item/bow_pulling_2","item/bowl","item/bread","item/breeze_rod","item/breeze_spawn_egg","item/brewer_pottery_sherd","item/brewing_stand","item/brick","item/brown_bundle","item/brown_bundle_open_back","item/brown_bundle_open_front","item/brown_candle","item/brown_dye","item/brown_egg","item/brown_harness","item/brush","item/bucket","item/bundle","item/bundle_open_back","item/bundle_open_front","item/burn_pottery_sherd","item/cake","item/camel_spawn_egg","item/campfire","item/candle","item/carrot","item/carrot_on_a_stick","item/cat_spawn_egg","item/cauldron","item/cave_spider_spawn_egg","item/chainmail_boots","item/chainmail_chestplate","item/chainmail_helmet","item/chainmail_leggings","item/charcoal","item/cherry_boat","item/cherry_chest_boat","item/cherry_door","item/cherry_hanging_sign","item/cherry_sign","item/chest_minecart","item/chicken","item/chicken_spawn_egg","item/chorus_fruit","item/clay_ball","item/clock_00","item/clock_01","item/clock_02","item/clock_03","item/clock_04","item/clock_05","item/clock_06","item/clock_07","item/clock_08","item/clock_09","item/clock_10","item/clock_11","item/clock_12","item/clock_13","item/clock_14","item/clock_15","item/clock_16","item/clock_17","item/clock_18","item/clock_19","item/clock_20","item/clock_21","item/clock_22","item/clock_23","item/clock_24","item/clock_25","item/clock_26","item/clock_27","item/clock_28","item/clock_29","item/clock_30","item/clock_31","item/clock_32","item/clock_33","item/clock_34","item/clock_35","item/clock_36","item/clock_37","item/clock_38","item/clock_39","item/clock_40","item/clock_41","item/clock_42","item/clock_43","item/clock_44","item/clock_45","item/clock_46","item/clock_47","item/clock_48","item/clock_49","item/clock_50","item/clock_51","item/clock_52","item/clock_53","item/clock_54","item/clock_55","item/clock_56","item/clock_57","item/clock_58","item/clock_59","item/clock_60","item/clock_61","item/clock_62","item/clock_63","item/coal","item/coast_armor_trim_smithing_template","item/cocoa_beans","item/cod","item/cod_bucket","item/cod_spawn_egg","item/command_block_minecart","item/comparator","item/compass_00","item/compass_01","item/compass_02","item/compass_03","item/compass_04","item/compass_05","item/compass_06","item/compass_07","item/compass_08","item/compass_09","item/compass_10","item/compass_11","item/compass_12","item/compass_13","item/compass_14","item/compass_15","item/compass_16","item/compass_17","item/compass_18","item/compass_19","item/compass_20","item/compass_21","item/compass_22","item/compass_23","item/compass_24","item/compass_25","item/compass_26","item/compass_27","item/compass_28","item/compass_29","item/compass_30","item/compass_31","item/cooked_beef","item/cooked_chicken","item/cooked_cod","item/cooked_mutton","item/cooked_porkchop","item/cooked_rabbit","item/cooked_salmon","item/cookie","item/copper_axe","item/copper_boots","item/copper_chain","item/copper_chestplate","item/copper_door","item/copper_golem_spawn_egg","item/copper_helmet","item/copper_hoe","item/copper_horse_armor","item/copper_ingot","item/copper_lantern","item/copper_leggings","item/copper_nugget","item/copper_pickaxe","item/copper_shovel","item/copper_sword","item/cow_spawn_egg","item/creaking_spawn_egg","item/creeper_banner_pattern","item/creeper_spawn_egg","item/crimson_door","item/crimson_hanging_sign","item/crimson_sign","item/crossbow_arrow","item/crossbow_firework","item/crossbow_pulling_0","item/crossbow_pulling_1","item/crossbow_pulling_2","item/crossbow_standby","item/cyan_bundle","item/cyan_bundle_open_back","item/cyan_bundle_open_front","item/cyan_candle","item/cyan_dye","item/cyan_harness","item/danger_pottery_sherd","item/dark_oak_boat","item/dark_oak_chest_boat","item/dark_oak_door","item/dark_oak_hanging_sign","item/dark_oak_sign","item/diamond","item/diamond_axe","item/diamond_boots","item/diamond_chestplate","item/diamond_helmet","item/diamond_hoe","item/diamond_horse_armor","item/diamond_leggings","item/diamond_pickaxe","item/diamond_shovel","item/diamond_sword","item/disc_fragment_5","item/dolphin_spawn_egg","item/donkey_spawn_egg","item/dragon_breath","item/dried_kelp","item/drowned_spawn_egg","item/dune_armor_trim_smithing_template","item/echo_shard","item/egg","item/elder_guardian_spawn_egg","item/elytra","item/elytra_broken","item/emerald","item/enchanted_book","item/end_crystal","item/ender_dragon_spawn_egg","item/ender_eye","item/ender_pearl","item/enderman_spawn_egg","item/endermite_spawn_egg","item/evoker_spawn_egg","item/experience_bottle","item/explorer_pottery_sherd","item/exposed_copper_chain","item/exposed_copper_door","item/exposed_copper_lantern","item/eye_armor_trim_smithing_template","item/feather","item/fermented_spider_eye","item/field_masoned_banner_pattern","item/filled_map","item/filled_map_markings","item/fire_charge","item/firefly_bush","item/firework_rocket","item/firework_star","item/firework_star_overlay","item/fishing_rod","item/fishing_rod_cast","item/flint","item/flint_and_steel","item/flow_armor_trim_smithing_template","item/flow_banner_pattern","item/flow_pottery_sherd","item/flower_banner_pattern","item/flower_pot","item/fox_spawn_egg","item/friend_pottery_sherd","item/frog_spawn_egg","item/furnace_minecart","item/ghast_spawn_egg","item/ghast_tear","item/glass_bottle","item/glistering_melon_slice","item/globe_banner_pattern","item/glow_berries","item/glow_ink_sac","item/glow_item_frame","item/glow_squid_spawn_egg","item/glowstone_dust","item/goat_horn","item/goat_spawn_egg","item/gold_ingot","item/gold_nugget","item/golden_apple","item/golden_axe","item/golden_boots","item/golden_carrot","item/golden_chestplate","item/golden_helmet","item/golden_hoe","item/golden_horse_armor","item/golden_leggings","item/golden_pickaxe","item/golden_shovel","item/golden_sword","item/gray_bundle","item/gray_bundle_open_back","item/gray_bundle_open_front","item/gray_candle","item/gray_dye","item/gray_harness","item/green_bundle","item/green_bundle_open_back","item/green_bundle_open_front","item/green_candle","item/green_dye","item/green_harness","item/guardian_spawn_egg","item/gunpowder","item/guster_banner_pattern","item/guster_pottery_sherd","item/happy_ghast_spawn_egg","item/heart_of_the_sea","item/heart_pottery_sherd","item/heartbreak_pottery_sherd","item/hoglin_spawn_egg","item/honey_bottle","item/honeycomb","item/hopper","item/hopper_minecart","item/horse_spawn_egg","item/host_armor_trim_smithing_template","item/howl_pottery_sherd","item/husk_spawn_egg","item/ink_sac","item/iron_axe","item/iron_boots","item/iron_chain","item/iron_chestplate","item/iron_door","item/iron_golem_spawn_egg","item/iron_helmet","item/iron_hoe","item/iron_horse_armor","item/iron_ingot","item/iron_leggings","item/iron_nugget","item/iron_pickaxe","item/iron_shovel","item/iron_sword","item/item_frame","item/jungle_boat","item/jungle_chest_boat","item/jungle_door","item/jungle_hanging_sign","item/jungle_sign","item/kelp","item/knowledge_book","item/lantern","item/lapis_lazuli","item/lava_bucket","item/lead","item/leaf_litter","item/leather","item/leather_boots","item/leather_boots_overlay","item/leather_chestplate","item/leather_chestplate_overlay","item/leather_helmet","item/leather_helmet_overlay","item/leather_horse_armor","item/leather_leggings","item/leather_leggings_overlay","item/light","item/light_00","item/light_01","item/light_02","item/light_03","item/light_04","item/light_05","item/light_06","item/light_07","item/light_08","item/light_09","item/light_10","item/light_11","item/light_12","item/light_13","item/light_14","item/light_15","item/light_blue_bundle","item/light_blue_bundle_open_back","item/light_blue_bundle_open_front","item/light_blue_candle","item/light_blue_dye","item/light_blue_harness","item/light_gray_bundle","item/light_gray_bundle_open_back","item/light_gray_bundle_open_front","item/light_gray_candle","item/light_gray_dye","item/light_gray_harness","item/lime_bundle","item/lime_bundle_open_back","item/lime_bundle_open_front","item/lime_candle","item/lime_dye","item/lime_harness","item/lingering_potion","item/llama_spawn_egg","item/mace","item/magenta_bundle","item/magenta_bundle_open_back","item/magenta_bundle_open_front","item/magenta_candle","item/magenta_dye","item/magenta_harness","item/magma_cream","item/magma_cube_spawn_egg","item/mangrove_boat","item/mangrove_chest_boat","item/mangrove_door","item/mangrove_hanging_sign","item/mangrove_propagule","item/mangrove_sign","item/map","item/melon_seeds","item/melon_slice","item/milk_bucket","item/minecart","item/miner_pottery_sherd","item/mojang_banner_pattern","item/mooshroom_spawn_egg","item/mourner_pottery_sherd","item/mule_spawn_egg","item/mushroom_stew","item/music_disc_11","item/music_disc_13","item/music_disc_5","item/music_disc_blocks","item/music_disc_cat","item/music_disc_chirp","item/music_disc_creator","item/music_disc_creator_music_box","item/music_disc_far","item/music_disc_lava_chicken","item/music_disc_mall","item/music_disc_mellohi","item/music_disc_otherside","item/music_disc_pigstep","item/music_disc_precipice","item/music_disc_relic","item/music_disc_stal","item/music_disc_strad","item/music_disc_tears","item/music_disc_wait","item/music_disc_ward","item/mutton","item/name_tag","item/nautilus_shell","item/nether_brick","item/nether_sprouts","item/nether_star","item/nether_wart","item/netherite_axe","item/netherite_boots","item/netherite_chestplate","item/netherite_helmet","item/netherite_hoe","item/netherite_ingot","item/netherite_leggings","item/netherite_pickaxe","item/netherite_scrap","item/netherite_shovel","item/netherite_sword","item/netherite_upgrade_smithing_template","item/oak_boat","item/oak_chest_boat","item/oak_door","item/oak_hanging_sign","item/oak_sign","item/ocelot_spawn_egg","item/ominous_bottle","item/ominous_trial_key","item/orange_bundle","item/orange_bundle_open_back","item/orange_bundle_open_front","item/orange_candle","item/orange_dye","item/orange_harness","item/oxidized_copper_chain","item/oxidized_copper_door","item/oxidized_copper_lantern","item/painting","item/pale_oak_boat","item/pale_oak_chest_boat","item/pale_oak_door","item/pale_oak_hanging_sign","item/pale_oak_sign","item/panda_spawn_egg","item/paper","item/parrot_spawn_egg","item/phantom_membrane","item/phantom_spawn_egg","item/pig_spawn_egg","item/piglin_banner_pattern","item/piglin_brute_spawn_egg","item/piglin_spawn_egg","item/pillager_spawn_egg","item/pink_bundle","item/pink_bundle_open_back","item/pink_bundle_open_front","item/pink_candle","item/pink_dye","item/pink_harness","item/pink_petals","item/pitcher_plant","item/pitcher_pod","item/plenty_pottery_sherd","item/pointed_dripstone","item/poisonous_potato","item/polar_bear_spawn_egg","item/popped_chorus_fruit","item/porkchop","item/potato","item/potion","item/potion_overlay","item/powder_snow_bucket","item/prismarine_crystals","item/prismarine_shard","item/prize_pottery_sherd","item/pufferfish","item/pufferfish_bucket","item/pufferfish_spawn_egg","item/pumpkin_pie","item/pumpkin_seeds","item/purple_bundle","item/purple_bundle_open_back","item/purple_bundle_open_front","item/purple_candle","item/purple_dye","item/purple_harness","item/quartz","item/rabbit","item/rabbit_foot","item/rabbit_hide","item/rabbit_spawn_egg","item/rabbit_stew","item/raiser_armor_trim_smithing_template","item/ravager_spawn_egg","item/raw_copper","item/raw_gold","item/raw_iron","item/recovery_compass_00","item/recovery_compass_01","item/recovery_compass_02","item/recovery_compass_03","item/recovery_compass_04","item/recovery_compass_05","item/recovery_compass_06","item/recovery_compass_07","item/recovery_compass_08","item/recovery_compass_09","item/recovery_compass_10","item/recovery_compass_11","item/recovery_compass_12","item/recovery_compass_13","item/recovery_compass_14","item/recovery_compass_15","item/recovery_compass_16","item/recovery_compass_17","item/recovery_compass_18","item/recovery_compass_19","item/recovery_compass_20","item/recovery_compass_21","item/recovery_compass_22","item/recovery_compass_23","item/recovery_compass_24","item/recovery_compass_25","item/recovery_compass_26","item/recovery_compass_27","item/recovery_compass_28","item/recovery_compass_29","item/recovery_compass_30","item/recovery_compass_31","item/red_bundle","item/red_bundle_open_back","item/red_bundle_open_front","item/red_candle","item/red_dye","item/red_harness","item/redstone","item/repeater","item/resin_brick","item/resin_clump","item/rib_armor_trim_smithing_template","item/rotten_flesh","item/saddle","item/salmon","item/salmon_bucket","item/salmon_spawn_egg","item/scrape_pottery_sherd","item/sea_pickle","item/seagrass","item/sentry_armor_trim_smithing_template","item/shaper_armor_trim_smithing_template","item/sheaf_pottery_sherd","item/shears","item/sheep_spawn_egg","item/shelter_pottery_sherd","item/shulker_shell","item/shulker_spawn_egg","item/silence_armor_trim_smithing_template","item/silverfish_spawn_egg","item/skeleton_horse_spawn_egg","item/skeleton_spawn_egg","item/skull_banner_pattern","item/skull_pottery_sherd","item/slime_ball","item/slime_spawn_egg","item/sniffer_egg","item/sniffer_spawn_egg","item/snort_pottery_sherd","item/snout_armor_trim_smithing_template","item/snow_golem_spawn_egg","item/snowball","item/soul_campfire","item/soul_lantern","item/spectral_arrow","item/spider_eye","item/spider_spawn_egg","item/spire_armor_trim_smithing_template","item/splash_potion","item/spruce_boat","item/spruce_chest_boat","item/spruce_door","item/spruce_hanging_sign","item/spruce_sign","item/spyglass","item/spyglass_model","item/squid_spawn_egg","item/stick","item/stone_axe","item/stone_hoe","item/stone_pickaxe","item/stone_shovel","item/stone_sword","item/stray_spawn_egg","item/strider_spawn_egg","item/string","item/structure_void","item/sugar","item/sugar_cane","item/suspicious_stew","item/sweet_berries","item/tadpole_bucket","item/tadpole_spawn_egg","item/tide_armor_trim_smithing_template","item/tipped_arrow_base","item/tipped_arrow_head","item/tnt_minecart","item/torchflower_seeds","item/totem_of_undying","item/trader_llama_spawn_egg","item/trial_key","item/trident","item/tropical_fish","item/tropical_fish_bucket","item/tropical_fish_spawn_egg","item/turtle_egg","item/turtle_helmet","item/turtle_scute","item/turtle_spawn_egg","item/vex_armor_trim_smithing_template","item/vex_spawn_egg","item/villager_spawn_egg","item/vindicator_spawn_egg","item/wandering_trader_spawn_egg","item/ward_armor_trim_smithing_template","item/warden_spawn_egg","item/warped_door","item/warped_fungus_on_a_stick","item/warped_hanging_sign","item/warped_sign","item/water_bucket","item/wayfinder_armor_trim_smithing_template","item/weathered_copper_chain","item/weathered_copper_door","item/weathered_copper_lantern","item/wheat","item/wheat_seeds","item/white_bundle","item/white_bundle_open_back","item/white_bundle_open_front","item/white_candle","item/white_dye","item/white_harness","item/wild_armor_trim_smithing_template","item/wildflowers","item/wind_charge","item/witch_spawn_egg","item/wither_skeleton_spawn_egg","item/wither_spawn_egg","item/wolf_armor","item/wolf_armor_overlay","item/wolf_spawn_egg","item/wooden_axe","item/wooden_hoe","item/wooden_pickaxe","item/wooden_shovel","item/wooden_sword","item/writable_book","item/written_book","item/yellow_bundle","item/yellow_bundle_open_back","item/yellow_bundle_open_front","item/yellow_candle","item/yellow_dye","item/yellow_harness","item/zoglin_spawn_egg","item/zombie_horse_spawn_egg","item/zombie_spawn_egg","item/zombie_villager_spawn_egg","item/zombified_piglin_spawn_egg","map/map_background","map/map_background_checkerboard","map/decorations/black_banner","map/decorations/blue_banner","map/decorations/blue_marker","map/decorations/brown_banner","map/decorations/cyan_banner","map/decorations/desert_village","map/decorations/frame","map/decorations/gray_banner","map/decorations/green_banner","map/decorations/jungle_temple","map/decorations/light_blue_banner","map/decorations/light_gray_banner","map/decorations/lime_banner","map/decorations/magenta_banner","map/decorations/ocean_monument","map/decorations/orange_banner","map/decorations/pink_banner","map/decorations/plains_village","map/decorations/player","map/decorations/player_off_limits","map/decorations/player_off_map","map/decorations/purple_banner","map/decorations/red_banner","map/decorations/red_marker","map/decorations/red_x","map/decorations/savanna_village","map/decorations/snowy_village","map/decorations/swamp_hut","map/decorations/taiga_village","map/decorations/target_point","map/decorations/target_x","map/decorations/trial_chambers","map/decorations/white_banner","map/decorations/woodland_mansion","map/decorations/yellow_banner","misc/credits_vignette","misc/credits_vignette.png","misc/enchanted_glint_armor","misc/enchanted_glint_armor.png","misc/enchanted_glint_item","misc/enchanted_glint_item.png","misc/forcefield","misc/nausea","misc/nausea.png","misc/powder_snow_outline","misc/pumpkinblur","misc/pumpkinblur.png","misc/shadow","misc/shadow.png","misc/spyglass_scope","misc/underwater","misc/unknown_pack","misc/unknown_server","misc/vignette","misc/vignette.png","mob_effect/absorption","mob_effect/bad_omen","mob_effect/blindness","mob_effect/conduit_power","mob_effect/darkness","mob_effect/dolphins_grace","mob_effect/fire_resistance","mob_effect/glowing","mob_effect/haste","mob_effect/health_boost","mob_effect/hero_of_the_village","mob_effect/hunger","mob_effect/infested","mob_effect/instant_damage","mob_effect/instant_health","mob_effect/invisibility","mob_effect/jump_boost","mob_effect/levitation","mob_effect/luck","mob_effect/mining_fatigue","mob_effect/nausea","mob_effect/night_vision","mob_effect/oozing","mob_effect/poison","mob_effect/raid_omen","mob_effect/regeneration","mob_effect/resistance","mob_effect/saturation","mob_effect/slow_falling","mob_effect/slowness","mob_effect/speed","mob_effect/strength","mob_effect/trial_omen","mob_effect/unluck","mob_effect/water_breathing","mob_effect/weakness","mob_effect/weaving","mob_effect/wind_charged","mob_effect/wither","painting/alban","painting/aztec","painting/aztec2","painting/back","painting/backyard","painting/baroque","painting/bomb","painting/bouquet","painting/burning_skull","painting/bust","painting/cavebird","painting/changing","painting/cotan","painting/courbet","painting/creebet","painting/dennis","painting/donkey_kong","painting/earth","painting/endboss","painting/fern","painting/fighters","painting/finding","painting/fire","painting/graham","painting/humble","painting/kebab","painting/lowmist","painting/match","painting/meditative","painting/orb","painting/owlemons","painting/passage","painting/pigscene","painting/plant","painting/pointer","painting/pond","painting/pool","painting/prairie_ride","painting/sea","painting/skeleton","painting/skull_and_roses","painting/stage","painting/sunflowers","painting/sunset","painting/tides","painting/unpacked","painting/void","painting/wanderer","painting/wasteland","painting/water","painting/wind","painting/wither","particle/angry","particle/big_smoke_0","particle/big_smoke_1","particle/big_smoke_10","particle/big_smoke_11","particle/big_smoke_2","particle/big_smoke_3","particle/big_smoke_4","particle/big_smoke_5","particle/big_smoke_6","particle/big_smoke_7","particle/big_smoke_8","particle/big_smoke_9","particle/bubble","particle/bubble_pop_0","particle/bubble_pop_1","particle/bubble_pop_2","particle/bubble_pop_3","particle/bubble_pop_4","particle/cherry_0","particle/cherry_1","particle/cherry_10","particle/cherry_11","particle/cherry_2","particle/cherry_3","particle/cherry_4","particle/cherry_5","particle/cherry_6","particle/cherry_7","particle/cherry_8","particle/cherry_9","particle/copper_fire_flame","particle/critical_hit","particle/damage","particle/drip_fall","particle/drip_hang","particle/drip_land","particle/effect_0","particle/effect_1","particle/effect_2","particle/effect_3","particle/effect_4","particle/effect_5","particle/effect_6","particle/effect_7","particle/enchanted_hit","particle/explosion_0","particle/explosion_1","particle/explosion_10","particle/explosion_11","particle/explosion_12","particle/explosion_13","particle/explosion_14","particle/explosion_15","particle/explosion_2","particle/explosion_3","particle/explosion_4","particle/explosion_5","particle/explosion_6","particle/explosion_7","particle/explosion_8","particle/explosion_9","particle/firefly","particle/flame","particle/flash","particle/generic_0","particle/generic_1","particle/generic_2","particle/generic_3","particle/generic_4","particle/generic_5","particle/generic_6","particle/generic_7","particle/glint","particle/glitter_0","particle/glitter_1","particle/glitter_2","particle/glitter_3","particle/glitter_4","particle/glitter_5","particle/glitter_6","particle/glitter_7","particle/glow","particle/goldheart_0","particle/goldheart_1","particle/goldheart_2","particle/gust_0","particle/gust_1","particle/gust_10","particle/gust_11","particle/gust_2","particle/gust_3","particle/gust_4","particle/gust_5","particle/gust_6","particle/gust_7","particle/gust_8","particle/gust_9","particle/heart","particle/infested","particle/lava","particle/leaf_0","particle/leaf_1","particle/leaf_10","particle/leaf_11","particle/leaf_2","particle/leaf_3","particle/leaf_4","particle/leaf_5","particle/leaf_6","particle/leaf_7","particle/leaf_8","particle/leaf_9","particle/nautilus","particle/note","particle/ominous_spawning","particle/pale_oak_0","particle/pale_oak_1","particle/pale_oak_10","particle/pale_oak_11","particle/pale_oak_2","particle/pale_oak_3","particle/pale_oak_4","particle/pale_oak_5","particle/pale_oak_6","particle/pale_oak_7","particle/pale_oak_8","particle/pale_oak_9","particle/raid_omen","particle/sculk_charge_0","particle/sculk_charge_1","particle/sculk_charge_2","particle/sculk_charge_3","particle/sculk_charge_4","particle/sculk_charge_5","particle/sculk_charge_6","particle/sculk_charge_pop_0","particle/sculk_charge_pop_1","particle/sculk_charge_pop_2","particle/sculk_charge_pop_3","particle/sculk_soul_0","particle/sculk_soul_1","particle/sculk_soul_10","particle/sculk_soul_2","particle/sculk_soul_3","particle/sculk_soul_4","particle/sculk_soul_5","particle/sculk_soul_6","particle/sculk_soul_7","particle/sculk_soul_8","particle/sculk_soul_9","particle/sga_a","particle/sga_b","particle/sga_c","particle/sga_d","particle/sga_e","particle/sga_f","particle/sga_g","particle/sga_h","particle/sga_i","particle/sga_j","particle/sga_k","particle/sga_l","particle/sga_m","particle/sga_n","particle/sga_o","particle/sga_p","particle/sga_q","particle/sga_r","particle/sga_s","particle/sga_t","particle/sga_u","particle/sga_v","particle/sga_w","particle/sga_x","particle/sga_y","particle/sga_z","particle/shriek","particle/small_gust_0","particle/small_gust_1","particle/small_gust_2","particle/small_gust_3","particle/small_gust_4","particle/small_gust_5","particle/small_gust_6","particle/sonic_boom_0","particle/sonic_boom_1","particle/sonic_boom_10","particle/sonic_boom_11","particle/sonic_boom_12","particle/sonic_boom_13","particle/sonic_boom_14","particle/sonic_boom_15","particle/sonic_boom_2","particle/sonic_boom_3","particle/sonic_boom_4","particle/sonic_boom_5","particle/sonic_boom_6","particle/sonic_boom_7","particle/sonic_boom_8","particle/sonic_boom_9","particle/soul_0","particle/soul_1","particle/soul_10","particle/soul_2","particle/soul_3","particle/soul_4","particle/soul_5","particle/soul_6","particle/soul_7","particle/soul_8","particle/soul_9","particle/soul_fire_flame","particle/spark_0","particle/spark_1","particle/spark_2","particle/spark_3","particle/spark_4","particle/spark_5","particle/spark_6","particle/spark_7","particle/spell_0","particle/spell_1","particle/spell_2","particle/spell_3","particle/spell_4","particle/spell_5","particle/spell_6","particle/spell_7","particle/splash_0","particle/splash_1","particle/splash_2","particle/splash_3","particle/sweep_0","particle/sweep_1","particle/sweep_2","particle/sweep_3","particle/sweep_4","particle/sweep_5","particle/sweep_6","particle/sweep_7","particle/trial_omen","particle/trial_spawner_detection_0","particle/trial_spawner_detection_1","particle/trial_spawner_detection_2","particle/trial_spawner_detection_3","particle/trial_spawner_detection_4","particle/trial_spawner_detection_ominous_0","particle/trial_spawner_detection_ominous_1","particle/trial_spawner_detection_ominous_2","particle/trial_spawner_detection_ominous_3","particle/trial_spawner_detection_ominous_4","particle/vault_connection","particle/vibration","particle/vibration.png","trims/color_palettes/amethyst","trims/color_palettes/copper","trims/color_palettes/copper_darker","trims/color_palettes/diamond","trims/color_palettes/diamond_darker","trims/color_palettes/emerald","trims/color_palettes/gold","trims/color_palettes/gold_darker","trims/color_palettes/iron","trims/color_palettes/iron_darker","trims/color_palettes/lapis","trims/color_palettes/netherite","trims/color_palettes/netherite_darker","trims/color_palettes/quartz","trims/color_palettes/redstone","trims/color_palettes/resin","trims/color_palettes/trim_palette","trims/entity/humanoid/bolt","trims/entity/humanoid/coast","trims/entity/humanoid/dune","trims/entity/humanoid/eye","trims/entity/humanoid/flow","trims/entity/humanoid/host","trims/entity/humanoid/raiser","trims/entity/humanoid/rib","trims/entity/humanoid/sentry","trims/entity/humanoid/shaper","trims/entity/humanoid/silence","trims/entity/humanoid/snout","trims/entity/humanoid/spire","trims/entity/humanoid/tide","trims/entity/humanoid/vex","trims/entity/humanoid/ward","trims/entity/humanoid/wayfinder","trims/entity/humanoid/wild","trims/entity/humanoid_leggings/bolt","trims/entity/humanoid_leggings/coast","trims/entity/humanoid_leggings/dune","trims/entity/humanoid_leggings/eye","trims/entity/humanoid_leggings/flow","trims/entity/humanoid_leggings/host","trims/entity/humanoid_leggings/raiser","trims/entity/humanoid_leggings/rib","trims/entity/humanoid_leggings/sentry","trims/entity/humanoid_leggings/shaper","trims/entity/humanoid_leggings/silence","trims/entity/humanoid_leggings/snout","trims/entity/humanoid_leggings/spire","trims/entity/humanoid_leggings/tide","trims/entity/humanoid_leggings/vex","trims/entity/humanoid_leggings/ward","trims/entity/humanoid_leggings/wayfinder","trims/entity/humanoid_leggings/wild","trims/items/boots_trim","trims/items/chestplate_trim","trims/items/helmet_trim","trims/items/leggings_trim"] \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/trims/_list.json b/common-files/src/main/resources/internal/textures/trims/_list.json deleted file mode 100644 index c69c06142..000000000 --- a/common-files/src/main/resources/internal/textures/trims/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":["color_palettes","entity","items"],"files":[]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/trims/color_palettes/_list.json b/common-files/src/main/resources/internal/textures/trims/color_palettes/_list.json deleted file mode 100644 index c4a5269d1..000000000 --- a/common-files/src/main/resources/internal/textures/trims/color_palettes/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["amethyst.png","copper.png","diamond.png","diamond_darker.png","emerald.png","gold.png","gold_darker.png","iron.png","iron_darker.png","lapis.png","netherite.png","netherite_darker.png","quartz.png","redstone.png","resin.png","trim_palette.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/trims/entity/_list.json b/common-files/src/main/resources/internal/textures/trims/entity/_list.json deleted file mode 100644 index 8a6bf51b7..000000000 --- a/common-files/src/main/resources/internal/textures/trims/entity/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":["humanoid","humanoid_leggings"],"files":[]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/trims/entity/humanoid/_list.json b/common-files/src/main/resources/internal/textures/trims/entity/humanoid/_list.json deleted file mode 100644 index 55d694706..000000000 --- a/common-files/src/main/resources/internal/textures/trims/entity/humanoid/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["bolt.png","coast.png","dune.png","eye.png","flow.png","host.png","raiser.png","rib.png","sentry.png","shaper.png","silence.png","snout.png","spire.png","tide.png","vex.png","ward.png","wayfinder.png","wild.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/trims/entity/humanoid_leggings/_list.json b/common-files/src/main/resources/internal/textures/trims/entity/humanoid_leggings/_list.json deleted file mode 100644 index 55d694706..000000000 --- a/common-files/src/main/resources/internal/textures/trims/entity/humanoid_leggings/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["bolt.png","coast.png","dune.png","eye.png","flow.png","host.png","raiser.png","rib.png","sentry.png","shaper.png","silence.png","snout.png","spire.png","tide.png","vex.png","ward.png","wayfinder.png","wild.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/textures/trims/items/_list.json b/common-files/src/main/resources/internal/textures/trims/items/_list.json deleted file mode 100644 index e5cf69a14..000000000 --- a/common-files/src/main/resources/internal/textures/trims/items/_list.json +++ /dev/null @@ -1 +0,0 @@ -{"directories":[],"files":["boots_trim.png","chestplate_trim.png","helmet_trim.png","leggings_trim.png"]} \ No newline at end of file diff --git a/common-files/src/main/resources/internal/models/item/legacy/_all.json b/common-files/src/main/resources/legacy_internal/models/item/_all.json similarity index 100% rename from common-files/src/main/resources/internal/models/item/legacy/_all.json rename to common-files/src/main/resources/legacy_internal/models/item/_all.json diff --git a/common-files/src/main/resources/resources/default/configuration/blocks/ender_pearl_flower.yml b/common-files/src/main/resources/resources/default/configuration/blocks/ender_pearl_flower.yml index 0b61f7161..0847ee653 100644 --- a/common-files/src/main/resources/resources/default/configuration/blocks/ender_pearl_flower.yml +++ b/common-files/src/main/resources/resources/default/configuration/blocks/ender_pearl_flower.yml @@ -22,6 +22,7 @@ blocks: map-color: 24 is-randomly-ticking: true behaviors: + - type: liquid_flowable_block - type: bush_block bottom-blocks: - minecraft:end_stone @@ -63,11 +64,8 @@ blocks: - type: match_block_property properties: age: 2 - - type: '!is_null' - argument: item_in_hand - - type: equals - value1: - value2: default:ender_pearl_flower_seeds + - type: match_item + id: default:ender_pearl_flower_seeds functions: - type: break_block x: diff --git a/common-files/src/main/resources/resources/default/configuration/blocks/fairy_flower.yml b/common-files/src/main/resources/resources/default/configuration/blocks/fairy_flower.yml index 52a2815fd..ef42b7638 100644 --- a/common-files/src/main/resources/resources/default/configuration/blocks/fairy_flower.yml +++ b/common-files/src/main/resources/resources/default/configuration/blocks/fairy_flower.yml @@ -19,10 +19,11 @@ items: push-reaction: destroy map-color: 19 behavior: - type: bush_block - bottom-block-tags: - - minecraft:dirt - - minecraft:farmland + - type: liquid_flowable_block + - type: bush_block + bottom-block-tags: + - minecraft:dirt + - minecraft:farmland loot: template: default:loot_table/self state: diff --git a/common-files/src/main/resources/resources/default/configuration/blocks/hami_melon.yml b/common-files/src/main/resources/resources/default/configuration/blocks/hami_melon.yml index 00cc12d7c..03592440a 100644 --- a/common-files/src/main/resources/resources/default/configuration/blocks/hami_melon.yml +++ b/common-files/src/main/resources/resources/default/configuration/blocks/hami_melon.yml @@ -108,6 +108,7 @@ blocks: - minecraft:crops - minecraft:maintains_farmland behaviors: + - type: liquid_flowable_block - type: stem_block fruit: default:hami_melon attached-stem: default:attached_hami_melon_stem @@ -169,6 +170,7 @@ blocks: tags: - minecraft:maintains_farmland behaviors: + - type: liquid_flowable_block - type: attached_stem_block fruit: default:hami_melon stem: default:hami_melon_stem diff --git a/common-files/src/main/resources/resources/default/configuration/blocks/magma_plant.yml b/common-files/src/main/resources/resources/default/configuration/blocks/magma_plant.yml new file mode 100644 index 000000000..7eb0e196b --- /dev/null +++ b/common-files/src/main/resources/resources/default/configuration/blocks/magma_plant.yml @@ -0,0 +1,152 @@ +items: + default:magma_fruit: + material: carrot + model: + template: default:model/simplified_generated + arguments: + path: minecraft:item/custom/magma_fruit + data: + item-name: + $$>=1.20.5: + food: + nutrition: 3 + saturation: 0.5 + can-always-eat: true + settings: + invulnerable: + - lava + - fire_tick + $$<1.20.5: + food: + nutrition: 3 + saturation: 0.5 + events: + - on: consume + functions: + - type: damage + target: self + amount: 1.0 + damage-type: lava + - type: potion_effect + duration: 200 + amplifier: 0 + particles: true + potion-effect: minecraft:fire_resistance + behavior: + type: liquid_collision_block_item + block: default:magma_plant +blocks: + default:magma_plant: + settings: + template: + - default:hardness/none + - default:sound/grass + overrides: + item: default:magma_fruit + push-reaction: destroy + map-color: 24 + is-randomly-ticking: true + behavior: + - type: crop_block + grow-speed: 0.25 + light-requirement: 10 + is-bone-meal-target: true + bone-meal-age-bonus: + type: uniform + min: 1 + max: 2 + - type: on_liquid_block + stackable: false + liquid-type: + - lava + states: + properties: + age: + type: int + default: 0 + range: 0~3 + appearances: + age=0: + auto-state: lower_tripwire + model: minecraft:block/custom/magma_plant_stage_0 + age=1: + auto-state: higher_tripwire + model: minecraft:block/custom/magma_plant_stage_1 + age=2: + auto-state: sugar_cane + model: minecraft:block/custom/magma_plant_stage_2 + age=3: + auto-state: sugar_cane + models: + - path: minecraft:block/custom/magma_plant_stage_3 + weight: 1 + - path: minecraft:block/custom/magma_plant_stage_3 + y: 90 + weight: 1 + - path: minecraft:block/custom/magma_plant_stage_3 + y: 180 + weight: 1 + - path: minecraft:block/custom/magma_plant_stage_3 + y: 270 + weight: 1 + variants: + age=0: + appearance: age=0 + age=1: + appearance: age=1 + age=2: + appearance: age=2 + age=3: + appearance: age=3 + settings: + is-randomly-ticking: false + loot: + template: default:loot_table/crop + arguments: + crop_item: default:magma_fruit + ripe_age: 3 + events: + - on: break + conditions: + - type: match_block_property + properties: + age: 3 + functions: + - type: particle + x: + 0.5 + y: + 0.5 + z: + 0.5 + particle: minecraft:lava + count: 10 + offset-x: 0.05 + offset-y: 0.02 + offset-z: 0.05 + speed: 0.08 + - type: play_sound + sound: minecraft:entity.firework_rocket.blast + x: + 0.5 + y: + 0.5 + z: + 0.5 + - on: right_click + conditions: + - type: match_block_property + properties: + age: 3 + - type: hand + hand: main_hand + - type: '!has_item' + functions: + - type: break_block + x: + y: + z: + - type: place_block + x: + y: + z: + block-state: default:magma_plant[age=0] + - type: swing_hand + - type: damage + target: self + amount: 1.0 + damage-type: on_fire \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/configuration/blocks/palm_tree.yml b/common-files/src/main/resources/resources/default/configuration/blocks/palm_tree.yml index 1e2e8afd7..d628ff0d8 100644 --- a/common-files/src/main/resources/resources/default/configuration/blocks/palm_tree.yml +++ b/common-files/src/main/resources/resources/default/configuration/blocks/palm_tree.yml @@ -168,6 +168,7 @@ items: settings: template: default:settings/sapling behaviors: + - type: liquid_flowable_block - type: bush_block bottom-block-tags: - minecraft:dirt @@ -193,20 +194,11 @@ items: parent: minecraft:block/cross textures: cross: minecraft:block/custom/palm_sapling - variants: - stage=0: - appearance: default - stage=1: - appearance: default default:palm_leaves: material: oak_leaves data: item-name: - components: - minecraft:block_state: - distance: '1' - persistent: 'false' - waterlogged: 'false' + block-state: default:palm_leaves[persistent=true,waterlogged=false,distance=7] model: type: minecraft:model path: minecraft:item/custom/palm_leaves @@ -228,10 +220,8 @@ items: settings: template: default:settings/leaves states: - template: default:block_state/leaves + template: default:block_state/tintable_leaves arguments: - default_state: oak_leaves[distance=1,persistent=false,waterlogged=false] - waterlogged_state: oak_leaves[distance=1,persistent=false,waterlogged=true] model_path: minecraft:block/custom/palm_leaves texture_path: minecraft:block/custom/palm_leaves default:palm_trapdoor: @@ -622,8 +612,7 @@ blocks#fence: - minecraft:wooden_fences behavior: type: fence_block - self-tag: fences - connectable-tag: wooden_fences + connectable-block-tag: minecraft:wooden_fences can-leash: true states: template: default:block_state/fence @@ -685,6 +674,7 @@ blocks#button: - minecraft:mineable/axe - minecraft:wooden_buttons behaviors: + - type: liquid_flowable_block - type: face_attached_horizontal_directional_block - type: button_block ticks-to-stay-pressed: 30 diff --git a/common-files/src/main/resources/resources/default/configuration/blocks/pebble.yml b/common-files/src/main/resources/resources/default/configuration/blocks/pebble.yml index 23fe24d71..6f267d5ad 100644 --- a/common-files/src/main/resources/resources/default/configuration/blocks/pebble.yml +++ b/common-files/src/main/resources/resources/default/configuration/blocks/pebble.yml @@ -18,6 +18,7 @@ items: map-color: 11 push-reaction: destroy behaviors: + - type: liquid_flowable_block - type: sturdy_base_block direction: down support-types: diff --git a/common-files/src/main/resources/resources/default/configuration/blocks/sofa.yml b/common-files/src/main/resources/resources/default/configuration/blocks/sofa.yml index 73ffa6029..d0b126ea1 100644 --- a/common-files/src/main/resources/resources/default/configuration/blocks/sofa.yml +++ b/common-files/src/main/resources/resources/default/configuration/blocks/sofa.yml @@ -35,6 +35,9 @@ items: - type: bouncing_block bounce-height: 0.66 sync-player-position: false + - type: seat_block + seats: + - 0,0,0 state: state: white_bed[facing=west,occupied=false,part=foot] entity-renderer: @@ -67,6 +70,7 @@ items: is-redstone-conductor: false push-reaction: block instrument: bass + support-shape: cobweb sounds: break: minecraft:block.wood.break fall: minecraft:block.wood.fall @@ -79,6 +83,9 @@ items: - type: sofa_block - type: bouncing_block bounce-height: 0.66 + - type: seat_block + seats: + - 0,0,0 0 states: properties: facing: diff --git a/common-files/src/main/resources/resources/default/configuration/categories.yml b/common-files/src/main/resources/resources/default/configuration/categories.yml index a1a9a71c8..e86e20116 100644 --- a/common-files/src/main/resources/resources/default/configuration/categories.yml +++ b/common-files/src/main/resources/resources/default/configuration/categories.yml @@ -83,4 +83,5 @@ categories: - default:amethyst_torch - default:hami_melon_seeds - default:hami_melon_slice - - default:hami_melon \ No newline at end of file + - default:hami_melon + - default:magma_fruit \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/configuration/emoji.yml b/common-files/src/main/resources/resources/default/configuration/emoji.yml index 06262afd2..4fe4b0e69 100644 --- a/common-files/src/main/resources/resources/default/configuration/emoji.yml +++ b/common-files/src/main/resources/resources/default/configuration/emoji.yml @@ -112,7 +112,7 @@ emoji: default:emoji_confounded: template: default:emoji/basic overrides: - image: default:emojis:3:2 + image: default:emojis:3:3 permission: emoji.confounded keywords: - ':confounded:' diff --git a/common-files/src/main/resources/resources/default/configuration/furniture/bench.yml b/common-files/src/main/resources/resources/default/configuration/furniture/bench.yml index 16bab5968..cf5688160 100644 --- a/common-files/src/main/resources/resources/default/configuration/furniture/bench.yml +++ b/common-files/src/main/resources/resources/default/configuration/furniture/bench.yml @@ -26,6 +26,8 @@ items: billboard: FIXED position: 0.5,0,0 translation: 0,0.5,0 + shadow-radius: 1 + shadow-strength: 0.2 hitboxes: - position: 0,0,0 type: shulker diff --git a/common-files/src/main/resources/resources/default/configuration/furniture/flower_basket.yml b/common-files/src/main/resources/resources/default/configuration/furniture/flower_basket.yml index fff66d0d4..63c508fde 100644 --- a/common-files/src/main/resources/resources/default/configuration/furniture/flower_basket.yml +++ b/common-files/src/main/resources/resources/default/configuration/furniture/flower_basket.yml @@ -47,6 +47,8 @@ furniture: billboard: FIXED position: 0,0,0 translation: 0,0.5,0 + shadow-radius: 0.5 + shadow-strength: 0.5 hitboxes: - type: interaction can-use-item-on: true diff --git a/common-files/src/main/resources/resources/default/configuration/furniture/wooden_chair.yml b/common-files/src/main/resources/resources/default/configuration/furniture/wooden_chair.yml index ef848f6fc..5d62051b1 100644 --- a/common-files/src/main/resources/resources/default/configuration/furniture/wooden_chair.yml +++ b/common-files/src/main/resources/resources/default/configuration/furniture/wooden_chair.yml @@ -23,6 +23,8 @@ items: elements: - item: default:wooden_chair display-transform: NONE + shadow-radius: 0.4 + shadow-strength: 0.5 billboard: FIXED translation: 0,0.5,0 hitboxes: diff --git a/common-files/src/main/resources/resources/default/configuration/items/cap.yml b/common-files/src/main/resources/resources/default/configuration/items/cap.yml index f682b7cc5..aaa7a88b3 100644 --- a/common-files/src/main/resources/resources/default/configuration/items/cap.yml +++ b/common-files/src/main/resources/resources/default/configuration/items/cap.yml @@ -1,12 +1,16 @@ items: default:cap: material: leather_helmet - client-bound-material: leather_horse_armor + $$<=1.21.1: + client-bound-material: leather_horse_armor data: item-name: unbreakable: true remove-components: - attribute_modifiers + $$>=1.21.2: + equippable: + slot: head model: type: minecraft:model path: minecraft:item/custom/cap diff --git a/common-files/src/main/resources/resources/default/configuration/items/topaz_tool_weapon.yml b/common-files/src/main/resources/resources/default/configuration/items/topaz_tool_weapon.yml index 24e045878..3eb60e3d0 100644 --- a/common-files/src/main/resources/resources/default/configuration/items/topaz_tool_weapon.yml +++ b/common-files/src/main/resources/resources/default/configuration/items/topaz_tool_weapon.yml @@ -133,6 +133,7 @@ items: - gui - ground - fixed + - on_shelf model: type: minecraft:model path: minecraft:item/custom/topaz_trident 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 da609c8b0..82fc59d30 100644 --- a/common-files/src/main/resources/resources/default/configuration/templates.yml +++ b/common-files/src/main/resources/resources/default/configuration/templates.yml @@ -898,8 +898,7 @@ templates#block_states: appearance: axisY axis=z: appearance: axisZ - # leaves block - default:block_state/leaves: + default:block_state/__leaves__: properties: waterlogged: type: boolean @@ -913,7 +912,7 @@ templates#block_states: range: 1~7 appearances: default: - auto-state: leaves + auto-state: ${auto_state} model: path: ${model_path} generation: @@ -921,7 +920,7 @@ templates#block_states: textures: all: ${texture_path} waterlogged: - auto-state: waterlogged_leaves + auto-state: waterlogged_${auto_state} model: path: ${model_path} variants: @@ -936,6 +935,21 @@ templates#block_states: distance=7,persistent=false: settings: is-randomly-ticking: true + # any leaves block + default:block_state/leaves: + template: default:block_state/__leaves__ + arguments: + auto_state: leaves + # tintable leaves block + default:block_state/tintable_leaves: + template: default:block_state/__leaves__ + arguments: + auto_state: tintable_leaves + # non-tintable leaves block + default:block_state/non_tintable_leaves: + template: default:block_state/__leaves__ + arguments: + auto_state: non_tintable_leaves # trapdoor block default:block_state/trapdoor: properties: @@ -3222,10 +3236,15 @@ templates#loot_tables: # crop drops + # + # This template is suitable for crops such as wheat and beetroot + # # template: default:loot_table/seed_crop # arguments: - # crop_item: the ripe crop - # crop_seed: the seed of the crop + # crop_item: the mature crop item + # crop_item_count: quantity of mature crop items + # crop_seed: the seed item of the crop + # extra_seed_count: additional seeds dropped when crop reaches maturity # ripe_age: the max age default:loot_table/seed_crop: pools: @@ -3239,6 +3258,10 @@ templates#loot_tables: - type: match_block_property properties: age: ${ripe_age} + functions: + - type: set_count + add: false + count: ${crop_item_count:-1} - type: item item: ${crop_seed} - rolls: 1 @@ -3254,12 +3277,15 @@ templates#loot_tables: enchantment: minecraft:fortune formula: type: binomial_with_bonus_count - extra: 3 + extra: ${extra_seed_count:-3} probability: 0.5714286 - + # + # This template is suitable for crops like carrots and potatoes. + # # template: default:loot_table/crop # arguments: - # crop_item: the ripe crop + # crop_item: the crop item + # extra_crop_count: additional crops dropped when crop reaches maturity # ripe_age: the max age default:loot_table/crop: pools: @@ -3280,7 +3306,7 @@ templates#loot_tables: enchantment: minecraft:fortune formula: type: binomial_with_bonus_count - extra: 3 + extra: ${extra_crop_count:-3} probability: 0.5714286 # ore drops @@ -3400,4 +3426,4 @@ templates#loot_tables: type: uniform min: 1 max: 2 - - type: explosion_decay \ No newline at end of file + - type: explosion_decay diff --git a/common-files/src/main/resources/resources/default/configuration/i18n.yml b/common-files/src/main/resources/resources/default/configuration/translations.yml similarity index 97% rename from common-files/src/main/resources/resources/default/configuration/i18n.yml rename to common-files/src/main/resources/resources/default/configuration/translations.yml index a0c7eea40..13f1a691f 100644 --- a/common-files/src/main/resources/resources/default/configuration/i18n.yml +++ b/common-files/src/main/resources/resources/default/configuration/translations.yml @@ -1,4 +1,4 @@ -i18n: +translations: en: item.chinese_lantern: Chinese Lantern item.fairy_flower: Fairy Flower @@ -37,6 +37,8 @@ i18n: item.palm_slab: Palm Slab item.palm_stairs: Palm Stairs item.palm_pressure_plate: Palm Pressure Plate + item.palm_button: Palm Button + item.palm_fence: Palm Fence item.netherite_anvil: Netherite Anvil item.gunpowder_block: GunPowder Block item.solid_gunpowder_block: Solid GunPowder Block @@ -52,8 +54,7 @@ i18n: item.hami_melon_slice: Hami Melon Slice item.hami_melon: Hami Melon item.hami_melon_seeds: Hami Melon Seeds - item.palm_button: Palm Button - item.palm_fence: Palm Fence + item.magma_fruit: Magma Fruit category.default.name: Default Assets category.default.lore: Contains the default configuration of CraftEngine category.palm_tree: Palm Tree @@ -100,6 +101,8 @@ i18n: item.palm_slab: 棕榈木台阶 item.palm_stairs: 棕榈木楼梯 item.palm_pressure_plate: 棕榈木压力板 + item.palm_button: 棕榈木按钮 + item.palm_fence: 棕榈木栅栏 item.netherite_anvil: 下界合金砧 item.gunpowder_block: 火药粉末 item.solid_gunpowder_block: 凝固火药块 @@ -115,8 +118,7 @@ i18n: item.hami_melon_slice: 哈密瓜片 item.hami_melon: 哈密瓜 item.hami_melon_seeds: 哈密瓜种子 - item.palm_button: 棕榈木按钮 - item.palm_fence: 棕榈木栅栏 + item.magma_fruit: 岩浆果实 category.default.name: 默认资产 category.default.lore: 包含了CraftEngine的默认配置 category.palm_tree: 棕榈树 @@ -146,6 +148,8 @@ lang: block_name:default:palm_fence_gate: Palm Fence Gate block_name:default:palm_slab: Palm Slab block_name:default:palm_stairs: Palm Stairs + block_name:default:palm_button: Palm Button + block_name:default:palm_fence: Palm Fence block_name:default:fairy_flower: Fairy Flower block_name:default:reed: Reed block_name:default:flame_cane: Flame Cane @@ -162,8 +166,7 @@ lang: block_name:default:hami_melon: Hami Melon block_name:default:hami_melon_stem: Hami Melon Stem block_name:default:attached_hami_melon_stem: Hami Melon Stem - block_name:default:palm_button: Palm Button - block_name:default:palm_fence: Palm Fence + block_name:default:magma_plant: Magma Plant zh_cn: block_name:default:chinese_lantern: 灯笼 block_name:default:netherite_anvil: 下界合金砧 @@ -181,6 +184,8 @@ lang: block_name:default:palm_fence_gate: 棕榈木栅栏门 block_name:default:palm_slab: 棕榈木台阶 block_name:default:palm_stairs: 棕榈木楼梯 + block_name:default:palm_button: 棕榈木按钮 + block_name:default:palm_fence: 棕榈木栅栏 block_name:default:fairy_flower: 仙灵花 block_name:default:reed: 芦苇 block_name:default:flame_cane: 烈焰甘蔗 @@ -197,5 +202,4 @@ lang: block_name:default:hami_melon: 哈密瓜 block_name:default:hami_melon_stem: 哈密瓜茎 block_name:default:attached_hami_melon_stem: 哈密瓜茎 - block_name:default:palm_button: 棕榈木按钮 - block_name:default:palm_fence: 棕榈木栅栏 + block_name:default:magma_plant: 岩浆植物 diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/block/custom/large_mushroom.json b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/block/custom/large_mushroom.json index 356812b0e..95171c848 100644 --- a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/block/custom/large_mushroom.json +++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/block/custom/large_mushroom.json @@ -134,39 +134,5 @@ "down": {"uv": [2.5, 13.5, 0, 15], "texture": "#0"} } } - ], - "display": { - "ground": { - "translation": [0, 2.25, 0], - "scale": [0.5, 0.5, 0.5] - }, - "gui": { - "rotation": [30, -150, 0], - "translation": [3.75, -2.5, 0] - }, - "fixed": { - "translation": [0, 0, -16], - "scale": [2, 2, 2] - }, - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "translation": [-1.5, 2.5, 1], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 45, 0], - "translation": [-1.5, 2.5, 1], - "scale": [0.4, 0.4, 0.4] - } - } + ] } \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/block/custom/magma_plant_stage_0.json b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/block/custom/magma_plant_stage_0.json new file mode 100644 index 000000000..69ce63e7f --- /dev/null +++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/block/custom/magma_plant_stage_0.json @@ -0,0 +1,36 @@ +{ + "textures": { + "0": "block/custom/magma_plant", + "particle": "block/custom/magma_plant" + }, + "elements": [ + { + "from": [8, 0, 0], + "to": [8, 8, 16], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "shade": false, + "faces": { + "north": {"uv": [0, 0, 0, 4], "texture": "#0"}, + "east": {"uv": [0, 4, 8, 8], "texture": "#0"}, + "south": {"uv": [0, 0, 0, 4], "texture": "#0"}, + "west": {"uv": [0, 4, 8, 8], "texture": "#0"}, + "up": {"uv": [0, 4, 0, 0], "texture": "#0"}, + "down": {"uv": [0, 0, 0, 4], "texture": "#0"} + } + }, + { + "from": [8, 0, 0], + "to": [8, 8, 16], + "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]}, + "shade": false, + "faces": { + "north": {"uv": [0, 0, 0, 4], "texture": "#0"}, + "east": {"uv": [0, 4, 8, 8], "texture": "#0"}, + "south": {"uv": [0, 0, 0, 4], "texture": "#0"}, + "west": {"uv": [0, 4, 8, 8], "texture": "#0"}, + "up": {"uv": [0, 4, 0, 0], "texture": "#0"}, + "down": {"uv": [0, 0, 0, 4], "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/block/custom/magma_plant_stage_1.json b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/block/custom/magma_plant_stage_1.json new file mode 100644 index 000000000..014cb5330 --- /dev/null +++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/block/custom/magma_plant_stage_1.json @@ -0,0 +1,36 @@ +{ + "textures": { + "0": "block/custom/magma_plant", + "particle": "block/custom/magma_plant" + }, + "elements": [ + { + "from": [8, 0, 0], + "to": [8, 16, 16], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "shade": false, + "faces": { + "north": {"uv": [0, 0, 0, 4], "texture": "#0"}, + "east": {"uv": [16, 0, 8, 8], "texture": "#0"}, + "south": {"uv": [0, 0, 0, 4], "texture": "#0"}, + "west": {"uv": [8, 0, 16, 8], "texture": "#0"}, + "up": {"uv": [0, 4, 0, 0], "texture": "#0"}, + "down": {"uv": [0, 0, 0, 4], "texture": "#0"} + } + }, + { + "from": [0, 0, 8], + "to": [16, 16, 8], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "shade": false, + "faces": { + "north": {"uv": [16, 0, 8, 8], "texture": "#0"}, + "east": {"uv": [0, 0, 0, 4], "texture": "#0"}, + "south": {"uv": [8, 0, 16, 8], "texture": "#0"}, + "west": {"uv": [0, 0, 0, 4], "texture": "#0"}, + "up": {"uv": [0, 4, 0, 0], "rotation": 270, "texture": "#0"}, + "down": {"uv": [0, 0, 0, 4], "rotation": 90, "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/block/custom/magma_plant_stage_2.json b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/block/custom/magma_plant_stage_2.json new file mode 100644 index 000000000..702fa6787 --- /dev/null +++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/block/custom/magma_plant_stage_2.json @@ -0,0 +1,36 @@ +{ + "textures": { + "0": "block/custom/magma_plant", + "particle": "block/custom/magma_plant" + }, + "elements": [ + { + "from": [8, 0, 0], + "to": [8, 16, 16], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "shade": false, + "faces": { + "north": {"uv": [0, 0, 0, 4], "texture": "#0"}, + "east": {"uv": [8, 8, 0, 16], "texture": "#0"}, + "south": {"uv": [0, 0, 0, 4], "texture": "#0"}, + "west": {"uv": [0, 8, 8, 16], "texture": "#0"}, + "up": {"uv": [0, 4, 0, 0], "texture": "#0"}, + "down": {"uv": [0, 0, 0, 4], "texture": "#0"} + } + }, + { + "from": [8, 0, 0], + "to": [8, 16, 16], + "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]}, + "shade": false, + "faces": { + "north": {"uv": [0, 0, 0, 4], "texture": "#0"}, + "east": {"uv": [8, 8, 0, 16], "texture": "#0"}, + "south": {"uv": [0, 0, 0, 4], "texture": "#0"}, + "west": {"uv": [0, 8, 8, 16], "texture": "#0"}, + "up": {"uv": [0, 4, 0, 0], "texture": "#0"}, + "down": {"uv": [0, 0, 0, 4], "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/block/custom/magma_plant_stage_3.json b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/block/custom/magma_plant_stage_3.json new file mode 100644 index 000000000..871c1cc1f --- /dev/null +++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/block/custom/magma_plant_stage_3.json @@ -0,0 +1,120 @@ +{ + "textures": { + "0": "block/custom/magma_plant", + "particle": "block/custom/magma_plant" + }, + "elements": [ + { + "from": [6.1, 11.1, 6.1], + "to": [3.9, 8.9, 3.9], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 9, 6]}, + "shade": false, + "faces": { + "north": {"uv": [1, 2, 0, 1], "texture": "#0"}, + "east": {"uv": [1, 2, 0, 1], "texture": "#0"}, + "south": {"uv": [0, 2, 1, 1], "texture": "#0"}, + "west": {"uv": [0, 2, 1, 1], "texture": "#0"}, + "up": {"uv": [1, 2, 0, 1], "texture": "#0"}, + "down": {"uv": [1, 2, 0, 1], "texture": "#0"} + } + }, + { + "from": [4, 9, 4], + "to": [6, 11, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 9, 6]}, + "shade": false, + "faces": { + "north": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "east": {"uv": [1, 0, 2, 1], "texture": "#0"}, + "south": {"uv": [2, 0, 1, 1], "texture": "#0"}, + "west": {"uv": [1, 0, 0, 1], "texture": "#0"}, + "up": {"uv": [2, 1, 3, 0], "texture": "#0"}, + "down": {"uv": [3, 1, 4, 0], "texture": "#0"} + } + }, + { + "from": [11.1, 9.1, 11.1], + "to": [8.9, 6.9, 8.9], + "rotation": {"angle": 0, "axis": "y", "origin": [11, 7, 9]}, + "shade": false, + "faces": { + "north": {"uv": [0, 2, 1, 1], "texture": "#0"}, + "east": {"uv": [0, 2, 1, 1], "texture": "#0"}, + "south": {"uv": [1, 2, 0, 1], "texture": "#0"}, + "west": {"uv": [1, 2, 0, 1], "texture": "#0"}, + "up": {"uv": [0, 1, 1, 2], "texture": "#0"}, + "down": {"uv": [0, 1, 1, 2], "texture": "#0"} + } + }, + { + "from": [9, 7, 9], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [11, 7, 9]}, + "shade": false, + "faces": { + "north": {"uv": [2, 0, 1, 1], "texture": "#0"}, + "east": {"uv": [1, 0, 0, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "west": {"uv": [1, 0, 2, 1], "texture": "#0"}, + "up": {"uv": [3, 0, 2, 1], "texture": "#0"}, + "down": {"uv": [4, 0, 3, 1], "texture": "#0"} + } + }, + { + "from": [6.1, 13.1, 12.1], + "to": [3.9, 10.9, 9.9], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 11, 10]}, + "shade": false, + "faces": { + "north": {"uv": [1, 2, 0, 1], "texture": "#0"}, + "east": {"uv": [0, 2, 1, 1], "texture": "#0"}, + "south": {"uv": [0, 2, 1, 1], "texture": "#0"}, + "west": {"uv": [1, 2, 0, 1], "texture": "#0"}, + "up": {"uv": [1, 1, 0, 2], "texture": "#0"}, + "down": {"uv": [1, 1, 0, 2], "texture": "#0"} + } + }, + { + "from": [4, 11, 10], + "to": [6, 13, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 11, 10]}, + "shade": false, + "faces": { + "north": {"uv": [1, 0, 2, 1], "texture": "#0"}, + "east": {"uv": [2, 0, 1, 1], "texture": "#0"}, + "south": {"uv": [1, 0, 0, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "up": {"uv": [2, 0, 3, 1], "texture": "#0"}, + "down": {"uv": [3, 0, 4, 1], "texture": "#0"} + } + }, + { + "from": [8, 0, 0], + "to": [8, 16, 16], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "shade": false, + "faces": { + "north": {"uv": [12, 0, 12, 4], "texture": "#0"}, + "east": {"uv": [16, 8, 8, 16], "texture": "#0"}, + "south": {"uv": [12, 0, 12, 4], "texture": "#0"}, + "west": {"uv": [8, 8, 16, 16], "texture": "#0"}, + "up": {"uv": [12, 4, 12, 0], "texture": "#0"}, + "down": {"uv": [12, 0, 12, 4], "texture": "#0"} + } + }, + { + "from": [8, 0, 0], + "to": [8, 16, 16], + "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]}, + "shade": false, + "faces": { + "north": {"uv": [12, 0, 12, 4], "texture": "#0"}, + "east": {"uv": [16, 8, 8, 16], "texture": "#0"}, + "south": {"uv": [12, 0, 12, 4], "texture": "#0"}, + "west": {"uv": [8, 8, 16, 16], "texture": "#0"}, + "up": {"uv": [12, 4, 12, 0], "texture": "#0"}, + "down": {"uv": [12, 0, 12, 4], "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/block/custom/medium_mushroom.json b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/block/custom/medium_mushroom.json index e00ea901d..6f50752fc 100644 --- a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/block/custom/medium_mushroom.json +++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/block/custom/medium_mushroom.json @@ -69,39 +69,5 @@ "down": {"uv": [2.5, 13.5, 0, 15], "texture": "#0"} } } - ], - "display": { - "ground": { - "translation": [0, 2.25, 0], - "scale": [0.5, 0.5, 0.5] - }, - "gui": { - "rotation": [30, -150, 0], - "translation": [3.75, -2.5, 0] - }, - "fixed": { - "translation": [0, 0, -16], - "scale": [2, 2, 2] - }, - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "translation": [-1.5, 2.5, 1], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 45, 0], - "translation": [-1.5, 2.5, 1], - "scale": [0.4, 0.4, 0.4] - } - } + ] } \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/block/custom/small_mushroom.json b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/block/custom/small_mushroom.json index bbc245d23..a48e42e24 100644 --- a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/block/custom/small_mushroom.json +++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/block/custom/small_mushroom.json @@ -57,39 +57,5 @@ "down": {"uv": [3.5, 2, 0, 4], "texture": "#0"} } } - ], - "display": { - "ground": { - "translation": [0, 2.25, 0], - "scale": [0.5, 0.5, 0.5] - }, - "gui": { - "rotation": [30, -150, 0], - "translation": [3.75, -2.5, 0] - }, - "fixed": { - "translation": [0, 0, -16.25], - "scale": [2, 2, 2] - }, - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "translation": [-1.5, 2.5, 1], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 45, 0], - "translation": [-1.5, 2.5, 1], - "scale": [0.4, 0.4, 0.4] - } - } + ] } \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/amethyst_torch.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/amethyst_torch.png index a190ec9d5..4e903b534 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/amethyst_torch.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/amethyst_torch.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/chessboard_block.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/chessboard_block.png index b67b4bb2a..9ae83007f 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/chessboard_block.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/chessboard_block.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/chinese_lantern.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/chinese_lantern.png index b8f5402c6..4d3f7f823 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/chinese_lantern.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/chinese_lantern.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/chinese_lantern.png.mcmeta b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/chinese_lantern.png.mcmeta index 4894b537c..3c559bede 100644 --- a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/chinese_lantern.png.mcmeta +++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/chinese_lantern.png.mcmeta @@ -1,6 +1 @@ -{ - "animation": { - "interpolate": true, - "frametime": 10 - } -} +{"animation":{"interpolate":true,"frametime":10}} \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/chinese_lantern_top.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/chinese_lantern_top.png index 610d8d7ee..dd4403fc0 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/chinese_lantern_top.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/chinese_lantern_top.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/chinese_lantern_top.png.mcmeta b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/chinese_lantern_top.png.mcmeta index 4894b537c..3c559bede 100644 --- a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/chinese_lantern_top.png.mcmeta +++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/chinese_lantern_top.png.mcmeta @@ -1,6 +1 @@ -{ - "animation": { - "interpolate": true, - "frametime": 10 - } -} +{"animation":{"interpolate":true,"frametime":10}} \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/copper_coil.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/copper_coil.png index 40f04a5a8..583c8ac2c 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/copper_coil.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/copper_coil.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/copper_coil_on.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/copper_coil_on.png index 3e59193cb..8adf3d27a 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/copper_coil_on.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/copper_coil_on.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/copper_coil_on_side.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/copper_coil_on_side.png index 31b91e1a7..38cb6b783 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/copper_coil_on_side.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/copper_coil_on_side.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/copper_coil_side.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/copper_coil_side.png index 859f0234b..8cb16328f 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/copper_coil_side.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/copper_coil_side.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/deepslate_topaz_ore.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/deepslate_topaz_ore.png index b270e5ebd..c054d4288 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/deepslate_topaz_ore.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/deepslate_topaz_ore.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/deepslate_topaz_ore.png.mcmeta b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/deepslate_topaz_ore.png.mcmeta index 4894b537c..3c559bede 100644 --- a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/deepslate_topaz_ore.png.mcmeta +++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/deepslate_topaz_ore.png.mcmeta @@ -1,6 +1 @@ -{ - "animation": { - "interpolate": true, - "frametime": 10 - } -} +{"animation":{"interpolate":true,"frametime":10}} \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/ender_pearl_flower_stage_0.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/ender_pearl_flower_stage_0.png index 4cd8a2d81..dc94c4c83 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/ender_pearl_flower_stage_0.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/ender_pearl_flower_stage_0.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/ender_pearl_flower_stage_1.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/ender_pearl_flower_stage_1.png index 93c0ebc31..73695f379 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/ender_pearl_flower_stage_1.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/ender_pearl_flower_stage_1.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/ender_pearl_flower_stage_2.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/ender_pearl_flower_stage_2.png index 1fd5925e4..dba763520 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/ender_pearl_flower_stage_2.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/ender_pearl_flower_stage_2.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/fairy_flower_1.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/fairy_flower_1.png index 10bfa945e..74b311a13 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/fairy_flower_1.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/fairy_flower_1.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/fairy_flower_2.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/fairy_flower_2.png index db7bae179..3de58be0b 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/fairy_flower_2.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/fairy_flower_2.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/fairy_flower_3.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/fairy_flower_3.png index d6d9c4559..cbe9cbbda 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/fairy_flower_3.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/fairy_flower_3.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/fairy_flower_4.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/fairy_flower_4.png index 1f5fccf5f..c5df8c110 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/fairy_flower_4.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/fairy_flower_4.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/flame_cane_1.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/flame_cane_1.png index 98e0e595b..034aae1fa 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/flame_cane_1.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/flame_cane_1.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/flame_cane_2.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/flame_cane_2.png index ba13d4c71..8988333d7 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/flame_cane_2.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/flame_cane_2.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/gunpowder_block.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/gunpowder_block.png index a6705caa5..7effd7539 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/gunpowder_block.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/gunpowder_block.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/hami_melon.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/hami_melon.png index df74b134b..862393833 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/hami_melon.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/hami_melon.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/hami_melon_bottom.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/hami_melon_bottom.png index a21c39cec..1fd314ae9 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/hami_melon_bottom.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/hami_melon_bottom.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/hami_melon_top.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/hami_melon_top.png index 5fffae735..fc55fb86d 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/hami_melon_top.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/hami_melon_top.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/magma_plant.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/magma_plant.png new file mode 100644 index 000000000..9a3dc1344 Binary files /dev/null and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/magma_plant.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/magma_plant.png.mcmeta b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/magma_plant.png.mcmeta new file mode 100644 index 000000000..6226f7a66 --- /dev/null +++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/magma_plant.png.mcmeta @@ -0,0 +1 @@ +{"animation":{"interpolate":true,"frametime":5}} \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/netherite_anvil.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/netherite_anvil.png index 0838fe2cc..2c3ff189f 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/netherite_anvil.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/netherite_anvil.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/netherite_anvil_top.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/netherite_anvil_top.png index 2dae8391b..185437b1c 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/netherite_anvil_top.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/netherite_anvil_top.png differ 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 index b21666d61..4734bea36 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_door_bottom.png 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 index fc33294bb..3fa6afd2b 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_door_top.png 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_leaves.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_leaves.png index d6430f45b..72b9532ff 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_leaves.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_leaves.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_log.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_log.png index 9538a07bc..e976b8ed3 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_log.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_log.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_log_top.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_log_top.png index 384b66d19..f06fb497d 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_log_top.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_log_top.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_planks.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_planks.png index 4c7776334..e6ad1e5e8 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_planks.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_planks.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_sapling.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_sapling.png index 26b82c82e..277d1f08f 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_sapling.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_sapling.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 index f19dbb4cb..b2da75c94 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_trapdoor.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/palm_trapdoor.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/pebble.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/pebble.png index 003a947dd..2341c62cf 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/pebble.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/pebble.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/reed.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/reed.png index 282ee6ebd..9152768a8 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/reed.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/reed.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_bottom.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_bottom.png index c7b03c170..6721e8d17 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_bottom.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_bottom.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_front.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_front.png index e523f39e5..a8bb018a8 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_front.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_front.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_front_open.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_front_open.png index 50cd8f450..7904dc8bd 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_front_open.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_front_open.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_side.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_side.png index c345df934..09b6488be 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_side.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_side.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_top.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_top.png index 86e1624ed..c467cd071 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_top.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_top.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/solid_gunpowder_block.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/solid_gunpowder_block.png index 0531b07a4..8c0138262 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/solid_gunpowder_block.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/solid_gunpowder_block.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/stripped_palm_log.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/stripped_palm_log.png index fcb124fbb..67d008f46 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/stripped_palm_log.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/stripped_palm_log.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/stripped_palm_log_top.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/stripped_palm_log_top.png index 384b66d19..f06fb497d 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/stripped_palm_log_top.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/stripped_palm_log_top.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/topaz_ore.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/topaz_ore.png index 3eb2113a9..b243fba78 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/topaz_ore.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/topaz_ore.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/topaz_ore.png.mcmeta b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/topaz_ore.png.mcmeta index 4894b537c..3c559bede 100644 --- a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/topaz_ore.png.mcmeta +++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/topaz_ore.png.mcmeta @@ -1,6 +1 @@ -{ - "animation": { - "interpolate": true, - "frametime": 10 - } -} +{"animation":{"interpolate":true,"frametime":10}} \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/entity/equipment/humanoid/topaz.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/entity/equipment/humanoid/topaz.png index 483abb43b..be2e7e551 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/entity/equipment/humanoid/topaz.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/entity/equipment/humanoid/topaz.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/entity/equipment/humanoid_leggings/topaz.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/entity/equipment/humanoid_leggings/topaz.png index 6d805c3d9..f75443981 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/entity/equipment/humanoid_leggings/topaz.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/entity/equipment/humanoid_leggings/topaz.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/entity/equipment/wings/flame_elytra.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/entity/equipment/wings/flame_elytra.png index ddf790029..0275ae73f 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/entity/equipment/wings/flame_elytra.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/entity/equipment/wings/flame_elytra.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/font/image/emojis.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/font/image/emojis.png index 59efa8e78..c3bf1fc55 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/font/image/emojis.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/font/image/emojis.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/gui/sprites/tooltip/topaz_background.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/gui/sprites/tooltip/topaz_background.png index 5a375d093..370e9dc1e 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/gui/sprites/tooltip/topaz_background.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/gui/sprites/tooltip/topaz_background.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/gui/sprites/tooltip/topaz_frame.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/gui/sprites/tooltip/topaz_frame.png index ee847de06..944d34ffb 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/gui/sprites/tooltip/topaz_frame.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/gui/sprites/tooltip/topaz_frame.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/bench.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/bench.png index e2c3b257b..038cb3a80 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/bench.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/bench.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/broken_flame_elytra.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/broken_flame_elytra.png index c94833fb2..bcfdd36d7 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/broken_flame_elytra.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/broken_flame_elytra.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/cap.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/cap.png index d7e3923ea..70ab5327c 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/cap.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/cap.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/ender_pearl_flower_seeds.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/ender_pearl_flower_seeds.png index 48b377350..68d3a3ed9 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/ender_pearl_flower_seeds.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/ender_pearl_flower_seeds.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/fairy_flower.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/fairy_flower.png index 5255ccd63..0e2f43dd3 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/fairy_flower.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/fairy_flower.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flame_cane.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flame_cane.png index 0bf612e67..259d5ca32 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flame_cane.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flame_cane.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flame_elytra.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flame_elytra.png index d5d33651c..28f398422 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flame_elytra.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flame_elytra.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flower_basket.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flower_basket.png index d7a8f86ba..963a6e268 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flower_basket.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flower_basket.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flower_basket_2d.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flower_basket_2d.png index 7430df69f..f99a4b8b8 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flower_basket_2d.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flower_basket_2d.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/hami_melon_seeds.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/hami_melon_seeds.png index 74c7165ec..0d081cd8f 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/hami_melon_seeds.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/hami_melon_seeds.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/hami_melon_slice.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/hami_melon_slice.png index 5c46ede57..1b8792700 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/hami_melon_slice.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/hami_melon_slice.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/magma_fruit.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/magma_fruit.png new file mode 100644 index 000000000..63690030f Binary files /dev/null and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/magma_fruit.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/magma_fruit.png.mcmeta b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/magma_fruit.png.mcmeta new file mode 100644 index 000000000..cc0cf1468 --- /dev/null +++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/magma_fruit.png.mcmeta @@ -0,0 +1 @@ +{"animation":{"frametime":2}} \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/palm_door.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/palm_door.png index 7128688a3..f0633fe6f 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/palm_door.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/palm_door.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/pebble.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/pebble.png index efc872a2d..3bb38c03b 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/pebble.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/pebble.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/reed.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/reed.png index 04d930d92..a2d9cd5ed 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/reed.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/reed.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/sofa.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/sofa.png index 25e76651c..25d8294ff 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/sofa.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/sofa.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/table_lamp.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/table_lamp.png index fd7fa26cb..c5c0bb397 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/table_lamp.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/table_lamp.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/table_lamp_on.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/table_lamp_on.png index 9b880deb1..f62a213a5 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/table_lamp_on.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/table_lamp_on.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz.png index aa0bf3636..d1184338f 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz.png.mcmeta b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz.png.mcmeta index 4894b537c..3c559bede 100644 --- a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz.png.mcmeta +++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz.png.mcmeta @@ -1,6 +1 @@ -{ - "animation": { - "interpolate": true, - "frametime": 10 - } -} +{"animation":{"interpolate":true,"frametime":10}} \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_axe.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_axe.png index dc7ae2869..b72b5047d 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_axe.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_axe.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_axe.png.mcmeta b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_axe.png.mcmeta index 4894b537c..3c559bede 100644 --- a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_axe.png.mcmeta +++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_axe.png.mcmeta @@ -1,6 +1 @@ -{ - "animation": { - "interpolate": true, - "frametime": 10 - } -} +{"animation":{"interpolate":true,"frametime":10}} \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_boots.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_boots.png index 498eef990..c3a4cc348 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_boots.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_boots.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_boots.png.mcmeta b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_boots.png.mcmeta index 4894b537c..3c559bede 100644 --- a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_boots.png.mcmeta +++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_boots.png.mcmeta @@ -1,6 +1 @@ -{ - "animation": { - "interpolate": true, - "frametime": 10 - } -} +{"animation":{"interpolate":true,"frametime":10}} \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow.png index afbaf13a1..05ac2f30d 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow_pulling_0.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow_pulling_0.png index 6f2cb5b93..1b2440e7d 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow_pulling_0.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow_pulling_0.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow_pulling_1.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow_pulling_1.png index 99c78b5fe..991f1eec7 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow_pulling_1.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow_pulling_1.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow_pulling_2.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow_pulling_2.png index ca228d215..3d318e41e 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow_pulling_2.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow_pulling_2.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_chestplate.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_chestplate.png index 53601b282..2d1467040 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_chestplate.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_chestplate.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_chestplate.png.mcmeta b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_chestplate.png.mcmeta index 4894b537c..3c559bede 100644 --- a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_chestplate.png.mcmeta +++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_chestplate.png.mcmeta @@ -1,6 +1 @@ -{ - "animation": { - "interpolate": true, - "frametime": 10 - } -} +{"animation":{"interpolate":true,"frametime":10}} \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow.png index 2337f1d11..94e963012 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_arrow.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_arrow.png index 4998fce17..4b720c5ec 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_arrow.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_arrow.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_firework.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_firework.png index 6a047932f..a2ba2e8e7 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_firework.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_firework.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_pulling_0.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_pulling_0.png index 48441b490..181bd86de 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_pulling_0.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_pulling_0.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_pulling_1.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_pulling_1.png index f3c452c83..faf99519b 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_pulling_1.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_pulling_1.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_pulling_2.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_pulling_2.png index f5326edf3..ccde7e672 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_pulling_2.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_crossbow_pulling_2.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_helmet.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_helmet.png index 8272cf147..1ae323bc1 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_helmet.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_helmet.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_helmet.png.mcmeta b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_helmet.png.mcmeta index 4894b537c..3c559bede 100644 --- a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_helmet.png.mcmeta +++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_helmet.png.mcmeta @@ -1,6 +1 @@ -{ - "animation": { - "interpolate": true, - "frametime": 10 - } -} +{"animation":{"interpolate":true,"frametime":10}} \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_hoe.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_hoe.png index e95a312b3..c4030ea90 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_hoe.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_hoe.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_hoe.png.mcmeta b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_hoe.png.mcmeta index 4894b537c..3c559bede 100644 --- a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_hoe.png.mcmeta +++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_hoe.png.mcmeta @@ -1,6 +1 @@ -{ - "animation": { - "interpolate": true, - "frametime": 10 - } -} +{"animation":{"interpolate":true,"frametime":10}} \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_leggings.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_leggings.png index 6b536ac19..c3fbd4246 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_leggings.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_leggings.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_leggings.png.mcmeta b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_leggings.png.mcmeta index 4894b537c..3c559bede 100644 --- a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_leggings.png.mcmeta +++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_leggings.png.mcmeta @@ -1,6 +1 @@ -{ - "animation": { - "interpolate": true, - "frametime": 10 - } -} +{"animation":{"interpolate":true,"frametime":10}} \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_pickaxe.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_pickaxe.png index f01891b9d..3c18ca0b0 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_pickaxe.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_pickaxe.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_pickaxe.png.mcmeta b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_pickaxe.png.mcmeta index 4894b537c..3c559bede 100644 --- a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_pickaxe.png.mcmeta +++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_pickaxe.png.mcmeta @@ -1,6 +1 @@ -{ - "animation": { - "interpolate": true, - "frametime": 10 - } -} +{"animation":{"interpolate":true,"frametime":10}} \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_rod.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_rod.png index 629092f8b..f9d2ab82f 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_rod.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_rod.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_rod_cast.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_rod_cast.png index ce042dcdd..5672d13ea 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_rod_cast.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_rod_cast.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_shovel.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_shovel.png index f5bd090ca..2b157b651 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_shovel.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_shovel.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_shovel.png.mcmeta b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_shovel.png.mcmeta index 4894b537c..3c559bede 100644 --- a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_shovel.png.mcmeta +++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_shovel.png.mcmeta @@ -1,6 +1 @@ -{ - "animation": { - "interpolate": true, - "frametime": 10 - } -} +{"animation":{"interpolate":true,"frametime":10}} \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_sword.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_sword.png index 25dac861c..72dff60ab 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_sword.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_sword.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_sword.png.mcmeta b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_sword.png.mcmeta index 4894b537c..3c559bede 100644 --- a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_sword.png.mcmeta +++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_sword.png.mcmeta @@ -1,6 +1 @@ -{ - "animation": { - "interpolate": true, - "frametime": 10 - } -} +{"animation":{"interpolate":true,"frametime":10}} \ No newline at end of file diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_trident.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_trident.png index a4b1ec38c..69ebc1785 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_trident.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_trident.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_trident_3d.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_trident_3d.png index 692a34f0f..1575e4110 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_trident_3d.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_trident_3d.png differ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/wooden_chair.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/wooden_chair.png index 28fcde829..16a328048 100644 Binary files a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/wooden_chair.png and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/wooden_chair.png differ diff --git a/common-files/src/main/resources/resources/internal/configuration/mappings.yml b/common-files/src/main/resources/resources/internal/configuration/mappings.yml index c113c0d3b..7b47d61f2 100644 --- a/common-files/src/main/resources/resources/internal/configuration/mappings.yml +++ b/common-files/src/main/resources/resources/internal/configuration/mappings.yml @@ -3,4449 +3,4448 @@ block-state-mappings: #### Anvil #### # An anvil has four possible orientations, but the east-west and north-south orientations look exactly the same. - minecraft:anvil[facing=north]: minecraft:anvil[facing=south] - minecraft:anvil[facing=east]: minecraft:anvil[facing=west] - minecraft:chipped_anvil[facing=north]: minecraft:chipped_anvil[facing=south] - minecraft:chipped_anvil[facing=east]: minecraft:chipped_anvil[facing=west] - minecraft:damaged_anvil[facing=north]: minecraft:damaged_anvil[facing=south] - minecraft:damaged_anvil[facing=east]: minecraft:damaged_anvil[facing=west] + anvil[facing=north]: anvil[facing=south] + anvil[facing=east]: anvil[facing=west] + chipped_anvil[facing=north]: chipped_anvil[facing=south] + chipped_anvil[facing=east]: chipped_anvil[facing=west] + damaged_anvil[facing=north]: damaged_anvil[facing=south] + damaged_anvil[facing=east]: damaged_anvil[facing=west] #### Sapling #### # Every sapling has two stages, 0 and 1, but they look exactly the same. - minecraft:oak_sapling[stage=1]: minecraft:oak_sapling[stage=0] - minecraft:birch_sapling[stage=1]: minecraft:birch_sapling[stage=0] - minecraft:spruce_sapling[stage=1]: minecraft:spruce_sapling[stage=0] - minecraft:jungle_sapling[stage=1]: minecraft:jungle_sapling[stage=0] - minecraft:dark_oak_sapling[stage=1]: minecraft:dark_oak_sapling[stage=0] - minecraft:acacia_sapling[stage=1]: minecraft:acacia_sapling[stage=0] - minecraft:cherry_sapling[stage=1]: minecraft:cherry_sapling[stage=0] + oak_sapling[stage=1]: oak_sapling[stage=0] + spruce_sapling[stage=1]: spruce_sapling[stage=0] + birch_sapling[stage=1]: birch_sapling[stage=0] + jungle_sapling[stage=1]: jungle_sapling[stage=0] + acacia_sapling[stage=1]: acacia_sapling[stage=0] + cherry_sapling[stage=1]: cherry_sapling[stage=0] + dark_oak_sapling[stage=1]: dark_oak_sapling[stage=0] $$>=1.21.4#sapling: - minecraft:pale_oak_sapling[stage=1]: minecraft:pale_oak_sapling[stage=0] + pale_oak_sapling[stage=1]: pale_oak_sapling[stage=0] #### Sculk Sensor #### # The Sculk Sensor's hitbox is exactly half a block. Plus, its appearance only changes based on the sculk_sensor_phase, # not the power level. That means we can repurpose the extra states to make bottom-half slabs - minecraft:sculk_sensor[power=1,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:sculk_sensor[power=2,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:sculk_sensor[power=3,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:sculk_sensor[power=4,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:sculk_sensor[power=5,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:sculk_sensor[power=6,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:sculk_sensor[power=7,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:sculk_sensor[power=8,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:sculk_sensor[power=9,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:sculk_sensor[power=10,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:sculk_sensor[power=11,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:sculk_sensor[power=12,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:sculk_sensor[power=13,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:sculk_sensor[power=14,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:sculk_sensor[power=15,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:sculk_sensor[power=1,sculk_sensor_phase=active,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:sculk_sensor[power=2,sculk_sensor_phase=active,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:sculk_sensor[power=3,sculk_sensor_phase=active,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:sculk_sensor[power=4,sculk_sensor_phase=active,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:sculk_sensor[power=5,sculk_sensor_phase=active,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:sculk_sensor[power=6,sculk_sensor_phase=active,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:sculk_sensor[power=7,sculk_sensor_phase=active,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:sculk_sensor[power=8,sculk_sensor_phase=active,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:sculk_sensor[power=9,sculk_sensor_phase=active,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:sculk_sensor[power=10,sculk_sensor_phase=active,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:sculk_sensor[power=11,sculk_sensor_phase=active,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:sculk_sensor[power=12,sculk_sensor_phase=active,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:sculk_sensor[power=13,sculk_sensor_phase=active,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:sculk_sensor[power=14,sculk_sensor_phase=active,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:sculk_sensor[power=15,sculk_sensor_phase=active,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:sculk_sensor[power=1,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:sculk_sensor[power=2,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:sculk_sensor[power=3,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:sculk_sensor[power=4,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:sculk_sensor[power=5,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:sculk_sensor[power=6,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:sculk_sensor[power=7,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:sculk_sensor[power=8,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:sculk_sensor[power=9,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:sculk_sensor[power=10,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:sculk_sensor[power=11,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:sculk_sensor[power=12,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:sculk_sensor[power=13,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:sculk_sensor[power=14,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:sculk_sensor[power=15,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:sculk_sensor[power=1,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:sculk_sensor[power=2,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:sculk_sensor[power=3,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:sculk_sensor[power=4,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:sculk_sensor[power=5,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:sculk_sensor[power=6,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:sculk_sensor[power=7,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:sculk_sensor[power=8,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:sculk_sensor[power=9,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:sculk_sensor[power=10,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:sculk_sensor[power=11,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:sculk_sensor[power=12,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:sculk_sensor[power=13,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:sculk_sensor[power=14,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:sculk_sensor[power=15,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:sculk_sensor[power=1,sculk_sensor_phase=active,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:sculk_sensor[power=2,sculk_sensor_phase=active,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:sculk_sensor[power=3,sculk_sensor_phase=active,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:sculk_sensor[power=4,sculk_sensor_phase=active,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:sculk_sensor[power=5,sculk_sensor_phase=active,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:sculk_sensor[power=6,sculk_sensor_phase=active,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:sculk_sensor[power=7,sculk_sensor_phase=active,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:sculk_sensor[power=8,sculk_sensor_phase=active,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:sculk_sensor[power=9,sculk_sensor_phase=active,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:sculk_sensor[power=10,sculk_sensor_phase=active,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:sculk_sensor[power=11,sculk_sensor_phase=active,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:sculk_sensor[power=12,sculk_sensor_phase=active,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:sculk_sensor[power=13,sculk_sensor_phase=active,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:sculk_sensor[power=14,sculk_sensor_phase=active,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:sculk_sensor[power=15,sculk_sensor_phase=active,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:sculk_sensor[power=1,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:sculk_sensor[power=2,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:sculk_sensor[power=3,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:sculk_sensor[power=4,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:sculk_sensor[power=5,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:sculk_sensor[power=6,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:sculk_sensor[power=7,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:sculk_sensor[power=8,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:sculk_sensor[power=9,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:sculk_sensor[power=10,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:sculk_sensor[power=11,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:sculk_sensor[power=12,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:sculk_sensor[power=13,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:sculk_sensor[power=14,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:sculk_sensor[power=15,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] + sculk_sensor[power=1,sculk_sensor_phase=inactive,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] + sculk_sensor[power=1,sculk_sensor_phase=inactive,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] + sculk_sensor[power=1,sculk_sensor_phase=active,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] + sculk_sensor[power=1,sculk_sensor_phase=active,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] + sculk_sensor[power=1,sculk_sensor_phase=cooldown,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] + sculk_sensor[power=1,sculk_sensor_phase=cooldown,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] + sculk_sensor[power=2,sculk_sensor_phase=inactive,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] + sculk_sensor[power=2,sculk_sensor_phase=inactive,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] + sculk_sensor[power=2,sculk_sensor_phase=active,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] + sculk_sensor[power=2,sculk_sensor_phase=active,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] + sculk_sensor[power=2,sculk_sensor_phase=cooldown,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] + sculk_sensor[power=2,sculk_sensor_phase=cooldown,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] + sculk_sensor[power=3,sculk_sensor_phase=inactive,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] + sculk_sensor[power=3,sculk_sensor_phase=inactive,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] + sculk_sensor[power=3,sculk_sensor_phase=active,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] + sculk_sensor[power=3,sculk_sensor_phase=active,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] + sculk_sensor[power=3,sculk_sensor_phase=cooldown,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] + sculk_sensor[power=3,sculk_sensor_phase=cooldown,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] + sculk_sensor[power=4,sculk_sensor_phase=inactive,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] + sculk_sensor[power=4,sculk_sensor_phase=inactive,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] + sculk_sensor[power=4,sculk_sensor_phase=active,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] + sculk_sensor[power=4,sculk_sensor_phase=active,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] + sculk_sensor[power=4,sculk_sensor_phase=cooldown,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] + sculk_sensor[power=4,sculk_sensor_phase=cooldown,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] + sculk_sensor[power=5,sculk_sensor_phase=inactive,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] + sculk_sensor[power=5,sculk_sensor_phase=inactive,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] + sculk_sensor[power=5,sculk_sensor_phase=active,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] + sculk_sensor[power=5,sculk_sensor_phase=active,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] + sculk_sensor[power=5,sculk_sensor_phase=cooldown,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] + sculk_sensor[power=5,sculk_sensor_phase=cooldown,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] + sculk_sensor[power=6,sculk_sensor_phase=inactive,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] + sculk_sensor[power=6,sculk_sensor_phase=inactive,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] + sculk_sensor[power=6,sculk_sensor_phase=active,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] + sculk_sensor[power=6,sculk_sensor_phase=active,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] + sculk_sensor[power=6,sculk_sensor_phase=cooldown,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] + sculk_sensor[power=6,sculk_sensor_phase=cooldown,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] + sculk_sensor[power=7,sculk_sensor_phase=inactive,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] + sculk_sensor[power=7,sculk_sensor_phase=inactive,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] + sculk_sensor[power=7,sculk_sensor_phase=active,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] + sculk_sensor[power=7,sculk_sensor_phase=active,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] + sculk_sensor[power=7,sculk_sensor_phase=cooldown,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] + sculk_sensor[power=7,sculk_sensor_phase=cooldown,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] + sculk_sensor[power=8,sculk_sensor_phase=inactive,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] + sculk_sensor[power=8,sculk_sensor_phase=inactive,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] + sculk_sensor[power=8,sculk_sensor_phase=active,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] + sculk_sensor[power=8,sculk_sensor_phase=active,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] + sculk_sensor[power=8,sculk_sensor_phase=cooldown,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] + sculk_sensor[power=8,sculk_sensor_phase=cooldown,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] + sculk_sensor[power=9,sculk_sensor_phase=inactive,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] + sculk_sensor[power=9,sculk_sensor_phase=inactive,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] + sculk_sensor[power=9,sculk_sensor_phase=active,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] + sculk_sensor[power=9,sculk_sensor_phase=active,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] + sculk_sensor[power=9,sculk_sensor_phase=cooldown,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] + sculk_sensor[power=9,sculk_sensor_phase=cooldown,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] + sculk_sensor[power=10,sculk_sensor_phase=inactive,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] + sculk_sensor[power=10,sculk_sensor_phase=inactive,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] + sculk_sensor[power=10,sculk_sensor_phase=active,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] + sculk_sensor[power=10,sculk_sensor_phase=active,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] + sculk_sensor[power=10,sculk_sensor_phase=cooldown,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] + sculk_sensor[power=10,sculk_sensor_phase=cooldown,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] + sculk_sensor[power=11,sculk_sensor_phase=inactive,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] + sculk_sensor[power=11,sculk_sensor_phase=inactive,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] + sculk_sensor[power=11,sculk_sensor_phase=active,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] + sculk_sensor[power=11,sculk_sensor_phase=active,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] + sculk_sensor[power=11,sculk_sensor_phase=cooldown,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] + sculk_sensor[power=11,sculk_sensor_phase=cooldown,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] + sculk_sensor[power=12,sculk_sensor_phase=inactive,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] + sculk_sensor[power=12,sculk_sensor_phase=inactive,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] + sculk_sensor[power=12,sculk_sensor_phase=active,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] + sculk_sensor[power=12,sculk_sensor_phase=active,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] + sculk_sensor[power=12,sculk_sensor_phase=cooldown,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] + sculk_sensor[power=12,sculk_sensor_phase=cooldown,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] + sculk_sensor[power=13,sculk_sensor_phase=inactive,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] + sculk_sensor[power=13,sculk_sensor_phase=inactive,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] + sculk_sensor[power=13,sculk_sensor_phase=active,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] + sculk_sensor[power=13,sculk_sensor_phase=active,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] + sculk_sensor[power=13,sculk_sensor_phase=cooldown,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] + sculk_sensor[power=13,sculk_sensor_phase=cooldown,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] + sculk_sensor[power=14,sculk_sensor_phase=inactive,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] + sculk_sensor[power=14,sculk_sensor_phase=inactive,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] + sculk_sensor[power=14,sculk_sensor_phase=active,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] + sculk_sensor[power=14,sculk_sensor_phase=active,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] + sculk_sensor[power=14,sculk_sensor_phase=cooldown,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] + sculk_sensor[power=14,sculk_sensor_phase=cooldown,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] + sculk_sensor[power=15,sculk_sensor_phase=inactive,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=true] + sculk_sensor[power=15,sculk_sensor_phase=inactive,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false] + sculk_sensor[power=15,sculk_sensor_phase=active,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=true] + sculk_sensor[power=15,sculk_sensor_phase=active,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=active,waterlogged=false] + sculk_sensor[power=15,sculk_sensor_phase=cooldown,waterlogged=true]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=true] + sculk_sensor[power=15,sculk_sensor_phase=cooldown,waterlogged=false]: sculk_sensor[power=0,sculk_sensor_phase=cooldown,waterlogged=false] #### Calibrated Sculk Sensor #### # Just like the regular Sculk Sensor, but the Calibrated Sculk Sensor has directional facing - which gives us way more usable states to play with - minecraft:calibrated_sculk_sensor[facing=north,power=1,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=2,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=3,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=4,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=5,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=6,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=7,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=8,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=9,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=10,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=11,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=12,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=13,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=14,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=15,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=1,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=2,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=3,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=4,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=5,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=6,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=7,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=8,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=9,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=10,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=11,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=12,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=13,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=14,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=15,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=1,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=2,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=3,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=4,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=5,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=6,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=7,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=8,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=9,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=10,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=11,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=12,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=13,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=14,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=15,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=north,power=1,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=2,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=3,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=4,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=5,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=6,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=7,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=8,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=9,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=10,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=11,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=12,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=13,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=14,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=15,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=1,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=2,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=3,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=4,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=5,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=6,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=7,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=8,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=9,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=10,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=11,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=12,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=13,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=14,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=15,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=1,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=2,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=3,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=4,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=5,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=6,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=7,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=8,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=9,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=10,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=11,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=12,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=13,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=14,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=north,power=15,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=1,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=2,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=3,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=4,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=5,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=6,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=7,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=8,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=9,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=10,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=11,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=12,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=13,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=14,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=15,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=1,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=2,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=3,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=4,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=5,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=6,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=7,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=8,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=9,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=10,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=11,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=12,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=13,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=14,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=15,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=1,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=2,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=3,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=4,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=5,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=6,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=7,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=8,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=9,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=10,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=11,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=12,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=13,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=14,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=15,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=west,power=1,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=2,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=3,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=4,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=5,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=6,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=7,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=8,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=9,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=10,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=11,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=12,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=13,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=14,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=15,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=1,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=2,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=3,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=4,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=5,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=6,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=7,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=8,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=9,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=10,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=11,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=12,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=13,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=14,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=15,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=1,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=2,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=3,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=4,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=5,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=6,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=7,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=8,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=9,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=10,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=11,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=12,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=13,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=14,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=west,power=15,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=1,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=2,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=3,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=4,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=5,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=6,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=7,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=8,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=9,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=10,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=11,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=12,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=13,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=14,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=15,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=1,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=2,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=3,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=4,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=5,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=6,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=7,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=8,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=9,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=10,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=11,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=12,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=13,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=14,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=15,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=1,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=2,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=3,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=4,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=5,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=6,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=7,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=8,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=9,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=10,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=11,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=12,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=13,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=14,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=15,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=east,power=1,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=2,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=3,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=4,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=5,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=6,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=7,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=8,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=9,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=10,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=11,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=12,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=13,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=14,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=15,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=1,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=2,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=3,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=4,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=5,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=6,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=7,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=8,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=9,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=10,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=11,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=12,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=13,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=14,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=15,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=1,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=2,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=3,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=4,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=5,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=6,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=7,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=8,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=9,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=10,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=11,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=12,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=13,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=14,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=east,power=15,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=1,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=2,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=3,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=4,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=5,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=6,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=7,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=8,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=9,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=10,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=11,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=12,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=13,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=14,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=15,sculk_sensor_phase=inactive,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=1,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=2,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=3,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=4,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=5,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=6,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=7,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=8,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=9,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=10,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=11,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=12,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=13,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=14,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=15,sculk_sensor_phase=active,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=1,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=2,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=3,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=4,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=5,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=6,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=7,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=8,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=9,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=10,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=11,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=12,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=13,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=14,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=15,sculk_sensor_phase=cooldown,waterlogged=false]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] - minecraft:calibrated_sculk_sensor[facing=south,power=1,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=2,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=3,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=4,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=5,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=6,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=7,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=8,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=9,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=10,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=11,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=12,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=13,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=14,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=15,sculk_sensor_phase=inactive,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=1,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=2,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=3,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=4,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=5,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=6,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=7,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=8,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=9,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=10,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=11,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=12,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=13,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=14,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=15,sculk_sensor_phase=active,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=1,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=2,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=3,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=4,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=5,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=6,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=7,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=8,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=9,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=10,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=11,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=12,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=13,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=14,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] - minecraft:calibrated_sculk_sensor[facing=south,power=15,sculk_sensor_phase=cooldown,waterlogged=true]: minecraft:calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=1,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=1,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=1,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=1,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=1,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=1,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=2,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=2,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=2,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=2,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=2,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=2,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=3,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=3,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=3,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=3,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=3,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=3,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=4,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=4,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=4,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=4,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=4,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=4,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=5,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=5,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=5,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=5,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=5,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=5,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=6,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=6,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=6,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=6,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=6,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=6,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=7,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=7,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=7,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=7,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=7,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=7,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=8,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=8,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=8,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=8,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=8,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=8,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=9,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=9,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=9,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=9,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=9,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=9,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=10,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=10,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=10,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=10,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=10,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=10,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=11,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=11,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=11,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=11,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=11,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=11,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=12,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=12,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=12,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=12,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=12,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=12,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=13,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=13,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=13,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=13,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=13,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=13,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=14,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=14,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=14,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=14,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=14,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=14,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=15,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=15,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=15,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=15,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=north,power=15,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=north,power=15,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=north,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=1,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=1,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=1,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=1,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=1,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=1,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=2,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=2,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=2,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=2,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=2,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=2,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=3,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=3,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=3,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=3,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=3,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=3,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=4,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=4,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=4,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=4,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=4,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=4,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=5,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=5,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=5,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=5,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=5,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=5,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=6,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=6,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=6,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=6,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=6,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=6,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=7,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=7,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=7,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=7,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=7,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=7,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=8,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=8,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=8,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=8,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=8,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=8,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=9,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=9,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=9,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=9,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=9,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=9,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=10,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=10,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=10,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=10,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=10,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=10,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=11,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=11,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=11,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=11,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=11,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=11,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=12,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=12,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=12,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=12,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=12,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=12,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=13,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=13,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=13,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=13,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=13,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=13,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=14,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=14,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=14,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=14,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=14,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=14,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=15,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=15,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=15,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=15,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=south,power=15,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=south,power=15,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=south,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=1,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=1,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=1,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=1,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=1,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=1,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=2,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=2,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=2,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=2,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=2,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=2,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=3,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=3,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=3,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=3,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=3,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=3,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=4,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=4,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=4,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=4,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=4,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=4,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=5,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=5,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=5,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=5,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=5,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=5,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=6,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=6,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=6,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=6,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=6,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=6,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=7,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=7,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=7,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=7,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=7,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=7,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=8,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=8,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=8,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=8,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=8,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=8,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=9,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=9,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=9,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=9,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=9,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=9,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=10,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=10,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=10,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=10,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=10,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=10,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=11,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=11,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=11,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=11,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=11,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=11,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=12,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=12,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=12,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=12,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=12,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=12,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=13,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=13,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=13,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=13,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=13,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=13,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=14,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=14,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=14,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=14,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=14,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=14,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=15,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=15,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=15,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=15,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=west,power=15,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=west,power=15,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=west,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=1,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=1,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=1,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=1,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=1,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=1,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=2,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=2,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=2,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=2,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=2,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=2,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=3,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=3,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=3,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=3,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=3,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=3,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=4,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=4,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=4,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=4,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=4,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=4,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=5,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=5,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=5,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=5,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=5,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=5,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=6,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=6,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=6,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=6,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=6,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=6,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=7,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=7,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=7,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=7,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=7,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=7,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=8,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=8,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=8,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=8,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=8,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=8,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=9,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=9,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=9,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=9,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=9,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=9,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=10,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=10,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=10,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=10,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=10,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=10,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=11,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=11,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=11,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=11,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=11,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=11,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=12,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=12,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=12,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=12,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=12,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=12,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=13,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=13,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=13,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=13,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=13,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=13,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=14,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=14,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=14,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=14,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=14,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=14,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=15,sculk_sensor_phase=inactive,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=15,sculk_sensor_phase=inactive,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=inactive,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=15,sculk_sensor_phase=active,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=15,sculk_sensor_phase=active,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=active,waterlogged=false] + calibrated_sculk_sensor[facing=east,power=15,sculk_sensor_phase=cooldown,waterlogged=true]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=true] + calibrated_sculk_sensor[facing=east,power=15,sculk_sensor_phase=cooldown,waterlogged=false]: calibrated_sculk_sensor[facing=east,power=0,sculk_sensor_phase=cooldown,waterlogged=false] #### Mushroom #### # Most people probably don't mind that mushroom blocks look the same on all six sides. So that means each type can free up like, 63 different states we could use for other stuff - minecraft:mushroom_stem[down=false,east=false,north=false,south=false,up=false,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=false,north=false,south=false,up=false,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=true,north=false,south=false,up=false,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=true,north=false,south=false,up=false,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=false,north=true,south=false,up=false,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=false,north=true,south=false,up=false,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=true,north=true,south=false,up=false,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=true,north=true,south=false,up=false,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=false,north=false,south=true,up=false,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=false,north=false,south=true,up=false,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=true,north=false,south=true,up=false,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=true,north=false,south=true,up=false,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=false,north=true,south=true,up=false,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=false,north=true,south=true,up=false,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=false,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=false,north=false,south=false,up=true,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=false,north=false,south=false,up=true,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=true,north=false,south=false,up=true,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=true,north=false,south=false,up=true,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=false,north=true,south=false,up=true,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=false,north=true,south=false,up=true,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=true,north=true,south=false,up=true,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=true,north=true,south=false,up=true,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=false,north=false,south=true,up=true,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=false,north=false,south=true,up=true,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=true,north=false,south=true,up=true,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=true,north=false,south=true,up=true,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=false,north=true,south=true,up=true,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=false,north=true,south=true,up=true,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=true,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=false]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=false,north=false,south=false,up=false,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=false,north=false,south=false,up=false,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=true,north=false,south=false,up=false,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=true,north=false,south=false,up=false,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=false,north=true,south=false,up=false,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=false,north=true,south=false,up=false,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=true,north=true,south=false,up=false,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=true,north=true,south=false,up=false,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=false,north=false,south=true,up=false,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=false,north=false,south=true,up=false,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=true,north=false,south=true,up=false,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=true,north=false,south=true,up=false,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=false,north=true,south=true,up=false,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=false,north=true,south=true,up=false,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=false,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=false,north=false,south=false,up=true,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=false,north=false,south=false,up=true,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=true,north=false,south=false,up=true,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=true,north=false,south=false,up=true,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=false,north=true,south=false,up=true,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=false,north=true,south=false,up=true,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=true,north=true,south=false,up=true,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=true,north=true,south=false,up=true,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=false,north=false,south=true,up=true,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=false,north=false,south=true,up=true,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=true,north=false,south=true,up=true,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=true,north=false,south=true,up=true,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=false,north=true,south=true,up=true,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=true,east=false,north=true,south=true,up=true,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=true,west=true]: minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=false,north=false,south=false,up=false,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=true,north=false,south=false,up=false,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=true,north=false,south=false,up=false,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=false,north=true,south=false,up=false,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=false,north=true,south=false,up=false,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=true,north=true,south=false,up=false,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=true,north=true,south=false,up=false,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=false,north=false,south=true,up=false,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=false,north=false,south=true,up=false,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=true,north=false,south=true,up=false,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=true,north=false,south=true,up=false,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=false,north=true,south=true,up=false,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=false,north=true,south=true,up=false,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=true,north=true,south=true,up=false,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=false,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=false,north=false,south=false,up=true,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=true,north=false,south=false,up=true,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=false,north=true,south=false,up=true,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=true,north=true,south=false,up=true,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=false,north=false,south=true,up=true,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=true,north=false,south=true,up=true,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=false,north=true,south=true,up=true,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=false,north=true,south=true,up=true,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=true,north=true,south=true,up=true,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=false]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=false,north=false,south=false,up=false,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=true,north=false,south=false,up=false,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=true,north=false,south=false,up=false,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=false,north=true,south=false,up=false,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=false,north=true,south=false,up=false,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=true,north=true,south=false,up=false,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=true,north=true,south=false,up=false,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=false,north=false,south=true,up=false,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=false,north=false,south=true,up=false,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=true,north=false,south=true,up=false,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=true,north=false,south=true,up=false,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=false,north=true,south=true,up=false,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=false,north=true,south=true,up=false,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=true,north=true,south=true,up=false,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=false,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=false,north=false,south=false,up=true,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=true,north=false,south=false,up=true,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=false,north=true,south=false,up=true,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=true,north=true,south=false,up=true,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=false,north=false,south=true,up=true,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=true,north=false,south=true,up=true,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=false,north=true,south=true,up=true,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=true,east=false,north=true,south=true,up=true,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:brown_mushroom_block[down=false,east=true,north=true,south=true,up=true,west=true]: minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=false,north=false,south=false,up=false,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=true,north=false,south=false,up=false,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=true,north=false,south=false,up=false,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=false,north=true,south=false,up=false,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=false,north=true,south=false,up=false,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=true,north=true,south=false,up=false,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=true,north=true,south=false,up=false,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=false,north=false,south=true,up=false,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=false,north=false,south=true,up=false,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=true,north=false,south=true,up=false,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=true,north=false,south=true,up=false,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=false,north=true,south=true,up=false,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=false,north=true,south=true,up=false,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=true,north=true,south=true,up=false,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=false,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=false,north=false,south=false,up=true,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=true,north=false,south=false,up=true,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=false,north=true,south=false,up=true,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=true,north=true,south=false,up=true,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=false,north=false,south=true,up=true,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=true,north=false,south=true,up=true,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=false,north=true,south=true,up=true,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=false,north=true,south=true,up=true,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=true,north=true,south=true,up=true,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=false]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=false,north=false,south=false,up=false,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=true,north=false,south=false,up=false,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=true,north=false,south=false,up=false,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=false,north=true,south=false,up=false,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=false,north=true,south=false,up=false,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=true,north=true,south=false,up=false,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=true,north=true,south=false,up=false,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=false,north=false,south=true,up=false,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=false,north=false,south=true,up=false,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=true,north=false,south=true,up=false,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=true,north=false,south=true,up=false,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=false,north=true,south=true,up=false,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=false,north=true,south=true,up=false,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=true,north=true,south=true,up=false,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=false,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=false,north=false,south=false,up=true,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=true,north=false,south=false,up=true,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=false,north=true,south=false,up=true,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=true,north=true,south=false,up=true,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=false,north=false,south=true,up=true,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=true,north=false,south=true,up=true,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=false,north=true,south=true,up=true,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=true,east=false,north=true,south=true,up=true,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] - minecraft:red_mushroom_block[down=false,east=true,north=true,south=true,up=true,west=true]: minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=true,north=true,south=true,up=false,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=true,north=true,south=true,up=false,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=true,north=true,south=false,up=true,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=true,north=true,south=false,up=true,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=true,north=true,south=false,up=false,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=true,north=true,south=false,up=false,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=true,north=false,south=true,up=true,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=true,north=false,south=true,up=true,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=true,north=false,south=true,up=false,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=true,north=false,south=true,up=false,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=true,north=false,south=false,up=true,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=true,north=false,south=false,up=true,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=true,north=false,south=false,up=false,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=true,north=false,south=false,up=false,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=false,north=true,south=true,up=true,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=false,north=true,south=true,up=true,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=false,north=true,south=true,up=false,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=false,north=true,south=true,up=false,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=false,north=true,south=false,up=true,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=false,north=true,south=false,up=true,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=false,north=true,south=false,up=false,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=false,north=true,south=false,up=false,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=false,north=false,south=true,up=true,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=false,north=false,south=true,up=true,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=false,north=false,south=true,up=false,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=false,north=false,south=true,up=false,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=false,north=false,south=false,up=true,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=false,north=false,south=false,up=true,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=false,north=false,south=false,up=false,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=true,east=false,north=false,south=false,up=false,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=true,north=true,south=true,up=true,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=true,north=true,south=true,up=true,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=true,north=true,south=true,up=false,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=true,north=true,south=true,up=false,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=true,north=true,south=false,up=false,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=true,north=true,south=false,up=false,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=true,north=false,south=true,up=false,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=true,north=false,south=true,up=false,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=true,north=false,south=false,up=false,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=true,north=false,south=false,up=false,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=false,north=true,south=true,up=true,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=false,north=true,south=true,up=true,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=false,north=true,south=true,up=false,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=false,north=true,south=true,up=false,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=false,north=true,south=false,up=false,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=false,north=true,south=false,up=false,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=false,north=false,south=true,up=false,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=false,north=false,south=true,up=false,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=true]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + brown_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=false]: brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=true,north=true,south=true,up=false,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=true,north=true,south=true,up=false,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=true,north=true,south=false,up=true,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=true,north=true,south=false,up=true,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=true,north=true,south=false,up=false,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=true,north=true,south=false,up=false,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=true,north=false,south=true,up=true,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=true,north=false,south=true,up=true,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=true,north=false,south=true,up=false,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=true,north=false,south=true,up=false,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=true,north=false,south=false,up=true,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=true,north=false,south=false,up=true,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=true,north=false,south=false,up=false,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=true,north=false,south=false,up=false,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=false,north=true,south=true,up=true,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=false,north=true,south=true,up=true,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=false,north=true,south=true,up=false,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=false,north=true,south=true,up=false,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=false,north=true,south=false,up=true,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=false,north=true,south=false,up=true,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=false,north=true,south=false,up=false,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=false,north=true,south=false,up=false,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=false,north=false,south=true,up=true,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=false,north=false,south=true,up=true,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=false,north=false,south=true,up=false,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=false,north=false,south=true,up=false,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=false,north=false,south=false,up=true,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=false,north=false,south=false,up=true,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=false,north=false,south=false,up=false,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=true,east=false,north=false,south=false,up=false,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=true,north=true,south=true,up=true,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=true,north=true,south=true,up=true,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=true,north=true,south=true,up=false,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=true,north=true,south=true,up=false,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=true,north=true,south=false,up=false,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=true,north=true,south=false,up=false,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=true,north=false,south=true,up=false,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=true,north=false,south=true,up=false,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=true,north=false,south=false,up=false,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=true,north=false,south=false,up=false,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=false,north=true,south=true,up=true,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=false,north=true,south=true,up=true,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=false,north=true,south=true,up=false,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=false,north=true,south=true,up=false,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=false,north=true,south=false,up=false,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=false,north=true,south=false,up=false,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=false,north=false,south=true,up=false,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=false,north=false,south=true,up=false,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=true]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + red_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=false]: red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=true,north=true,south=true,up=false,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=true,north=true,south=true,up=false,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=true,north=true,south=false,up=true,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=true,north=true,south=false,up=true,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=true,north=true,south=false,up=false,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=true,north=true,south=false,up=false,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=true,north=false,south=true,up=true,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=true,north=false,south=true,up=true,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=true,north=false,south=true,up=false,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=true,north=false,south=true,up=false,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=true,north=false,south=false,up=true,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=true,north=false,south=false,up=true,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=true,north=false,south=false,up=false,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=true,north=false,south=false,up=false,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=false,north=true,south=true,up=true,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=false,north=true,south=true,up=true,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=false,north=true,south=true,up=false,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=false,north=true,south=true,up=false,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=false,north=true,south=false,up=true,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=false,north=true,south=false,up=true,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=false,north=true,south=false,up=false,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=false,north=true,south=false,up=false,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=false,north=false,south=true,up=true,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=false,north=false,south=true,up=true,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=false,north=false,south=true,up=false,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=false,north=false,south=true,up=false,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=false,north=false,south=false,up=true,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=false,north=false,south=false,up=true,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=false,north=false,south=false,up=false,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=true,east=false,north=false,south=false,up=false,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=true,north=true,south=true,up=true,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=true,north=true,south=true,up=true,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=true,north=true,south=false,up=true,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=true,north=true,south=false,up=true,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=true,north=true,south=false,up=false,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=true,north=true,south=false,up=false,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=true,north=false,south=true,up=true,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=true,north=false,south=true,up=true,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=true,north=false,south=true,up=false,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=true,north=false,south=true,up=false,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=true,north=false,south=false,up=true,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=true,north=false,south=false,up=true,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=true,north=false,south=false,up=false,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=true,north=false,south=false,up=false,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=false,north=true,south=true,up=true,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=false,north=true,south=true,up=true,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=false,north=true,south=true,up=false,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=false,north=true,south=true,up=false,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=false,north=true,south=false,up=true,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=false,north=true,south=false,up=true,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=false,north=true,south=false,up=false,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=false,north=true,south=false,up=false,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=false,north=false,south=true,up=true,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=false,north=false,south=true,up=true,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=false,north=false,south=true,up=false,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=false,north=false,south=true,up=false,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=false,north=false,south=false,up=true,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=false,north=false,south=false,up=true,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=false,north=false,south=false,up=false,west=true]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] + mushroom_stem[down=false,east=false,north=false,south=false,up=false,west=false]: mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true] #### Kelp #### # 'kelp' here means specifically the top block of the kelp plant. Great for making aquatic crops. - minecraft:kelp[age=1]: minecraft:kelp[age=0] - minecraft:kelp[age=2]: minecraft:kelp[age=0] - minecraft:kelp[age=3]: minecraft:kelp[age=0] - minecraft:kelp[age=4]: minecraft:kelp[age=0] - minecraft:kelp[age=5]: minecraft:kelp[age=0] - minecraft:kelp[age=6]: minecraft:kelp[age=0] - minecraft:kelp[age=7]: minecraft:kelp[age=0] - minecraft:kelp[age=8]: minecraft:kelp[age=0] - minecraft:kelp[age=9]: minecraft:kelp[age=0] - minecraft:kelp[age=10]: minecraft:kelp[age=0] - minecraft:kelp[age=11]: minecraft:kelp[age=0] - minecraft:kelp[age=12]: minecraft:kelp[age=0] - minecraft:kelp[age=13]: minecraft:kelp[age=0] - minecraft:kelp[age=14]: minecraft:kelp[age=0] - minecraft:kelp[age=15]: minecraft:kelp[age=0] - minecraft:kelp[age=16]: minecraft:kelp[age=0] - minecraft:kelp[age=17]: minecraft:kelp[age=0] - minecraft:kelp[age=18]: minecraft:kelp[age=0] - minecraft:kelp[age=19]: minecraft:kelp[age=0] - minecraft:kelp[age=20]: minecraft:kelp[age=0] - minecraft:kelp[age=21]: minecraft:kelp[age=0] - minecraft:kelp[age=22]: minecraft:kelp[age=0] - minecraft:kelp[age=23]: minecraft:kelp[age=0] - minecraft:kelp[age=24]: minecraft:kelp[age=0] - minecraft:kelp[age=25]: minecraft:kelp[age=0] + kelp[age=1]: kelp[age=0] + kelp[age=2]: kelp[age=0] + kelp[age=3]: kelp[age=0] + kelp[age=4]: kelp[age=0] + kelp[age=5]: kelp[age=0] + kelp[age=6]: kelp[age=0] + kelp[age=7]: kelp[age=0] + kelp[age=8]: kelp[age=0] + kelp[age=9]: kelp[age=0] + kelp[age=10]: kelp[age=0] + kelp[age=11]: kelp[age=0] + kelp[age=12]: kelp[age=0] + kelp[age=13]: kelp[age=0] + kelp[age=14]: kelp[age=0] + kelp[age=15]: kelp[age=0] + kelp[age=16]: kelp[age=0] + kelp[age=17]: kelp[age=0] + kelp[age=18]: kelp[age=0] + kelp[age=19]: kelp[age=0] + kelp[age=20]: kelp[age=0] + kelp[age=21]: kelp[age=0] + kelp[age=22]: kelp[age=0] + kelp[age=23]: kelp[age=0] + kelp[age=24]: kelp[age=0] + kelp[age=25]: kelp[age=0] #### Vines #### # Unless you tweak the vine's block tag, the client will always think it's climbable. # Since vines look identical at different growth stages, we can repurpose those extra states to make custom blocks like ropes. - minecraft:weeping_vines[age=1]: minecraft:weeping_vines[age=0] - minecraft:weeping_vines[age=2]: minecraft:weeping_vines[age=0] - minecraft:weeping_vines[age=3]: minecraft:weeping_vines[age=0] - minecraft:weeping_vines[age=4]: minecraft:weeping_vines[age=0] - minecraft:weeping_vines[age=5]: minecraft:weeping_vines[age=0] - minecraft:weeping_vines[age=6]: minecraft:weeping_vines[age=0] - minecraft:weeping_vines[age=7]: minecraft:weeping_vines[age=0] - minecraft:weeping_vines[age=8]: minecraft:weeping_vines[age=0] - minecraft:weeping_vines[age=9]: minecraft:weeping_vines[age=0] - minecraft:weeping_vines[age=10]: minecraft:weeping_vines[age=0] - minecraft:weeping_vines[age=11]: minecraft:weeping_vines[age=0] - minecraft:weeping_vines[age=12]: minecraft:weeping_vines[age=0] - minecraft:weeping_vines[age=13]: minecraft:weeping_vines[age=0] - minecraft:weeping_vines[age=14]: minecraft:weeping_vines[age=0] - minecraft:weeping_vines[age=15]: minecraft:weeping_vines[age=0] - minecraft:weeping_vines[age=16]: minecraft:weeping_vines[age=0] - minecraft:weeping_vines[age=17]: minecraft:weeping_vines[age=0] - minecraft:weeping_vines[age=18]: minecraft:weeping_vines[age=0] - minecraft:weeping_vines[age=19]: minecraft:weeping_vines[age=0] - minecraft:weeping_vines[age=20]: minecraft:weeping_vines[age=0] - minecraft:weeping_vines[age=21]: minecraft:weeping_vines[age=0] - minecraft:weeping_vines[age=22]: minecraft:weeping_vines[age=0] - minecraft:weeping_vines[age=23]: minecraft:weeping_vines[age=0] - minecraft:weeping_vines[age=24]: minecraft:weeping_vines[age=0] - minecraft:weeping_vines[age=25]: minecraft:weeping_vines[age=0] - minecraft:twisting_vines[age=1]: minecraft:twisting_vines[age=0] - minecraft:twisting_vines[age=2]: minecraft:twisting_vines[age=0] - minecraft:twisting_vines[age=3]: minecraft:twisting_vines[age=0] - minecraft:twisting_vines[age=4]: minecraft:twisting_vines[age=0] - minecraft:twisting_vines[age=5]: minecraft:twisting_vines[age=0] - minecraft:twisting_vines[age=6]: minecraft:twisting_vines[age=0] - minecraft:twisting_vines[age=7]: minecraft:twisting_vines[age=0] - minecraft:twisting_vines[age=8]: minecraft:twisting_vines[age=0] - minecraft:twisting_vines[age=9]: minecraft:twisting_vines[age=0] - minecraft:twisting_vines[age=10]: minecraft:twisting_vines[age=0] - minecraft:twisting_vines[age=11]: minecraft:twisting_vines[age=0] - minecraft:twisting_vines[age=12]: minecraft:twisting_vines[age=0] - minecraft:twisting_vines[age=13]: minecraft:twisting_vines[age=0] - minecraft:twisting_vines[age=14]: minecraft:twisting_vines[age=0] - minecraft:twisting_vines[age=15]: minecraft:twisting_vines[age=0] - minecraft:twisting_vines[age=16]: minecraft:twisting_vines[age=0] - minecraft:twisting_vines[age=17]: minecraft:twisting_vines[age=0] - minecraft:twisting_vines[age=18]: minecraft:twisting_vines[age=0] - minecraft:twisting_vines[age=19]: minecraft:twisting_vines[age=0] - minecraft:twisting_vines[age=20]: minecraft:twisting_vines[age=0] - minecraft:twisting_vines[age=21]: minecraft:twisting_vines[age=0] - minecraft:twisting_vines[age=22]: minecraft:twisting_vines[age=0] - minecraft:twisting_vines[age=23]: minecraft:twisting_vines[age=0] - minecraft:twisting_vines[age=24]: minecraft:twisting_vines[age=0] - minecraft:twisting_vines[age=25]: minecraft:twisting_vines[age=0] - minecraft:cave_vines[age=1,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=2,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=3,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=4,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=5,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=6,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=7,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=8,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=9,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=10,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=11,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=12,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=13,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=14,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=15,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=16,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=17,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=18,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=19,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=20,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=21,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=22,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=23,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=24,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=25,berries=false]: minecraft:cave_vines[age=0,berries=false] - minecraft:cave_vines[age=1,berries=true]: minecraft:cave_vines[age=0,berries=true] - minecraft:cave_vines[age=2,berries=true]: minecraft:cave_vines[age=0,berries=true] - minecraft:cave_vines[age=3,berries=true]: minecraft:cave_vines[age=0,berries=true] - minecraft:cave_vines[age=4,berries=true]: minecraft:cave_vines[age=0,berries=true] - minecraft:cave_vines[age=5,berries=true]: minecraft:cave_vines[age=0,berries=true] - minecraft:cave_vines[age=6,berries=true]: minecraft:cave_vines[age=0,berries=true] - minecraft:cave_vines[age=7,berries=true]: minecraft:cave_vines[age=0,berries=true] - minecraft:cave_vines[age=8,berries=true]: minecraft:cave_vines[age=0,berries=true] - minecraft:cave_vines[age=9,berries=true]: minecraft:cave_vines[age=0,berries=true] - minecraft:cave_vines[age=10,berries=true]: minecraft:cave_vines[age=0,berries=true] - minecraft:cave_vines[age=11,berries=true]: minecraft:cave_vines[age=0,berries=true] - minecraft:cave_vines[age=12,berries=true]: minecraft:cave_vines[age=0,berries=true] - minecraft:cave_vines[age=13,berries=true]: minecraft:cave_vines[age=0,berries=true] - minecraft:cave_vines[age=14,berries=true]: minecraft:cave_vines[age=0,berries=true] - minecraft:cave_vines[age=15,berries=true]: minecraft:cave_vines[age=0,berries=true] - minecraft:cave_vines[age=16,berries=true]: minecraft:cave_vines[age=0,berries=true] - minecraft:cave_vines[age=17,berries=true]: minecraft:cave_vines[age=0,berries=true] - minecraft:cave_vines[age=18,berries=true]: minecraft:cave_vines[age=0,berries=true] - minecraft:cave_vines[age=19,berries=true]: minecraft:cave_vines[age=0,berries=true] - minecraft:cave_vines[age=20,berries=true]: minecraft:cave_vines[age=0,berries=true] - minecraft:cave_vines[age=21,berries=true]: minecraft:cave_vines[age=0,berries=true] - minecraft:cave_vines[age=22,berries=true]: minecraft:cave_vines[age=0,berries=true] - minecraft:cave_vines[age=23,berries=true]: minecraft:cave_vines[age=0,berries=true] - minecraft:cave_vines[age=24,berries=true]: minecraft:cave_vines[age=0,berries=true] - minecraft:cave_vines[age=25,berries=true]: minecraft:cave_vines[age=0,berries=true] + weeping_vines[age=1]: weeping_vines[age=0] + weeping_vines[age=2]: weeping_vines[age=0] + weeping_vines[age=3]: weeping_vines[age=0] + weeping_vines[age=4]: weeping_vines[age=0] + weeping_vines[age=5]: weeping_vines[age=0] + weeping_vines[age=6]: weeping_vines[age=0] + weeping_vines[age=7]: weeping_vines[age=0] + weeping_vines[age=8]: weeping_vines[age=0] + weeping_vines[age=9]: weeping_vines[age=0] + weeping_vines[age=10]: weeping_vines[age=0] + weeping_vines[age=11]: weeping_vines[age=0] + weeping_vines[age=12]: weeping_vines[age=0] + weeping_vines[age=13]: weeping_vines[age=0] + weeping_vines[age=14]: weeping_vines[age=0] + weeping_vines[age=15]: weeping_vines[age=0] + weeping_vines[age=16]: weeping_vines[age=0] + weeping_vines[age=17]: weeping_vines[age=0] + weeping_vines[age=18]: weeping_vines[age=0] + weeping_vines[age=19]: weeping_vines[age=0] + weeping_vines[age=20]: weeping_vines[age=0] + weeping_vines[age=21]: weeping_vines[age=0] + weeping_vines[age=22]: weeping_vines[age=0] + weeping_vines[age=23]: weeping_vines[age=0] + weeping_vines[age=24]: weeping_vines[age=0] + weeping_vines[age=25]: weeping_vines[age=0] + twisting_vines[age=1]: twisting_vines[age=0] + twisting_vines[age=2]: twisting_vines[age=0] + twisting_vines[age=3]: twisting_vines[age=0] + twisting_vines[age=4]: twisting_vines[age=0] + twisting_vines[age=5]: twisting_vines[age=0] + twisting_vines[age=6]: twisting_vines[age=0] + twisting_vines[age=7]: twisting_vines[age=0] + twisting_vines[age=8]: twisting_vines[age=0] + twisting_vines[age=9]: twisting_vines[age=0] + twisting_vines[age=10]: twisting_vines[age=0] + twisting_vines[age=11]: twisting_vines[age=0] + twisting_vines[age=12]: twisting_vines[age=0] + twisting_vines[age=13]: twisting_vines[age=0] + twisting_vines[age=14]: twisting_vines[age=0] + twisting_vines[age=15]: twisting_vines[age=0] + twisting_vines[age=16]: twisting_vines[age=0] + twisting_vines[age=17]: twisting_vines[age=0] + twisting_vines[age=18]: twisting_vines[age=0] + twisting_vines[age=19]: twisting_vines[age=0] + twisting_vines[age=20]: twisting_vines[age=0] + twisting_vines[age=21]: twisting_vines[age=0] + twisting_vines[age=22]: twisting_vines[age=0] + twisting_vines[age=23]: twisting_vines[age=0] + twisting_vines[age=24]: twisting_vines[age=0] + twisting_vines[age=25]: twisting_vines[age=0] + cave_vines[age=1,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=2,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=3,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=4,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=5,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=6,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=7,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=8,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=9,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=10,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=11,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=12,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=13,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=14,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=15,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=16,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=17,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=18,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=19,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=20,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=21,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=22,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=23,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=24,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=25,berries=false]: cave_vines[age=0,berries=false] + cave_vines[age=1,berries=true]: cave_vines[age=0,berries=true] + cave_vines[age=2,berries=true]: cave_vines[age=0,berries=true] + cave_vines[age=3,berries=true]: cave_vines[age=0,berries=true] + cave_vines[age=4,berries=true]: cave_vines[age=0,berries=true] + cave_vines[age=5,berries=true]: cave_vines[age=0,berries=true] + cave_vines[age=6,berries=true]: cave_vines[age=0,berries=true] + cave_vines[age=7,berries=true]: cave_vines[age=0,berries=true] + cave_vines[age=8,berries=true]: cave_vines[age=0,berries=true] + cave_vines[age=9,berries=true]: cave_vines[age=0,berries=true] + cave_vines[age=10,berries=true]: cave_vines[age=0,berries=true] + cave_vines[age=11,berries=true]: cave_vines[age=0,berries=true] + cave_vines[age=12,berries=true]: cave_vines[age=0,berries=true] + cave_vines[age=13,berries=true]: cave_vines[age=0,berries=true] + cave_vines[age=14,berries=true]: cave_vines[age=0,berries=true] + cave_vines[age=15,berries=true]: cave_vines[age=0,berries=true] + cave_vines[age=16,berries=true]: cave_vines[age=0,berries=true] + cave_vines[age=17,berries=true]: cave_vines[age=0,berries=true] + cave_vines[age=18,berries=true]: cave_vines[age=0,berries=true] + cave_vines[age=19,berries=true]: cave_vines[age=0,berries=true] + cave_vines[age=20,berries=true]: cave_vines[age=0,berries=true] + cave_vines[age=21,berries=true]: cave_vines[age=0,berries=true] + cave_vines[age=22,berries=true]: cave_vines[age=0,berries=true] + cave_vines[age=23,berries=true]: cave_vines[age=0,berries=true] + cave_vines[age=24,berries=true]: cave_vines[age=0,berries=true] + cave_vines[age=25,berries=true]: cave_vines[age=0,berries=true] #### SugarCane #### # Sugar cane looks exactly the same no matter its growth stage. Plus, it's got this perfect hitbox that makes it awesome for taller plants - minecraft:sugar_cane[age=1]: minecraft:sugar_cane[age=0] - minecraft:sugar_cane[age=2]: minecraft:sugar_cane[age=0] - minecraft:sugar_cane[age=3]: minecraft:sugar_cane[age=0] - minecraft:sugar_cane[age=4]: minecraft:sugar_cane[age=0] - minecraft:sugar_cane[age=5]: minecraft:sugar_cane[age=0] - minecraft:sugar_cane[age=6]: minecraft:sugar_cane[age=0] - minecraft:sugar_cane[age=7]: minecraft:sugar_cane[age=0] - minecraft:sugar_cane[age=8]: minecraft:sugar_cane[age=0] - minecraft:sugar_cane[age=9]: minecraft:sugar_cane[age=0] - minecraft:sugar_cane[age=10]: minecraft:sugar_cane[age=0] - minecraft:sugar_cane[age=11]: minecraft:sugar_cane[age=0] - minecraft:sugar_cane[age=12]: minecraft:sugar_cane[age=0] - minecraft:sugar_cane[age=13]: minecraft:sugar_cane[age=0] - minecraft:sugar_cane[age=14]: minecraft:sugar_cane[age=0] - minecraft:sugar_cane[age=15]: minecraft:sugar_cane[age=0] + sugar_cane[age=1]: sugar_cane[age=0] + sugar_cane[age=2]: sugar_cane[age=0] + sugar_cane[age=3]: sugar_cane[age=0] + sugar_cane[age=4]: sugar_cane[age=0] + sugar_cane[age=5]: sugar_cane[age=0] + sugar_cane[age=6]: sugar_cane[age=0] + sugar_cane[age=7]: sugar_cane[age=0] + sugar_cane[age=8]: sugar_cane[age=0] + sugar_cane[age=9]: sugar_cane[age=0] + sugar_cane[age=10]: sugar_cane[age=0] + sugar_cane[age=11]: sugar_cane[age=0] + sugar_cane[age=12]: sugar_cane[age=0] + sugar_cane[age=13]: sugar_cane[age=0] + sugar_cane[age=14]: sugar_cane[age=0] + sugar_cane[age=15]: sugar_cane[age=0] #### Cactus #### # Cactus looks the same at all growth stages.Its hitbox is 14x14x15, making it perfect for creating blocks that are just slightly smaller than full-size - minecraft:cactus[age=1]: minecraft:cactus[age=0] - minecraft:cactus[age=2]: minecraft:cactus[age=0] - minecraft:cactus[age=3]: minecraft:cactus[age=0] - minecraft:cactus[age=4]: minecraft:cactus[age=0] - minecraft:cactus[age=5]: minecraft:cactus[age=0] - minecraft:cactus[age=6]: minecraft:cactus[age=0] - minecraft:cactus[age=7]: minecraft:cactus[age=0] - minecraft:cactus[age=8]: minecraft:cactus[age=0] - minecraft:cactus[age=9]: minecraft:cactus[age=0] - minecraft:cactus[age=10]: minecraft:cactus[age=0] - minecraft:cactus[age=11]: minecraft:cactus[age=0] - minecraft:cactus[age=12]: minecraft:cactus[age=0] - minecraft:cactus[age=13]: minecraft:cactus[age=0] - minecraft:cactus[age=14]: minecraft:cactus[age=0] - minecraft:cactus[age=15]: minecraft:cactus[age=0] + cactus[age=1]: cactus[age=0] + cactus[age=2]: cactus[age=0] + cactus[age=3]: cactus[age=0] + cactus[age=4]: cactus[age=0] + cactus[age=5]: cactus[age=0] + cactus[age=6]: cactus[age=0] + cactus[age=7]: cactus[age=0] + cactus[age=8]: cactus[age=0] + cactus[age=9]: cactus[age=0] + cactus[age=10]: cactus[age=0] + cactus[age=11]: cactus[age=0] + cactus[age=12]: cactus[age=0] + cactus[age=13]: cactus[age=0] + cactus[age=14]: cactus[age=0] + cactus[age=15]: cactus[age=0] #### Leaves #### # The 'distance' and 'persistent' properties are used under the hood to optimize how leaves decay, but visually? They look exactly the same. # These are some of the few block types that actually support transparent textures. - minecraft:oak_leaves[distance=1,persistent=false,waterlogged=false]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:oak_leaves[distance=2,persistent=false,waterlogged=false]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:oak_leaves[distance=3,persistent=false,waterlogged=false]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:oak_leaves[distance=4,persistent=false,waterlogged=false]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:oak_leaves[distance=5,persistent=false,waterlogged=false]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:oak_leaves[distance=6,persistent=false,waterlogged=false]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:oak_leaves[distance=7,persistent=false,waterlogged=false]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:oak_leaves[distance=1,persistent=true,waterlogged=false]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:oak_leaves[distance=2,persistent=true,waterlogged=false]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:oak_leaves[distance=3,persistent=true,waterlogged=false]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:oak_leaves[distance=4,persistent=true,waterlogged=false]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:oak_leaves[distance=5,persistent=true,waterlogged=false]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:oak_leaves[distance=6,persistent=true,waterlogged=false]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:oak_leaves[distance=1,persistent=false,waterlogged=true]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:oak_leaves[distance=2,persistent=false,waterlogged=true]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:oak_leaves[distance=3,persistent=false,waterlogged=true]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:oak_leaves[distance=4,persistent=false,waterlogged=true]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:oak_leaves[distance=5,persistent=false,waterlogged=true]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:oak_leaves[distance=6,persistent=false,waterlogged=true]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:oak_leaves[distance=7,persistent=false,waterlogged=true]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:oak_leaves[distance=1,persistent=true,waterlogged=true]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:oak_leaves[distance=2,persistent=true,waterlogged=true]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:oak_leaves[distance=3,persistent=true,waterlogged=true]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:oak_leaves[distance=4,persistent=true,waterlogged=true]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:oak_leaves[distance=5,persistent=true,waterlogged=true]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:oak_leaves[distance=6,persistent=true,waterlogged=true]: minecraft:oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:acacia_leaves[distance=1,persistent=false,waterlogged=false]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:acacia_leaves[distance=2,persistent=false,waterlogged=false]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:acacia_leaves[distance=3,persistent=false,waterlogged=false]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:acacia_leaves[distance=4,persistent=false,waterlogged=false]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:acacia_leaves[distance=5,persistent=false,waterlogged=false]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:acacia_leaves[distance=6,persistent=false,waterlogged=false]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:acacia_leaves[distance=7,persistent=false,waterlogged=false]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:acacia_leaves[distance=1,persistent=true,waterlogged=false]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:acacia_leaves[distance=2,persistent=true,waterlogged=false]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:acacia_leaves[distance=3,persistent=true,waterlogged=false]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:acacia_leaves[distance=4,persistent=true,waterlogged=false]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:acacia_leaves[distance=5,persistent=true,waterlogged=false]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:acacia_leaves[distance=6,persistent=true,waterlogged=false]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:acacia_leaves[distance=1,persistent=false,waterlogged=true]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:acacia_leaves[distance=2,persistent=false,waterlogged=true]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:acacia_leaves[distance=3,persistent=false,waterlogged=true]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:acacia_leaves[distance=4,persistent=false,waterlogged=true]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:acacia_leaves[distance=5,persistent=false,waterlogged=true]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:acacia_leaves[distance=6,persistent=false,waterlogged=true]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:acacia_leaves[distance=7,persistent=false,waterlogged=true]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:acacia_leaves[distance=1,persistent=true,waterlogged=true]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:acacia_leaves[distance=2,persistent=true,waterlogged=true]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:acacia_leaves[distance=3,persistent=true,waterlogged=true]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:acacia_leaves[distance=4,persistent=true,waterlogged=true]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:acacia_leaves[distance=5,persistent=true,waterlogged=true]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:acacia_leaves[distance=6,persistent=true,waterlogged=true]: minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:jungle_leaves[distance=1,persistent=false,waterlogged=false]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:jungle_leaves[distance=2,persistent=false,waterlogged=false]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:jungle_leaves[distance=3,persistent=false,waterlogged=false]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:jungle_leaves[distance=4,persistent=false,waterlogged=false]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:jungle_leaves[distance=5,persistent=false,waterlogged=false]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:jungle_leaves[distance=6,persistent=false,waterlogged=false]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:jungle_leaves[distance=7,persistent=false,waterlogged=false]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:jungle_leaves[distance=1,persistent=true,waterlogged=false]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:jungle_leaves[distance=2,persistent=true,waterlogged=false]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:jungle_leaves[distance=3,persistent=true,waterlogged=false]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:jungle_leaves[distance=4,persistent=true,waterlogged=false]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:jungle_leaves[distance=5,persistent=true,waterlogged=false]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:jungle_leaves[distance=6,persistent=true,waterlogged=false]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:jungle_leaves[distance=1,persistent=false,waterlogged=true]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:jungle_leaves[distance=2,persistent=false,waterlogged=true]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:jungle_leaves[distance=3,persistent=false,waterlogged=true]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:jungle_leaves[distance=4,persistent=false,waterlogged=true]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:jungle_leaves[distance=5,persistent=false,waterlogged=true]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:jungle_leaves[distance=6,persistent=false,waterlogged=true]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:jungle_leaves[distance=7,persistent=false,waterlogged=true]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:jungle_leaves[distance=1,persistent=true,waterlogged=true]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:jungle_leaves[distance=2,persistent=true,waterlogged=true]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:jungle_leaves[distance=3,persistent=true,waterlogged=true]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:jungle_leaves[distance=4,persistent=true,waterlogged=true]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:jungle_leaves[distance=5,persistent=true,waterlogged=true]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:jungle_leaves[distance=6,persistent=true,waterlogged=true]: minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:birch_leaves[distance=1,persistent=false,waterlogged=false]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:birch_leaves[distance=2,persistent=false,waterlogged=false]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:birch_leaves[distance=3,persistent=false,waterlogged=false]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:birch_leaves[distance=4,persistent=false,waterlogged=false]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:birch_leaves[distance=5,persistent=false,waterlogged=false]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:birch_leaves[distance=6,persistent=false,waterlogged=false]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:birch_leaves[distance=7,persistent=false,waterlogged=false]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:birch_leaves[distance=1,persistent=true,waterlogged=false]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:birch_leaves[distance=2,persistent=true,waterlogged=false]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:birch_leaves[distance=3,persistent=true,waterlogged=false]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:birch_leaves[distance=4,persistent=true,waterlogged=false]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:birch_leaves[distance=5,persistent=true,waterlogged=false]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:birch_leaves[distance=6,persistent=true,waterlogged=false]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:birch_leaves[distance=1,persistent=false,waterlogged=true]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:birch_leaves[distance=2,persistent=false,waterlogged=true]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:birch_leaves[distance=3,persistent=false,waterlogged=true]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:birch_leaves[distance=4,persistent=false,waterlogged=true]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:birch_leaves[distance=5,persistent=false,waterlogged=true]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:birch_leaves[distance=6,persistent=false,waterlogged=true]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:birch_leaves[distance=7,persistent=false,waterlogged=true]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:birch_leaves[distance=1,persistent=true,waterlogged=true]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:birch_leaves[distance=2,persistent=true,waterlogged=true]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:birch_leaves[distance=3,persistent=true,waterlogged=true]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:birch_leaves[distance=4,persistent=true,waterlogged=true]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:birch_leaves[distance=5,persistent=true,waterlogged=true]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:birch_leaves[distance=6,persistent=true,waterlogged=true]: minecraft:birch_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:mangrove_leaves[distance=1,persistent=false,waterlogged=false]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:mangrove_leaves[distance=2,persistent=false,waterlogged=false]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:mangrove_leaves[distance=3,persistent=false,waterlogged=false]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:mangrove_leaves[distance=4,persistent=false,waterlogged=false]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:mangrove_leaves[distance=5,persistent=false,waterlogged=false]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:mangrove_leaves[distance=6,persistent=false,waterlogged=false]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:mangrove_leaves[distance=7,persistent=false,waterlogged=false]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:mangrove_leaves[distance=1,persistent=true,waterlogged=false]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:mangrove_leaves[distance=2,persistent=true,waterlogged=false]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:mangrove_leaves[distance=3,persistent=true,waterlogged=false]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:mangrove_leaves[distance=4,persistent=true,waterlogged=false]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:mangrove_leaves[distance=5,persistent=true,waterlogged=false]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:mangrove_leaves[distance=6,persistent=true,waterlogged=false]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:mangrove_leaves[distance=1,persistent=false,waterlogged=true]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:mangrove_leaves[distance=2,persistent=false,waterlogged=true]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:mangrove_leaves[distance=3,persistent=false,waterlogged=true]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:mangrove_leaves[distance=4,persistent=false,waterlogged=true]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:mangrove_leaves[distance=5,persistent=false,waterlogged=true]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:mangrove_leaves[distance=6,persistent=false,waterlogged=true]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:mangrove_leaves[distance=7,persistent=false,waterlogged=true]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:mangrove_leaves[distance=1,persistent=true,waterlogged=true]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:mangrove_leaves[distance=2,persistent=true,waterlogged=true]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:mangrove_leaves[distance=3,persistent=true,waterlogged=true]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:mangrove_leaves[distance=4,persistent=true,waterlogged=true]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:mangrove_leaves[distance=5,persistent=true,waterlogged=true]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:mangrove_leaves[distance=6,persistent=true,waterlogged=true]: minecraft:mangrove_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:cherry_leaves[distance=1,persistent=false,waterlogged=false]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:cherry_leaves[distance=2,persistent=false,waterlogged=false]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:cherry_leaves[distance=3,persistent=false,waterlogged=false]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:cherry_leaves[distance=4,persistent=false,waterlogged=false]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:cherry_leaves[distance=5,persistent=false,waterlogged=false]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:cherry_leaves[distance=6,persistent=false,waterlogged=false]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:cherry_leaves[distance=7,persistent=false,waterlogged=false]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:cherry_leaves[distance=1,persistent=true,waterlogged=false]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:cherry_leaves[distance=2,persistent=true,waterlogged=false]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:cherry_leaves[distance=3,persistent=true,waterlogged=false]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:cherry_leaves[distance=4,persistent=true,waterlogged=false]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:cherry_leaves[distance=5,persistent=true,waterlogged=false]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:cherry_leaves[distance=6,persistent=true,waterlogged=false]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:cherry_leaves[distance=1,persistent=false,waterlogged=true]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:cherry_leaves[distance=2,persistent=false,waterlogged=true]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:cherry_leaves[distance=3,persistent=false,waterlogged=true]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:cherry_leaves[distance=4,persistent=false,waterlogged=true]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:cherry_leaves[distance=5,persistent=false,waterlogged=true]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:cherry_leaves[distance=6,persistent=false,waterlogged=true]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:cherry_leaves[distance=7,persistent=false,waterlogged=true]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:cherry_leaves[distance=1,persistent=true,waterlogged=true]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:cherry_leaves[distance=2,persistent=true,waterlogged=true]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:cherry_leaves[distance=3,persistent=true,waterlogged=true]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:cherry_leaves[distance=4,persistent=true,waterlogged=true]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:cherry_leaves[distance=5,persistent=true,waterlogged=true]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:cherry_leaves[distance=6,persistent=true,waterlogged=true]: minecraft:cherry_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:dark_oak_leaves[distance=1,persistent=false,waterlogged=false]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:dark_oak_leaves[distance=2,persistent=false,waterlogged=false]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:dark_oak_leaves[distance=3,persistent=false,waterlogged=false]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:dark_oak_leaves[distance=4,persistent=false,waterlogged=false]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:dark_oak_leaves[distance=5,persistent=false,waterlogged=false]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:dark_oak_leaves[distance=6,persistent=false,waterlogged=false]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:dark_oak_leaves[distance=7,persistent=false,waterlogged=false]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:dark_oak_leaves[distance=1,persistent=true,waterlogged=false]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:dark_oak_leaves[distance=2,persistent=true,waterlogged=false]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:dark_oak_leaves[distance=3,persistent=true,waterlogged=false]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:dark_oak_leaves[distance=4,persistent=true,waterlogged=false]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:dark_oak_leaves[distance=5,persistent=true,waterlogged=false]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:dark_oak_leaves[distance=6,persistent=true,waterlogged=false]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:dark_oak_leaves[distance=1,persistent=false,waterlogged=true]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:dark_oak_leaves[distance=2,persistent=false,waterlogged=true]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:dark_oak_leaves[distance=3,persistent=false,waterlogged=true]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:dark_oak_leaves[distance=4,persistent=false,waterlogged=true]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:dark_oak_leaves[distance=5,persistent=false,waterlogged=true]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:dark_oak_leaves[distance=6,persistent=false,waterlogged=true]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:dark_oak_leaves[distance=7,persistent=false,waterlogged=true]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:dark_oak_leaves[distance=1,persistent=true,waterlogged=true]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:dark_oak_leaves[distance=2,persistent=true,waterlogged=true]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:dark_oak_leaves[distance=3,persistent=true,waterlogged=true]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:dark_oak_leaves[distance=4,persistent=true,waterlogged=true]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:dark_oak_leaves[distance=5,persistent=true,waterlogged=true]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:dark_oak_leaves[distance=6,persistent=true,waterlogged=true]: minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:azalea_leaves[distance=1,persistent=false,waterlogged=false]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:azalea_leaves[distance=2,persistent=false,waterlogged=false]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:azalea_leaves[distance=3,persistent=false,waterlogged=false]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:azalea_leaves[distance=4,persistent=false,waterlogged=false]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:azalea_leaves[distance=5,persistent=false,waterlogged=false]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:azalea_leaves[distance=6,persistent=false,waterlogged=false]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:azalea_leaves[distance=7,persistent=false,waterlogged=false]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:azalea_leaves[distance=1,persistent=true,waterlogged=false]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:azalea_leaves[distance=2,persistent=true,waterlogged=false]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:azalea_leaves[distance=3,persistent=true,waterlogged=false]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:azalea_leaves[distance=4,persistent=true,waterlogged=false]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:azalea_leaves[distance=5,persistent=true,waterlogged=false]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:azalea_leaves[distance=6,persistent=true,waterlogged=false]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:azalea_leaves[distance=1,persistent=false,waterlogged=true]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:azalea_leaves[distance=2,persistent=false,waterlogged=true]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:azalea_leaves[distance=3,persistent=false,waterlogged=true]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:azalea_leaves[distance=4,persistent=false,waterlogged=true]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:azalea_leaves[distance=5,persistent=false,waterlogged=true]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:azalea_leaves[distance=6,persistent=false,waterlogged=true]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:azalea_leaves[distance=7,persistent=false,waterlogged=true]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:azalea_leaves[distance=1,persistent=true,waterlogged=true]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:azalea_leaves[distance=2,persistent=true,waterlogged=true]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:azalea_leaves[distance=3,persistent=true,waterlogged=true]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:azalea_leaves[distance=4,persistent=true,waterlogged=true]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:azalea_leaves[distance=5,persistent=true,waterlogged=true]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:azalea_leaves[distance=6,persistent=true,waterlogged=true]: minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:flowering_azalea_leaves[distance=1,persistent=false,waterlogged=false]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:flowering_azalea_leaves[distance=2,persistent=false,waterlogged=false]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:flowering_azalea_leaves[distance=3,persistent=false,waterlogged=false]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:flowering_azalea_leaves[distance=4,persistent=false,waterlogged=false]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:flowering_azalea_leaves[distance=5,persistent=false,waterlogged=false]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:flowering_azalea_leaves[distance=6,persistent=false,waterlogged=false]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:flowering_azalea_leaves[distance=7,persistent=false,waterlogged=false]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:flowering_azalea_leaves[distance=1,persistent=true,waterlogged=false]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:flowering_azalea_leaves[distance=2,persistent=true,waterlogged=false]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:flowering_azalea_leaves[distance=3,persistent=true,waterlogged=false]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:flowering_azalea_leaves[distance=4,persistent=true,waterlogged=false]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:flowering_azalea_leaves[distance=5,persistent=true,waterlogged=false]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:flowering_azalea_leaves[distance=6,persistent=true,waterlogged=false]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:flowering_azalea_leaves[distance=1,persistent=false,waterlogged=true]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:flowering_azalea_leaves[distance=2,persistent=false,waterlogged=true]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:flowering_azalea_leaves[distance=3,persistent=false,waterlogged=true]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:flowering_azalea_leaves[distance=4,persistent=false,waterlogged=true]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:flowering_azalea_leaves[distance=5,persistent=false,waterlogged=true]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:flowering_azalea_leaves[distance=6,persistent=false,waterlogged=true]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:flowering_azalea_leaves[distance=7,persistent=false,waterlogged=true]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:flowering_azalea_leaves[distance=1,persistent=true,waterlogged=true]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:flowering_azalea_leaves[distance=2,persistent=true,waterlogged=true]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:flowering_azalea_leaves[distance=3,persistent=true,waterlogged=true]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:flowering_azalea_leaves[distance=4,persistent=true,waterlogged=true]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:flowering_azalea_leaves[distance=5,persistent=true,waterlogged=true]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:flowering_azalea_leaves[distance=6,persistent=true,waterlogged=true]: minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:spruce_leaves[distance=1,persistent=false,waterlogged=false]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:spruce_leaves[distance=2,persistent=false,waterlogged=false]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:spruce_leaves[distance=3,persistent=false,waterlogged=false]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:spruce_leaves[distance=4,persistent=false,waterlogged=false]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:spruce_leaves[distance=5,persistent=false,waterlogged=false]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:spruce_leaves[distance=6,persistent=false,waterlogged=false]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:spruce_leaves[distance=7,persistent=false,waterlogged=false]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:spruce_leaves[distance=1,persistent=true,waterlogged=false]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:spruce_leaves[distance=2,persistent=true,waterlogged=false]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:spruce_leaves[distance=3,persistent=true,waterlogged=false]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:spruce_leaves[distance=4,persistent=true,waterlogged=false]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:spruce_leaves[distance=5,persistent=true,waterlogged=false]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:spruce_leaves[distance=6,persistent=true,waterlogged=false]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:spruce_leaves[distance=1,persistent=false,waterlogged=true]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:spruce_leaves[distance=2,persistent=false,waterlogged=true]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:spruce_leaves[distance=3,persistent=false,waterlogged=true]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:spruce_leaves[distance=4,persistent=false,waterlogged=true]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:spruce_leaves[distance=5,persistent=false,waterlogged=true]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:spruce_leaves[distance=6,persistent=false,waterlogged=true]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:spruce_leaves[distance=7,persistent=false,waterlogged=true]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:spruce_leaves[distance=1,persistent=true,waterlogged=true]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:spruce_leaves[distance=2,persistent=true,waterlogged=true]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:spruce_leaves[distance=3,persistent=true,waterlogged=true]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:spruce_leaves[distance=4,persistent=true,waterlogged=true]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:spruce_leaves[distance=5,persistent=true,waterlogged=true]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:spruce_leaves[distance=6,persistent=true,waterlogged=true]: minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=true] - + oak_leaves[distance=1,persistent=true,waterlogged=true]: oak_leaves[distance=7,persistent=true,waterlogged=true] + oak_leaves[distance=1,persistent=true,waterlogged=false]: oak_leaves[distance=7,persistent=true,waterlogged=false] + oak_leaves[distance=1,persistent=false,waterlogged=true]: oak_leaves[distance=7,persistent=true,waterlogged=true] + oak_leaves[distance=1,persistent=false,waterlogged=false]: oak_leaves[distance=7,persistent=true,waterlogged=false] + oak_leaves[distance=2,persistent=true,waterlogged=true]: oak_leaves[distance=7,persistent=true,waterlogged=true] + oak_leaves[distance=2,persistent=true,waterlogged=false]: oak_leaves[distance=7,persistent=true,waterlogged=false] + oak_leaves[distance=2,persistent=false,waterlogged=true]: oak_leaves[distance=7,persistent=true,waterlogged=true] + oak_leaves[distance=2,persistent=false,waterlogged=false]: oak_leaves[distance=7,persistent=true,waterlogged=false] + oak_leaves[distance=3,persistent=true,waterlogged=true]: oak_leaves[distance=7,persistent=true,waterlogged=true] + oak_leaves[distance=3,persistent=true,waterlogged=false]: oak_leaves[distance=7,persistent=true,waterlogged=false] + oak_leaves[distance=3,persistent=false,waterlogged=true]: oak_leaves[distance=7,persistent=true,waterlogged=true] + oak_leaves[distance=3,persistent=false,waterlogged=false]: oak_leaves[distance=7,persistent=true,waterlogged=false] + oak_leaves[distance=4,persistent=true,waterlogged=true]: oak_leaves[distance=7,persistent=true,waterlogged=true] + oak_leaves[distance=4,persistent=true,waterlogged=false]: oak_leaves[distance=7,persistent=true,waterlogged=false] + oak_leaves[distance=4,persistent=false,waterlogged=true]: oak_leaves[distance=7,persistent=true,waterlogged=true] + oak_leaves[distance=4,persistent=false,waterlogged=false]: oak_leaves[distance=7,persistent=true,waterlogged=false] + oak_leaves[distance=5,persistent=true,waterlogged=true]: oak_leaves[distance=7,persistent=true,waterlogged=true] + oak_leaves[distance=5,persistent=true,waterlogged=false]: oak_leaves[distance=7,persistent=true,waterlogged=false] + oak_leaves[distance=5,persistent=false,waterlogged=true]: oak_leaves[distance=7,persistent=true,waterlogged=true] + oak_leaves[distance=5,persistent=false,waterlogged=false]: oak_leaves[distance=7,persistent=true,waterlogged=false] + oak_leaves[distance=6,persistent=true,waterlogged=true]: oak_leaves[distance=7,persistent=true,waterlogged=true] + oak_leaves[distance=6,persistent=true,waterlogged=false]: oak_leaves[distance=7,persistent=true,waterlogged=false] + oak_leaves[distance=6,persistent=false,waterlogged=true]: oak_leaves[distance=7,persistent=true,waterlogged=true] + oak_leaves[distance=6,persistent=false,waterlogged=false]: oak_leaves[distance=7,persistent=true,waterlogged=false] + oak_leaves[distance=7,persistent=false,waterlogged=true]: oak_leaves[distance=7,persistent=true,waterlogged=true] + oak_leaves[distance=7,persistent=false,waterlogged=false]: oak_leaves[distance=7,persistent=true,waterlogged=false] + spruce_leaves[distance=1,persistent=true,waterlogged=true]: spruce_leaves[distance=7,persistent=true,waterlogged=true] + spruce_leaves[distance=1,persistent=true,waterlogged=false]: spruce_leaves[distance=7,persistent=true,waterlogged=false] + spruce_leaves[distance=1,persistent=false,waterlogged=true]: spruce_leaves[distance=7,persistent=true,waterlogged=true] + spruce_leaves[distance=1,persistent=false,waterlogged=false]: spruce_leaves[distance=7,persistent=true,waterlogged=false] + spruce_leaves[distance=2,persistent=true,waterlogged=true]: spruce_leaves[distance=7,persistent=true,waterlogged=true] + spruce_leaves[distance=2,persistent=true,waterlogged=false]: spruce_leaves[distance=7,persistent=true,waterlogged=false] + spruce_leaves[distance=2,persistent=false,waterlogged=true]: spruce_leaves[distance=7,persistent=true,waterlogged=true] + spruce_leaves[distance=2,persistent=false,waterlogged=false]: spruce_leaves[distance=7,persistent=true,waterlogged=false] + spruce_leaves[distance=3,persistent=true,waterlogged=true]: spruce_leaves[distance=7,persistent=true,waterlogged=true] + spruce_leaves[distance=3,persistent=true,waterlogged=false]: spruce_leaves[distance=7,persistent=true,waterlogged=false] + spruce_leaves[distance=3,persistent=false,waterlogged=true]: spruce_leaves[distance=7,persistent=true,waterlogged=true] + spruce_leaves[distance=3,persistent=false,waterlogged=false]: spruce_leaves[distance=7,persistent=true,waterlogged=false] + spruce_leaves[distance=4,persistent=true,waterlogged=true]: spruce_leaves[distance=7,persistent=true,waterlogged=true] + spruce_leaves[distance=4,persistent=true,waterlogged=false]: spruce_leaves[distance=7,persistent=true,waterlogged=false] + spruce_leaves[distance=4,persistent=false,waterlogged=true]: spruce_leaves[distance=7,persistent=true,waterlogged=true] + spruce_leaves[distance=4,persistent=false,waterlogged=false]: spruce_leaves[distance=7,persistent=true,waterlogged=false] + spruce_leaves[distance=5,persistent=true,waterlogged=true]: spruce_leaves[distance=7,persistent=true,waterlogged=true] + spruce_leaves[distance=5,persistent=true,waterlogged=false]: spruce_leaves[distance=7,persistent=true,waterlogged=false] + spruce_leaves[distance=5,persistent=false,waterlogged=true]: spruce_leaves[distance=7,persistent=true,waterlogged=true] + spruce_leaves[distance=5,persistent=false,waterlogged=false]: spruce_leaves[distance=7,persistent=true,waterlogged=false] + spruce_leaves[distance=6,persistent=true,waterlogged=true]: spruce_leaves[distance=7,persistent=true,waterlogged=true] + spruce_leaves[distance=6,persistent=true,waterlogged=false]: spruce_leaves[distance=7,persistent=true,waterlogged=false] + spruce_leaves[distance=6,persistent=false,waterlogged=true]: spruce_leaves[distance=7,persistent=true,waterlogged=true] + spruce_leaves[distance=6,persistent=false,waterlogged=false]: spruce_leaves[distance=7,persistent=true,waterlogged=false] + spruce_leaves[distance=7,persistent=false,waterlogged=true]: spruce_leaves[distance=7,persistent=true,waterlogged=true] + spruce_leaves[distance=7,persistent=false,waterlogged=false]: spruce_leaves[distance=7,persistent=true,waterlogged=false] + birch_leaves[distance=1,persistent=true,waterlogged=true]: birch_leaves[distance=7,persistent=true,waterlogged=true] + birch_leaves[distance=1,persistent=true,waterlogged=false]: birch_leaves[distance=7,persistent=true,waterlogged=false] + birch_leaves[distance=1,persistent=false,waterlogged=true]: birch_leaves[distance=7,persistent=true,waterlogged=true] + birch_leaves[distance=1,persistent=false,waterlogged=false]: birch_leaves[distance=7,persistent=true,waterlogged=false] + birch_leaves[distance=2,persistent=true,waterlogged=true]: birch_leaves[distance=7,persistent=true,waterlogged=true] + birch_leaves[distance=2,persistent=true,waterlogged=false]: birch_leaves[distance=7,persistent=true,waterlogged=false] + birch_leaves[distance=2,persistent=false,waterlogged=true]: birch_leaves[distance=7,persistent=true,waterlogged=true] + birch_leaves[distance=2,persistent=false,waterlogged=false]: birch_leaves[distance=7,persistent=true,waterlogged=false] + birch_leaves[distance=3,persistent=true,waterlogged=true]: birch_leaves[distance=7,persistent=true,waterlogged=true] + birch_leaves[distance=3,persistent=true,waterlogged=false]: birch_leaves[distance=7,persistent=true,waterlogged=false] + birch_leaves[distance=3,persistent=false,waterlogged=true]: birch_leaves[distance=7,persistent=true,waterlogged=true] + birch_leaves[distance=3,persistent=false,waterlogged=false]: birch_leaves[distance=7,persistent=true,waterlogged=false] + birch_leaves[distance=4,persistent=true,waterlogged=true]: birch_leaves[distance=7,persistent=true,waterlogged=true] + birch_leaves[distance=4,persistent=true,waterlogged=false]: birch_leaves[distance=7,persistent=true,waterlogged=false] + birch_leaves[distance=4,persistent=false,waterlogged=true]: birch_leaves[distance=7,persistent=true,waterlogged=true] + birch_leaves[distance=4,persistent=false,waterlogged=false]: birch_leaves[distance=7,persistent=true,waterlogged=false] + birch_leaves[distance=5,persistent=true,waterlogged=true]: birch_leaves[distance=7,persistent=true,waterlogged=true] + birch_leaves[distance=5,persistent=true,waterlogged=false]: birch_leaves[distance=7,persistent=true,waterlogged=false] + birch_leaves[distance=5,persistent=false,waterlogged=true]: birch_leaves[distance=7,persistent=true,waterlogged=true] + birch_leaves[distance=5,persistent=false,waterlogged=false]: birch_leaves[distance=7,persistent=true,waterlogged=false] + birch_leaves[distance=6,persistent=true,waterlogged=true]: birch_leaves[distance=7,persistent=true,waterlogged=true] + birch_leaves[distance=6,persistent=true,waterlogged=false]: birch_leaves[distance=7,persistent=true,waterlogged=false] + birch_leaves[distance=6,persistent=false,waterlogged=true]: birch_leaves[distance=7,persistent=true,waterlogged=true] + birch_leaves[distance=6,persistent=false,waterlogged=false]: birch_leaves[distance=7,persistent=true,waterlogged=false] + birch_leaves[distance=7,persistent=false,waterlogged=true]: birch_leaves[distance=7,persistent=true,waterlogged=true] + birch_leaves[distance=7,persistent=false,waterlogged=false]: birch_leaves[distance=7,persistent=true,waterlogged=false] + jungle_leaves[distance=1,persistent=true,waterlogged=true]: jungle_leaves[distance=7,persistent=true,waterlogged=true] + jungle_leaves[distance=1,persistent=true,waterlogged=false]: jungle_leaves[distance=7,persistent=true,waterlogged=false] + jungle_leaves[distance=1,persistent=false,waterlogged=true]: jungle_leaves[distance=7,persistent=true,waterlogged=true] + jungle_leaves[distance=1,persistent=false,waterlogged=false]: jungle_leaves[distance=7,persistent=true,waterlogged=false] + jungle_leaves[distance=2,persistent=true,waterlogged=true]: jungle_leaves[distance=7,persistent=true,waterlogged=true] + jungle_leaves[distance=2,persistent=true,waterlogged=false]: jungle_leaves[distance=7,persistent=true,waterlogged=false] + jungle_leaves[distance=2,persistent=false,waterlogged=true]: jungle_leaves[distance=7,persistent=true,waterlogged=true] + jungle_leaves[distance=2,persistent=false,waterlogged=false]: jungle_leaves[distance=7,persistent=true,waterlogged=false] + jungle_leaves[distance=3,persistent=true,waterlogged=true]: jungle_leaves[distance=7,persistent=true,waterlogged=true] + jungle_leaves[distance=3,persistent=true,waterlogged=false]: jungle_leaves[distance=7,persistent=true,waterlogged=false] + jungle_leaves[distance=3,persistent=false,waterlogged=true]: jungle_leaves[distance=7,persistent=true,waterlogged=true] + jungle_leaves[distance=3,persistent=false,waterlogged=false]: jungle_leaves[distance=7,persistent=true,waterlogged=false] + jungle_leaves[distance=4,persistent=true,waterlogged=true]: jungle_leaves[distance=7,persistent=true,waterlogged=true] + jungle_leaves[distance=4,persistent=true,waterlogged=false]: jungle_leaves[distance=7,persistent=true,waterlogged=false] + jungle_leaves[distance=4,persistent=false,waterlogged=true]: jungle_leaves[distance=7,persistent=true,waterlogged=true] + jungle_leaves[distance=4,persistent=false,waterlogged=false]: jungle_leaves[distance=7,persistent=true,waterlogged=false] + jungle_leaves[distance=5,persistent=true,waterlogged=true]: jungle_leaves[distance=7,persistent=true,waterlogged=true] + jungle_leaves[distance=5,persistent=true,waterlogged=false]: jungle_leaves[distance=7,persistent=true,waterlogged=false] + jungle_leaves[distance=5,persistent=false,waterlogged=true]: jungle_leaves[distance=7,persistent=true,waterlogged=true] + jungle_leaves[distance=5,persistent=false,waterlogged=false]: jungle_leaves[distance=7,persistent=true,waterlogged=false] + jungle_leaves[distance=6,persistent=true,waterlogged=true]: jungle_leaves[distance=7,persistent=true,waterlogged=true] + jungle_leaves[distance=6,persistent=true,waterlogged=false]: jungle_leaves[distance=7,persistent=true,waterlogged=false] + jungle_leaves[distance=6,persistent=false,waterlogged=true]: jungle_leaves[distance=7,persistent=true,waterlogged=true] + jungle_leaves[distance=6,persistent=false,waterlogged=false]: jungle_leaves[distance=7,persistent=true,waterlogged=false] + jungle_leaves[distance=7,persistent=false,waterlogged=true]: jungle_leaves[distance=7,persistent=true,waterlogged=true] + jungle_leaves[distance=7,persistent=false,waterlogged=false]: jungle_leaves[distance=7,persistent=true,waterlogged=false] + acacia_leaves[distance=1,persistent=true,waterlogged=true]: acacia_leaves[distance=7,persistent=true,waterlogged=true] + acacia_leaves[distance=1,persistent=true,waterlogged=false]: acacia_leaves[distance=7,persistent=true,waterlogged=false] + acacia_leaves[distance=1,persistent=false,waterlogged=true]: acacia_leaves[distance=7,persistent=true,waterlogged=true] + acacia_leaves[distance=1,persistent=false,waterlogged=false]: acacia_leaves[distance=7,persistent=true,waterlogged=false] + acacia_leaves[distance=2,persistent=true,waterlogged=true]: acacia_leaves[distance=7,persistent=true,waterlogged=true] + acacia_leaves[distance=2,persistent=true,waterlogged=false]: acacia_leaves[distance=7,persistent=true,waterlogged=false] + acacia_leaves[distance=2,persistent=false,waterlogged=true]: acacia_leaves[distance=7,persistent=true,waterlogged=true] + acacia_leaves[distance=2,persistent=false,waterlogged=false]: acacia_leaves[distance=7,persistent=true,waterlogged=false] + acacia_leaves[distance=3,persistent=true,waterlogged=true]: acacia_leaves[distance=7,persistent=true,waterlogged=true] + acacia_leaves[distance=3,persistent=true,waterlogged=false]: acacia_leaves[distance=7,persistent=true,waterlogged=false] + acacia_leaves[distance=3,persistent=false,waterlogged=true]: acacia_leaves[distance=7,persistent=true,waterlogged=true] + acacia_leaves[distance=3,persistent=false,waterlogged=false]: acacia_leaves[distance=7,persistent=true,waterlogged=false] + acacia_leaves[distance=4,persistent=true,waterlogged=true]: acacia_leaves[distance=7,persistent=true,waterlogged=true] + acacia_leaves[distance=4,persistent=true,waterlogged=false]: acacia_leaves[distance=7,persistent=true,waterlogged=false] + acacia_leaves[distance=4,persistent=false,waterlogged=true]: acacia_leaves[distance=7,persistent=true,waterlogged=true] + acacia_leaves[distance=4,persistent=false,waterlogged=false]: acacia_leaves[distance=7,persistent=true,waterlogged=false] + acacia_leaves[distance=5,persistent=true,waterlogged=true]: acacia_leaves[distance=7,persistent=true,waterlogged=true] + acacia_leaves[distance=5,persistent=true,waterlogged=false]: acacia_leaves[distance=7,persistent=true,waterlogged=false] + acacia_leaves[distance=5,persistent=false,waterlogged=true]: acacia_leaves[distance=7,persistent=true,waterlogged=true] + acacia_leaves[distance=5,persistent=false,waterlogged=false]: acacia_leaves[distance=7,persistent=true,waterlogged=false] + acacia_leaves[distance=6,persistent=true,waterlogged=true]: acacia_leaves[distance=7,persistent=true,waterlogged=true] + acacia_leaves[distance=6,persistent=true,waterlogged=false]: acacia_leaves[distance=7,persistent=true,waterlogged=false] + acacia_leaves[distance=6,persistent=false,waterlogged=true]: acacia_leaves[distance=7,persistent=true,waterlogged=true] + acacia_leaves[distance=6,persistent=false,waterlogged=false]: acacia_leaves[distance=7,persistent=true,waterlogged=false] + acacia_leaves[distance=7,persistent=false,waterlogged=true]: acacia_leaves[distance=7,persistent=true,waterlogged=true] + acacia_leaves[distance=7,persistent=false,waterlogged=false]: acacia_leaves[distance=7,persistent=true,waterlogged=false] + cherry_leaves[distance=1,persistent=true,waterlogged=true]: cherry_leaves[distance=7,persistent=true,waterlogged=true] + cherry_leaves[distance=1,persistent=true,waterlogged=false]: cherry_leaves[distance=7,persistent=true,waterlogged=false] + cherry_leaves[distance=1,persistent=false,waterlogged=true]: cherry_leaves[distance=7,persistent=true,waterlogged=true] + cherry_leaves[distance=1,persistent=false,waterlogged=false]: cherry_leaves[distance=7,persistent=true,waterlogged=false] + cherry_leaves[distance=2,persistent=true,waterlogged=true]: cherry_leaves[distance=7,persistent=true,waterlogged=true] + cherry_leaves[distance=2,persistent=true,waterlogged=false]: cherry_leaves[distance=7,persistent=true,waterlogged=false] + cherry_leaves[distance=2,persistent=false,waterlogged=true]: cherry_leaves[distance=7,persistent=true,waterlogged=true] + cherry_leaves[distance=2,persistent=false,waterlogged=false]: cherry_leaves[distance=7,persistent=true,waterlogged=false] + cherry_leaves[distance=3,persistent=true,waterlogged=true]: cherry_leaves[distance=7,persistent=true,waterlogged=true] + cherry_leaves[distance=3,persistent=true,waterlogged=false]: cherry_leaves[distance=7,persistent=true,waterlogged=false] + cherry_leaves[distance=3,persistent=false,waterlogged=true]: cherry_leaves[distance=7,persistent=true,waterlogged=true] + cherry_leaves[distance=3,persistent=false,waterlogged=false]: cherry_leaves[distance=7,persistent=true,waterlogged=false] + cherry_leaves[distance=4,persistent=true,waterlogged=true]: cherry_leaves[distance=7,persistent=true,waterlogged=true] + cherry_leaves[distance=4,persistent=true,waterlogged=false]: cherry_leaves[distance=7,persistent=true,waterlogged=false] + cherry_leaves[distance=4,persistent=false,waterlogged=true]: cherry_leaves[distance=7,persistent=true,waterlogged=true] + cherry_leaves[distance=4,persistent=false,waterlogged=false]: cherry_leaves[distance=7,persistent=true,waterlogged=false] + cherry_leaves[distance=5,persistent=true,waterlogged=true]: cherry_leaves[distance=7,persistent=true,waterlogged=true] + cherry_leaves[distance=5,persistent=true,waterlogged=false]: cherry_leaves[distance=7,persistent=true,waterlogged=false] + cherry_leaves[distance=5,persistent=false,waterlogged=true]: cherry_leaves[distance=7,persistent=true,waterlogged=true] + cherry_leaves[distance=5,persistent=false,waterlogged=false]: cherry_leaves[distance=7,persistent=true,waterlogged=false] + cherry_leaves[distance=6,persistent=true,waterlogged=true]: cherry_leaves[distance=7,persistent=true,waterlogged=true] + cherry_leaves[distance=6,persistent=true,waterlogged=false]: cherry_leaves[distance=7,persistent=true,waterlogged=false] + cherry_leaves[distance=6,persistent=false,waterlogged=true]: cherry_leaves[distance=7,persistent=true,waterlogged=true] + cherry_leaves[distance=6,persistent=false,waterlogged=false]: cherry_leaves[distance=7,persistent=true,waterlogged=false] + cherry_leaves[distance=7,persistent=false,waterlogged=true]: cherry_leaves[distance=7,persistent=true,waterlogged=true] + cherry_leaves[distance=7,persistent=false,waterlogged=false]: cherry_leaves[distance=7,persistent=true,waterlogged=false] + dark_oak_leaves[distance=1,persistent=true,waterlogged=true]: dark_oak_leaves[distance=7,persistent=true,waterlogged=true] + dark_oak_leaves[distance=1,persistent=true,waterlogged=false]: dark_oak_leaves[distance=7,persistent=true,waterlogged=false] + dark_oak_leaves[distance=1,persistent=false,waterlogged=true]: dark_oak_leaves[distance=7,persistent=true,waterlogged=true] + dark_oak_leaves[distance=1,persistent=false,waterlogged=false]: dark_oak_leaves[distance=7,persistent=true,waterlogged=false] + dark_oak_leaves[distance=2,persistent=true,waterlogged=true]: dark_oak_leaves[distance=7,persistent=true,waterlogged=true] + dark_oak_leaves[distance=2,persistent=true,waterlogged=false]: dark_oak_leaves[distance=7,persistent=true,waterlogged=false] + dark_oak_leaves[distance=2,persistent=false,waterlogged=true]: dark_oak_leaves[distance=7,persistent=true,waterlogged=true] + dark_oak_leaves[distance=2,persistent=false,waterlogged=false]: dark_oak_leaves[distance=7,persistent=true,waterlogged=false] + dark_oak_leaves[distance=3,persistent=true,waterlogged=true]: dark_oak_leaves[distance=7,persistent=true,waterlogged=true] + dark_oak_leaves[distance=3,persistent=true,waterlogged=false]: dark_oak_leaves[distance=7,persistent=true,waterlogged=false] + dark_oak_leaves[distance=3,persistent=false,waterlogged=true]: dark_oak_leaves[distance=7,persistent=true,waterlogged=true] + dark_oak_leaves[distance=3,persistent=false,waterlogged=false]: dark_oak_leaves[distance=7,persistent=true,waterlogged=false] + dark_oak_leaves[distance=4,persistent=true,waterlogged=true]: dark_oak_leaves[distance=7,persistent=true,waterlogged=true] + dark_oak_leaves[distance=4,persistent=true,waterlogged=false]: dark_oak_leaves[distance=7,persistent=true,waterlogged=false] + dark_oak_leaves[distance=4,persistent=false,waterlogged=true]: dark_oak_leaves[distance=7,persistent=true,waterlogged=true] + dark_oak_leaves[distance=4,persistent=false,waterlogged=false]: dark_oak_leaves[distance=7,persistent=true,waterlogged=false] + dark_oak_leaves[distance=5,persistent=true,waterlogged=true]: dark_oak_leaves[distance=7,persistent=true,waterlogged=true] + dark_oak_leaves[distance=5,persistent=true,waterlogged=false]: dark_oak_leaves[distance=7,persistent=true,waterlogged=false] + dark_oak_leaves[distance=5,persistent=false,waterlogged=true]: dark_oak_leaves[distance=7,persistent=true,waterlogged=true] + dark_oak_leaves[distance=5,persistent=false,waterlogged=false]: dark_oak_leaves[distance=7,persistent=true,waterlogged=false] + dark_oak_leaves[distance=6,persistent=true,waterlogged=true]: dark_oak_leaves[distance=7,persistent=true,waterlogged=true] + dark_oak_leaves[distance=6,persistent=true,waterlogged=false]: dark_oak_leaves[distance=7,persistent=true,waterlogged=false] + dark_oak_leaves[distance=6,persistent=false,waterlogged=true]: dark_oak_leaves[distance=7,persistent=true,waterlogged=true] + dark_oak_leaves[distance=6,persistent=false,waterlogged=false]: dark_oak_leaves[distance=7,persistent=true,waterlogged=false] + dark_oak_leaves[distance=7,persistent=false,waterlogged=true]: dark_oak_leaves[distance=7,persistent=true,waterlogged=true] + dark_oak_leaves[distance=7,persistent=false,waterlogged=false]: dark_oak_leaves[distance=7,persistent=true,waterlogged=false] $$>=1.21.4#leaves: - minecraft:pale_oak_leaves[distance=1,persistent=false,waterlogged=false]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:pale_oak_leaves[distance=2,persistent=false,waterlogged=false]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:pale_oak_leaves[distance=3,persistent=false,waterlogged=false]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:pale_oak_leaves[distance=4,persistent=false,waterlogged=false]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:pale_oak_leaves[distance=5,persistent=false,waterlogged=false]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:pale_oak_leaves[distance=6,persistent=false,waterlogged=false]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:pale_oak_leaves[distance=7,persistent=false,waterlogged=false]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:pale_oak_leaves[distance=1,persistent=true,waterlogged=false]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:pale_oak_leaves[distance=2,persistent=true,waterlogged=false]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:pale_oak_leaves[distance=3,persistent=true,waterlogged=false]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:pale_oak_leaves[distance=4,persistent=true,waterlogged=false]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:pale_oak_leaves[distance=5,persistent=true,waterlogged=false]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:pale_oak_leaves[distance=6,persistent=true,waterlogged=false]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=false] - minecraft:pale_oak_leaves[distance=1,persistent=false,waterlogged=true]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:pale_oak_leaves[distance=2,persistent=false,waterlogged=true]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:pale_oak_leaves[distance=3,persistent=false,waterlogged=true]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:pale_oak_leaves[distance=4,persistent=false,waterlogged=true]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:pale_oak_leaves[distance=5,persistent=false,waterlogged=true]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:pale_oak_leaves[distance=6,persistent=false,waterlogged=true]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:pale_oak_leaves[distance=7,persistent=false,waterlogged=true]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:pale_oak_leaves[distance=1,persistent=true,waterlogged=true]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:pale_oak_leaves[distance=2,persistent=true,waterlogged=true]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:pale_oak_leaves[distance=3,persistent=true,waterlogged=true]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:pale_oak_leaves[distance=4,persistent=true,waterlogged=true]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:pale_oak_leaves[distance=5,persistent=true,waterlogged=true]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=true] - minecraft:pale_oak_leaves[distance=6,persistent=true,waterlogged=true]: minecraft:pale_oak_leaves[distance=7,persistent=true,waterlogged=true] + pale_oak_leaves[distance=1,persistent=true,waterlogged=true]: pale_oak_leaves[distance=7,persistent=true,waterlogged=true] + pale_oak_leaves[distance=1,persistent=true,waterlogged=false]: pale_oak_leaves[distance=7,persistent=true,waterlogged=false] + pale_oak_leaves[distance=1,persistent=false,waterlogged=true]: pale_oak_leaves[distance=7,persistent=true,waterlogged=true] + pale_oak_leaves[distance=1,persistent=false,waterlogged=false]: pale_oak_leaves[distance=7,persistent=true,waterlogged=false] + pale_oak_leaves[distance=2,persistent=true,waterlogged=true]: pale_oak_leaves[distance=7,persistent=true,waterlogged=true] + pale_oak_leaves[distance=2,persistent=true,waterlogged=false]: pale_oak_leaves[distance=7,persistent=true,waterlogged=false] + pale_oak_leaves[distance=2,persistent=false,waterlogged=true]: pale_oak_leaves[distance=7,persistent=true,waterlogged=true] + pale_oak_leaves[distance=2,persistent=false,waterlogged=false]: pale_oak_leaves[distance=7,persistent=true,waterlogged=false] + pale_oak_leaves[distance=3,persistent=true,waterlogged=true]: pale_oak_leaves[distance=7,persistent=true,waterlogged=true] + pale_oak_leaves[distance=3,persistent=true,waterlogged=false]: pale_oak_leaves[distance=7,persistent=true,waterlogged=false] + pale_oak_leaves[distance=3,persistent=false,waterlogged=true]: pale_oak_leaves[distance=7,persistent=true,waterlogged=true] + pale_oak_leaves[distance=3,persistent=false,waterlogged=false]: pale_oak_leaves[distance=7,persistent=true,waterlogged=false] + pale_oak_leaves[distance=4,persistent=true,waterlogged=true]: pale_oak_leaves[distance=7,persistent=true,waterlogged=true] + pale_oak_leaves[distance=4,persistent=true,waterlogged=false]: pale_oak_leaves[distance=7,persistent=true,waterlogged=false] + pale_oak_leaves[distance=4,persistent=false,waterlogged=true]: pale_oak_leaves[distance=7,persistent=true,waterlogged=true] + pale_oak_leaves[distance=4,persistent=false,waterlogged=false]: pale_oak_leaves[distance=7,persistent=true,waterlogged=false] + pale_oak_leaves[distance=5,persistent=true,waterlogged=true]: pale_oak_leaves[distance=7,persistent=true,waterlogged=true] + pale_oak_leaves[distance=5,persistent=true,waterlogged=false]: pale_oak_leaves[distance=7,persistent=true,waterlogged=false] + pale_oak_leaves[distance=5,persistent=false,waterlogged=true]: pale_oak_leaves[distance=7,persistent=true,waterlogged=true] + pale_oak_leaves[distance=5,persistent=false,waterlogged=false]: pale_oak_leaves[distance=7,persistent=true,waterlogged=false] + pale_oak_leaves[distance=6,persistent=true,waterlogged=true]: pale_oak_leaves[distance=7,persistent=true,waterlogged=true] + pale_oak_leaves[distance=6,persistent=true,waterlogged=false]: pale_oak_leaves[distance=7,persistent=true,waterlogged=false] + pale_oak_leaves[distance=6,persistent=false,waterlogged=true]: pale_oak_leaves[distance=7,persistent=true,waterlogged=true] + pale_oak_leaves[distance=6,persistent=false,waterlogged=false]: pale_oak_leaves[distance=7,persistent=true,waterlogged=false] + pale_oak_leaves[distance=7,persistent=false,waterlogged=true]: pale_oak_leaves[distance=7,persistent=true,waterlogged=true] + pale_oak_leaves[distance=7,persistent=false,waterlogged=false]: pale_oak_leaves[distance=7,persistent=true,waterlogged=false] + mangrove_leaves[distance=1,persistent=true,waterlogged=true]: mangrove_leaves[distance=7,persistent=true,waterlogged=true] + mangrove_leaves[distance=1,persistent=true,waterlogged=false]: mangrove_leaves[distance=7,persistent=true,waterlogged=false] + mangrove_leaves[distance=1,persistent=false,waterlogged=true]: mangrove_leaves[distance=7,persistent=true,waterlogged=true] + mangrove_leaves[distance=1,persistent=false,waterlogged=false]: mangrove_leaves[distance=7,persistent=true,waterlogged=false] + mangrove_leaves[distance=2,persistent=true,waterlogged=true]: mangrove_leaves[distance=7,persistent=true,waterlogged=true] + mangrove_leaves[distance=2,persistent=true,waterlogged=false]: mangrove_leaves[distance=7,persistent=true,waterlogged=false] + mangrove_leaves[distance=2,persistent=false,waterlogged=true]: mangrove_leaves[distance=7,persistent=true,waterlogged=true] + mangrove_leaves[distance=2,persistent=false,waterlogged=false]: mangrove_leaves[distance=7,persistent=true,waterlogged=false] + mangrove_leaves[distance=3,persistent=true,waterlogged=true]: mangrove_leaves[distance=7,persistent=true,waterlogged=true] + mangrove_leaves[distance=3,persistent=true,waterlogged=false]: mangrove_leaves[distance=7,persistent=true,waterlogged=false] + mangrove_leaves[distance=3,persistent=false,waterlogged=true]: mangrove_leaves[distance=7,persistent=true,waterlogged=true] + mangrove_leaves[distance=3,persistent=false,waterlogged=false]: mangrove_leaves[distance=7,persistent=true,waterlogged=false] + mangrove_leaves[distance=4,persistent=true,waterlogged=true]: mangrove_leaves[distance=7,persistent=true,waterlogged=true] + mangrove_leaves[distance=4,persistent=true,waterlogged=false]: mangrove_leaves[distance=7,persistent=true,waterlogged=false] + mangrove_leaves[distance=4,persistent=false,waterlogged=true]: mangrove_leaves[distance=7,persistent=true,waterlogged=true] + mangrove_leaves[distance=4,persistent=false,waterlogged=false]: mangrove_leaves[distance=7,persistent=true,waterlogged=false] + mangrove_leaves[distance=5,persistent=true,waterlogged=true]: mangrove_leaves[distance=7,persistent=true,waterlogged=true] + mangrove_leaves[distance=5,persistent=true,waterlogged=false]: mangrove_leaves[distance=7,persistent=true,waterlogged=false] + mangrove_leaves[distance=5,persistent=false,waterlogged=true]: mangrove_leaves[distance=7,persistent=true,waterlogged=true] + mangrove_leaves[distance=5,persistent=false,waterlogged=false]: mangrove_leaves[distance=7,persistent=true,waterlogged=false] + mangrove_leaves[distance=6,persistent=true,waterlogged=true]: mangrove_leaves[distance=7,persistent=true,waterlogged=true] + mangrove_leaves[distance=6,persistent=true,waterlogged=false]: mangrove_leaves[distance=7,persistent=true,waterlogged=false] + mangrove_leaves[distance=6,persistent=false,waterlogged=true]: mangrove_leaves[distance=7,persistent=true,waterlogged=true] + mangrove_leaves[distance=6,persistent=false,waterlogged=false]: mangrove_leaves[distance=7,persistent=true,waterlogged=false] + mangrove_leaves[distance=7,persistent=false,waterlogged=true]: mangrove_leaves[distance=7,persistent=true,waterlogged=true] + mangrove_leaves[distance=7,persistent=false,waterlogged=false]: mangrove_leaves[distance=7,persistent=true,waterlogged=false] + azalea_leaves[distance=1,persistent=true,waterlogged=true]: azalea_leaves[distance=7,persistent=true,waterlogged=true] + azalea_leaves[distance=1,persistent=true,waterlogged=false]: azalea_leaves[distance=7,persistent=true,waterlogged=false] + azalea_leaves[distance=1,persistent=false,waterlogged=true]: azalea_leaves[distance=7,persistent=true,waterlogged=true] + azalea_leaves[distance=1,persistent=false,waterlogged=false]: azalea_leaves[distance=7,persistent=true,waterlogged=false] + azalea_leaves[distance=2,persistent=true,waterlogged=true]: azalea_leaves[distance=7,persistent=true,waterlogged=true] + azalea_leaves[distance=2,persistent=true,waterlogged=false]: azalea_leaves[distance=7,persistent=true,waterlogged=false] + azalea_leaves[distance=2,persistent=false,waterlogged=true]: azalea_leaves[distance=7,persistent=true,waterlogged=true] + azalea_leaves[distance=2,persistent=false,waterlogged=false]: azalea_leaves[distance=7,persistent=true,waterlogged=false] + azalea_leaves[distance=3,persistent=true,waterlogged=true]: azalea_leaves[distance=7,persistent=true,waterlogged=true] + azalea_leaves[distance=3,persistent=true,waterlogged=false]: azalea_leaves[distance=7,persistent=true,waterlogged=false] + azalea_leaves[distance=3,persistent=false,waterlogged=true]: azalea_leaves[distance=7,persistent=true,waterlogged=true] + azalea_leaves[distance=3,persistent=false,waterlogged=false]: azalea_leaves[distance=7,persistent=true,waterlogged=false] + azalea_leaves[distance=4,persistent=true,waterlogged=true]: azalea_leaves[distance=7,persistent=true,waterlogged=true] + azalea_leaves[distance=4,persistent=true,waterlogged=false]: azalea_leaves[distance=7,persistent=true,waterlogged=false] + azalea_leaves[distance=4,persistent=false,waterlogged=true]: azalea_leaves[distance=7,persistent=true,waterlogged=true] + azalea_leaves[distance=4,persistent=false,waterlogged=false]: azalea_leaves[distance=7,persistent=true,waterlogged=false] + azalea_leaves[distance=5,persistent=true,waterlogged=true]: azalea_leaves[distance=7,persistent=true,waterlogged=true] + azalea_leaves[distance=5,persistent=true,waterlogged=false]: azalea_leaves[distance=7,persistent=true,waterlogged=false] + azalea_leaves[distance=5,persistent=false,waterlogged=true]: azalea_leaves[distance=7,persistent=true,waterlogged=true] + azalea_leaves[distance=5,persistent=false,waterlogged=false]: azalea_leaves[distance=7,persistent=true,waterlogged=false] + azalea_leaves[distance=6,persistent=true,waterlogged=true]: azalea_leaves[distance=7,persistent=true,waterlogged=true] + azalea_leaves[distance=6,persistent=true,waterlogged=false]: azalea_leaves[distance=7,persistent=true,waterlogged=false] + azalea_leaves[distance=6,persistent=false,waterlogged=true]: azalea_leaves[distance=7,persistent=true,waterlogged=true] + azalea_leaves[distance=6,persistent=false,waterlogged=false]: azalea_leaves[distance=7,persistent=true,waterlogged=false] + azalea_leaves[distance=7,persistent=false,waterlogged=true]: azalea_leaves[distance=7,persistent=true,waterlogged=true] + azalea_leaves[distance=7,persistent=false,waterlogged=false]: azalea_leaves[distance=7,persistent=true,waterlogged=false] + flowering_azalea_leaves[distance=1,persistent=true,waterlogged=true]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] + flowering_azalea_leaves[distance=1,persistent=true,waterlogged=false]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] + flowering_azalea_leaves[distance=1,persistent=false,waterlogged=true]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] + flowering_azalea_leaves[distance=1,persistent=false,waterlogged=false]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] + flowering_azalea_leaves[distance=2,persistent=true,waterlogged=true]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] + flowering_azalea_leaves[distance=2,persistent=true,waterlogged=false]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] + flowering_azalea_leaves[distance=2,persistent=false,waterlogged=true]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] + flowering_azalea_leaves[distance=2,persistent=false,waterlogged=false]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] + flowering_azalea_leaves[distance=3,persistent=true,waterlogged=true]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] + flowering_azalea_leaves[distance=3,persistent=true,waterlogged=false]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] + flowering_azalea_leaves[distance=3,persistent=false,waterlogged=true]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] + flowering_azalea_leaves[distance=3,persistent=false,waterlogged=false]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] + flowering_azalea_leaves[distance=4,persistent=true,waterlogged=true]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] + flowering_azalea_leaves[distance=4,persistent=true,waterlogged=false]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] + flowering_azalea_leaves[distance=4,persistent=false,waterlogged=true]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] + flowering_azalea_leaves[distance=4,persistent=false,waterlogged=false]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] + flowering_azalea_leaves[distance=5,persistent=true,waterlogged=true]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] + flowering_azalea_leaves[distance=5,persistent=true,waterlogged=false]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] + flowering_azalea_leaves[distance=5,persistent=false,waterlogged=true]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] + flowering_azalea_leaves[distance=5,persistent=false,waterlogged=false]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] + flowering_azalea_leaves[distance=6,persistent=true,waterlogged=true]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] + flowering_azalea_leaves[distance=6,persistent=true,waterlogged=false]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] + flowering_azalea_leaves[distance=6,persistent=false,waterlogged=true]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] + flowering_azalea_leaves[distance=6,persistent=false,waterlogged=false]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] + flowering_azalea_leaves[distance=7,persistent=false,waterlogged=true]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=true] + flowering_azalea_leaves[distance=7,persistent=false,waterlogged=false]: flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false] #### Tripwire #### # Tripwires actually have 128 different states, but we're keeping just two of them to match vanilla's visual styles. # Honestly, as long as the tripwire works properly, most players won't even mind what it looks like. # Tripwire hitboxes aren't all the same - the triggered ones are way shorter. - minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,south=false,west=false,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,south=false,west=false,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,south=false,west=false,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,south=false,west=false,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,south=false,west=false,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,south=false,west=false,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,south=false,west=false,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,south=false,west=false,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,south=false,west=false,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,south=false,west=false,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,south=false,west=false,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,south=false,west=false,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,south=false,west=false,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,south=false,west=false,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=false,west=false,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=false,west=false,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,south=true,west=false,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,south=true,west=false,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,south=true,west=false,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,south=true,west=false,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,south=true,west=false,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,south=true,west=false,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,south=true,west=false,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,south=true,west=false,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,south=true,west=false,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,south=true,west=false,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,south=true,west=false,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,south=true,west=false,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,south=true,west=false,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,south=true,west=false,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=false,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=false,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,south=false,west=true,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,south=false,west=true,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,south=false,west=true,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,south=false,west=true,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,south=false,west=true,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,south=false,west=true,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,south=false,west=true,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,south=false,west=true,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,south=false,west=true,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,south=false,west=true,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,south=false,west=true,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,south=false,west=true,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,south=false,west=true,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,south=false,west=true,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=false,west=true,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=false,west=true,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,south=true,west=true,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,south=true,west=true,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,south=true,west=true,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,south=true,west=true,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,south=true,west=true,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,south=true,west=true,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,south=true,west=true,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,south=true,west=true,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,south=true,west=true,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,south=true,west=true,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,south=true,west=true,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,south=true,west=true,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,south=true,west=true,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,south=true,west=true,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=false]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=false]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,south=false,west=false,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,south=false,west=false,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,south=false,west=false,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,south=false,west=false,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,south=false,west=false,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,south=false,west=false,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,south=false,west=false,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,south=false,west=false,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,south=false,west=false,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,south=false,west=false,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,south=false,west=false,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,south=false,west=false,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,south=false,west=false,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,south=false,west=false,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=false,west=false,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=false,west=false,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,south=true,west=false,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,south=true,west=false,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,south=true,west=false,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,south=true,west=false,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,south=true,west=false,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,south=true,west=false,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,south=true,west=false,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,south=true,west=false,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,south=true,west=false,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,south=true,west=false,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,south=true,west=false,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,south=true,west=false,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,south=true,west=false,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,south=true,west=false,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=false,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=false,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,south=false,west=true,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,south=false,west=true,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,south=false,west=true,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,south=false,west=true,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,south=false,west=true,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,south=false,west=true,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,south=false,west=true,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,south=false,west=true,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,south=false,west=true,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,south=false,west=true,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,south=false,west=true,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,south=false,west=true,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,south=false,west=true,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,south=false,west=true,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=false,west=true,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=false,west=true,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,south=true,west=true,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,south=true,west=true,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,south=true,west=true,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,south=true,west=true,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,south=true,west=true,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,south=true,west=true,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,south=true,west=true,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,south=true,west=true,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,south=true,west=true,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,south=true,west=true,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,south=true,west=true,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,south=true,west=true,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,south=true,west=true,powered=true]: minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,south=true,west=true,powered=true] - minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,south=true,west=true,powered=true]: minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,south=true,west=true,powered=true] + tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=false,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=false,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=true,north=true,powered=false,south=true,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=true,north=true,powered=false,south=true,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=true,north=true,powered=false,south=false,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=true,north=true,powered=false,south=false,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=true,north=false,powered=true,south=true,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=true,north=false,powered=true,south=true,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=true,north=false,powered=true,south=false,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=true,north=false,powered=true,south=false,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=true,north=false,powered=false,south=true,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=true,north=false,powered=false,south=true,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=true,north=false,powered=false,south=false,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=true,north=false,powered=false,south=false,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=false,north=true,powered=true,south=true,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=false,north=true,powered=true,south=true,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=false,north=true,powered=true,south=false,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=false,north=true,powered=true,south=false,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=false,north=true,powered=false,south=true,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=false,north=true,powered=false,south=true,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=false,north=true,powered=false,south=false,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=false,north=true,powered=false,south=false,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=true,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=true,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=false,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=false,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=true,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=true,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=false,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=false,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=true,north=true,powered=true,south=true,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=true,north=true,powered=true,south=true,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=true,north=true,powered=true,south=false,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=true,north=true,powered=true,south=false,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=true,north=true,powered=false,south=true,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=true,north=true,powered=false,south=true,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=true,north=true,powered=false,south=false,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=true,north=true,powered=false,south=false,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=true,north=false,powered=true,south=true,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=true,north=false,powered=true,south=true,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=true,north=false,powered=true,south=false,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=true,north=false,powered=true,south=false,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=true,north=false,powered=false,south=true,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=true,north=false,powered=false,south=true,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=true,north=false,powered=false,south=false,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=true,north=false,powered=false,south=false,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=false,north=true,powered=true,south=true,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=false,north=true,powered=true,south=true,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=false,north=true,powered=true,south=false,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=false,north=true,powered=true,south=false,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=false,north=true,powered=false,south=true,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=false,north=true,powered=false,south=true,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=false,north=true,powered=false,south=false,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=false,north=true,powered=false,south=false,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=true,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=true,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=false,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=false,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=true,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=true,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=false,west=true]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=false,west=false]: tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=false,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=false,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=true,north=true,powered=false,south=true,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=true,north=true,powered=false,south=true,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=true,north=true,powered=false,south=false,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=true,north=true,powered=false,south=false,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=true,north=false,powered=true,south=true,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=true,north=false,powered=true,south=true,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=true,north=false,powered=true,south=false,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=true,north=false,powered=true,south=false,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=true,north=false,powered=false,south=true,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=true,north=false,powered=false,south=true,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=true,north=false,powered=false,south=false,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=true,north=false,powered=false,south=false,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=false,north=true,powered=true,south=true,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=false,north=true,powered=true,south=true,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=false,north=true,powered=true,south=false,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=false,north=true,powered=true,south=false,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=false,north=true,powered=false,south=true,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=false,north=true,powered=false,south=true,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=false,north=true,powered=false,south=false,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=false,north=true,powered=false,south=false,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=true,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=true,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=false,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=false,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=true,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=true,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=false,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=false,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=true,north=true,powered=true,south=true,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=true,north=true,powered=true,south=true,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=true,north=true,powered=true,south=false,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=true,north=true,powered=true,south=false,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=true,north=true,powered=false,south=true,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=true,north=true,powered=false,south=true,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=true,north=true,powered=false,south=false,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=true,north=true,powered=false,south=false,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=true,north=false,powered=true,south=true,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=true,north=false,powered=true,south=true,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=true,north=false,powered=true,south=false,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=true,north=false,powered=true,south=false,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=true,north=false,powered=false,south=true,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=true,north=false,powered=false,south=true,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=true,north=false,powered=false,south=false,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=true,north=false,powered=false,south=false,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=false,north=true,powered=true,south=true,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=false,north=true,powered=true,south=true,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=false,north=true,powered=true,south=false,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=false,north=true,powered=true,south=false,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=false,north=true,powered=false,south=true,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=false,north=true,powered=false,south=true,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=false,north=true,powered=false,south=false,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=false,north=true,powered=false,south=false,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=true,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=true,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=false,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=false,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=true,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=true,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=false,west=true]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] + tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=false,west=false]: tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true] #### Note Block #### # This block has the most unused states in Minecraft, but the client always thinks it's interactive. # Plus, there's some visual glitches when the client try predicting instrument changes. # We've kept a full set of note settings by default - that way it plays nice with resource packs that show notes - minecraft:note_block[instrument=hat,note=0,powered=false]: minecraft:note_block[instrument=harp,note=0,powered=false] - minecraft:note_block[instrument=hat,note=1,powered=false]: minecraft:note_block[instrument=harp,note=1,powered=false] - minecraft:note_block[instrument=hat,note=2,powered=false]: minecraft:note_block[instrument=harp,note=2,powered=false] - minecraft:note_block[instrument=hat,note=3,powered=false]: minecraft:note_block[instrument=harp,note=3,powered=false] - minecraft:note_block[instrument=hat,note=4,powered=false]: minecraft:note_block[instrument=harp,note=4,powered=false] - minecraft:note_block[instrument=hat,note=5,powered=false]: minecraft:note_block[instrument=harp,note=5,powered=false] - minecraft:note_block[instrument=hat,note=6,powered=false]: minecraft:note_block[instrument=harp,note=6,powered=false] - minecraft:note_block[instrument=hat,note=7,powered=false]: minecraft:note_block[instrument=harp,note=7,powered=false] - minecraft:note_block[instrument=hat,note=8,powered=false]: minecraft:note_block[instrument=harp,note=8,powered=false] - minecraft:note_block[instrument=hat,note=9,powered=false]: minecraft:note_block[instrument=harp,note=9,powered=false] - minecraft:note_block[instrument=hat,note=10,powered=false]: minecraft:note_block[instrument=harp,note=10,powered=false] - minecraft:note_block[instrument=hat,note=11,powered=false]: minecraft:note_block[instrument=harp,note=11,powered=false] - minecraft:note_block[instrument=hat,note=12,powered=false]: minecraft:note_block[instrument=harp,note=12,powered=false] - minecraft:note_block[instrument=hat,note=13,powered=false]: minecraft:note_block[instrument=harp,note=13,powered=false] - minecraft:note_block[instrument=hat,note=14,powered=false]: minecraft:note_block[instrument=harp,note=14,powered=false] - minecraft:note_block[instrument=hat,note=15,powered=false]: minecraft:note_block[instrument=harp,note=15,powered=false] - minecraft:note_block[instrument=hat,note=16,powered=false]: minecraft:note_block[instrument=harp,note=16,powered=false] - minecraft:note_block[instrument=hat,note=17,powered=false]: minecraft:note_block[instrument=harp,note=17,powered=false] - minecraft:note_block[instrument=hat,note=18,powered=false]: minecraft:note_block[instrument=harp,note=18,powered=false] - minecraft:note_block[instrument=hat,note=19,powered=false]: minecraft:note_block[instrument=harp,note=19,powered=false] - minecraft:note_block[instrument=hat,note=20,powered=false]: minecraft:note_block[instrument=harp,note=20,powered=false] - minecraft:note_block[instrument=hat,note=21,powered=false]: minecraft:note_block[instrument=harp,note=21,powered=false] - minecraft:note_block[instrument=hat,note=22,powered=false]: minecraft:note_block[instrument=harp,note=22,powered=false] - minecraft:note_block[instrument=hat,note=23,powered=false]: minecraft:note_block[instrument=harp,note=23,powered=false] - minecraft:note_block[instrument=hat,note=24,powered=false]: minecraft:note_block[instrument=harp,note=24,powered=false] - minecraft:note_block[instrument=hat,note=0,powered=true]: minecraft:note_block[instrument=harp,note=0,powered=true] - minecraft:note_block[instrument=hat,note=1,powered=true]: minecraft:note_block[instrument=harp,note=1,powered=true] - minecraft:note_block[instrument=hat,note=2,powered=true]: minecraft:note_block[instrument=harp,note=2,powered=true] - minecraft:note_block[instrument=hat,note=3,powered=true]: minecraft:note_block[instrument=harp,note=3,powered=true] - minecraft:note_block[instrument=hat,note=4,powered=true]: minecraft:note_block[instrument=harp,note=4,powered=true] - minecraft:note_block[instrument=hat,note=5,powered=true]: minecraft:note_block[instrument=harp,note=5,powered=true] - minecraft:note_block[instrument=hat,note=6,powered=true]: minecraft:note_block[instrument=harp,note=6,powered=true] - minecraft:note_block[instrument=hat,note=7,powered=true]: minecraft:note_block[instrument=harp,note=7,powered=true] - minecraft:note_block[instrument=hat,note=8,powered=true]: minecraft:note_block[instrument=harp,note=8,powered=true] - minecraft:note_block[instrument=hat,note=9,powered=true]: minecraft:note_block[instrument=harp,note=9,powered=true] - minecraft:note_block[instrument=hat,note=10,powered=true]: minecraft:note_block[instrument=harp,note=10,powered=true] - minecraft:note_block[instrument=hat,note=11,powered=true]: minecraft:note_block[instrument=harp,note=11,powered=true] - minecraft:note_block[instrument=hat,note=12,powered=true]: minecraft:note_block[instrument=harp,note=12,powered=true] - minecraft:note_block[instrument=hat,note=13,powered=true]: minecraft:note_block[instrument=harp,note=13,powered=true] - minecraft:note_block[instrument=hat,note=14,powered=true]: minecraft:note_block[instrument=harp,note=14,powered=true] - minecraft:note_block[instrument=hat,note=15,powered=true]: minecraft:note_block[instrument=harp,note=15,powered=true] - minecraft:note_block[instrument=hat,note=16,powered=true]: minecraft:note_block[instrument=harp,note=16,powered=true] - minecraft:note_block[instrument=hat,note=17,powered=true]: minecraft:note_block[instrument=harp,note=17,powered=true] - minecraft:note_block[instrument=hat,note=18,powered=true]: minecraft:note_block[instrument=harp,note=18,powered=true] - minecraft:note_block[instrument=hat,note=19,powered=true]: minecraft:note_block[instrument=harp,note=19,powered=true] - minecraft:note_block[instrument=hat,note=20,powered=true]: minecraft:note_block[instrument=harp,note=20,powered=true] - minecraft:note_block[instrument=hat,note=21,powered=true]: minecraft:note_block[instrument=harp,note=21,powered=true] - minecraft:note_block[instrument=hat,note=22,powered=true]: minecraft:note_block[instrument=harp,note=22,powered=true] - minecraft:note_block[instrument=hat,note=23,powered=true]: minecraft:note_block[instrument=harp,note=23,powered=true] - minecraft:note_block[instrument=hat,note=24,powered=true]: minecraft:note_block[instrument=harp,note=24,powered=true] - minecraft:note_block[instrument=basedrum,note=0,powered=false]: minecraft:note_block[instrument=harp,note=0,powered=false] - minecraft:note_block[instrument=basedrum,note=1,powered=false]: minecraft:note_block[instrument=harp,note=1,powered=false] - minecraft:note_block[instrument=basedrum,note=2,powered=false]: minecraft:note_block[instrument=harp,note=2,powered=false] - minecraft:note_block[instrument=basedrum,note=3,powered=false]: minecraft:note_block[instrument=harp,note=3,powered=false] - minecraft:note_block[instrument=basedrum,note=4,powered=false]: minecraft:note_block[instrument=harp,note=4,powered=false] - minecraft:note_block[instrument=basedrum,note=5,powered=false]: minecraft:note_block[instrument=harp,note=5,powered=false] - minecraft:note_block[instrument=basedrum,note=6,powered=false]: minecraft:note_block[instrument=harp,note=6,powered=false] - minecraft:note_block[instrument=basedrum,note=7,powered=false]: minecraft:note_block[instrument=harp,note=7,powered=false] - minecraft:note_block[instrument=basedrum,note=8,powered=false]: minecraft:note_block[instrument=harp,note=8,powered=false] - minecraft:note_block[instrument=basedrum,note=9,powered=false]: minecraft:note_block[instrument=harp,note=9,powered=false] - minecraft:note_block[instrument=basedrum,note=10,powered=false]: minecraft:note_block[instrument=harp,note=10,powered=false] - minecraft:note_block[instrument=basedrum,note=11,powered=false]: minecraft:note_block[instrument=harp,note=11,powered=false] - minecraft:note_block[instrument=basedrum,note=12,powered=false]: minecraft:note_block[instrument=harp,note=12,powered=false] - minecraft:note_block[instrument=basedrum,note=13,powered=false]: minecraft:note_block[instrument=harp,note=13,powered=false] - minecraft:note_block[instrument=basedrum,note=14,powered=false]: minecraft:note_block[instrument=harp,note=14,powered=false] - minecraft:note_block[instrument=basedrum,note=15,powered=false]: minecraft:note_block[instrument=harp,note=15,powered=false] - minecraft:note_block[instrument=basedrum,note=16,powered=false]: minecraft:note_block[instrument=harp,note=16,powered=false] - minecraft:note_block[instrument=basedrum,note=17,powered=false]: minecraft:note_block[instrument=harp,note=17,powered=false] - minecraft:note_block[instrument=basedrum,note=18,powered=false]: minecraft:note_block[instrument=harp,note=18,powered=false] - minecraft:note_block[instrument=basedrum,note=19,powered=false]: minecraft:note_block[instrument=harp,note=19,powered=false] - minecraft:note_block[instrument=basedrum,note=20,powered=false]: minecraft:note_block[instrument=harp,note=20,powered=false] - minecraft:note_block[instrument=basedrum,note=21,powered=false]: minecraft:note_block[instrument=harp,note=21,powered=false] - minecraft:note_block[instrument=basedrum,note=22,powered=false]: minecraft:note_block[instrument=harp,note=22,powered=false] - minecraft:note_block[instrument=basedrum,note=23,powered=false]: minecraft:note_block[instrument=harp,note=23,powered=false] - minecraft:note_block[instrument=basedrum,note=24,powered=false]: minecraft:note_block[instrument=harp,note=24,powered=false] - minecraft:note_block[instrument=basedrum,note=0,powered=true]: minecraft:note_block[instrument=harp,note=0,powered=true] - minecraft:note_block[instrument=basedrum,note=1,powered=true]: minecraft:note_block[instrument=harp,note=1,powered=true] - minecraft:note_block[instrument=basedrum,note=2,powered=true]: minecraft:note_block[instrument=harp,note=2,powered=true] - minecraft:note_block[instrument=basedrum,note=3,powered=true]: minecraft:note_block[instrument=harp,note=3,powered=true] - minecraft:note_block[instrument=basedrum,note=4,powered=true]: minecraft:note_block[instrument=harp,note=4,powered=true] - minecraft:note_block[instrument=basedrum,note=5,powered=true]: minecraft:note_block[instrument=harp,note=5,powered=true] - minecraft:note_block[instrument=basedrum,note=6,powered=true]: minecraft:note_block[instrument=harp,note=6,powered=true] - minecraft:note_block[instrument=basedrum,note=7,powered=true]: minecraft:note_block[instrument=harp,note=7,powered=true] - minecraft:note_block[instrument=basedrum,note=8,powered=true]: minecraft:note_block[instrument=harp,note=8,powered=true] - minecraft:note_block[instrument=basedrum,note=9,powered=true]: minecraft:note_block[instrument=harp,note=9,powered=true] - minecraft:note_block[instrument=basedrum,note=10,powered=true]: minecraft:note_block[instrument=harp,note=10,powered=true] - minecraft:note_block[instrument=basedrum,note=11,powered=true]: minecraft:note_block[instrument=harp,note=11,powered=true] - minecraft:note_block[instrument=basedrum,note=12,powered=true]: minecraft:note_block[instrument=harp,note=12,powered=true] - minecraft:note_block[instrument=basedrum,note=13,powered=true]: minecraft:note_block[instrument=harp,note=13,powered=true] - minecraft:note_block[instrument=basedrum,note=14,powered=true]: minecraft:note_block[instrument=harp,note=14,powered=true] - minecraft:note_block[instrument=basedrum,note=15,powered=true]: minecraft:note_block[instrument=harp,note=15,powered=true] - minecraft:note_block[instrument=basedrum,note=16,powered=true]: minecraft:note_block[instrument=harp,note=16,powered=true] - minecraft:note_block[instrument=basedrum,note=17,powered=true]: minecraft:note_block[instrument=harp,note=17,powered=true] - minecraft:note_block[instrument=basedrum,note=18,powered=true]: minecraft:note_block[instrument=harp,note=18,powered=true] - minecraft:note_block[instrument=basedrum,note=19,powered=true]: minecraft:note_block[instrument=harp,note=19,powered=true] - minecraft:note_block[instrument=basedrum,note=20,powered=true]: minecraft:note_block[instrument=harp,note=20,powered=true] - minecraft:note_block[instrument=basedrum,note=21,powered=true]: minecraft:note_block[instrument=harp,note=21,powered=true] - minecraft:note_block[instrument=basedrum,note=22,powered=true]: minecraft:note_block[instrument=harp,note=22,powered=true] - minecraft:note_block[instrument=basedrum,note=23,powered=true]: minecraft:note_block[instrument=harp,note=23,powered=true] - minecraft:note_block[instrument=basedrum,note=24,powered=true]: minecraft:note_block[instrument=harp,note=24,powered=true] - minecraft:note_block[instrument=snare,note=0,powered=false]: minecraft:note_block[instrument=harp,note=0,powered=false] - minecraft:note_block[instrument=snare,note=1,powered=false]: minecraft:note_block[instrument=harp,note=1,powered=false] - minecraft:note_block[instrument=snare,note=2,powered=false]: minecraft:note_block[instrument=harp,note=2,powered=false] - minecraft:note_block[instrument=snare,note=3,powered=false]: minecraft:note_block[instrument=harp,note=3,powered=false] - minecraft:note_block[instrument=snare,note=4,powered=false]: minecraft:note_block[instrument=harp,note=4,powered=false] - minecraft:note_block[instrument=snare,note=5,powered=false]: minecraft:note_block[instrument=harp,note=5,powered=false] - minecraft:note_block[instrument=snare,note=6,powered=false]: minecraft:note_block[instrument=harp,note=6,powered=false] - minecraft:note_block[instrument=snare,note=7,powered=false]: minecraft:note_block[instrument=harp,note=7,powered=false] - minecraft:note_block[instrument=snare,note=8,powered=false]: minecraft:note_block[instrument=harp,note=8,powered=false] - minecraft:note_block[instrument=snare,note=9,powered=false]: minecraft:note_block[instrument=harp,note=9,powered=false] - minecraft:note_block[instrument=snare,note=10,powered=false]: minecraft:note_block[instrument=harp,note=10,powered=false] - minecraft:note_block[instrument=snare,note=11,powered=false]: minecraft:note_block[instrument=harp,note=11,powered=false] - minecraft:note_block[instrument=snare,note=12,powered=false]: minecraft:note_block[instrument=harp,note=12,powered=false] - minecraft:note_block[instrument=snare,note=13,powered=false]: minecraft:note_block[instrument=harp,note=13,powered=false] - minecraft:note_block[instrument=snare,note=14,powered=false]: minecraft:note_block[instrument=harp,note=14,powered=false] - minecraft:note_block[instrument=snare,note=15,powered=false]: minecraft:note_block[instrument=harp,note=15,powered=false] - minecraft:note_block[instrument=snare,note=16,powered=false]: minecraft:note_block[instrument=harp,note=16,powered=false] - minecraft:note_block[instrument=snare,note=17,powered=false]: minecraft:note_block[instrument=harp,note=17,powered=false] - minecraft:note_block[instrument=snare,note=18,powered=false]: minecraft:note_block[instrument=harp,note=18,powered=false] - minecraft:note_block[instrument=snare,note=19,powered=false]: minecraft:note_block[instrument=harp,note=19,powered=false] - minecraft:note_block[instrument=snare,note=20,powered=false]: minecraft:note_block[instrument=harp,note=20,powered=false] - minecraft:note_block[instrument=snare,note=21,powered=false]: minecraft:note_block[instrument=harp,note=21,powered=false] - minecraft:note_block[instrument=snare,note=22,powered=false]: minecraft:note_block[instrument=harp,note=22,powered=false] - minecraft:note_block[instrument=snare,note=23,powered=false]: minecraft:note_block[instrument=harp,note=23,powered=false] - minecraft:note_block[instrument=snare,note=24,powered=false]: minecraft:note_block[instrument=harp,note=24,powered=false] - minecraft:note_block[instrument=snare,note=0,powered=true]: minecraft:note_block[instrument=harp,note=0,powered=true] - minecraft:note_block[instrument=snare,note=1,powered=true]: minecraft:note_block[instrument=harp,note=1,powered=true] - minecraft:note_block[instrument=snare,note=2,powered=true]: minecraft:note_block[instrument=harp,note=2,powered=true] - minecraft:note_block[instrument=snare,note=3,powered=true]: minecraft:note_block[instrument=harp,note=3,powered=true] - minecraft:note_block[instrument=snare,note=4,powered=true]: minecraft:note_block[instrument=harp,note=4,powered=true] - minecraft:note_block[instrument=snare,note=5,powered=true]: minecraft:note_block[instrument=harp,note=5,powered=true] - minecraft:note_block[instrument=snare,note=6,powered=true]: minecraft:note_block[instrument=harp,note=6,powered=true] - minecraft:note_block[instrument=snare,note=7,powered=true]: minecraft:note_block[instrument=harp,note=7,powered=true] - minecraft:note_block[instrument=snare,note=8,powered=true]: minecraft:note_block[instrument=harp,note=8,powered=true] - minecraft:note_block[instrument=snare,note=9,powered=true]: minecraft:note_block[instrument=harp,note=9,powered=true] - minecraft:note_block[instrument=snare,note=10,powered=true]: minecraft:note_block[instrument=harp,note=10,powered=true] - minecraft:note_block[instrument=snare,note=11,powered=true]: minecraft:note_block[instrument=harp,note=11,powered=true] - minecraft:note_block[instrument=snare,note=12,powered=true]: minecraft:note_block[instrument=harp,note=12,powered=true] - minecraft:note_block[instrument=snare,note=13,powered=true]: minecraft:note_block[instrument=harp,note=13,powered=true] - minecraft:note_block[instrument=snare,note=14,powered=true]: minecraft:note_block[instrument=harp,note=14,powered=true] - minecraft:note_block[instrument=snare,note=15,powered=true]: minecraft:note_block[instrument=harp,note=15,powered=true] - minecraft:note_block[instrument=snare,note=16,powered=true]: minecraft:note_block[instrument=harp,note=16,powered=true] - minecraft:note_block[instrument=snare,note=17,powered=true]: minecraft:note_block[instrument=harp,note=17,powered=true] - minecraft:note_block[instrument=snare,note=18,powered=true]: minecraft:note_block[instrument=harp,note=18,powered=true] - minecraft:note_block[instrument=snare,note=19,powered=true]: minecraft:note_block[instrument=harp,note=19,powered=true] - minecraft:note_block[instrument=snare,note=20,powered=true]: minecraft:note_block[instrument=harp,note=20,powered=true] - minecraft:note_block[instrument=snare,note=21,powered=true]: minecraft:note_block[instrument=harp,note=21,powered=true] - minecraft:note_block[instrument=snare,note=22,powered=true]: minecraft:note_block[instrument=harp,note=22,powered=true] - minecraft:note_block[instrument=snare,note=23,powered=true]: minecraft:note_block[instrument=harp,note=23,powered=true] - minecraft:note_block[instrument=snare,note=24,powered=true]: minecraft:note_block[instrument=harp,note=24,powered=true] - minecraft:note_block[instrument=bass,note=0,powered=false]: minecraft:note_block[instrument=harp,note=0,powered=false] - minecraft:note_block[instrument=bass,note=1,powered=false]: minecraft:note_block[instrument=harp,note=1,powered=false] - minecraft:note_block[instrument=bass,note=2,powered=false]: minecraft:note_block[instrument=harp,note=2,powered=false] - minecraft:note_block[instrument=bass,note=3,powered=false]: minecraft:note_block[instrument=harp,note=3,powered=false] - minecraft:note_block[instrument=bass,note=4,powered=false]: minecraft:note_block[instrument=harp,note=4,powered=false] - minecraft:note_block[instrument=bass,note=5,powered=false]: minecraft:note_block[instrument=harp,note=5,powered=false] - minecraft:note_block[instrument=bass,note=6,powered=false]: minecraft:note_block[instrument=harp,note=6,powered=false] - minecraft:note_block[instrument=bass,note=7,powered=false]: minecraft:note_block[instrument=harp,note=7,powered=false] - minecraft:note_block[instrument=bass,note=8,powered=false]: minecraft:note_block[instrument=harp,note=8,powered=false] - minecraft:note_block[instrument=bass,note=9,powered=false]: minecraft:note_block[instrument=harp,note=9,powered=false] - minecraft:note_block[instrument=bass,note=10,powered=false]: minecraft:note_block[instrument=harp,note=10,powered=false] - minecraft:note_block[instrument=bass,note=11,powered=false]: minecraft:note_block[instrument=harp,note=11,powered=false] - minecraft:note_block[instrument=bass,note=12,powered=false]: minecraft:note_block[instrument=harp,note=12,powered=false] - minecraft:note_block[instrument=bass,note=13,powered=false]: minecraft:note_block[instrument=harp,note=13,powered=false] - minecraft:note_block[instrument=bass,note=14,powered=false]: minecraft:note_block[instrument=harp,note=14,powered=false] - minecraft:note_block[instrument=bass,note=15,powered=false]: minecraft:note_block[instrument=harp,note=15,powered=false] - minecraft:note_block[instrument=bass,note=16,powered=false]: minecraft:note_block[instrument=harp,note=16,powered=false] - minecraft:note_block[instrument=bass,note=17,powered=false]: minecraft:note_block[instrument=harp,note=17,powered=false] - minecraft:note_block[instrument=bass,note=18,powered=false]: minecraft:note_block[instrument=harp,note=18,powered=false] - minecraft:note_block[instrument=bass,note=19,powered=false]: minecraft:note_block[instrument=harp,note=19,powered=false] - minecraft:note_block[instrument=bass,note=20,powered=false]: minecraft:note_block[instrument=harp,note=20,powered=false] - minecraft:note_block[instrument=bass,note=21,powered=false]: minecraft:note_block[instrument=harp,note=21,powered=false] - minecraft:note_block[instrument=bass,note=22,powered=false]: minecraft:note_block[instrument=harp,note=22,powered=false] - minecraft:note_block[instrument=bass,note=23,powered=false]: minecraft:note_block[instrument=harp,note=23,powered=false] - minecraft:note_block[instrument=bass,note=24,powered=false]: minecraft:note_block[instrument=harp,note=24,powered=false] - minecraft:note_block[instrument=bass,note=0,powered=true]: minecraft:note_block[instrument=harp,note=0,powered=true] - minecraft:note_block[instrument=bass,note=1,powered=true]: minecraft:note_block[instrument=harp,note=1,powered=true] - minecraft:note_block[instrument=bass,note=2,powered=true]: minecraft:note_block[instrument=harp,note=2,powered=true] - minecraft:note_block[instrument=bass,note=3,powered=true]: minecraft:note_block[instrument=harp,note=3,powered=true] - minecraft:note_block[instrument=bass,note=4,powered=true]: minecraft:note_block[instrument=harp,note=4,powered=true] - minecraft:note_block[instrument=bass,note=5,powered=true]: minecraft:note_block[instrument=harp,note=5,powered=true] - minecraft:note_block[instrument=bass,note=6,powered=true]: minecraft:note_block[instrument=harp,note=6,powered=true] - minecraft:note_block[instrument=bass,note=7,powered=true]: minecraft:note_block[instrument=harp,note=7,powered=true] - minecraft:note_block[instrument=bass,note=8,powered=true]: minecraft:note_block[instrument=harp,note=8,powered=true] - minecraft:note_block[instrument=bass,note=9,powered=true]: minecraft:note_block[instrument=harp,note=9,powered=true] - minecraft:note_block[instrument=bass,note=10,powered=true]: minecraft:note_block[instrument=harp,note=10,powered=true] - minecraft:note_block[instrument=bass,note=11,powered=true]: minecraft:note_block[instrument=harp,note=11,powered=true] - minecraft:note_block[instrument=bass,note=12,powered=true]: minecraft:note_block[instrument=harp,note=12,powered=true] - minecraft:note_block[instrument=bass,note=13,powered=true]: minecraft:note_block[instrument=harp,note=13,powered=true] - minecraft:note_block[instrument=bass,note=14,powered=true]: minecraft:note_block[instrument=harp,note=14,powered=true] - minecraft:note_block[instrument=bass,note=15,powered=true]: minecraft:note_block[instrument=harp,note=15,powered=true] - minecraft:note_block[instrument=bass,note=16,powered=true]: minecraft:note_block[instrument=harp,note=16,powered=true] - minecraft:note_block[instrument=bass,note=17,powered=true]: minecraft:note_block[instrument=harp,note=17,powered=true] - minecraft:note_block[instrument=bass,note=18,powered=true]: minecraft:note_block[instrument=harp,note=18,powered=true] - minecraft:note_block[instrument=bass,note=19,powered=true]: minecraft:note_block[instrument=harp,note=19,powered=true] - minecraft:note_block[instrument=bass,note=20,powered=true]: minecraft:note_block[instrument=harp,note=20,powered=true] - minecraft:note_block[instrument=bass,note=21,powered=true]: minecraft:note_block[instrument=harp,note=21,powered=true] - minecraft:note_block[instrument=bass,note=22,powered=true]: minecraft:note_block[instrument=harp,note=22,powered=true] - minecraft:note_block[instrument=bass,note=23,powered=true]: minecraft:note_block[instrument=harp,note=23,powered=true] - minecraft:note_block[instrument=bass,note=24,powered=true]: minecraft:note_block[instrument=harp,note=24,powered=true] - minecraft:note_block[instrument=flute,note=0,powered=false]: minecraft:note_block[instrument=harp,note=0,powered=false] - minecraft:note_block[instrument=flute,note=1,powered=false]: minecraft:note_block[instrument=harp,note=1,powered=false] - minecraft:note_block[instrument=flute,note=2,powered=false]: minecraft:note_block[instrument=harp,note=2,powered=false] - minecraft:note_block[instrument=flute,note=3,powered=false]: minecraft:note_block[instrument=harp,note=3,powered=false] - minecraft:note_block[instrument=flute,note=4,powered=false]: minecraft:note_block[instrument=harp,note=4,powered=false] - minecraft:note_block[instrument=flute,note=5,powered=false]: minecraft:note_block[instrument=harp,note=5,powered=false] - minecraft:note_block[instrument=flute,note=6,powered=false]: minecraft:note_block[instrument=harp,note=6,powered=false] - minecraft:note_block[instrument=flute,note=7,powered=false]: minecraft:note_block[instrument=harp,note=7,powered=false] - minecraft:note_block[instrument=flute,note=8,powered=false]: minecraft:note_block[instrument=harp,note=8,powered=false] - minecraft:note_block[instrument=flute,note=9,powered=false]: minecraft:note_block[instrument=harp,note=9,powered=false] - minecraft:note_block[instrument=flute,note=10,powered=false]: minecraft:note_block[instrument=harp,note=10,powered=false] - minecraft:note_block[instrument=flute,note=11,powered=false]: minecraft:note_block[instrument=harp,note=11,powered=false] - minecraft:note_block[instrument=flute,note=12,powered=false]: minecraft:note_block[instrument=harp,note=12,powered=false] - minecraft:note_block[instrument=flute,note=13,powered=false]: minecraft:note_block[instrument=harp,note=13,powered=false] - minecraft:note_block[instrument=flute,note=14,powered=false]: minecraft:note_block[instrument=harp,note=14,powered=false] - minecraft:note_block[instrument=flute,note=15,powered=false]: minecraft:note_block[instrument=harp,note=15,powered=false] - minecraft:note_block[instrument=flute,note=16,powered=false]: minecraft:note_block[instrument=harp,note=16,powered=false] - minecraft:note_block[instrument=flute,note=17,powered=false]: minecraft:note_block[instrument=harp,note=17,powered=false] - minecraft:note_block[instrument=flute,note=18,powered=false]: minecraft:note_block[instrument=harp,note=18,powered=false] - minecraft:note_block[instrument=flute,note=19,powered=false]: minecraft:note_block[instrument=harp,note=19,powered=false] - minecraft:note_block[instrument=flute,note=20,powered=false]: minecraft:note_block[instrument=harp,note=20,powered=false] - minecraft:note_block[instrument=flute,note=21,powered=false]: minecraft:note_block[instrument=harp,note=21,powered=false] - minecraft:note_block[instrument=flute,note=22,powered=false]: minecraft:note_block[instrument=harp,note=22,powered=false] - minecraft:note_block[instrument=flute,note=23,powered=false]: minecraft:note_block[instrument=harp,note=23,powered=false] - minecraft:note_block[instrument=flute,note=24,powered=false]: minecraft:note_block[instrument=harp,note=24,powered=false] - minecraft:note_block[instrument=flute,note=0,powered=true]: minecraft:note_block[instrument=harp,note=0,powered=true] - minecraft:note_block[instrument=flute,note=1,powered=true]: minecraft:note_block[instrument=harp,note=1,powered=true] - minecraft:note_block[instrument=flute,note=2,powered=true]: minecraft:note_block[instrument=harp,note=2,powered=true] - minecraft:note_block[instrument=flute,note=3,powered=true]: minecraft:note_block[instrument=harp,note=3,powered=true] - minecraft:note_block[instrument=flute,note=4,powered=true]: minecraft:note_block[instrument=harp,note=4,powered=true] - minecraft:note_block[instrument=flute,note=5,powered=true]: minecraft:note_block[instrument=harp,note=5,powered=true] - minecraft:note_block[instrument=flute,note=6,powered=true]: minecraft:note_block[instrument=harp,note=6,powered=true] - minecraft:note_block[instrument=flute,note=7,powered=true]: minecraft:note_block[instrument=harp,note=7,powered=true] - minecraft:note_block[instrument=flute,note=8,powered=true]: minecraft:note_block[instrument=harp,note=8,powered=true] - minecraft:note_block[instrument=flute,note=9,powered=true]: minecraft:note_block[instrument=harp,note=9,powered=true] - minecraft:note_block[instrument=flute,note=10,powered=true]: minecraft:note_block[instrument=harp,note=10,powered=true] - minecraft:note_block[instrument=flute,note=11,powered=true]: minecraft:note_block[instrument=harp,note=11,powered=true] - minecraft:note_block[instrument=flute,note=12,powered=true]: minecraft:note_block[instrument=harp,note=12,powered=true] - minecraft:note_block[instrument=flute,note=13,powered=true]: minecraft:note_block[instrument=harp,note=13,powered=true] - minecraft:note_block[instrument=flute,note=14,powered=true]: minecraft:note_block[instrument=harp,note=14,powered=true] - minecraft:note_block[instrument=flute,note=15,powered=true]: minecraft:note_block[instrument=harp,note=15,powered=true] - minecraft:note_block[instrument=flute,note=16,powered=true]: minecraft:note_block[instrument=harp,note=16,powered=true] - minecraft:note_block[instrument=flute,note=17,powered=true]: minecraft:note_block[instrument=harp,note=17,powered=true] - minecraft:note_block[instrument=flute,note=18,powered=true]: minecraft:note_block[instrument=harp,note=18,powered=true] - minecraft:note_block[instrument=flute,note=19,powered=true]: minecraft:note_block[instrument=harp,note=19,powered=true] - minecraft:note_block[instrument=flute,note=20,powered=true]: minecraft:note_block[instrument=harp,note=20,powered=true] - minecraft:note_block[instrument=flute,note=21,powered=true]: minecraft:note_block[instrument=harp,note=21,powered=true] - minecraft:note_block[instrument=flute,note=22,powered=true]: minecraft:note_block[instrument=harp,note=22,powered=true] - minecraft:note_block[instrument=flute,note=23,powered=true]: minecraft:note_block[instrument=harp,note=23,powered=true] - minecraft:note_block[instrument=flute,note=24,powered=true]: minecraft:note_block[instrument=harp,note=24,powered=true] - minecraft:note_block[instrument=bell,note=0,powered=false]: minecraft:note_block[instrument=harp,note=0,powered=false] - minecraft:note_block[instrument=bell,note=1,powered=false]: minecraft:note_block[instrument=harp,note=1,powered=false] - minecraft:note_block[instrument=bell,note=2,powered=false]: minecraft:note_block[instrument=harp,note=2,powered=false] - minecraft:note_block[instrument=bell,note=3,powered=false]: minecraft:note_block[instrument=harp,note=3,powered=false] - minecraft:note_block[instrument=bell,note=4,powered=false]: minecraft:note_block[instrument=harp,note=4,powered=false] - minecraft:note_block[instrument=bell,note=5,powered=false]: minecraft:note_block[instrument=harp,note=5,powered=false] - minecraft:note_block[instrument=bell,note=6,powered=false]: minecraft:note_block[instrument=harp,note=6,powered=false] - minecraft:note_block[instrument=bell,note=7,powered=false]: minecraft:note_block[instrument=harp,note=7,powered=false] - minecraft:note_block[instrument=bell,note=8,powered=false]: minecraft:note_block[instrument=harp,note=8,powered=false] - minecraft:note_block[instrument=bell,note=9,powered=false]: minecraft:note_block[instrument=harp,note=9,powered=false] - minecraft:note_block[instrument=bell,note=10,powered=false]: minecraft:note_block[instrument=harp,note=10,powered=false] - minecraft:note_block[instrument=bell,note=11,powered=false]: minecraft:note_block[instrument=harp,note=11,powered=false] - minecraft:note_block[instrument=bell,note=12,powered=false]: minecraft:note_block[instrument=harp,note=12,powered=false] - minecraft:note_block[instrument=bell,note=13,powered=false]: minecraft:note_block[instrument=harp,note=13,powered=false] - minecraft:note_block[instrument=bell,note=14,powered=false]: minecraft:note_block[instrument=harp,note=14,powered=false] - minecraft:note_block[instrument=bell,note=15,powered=false]: minecraft:note_block[instrument=harp,note=15,powered=false] - minecraft:note_block[instrument=bell,note=16,powered=false]: minecraft:note_block[instrument=harp,note=16,powered=false] - minecraft:note_block[instrument=bell,note=17,powered=false]: minecraft:note_block[instrument=harp,note=17,powered=false] - minecraft:note_block[instrument=bell,note=18,powered=false]: minecraft:note_block[instrument=harp,note=18,powered=false] - minecraft:note_block[instrument=bell,note=19,powered=false]: minecraft:note_block[instrument=harp,note=19,powered=false] - minecraft:note_block[instrument=bell,note=20,powered=false]: minecraft:note_block[instrument=harp,note=20,powered=false] - minecraft:note_block[instrument=bell,note=21,powered=false]: minecraft:note_block[instrument=harp,note=21,powered=false] - minecraft:note_block[instrument=bell,note=22,powered=false]: minecraft:note_block[instrument=harp,note=22,powered=false] - minecraft:note_block[instrument=bell,note=23,powered=false]: minecraft:note_block[instrument=harp,note=23,powered=false] - minecraft:note_block[instrument=bell,note=24,powered=false]: minecraft:note_block[instrument=harp,note=24,powered=false] - minecraft:note_block[instrument=bell,note=0,powered=true]: minecraft:note_block[instrument=harp,note=0,powered=true] - minecraft:note_block[instrument=bell,note=1,powered=true]: minecraft:note_block[instrument=harp,note=1,powered=true] - minecraft:note_block[instrument=bell,note=2,powered=true]: minecraft:note_block[instrument=harp,note=2,powered=true] - minecraft:note_block[instrument=bell,note=3,powered=true]: minecraft:note_block[instrument=harp,note=3,powered=true] - minecraft:note_block[instrument=bell,note=4,powered=true]: minecraft:note_block[instrument=harp,note=4,powered=true] - minecraft:note_block[instrument=bell,note=5,powered=true]: minecraft:note_block[instrument=harp,note=5,powered=true] - minecraft:note_block[instrument=bell,note=6,powered=true]: minecraft:note_block[instrument=harp,note=6,powered=true] - minecraft:note_block[instrument=bell,note=7,powered=true]: minecraft:note_block[instrument=harp,note=7,powered=true] - minecraft:note_block[instrument=bell,note=8,powered=true]: minecraft:note_block[instrument=harp,note=8,powered=true] - minecraft:note_block[instrument=bell,note=9,powered=true]: minecraft:note_block[instrument=harp,note=9,powered=true] - minecraft:note_block[instrument=bell,note=10,powered=true]: minecraft:note_block[instrument=harp,note=10,powered=true] - minecraft:note_block[instrument=bell,note=11,powered=true]: minecraft:note_block[instrument=harp,note=11,powered=true] - minecraft:note_block[instrument=bell,note=12,powered=true]: minecraft:note_block[instrument=harp,note=12,powered=true] - minecraft:note_block[instrument=bell,note=13,powered=true]: minecraft:note_block[instrument=harp,note=13,powered=true] - minecraft:note_block[instrument=bell,note=14,powered=true]: minecraft:note_block[instrument=harp,note=14,powered=true] - minecraft:note_block[instrument=bell,note=15,powered=true]: minecraft:note_block[instrument=harp,note=15,powered=true] - minecraft:note_block[instrument=bell,note=16,powered=true]: minecraft:note_block[instrument=harp,note=16,powered=true] - minecraft:note_block[instrument=bell,note=17,powered=true]: minecraft:note_block[instrument=harp,note=17,powered=true] - minecraft:note_block[instrument=bell,note=18,powered=true]: minecraft:note_block[instrument=harp,note=18,powered=true] - minecraft:note_block[instrument=bell,note=19,powered=true]: minecraft:note_block[instrument=harp,note=19,powered=true] - minecraft:note_block[instrument=bell,note=20,powered=true]: minecraft:note_block[instrument=harp,note=20,powered=true] - minecraft:note_block[instrument=bell,note=21,powered=true]: minecraft:note_block[instrument=harp,note=21,powered=true] - minecraft:note_block[instrument=bell,note=22,powered=true]: minecraft:note_block[instrument=harp,note=22,powered=true] - minecraft:note_block[instrument=bell,note=23,powered=true]: minecraft:note_block[instrument=harp,note=23,powered=true] - minecraft:note_block[instrument=bell,note=24,powered=true]: minecraft:note_block[instrument=harp,note=24,powered=true] - minecraft:note_block[instrument=guitar,note=0,powered=false]: minecraft:note_block[instrument=harp,note=0,powered=false] - minecraft:note_block[instrument=guitar,note=1,powered=false]: minecraft:note_block[instrument=harp,note=1,powered=false] - minecraft:note_block[instrument=guitar,note=2,powered=false]: minecraft:note_block[instrument=harp,note=2,powered=false] - minecraft:note_block[instrument=guitar,note=3,powered=false]: minecraft:note_block[instrument=harp,note=3,powered=false] - minecraft:note_block[instrument=guitar,note=4,powered=false]: minecraft:note_block[instrument=harp,note=4,powered=false] - minecraft:note_block[instrument=guitar,note=5,powered=false]: minecraft:note_block[instrument=harp,note=5,powered=false] - minecraft:note_block[instrument=guitar,note=6,powered=false]: minecraft:note_block[instrument=harp,note=6,powered=false] - minecraft:note_block[instrument=guitar,note=7,powered=false]: minecraft:note_block[instrument=harp,note=7,powered=false] - minecraft:note_block[instrument=guitar,note=8,powered=false]: minecraft:note_block[instrument=harp,note=8,powered=false] - minecraft:note_block[instrument=guitar,note=9,powered=false]: minecraft:note_block[instrument=harp,note=9,powered=false] - minecraft:note_block[instrument=guitar,note=10,powered=false]: minecraft:note_block[instrument=harp,note=10,powered=false] - minecraft:note_block[instrument=guitar,note=11,powered=false]: minecraft:note_block[instrument=harp,note=11,powered=false] - minecraft:note_block[instrument=guitar,note=12,powered=false]: minecraft:note_block[instrument=harp,note=12,powered=false] - minecraft:note_block[instrument=guitar,note=13,powered=false]: minecraft:note_block[instrument=harp,note=13,powered=false] - minecraft:note_block[instrument=guitar,note=14,powered=false]: minecraft:note_block[instrument=harp,note=14,powered=false] - minecraft:note_block[instrument=guitar,note=15,powered=false]: minecraft:note_block[instrument=harp,note=15,powered=false] - minecraft:note_block[instrument=guitar,note=16,powered=false]: minecraft:note_block[instrument=harp,note=16,powered=false] - minecraft:note_block[instrument=guitar,note=17,powered=false]: minecraft:note_block[instrument=harp,note=17,powered=false] - minecraft:note_block[instrument=guitar,note=18,powered=false]: minecraft:note_block[instrument=harp,note=18,powered=false] - minecraft:note_block[instrument=guitar,note=19,powered=false]: minecraft:note_block[instrument=harp,note=19,powered=false] - minecraft:note_block[instrument=guitar,note=20,powered=false]: minecraft:note_block[instrument=harp,note=20,powered=false] - minecraft:note_block[instrument=guitar,note=21,powered=false]: minecraft:note_block[instrument=harp,note=21,powered=false] - minecraft:note_block[instrument=guitar,note=22,powered=false]: minecraft:note_block[instrument=harp,note=22,powered=false] - minecraft:note_block[instrument=guitar,note=23,powered=false]: minecraft:note_block[instrument=harp,note=23,powered=false] - minecraft:note_block[instrument=guitar,note=24,powered=false]: minecraft:note_block[instrument=harp,note=24,powered=false] - minecraft:note_block[instrument=guitar,note=0,powered=true]: minecraft:note_block[instrument=harp,note=0,powered=true] - minecraft:note_block[instrument=guitar,note=1,powered=true]: minecraft:note_block[instrument=harp,note=1,powered=true] - minecraft:note_block[instrument=guitar,note=2,powered=true]: minecraft:note_block[instrument=harp,note=2,powered=true] - minecraft:note_block[instrument=guitar,note=3,powered=true]: minecraft:note_block[instrument=harp,note=3,powered=true] - minecraft:note_block[instrument=guitar,note=4,powered=true]: minecraft:note_block[instrument=harp,note=4,powered=true] - minecraft:note_block[instrument=guitar,note=5,powered=true]: minecraft:note_block[instrument=harp,note=5,powered=true] - minecraft:note_block[instrument=guitar,note=6,powered=true]: minecraft:note_block[instrument=harp,note=6,powered=true] - minecraft:note_block[instrument=guitar,note=7,powered=true]: minecraft:note_block[instrument=harp,note=7,powered=true] - minecraft:note_block[instrument=guitar,note=8,powered=true]: minecraft:note_block[instrument=harp,note=8,powered=true] - minecraft:note_block[instrument=guitar,note=9,powered=true]: minecraft:note_block[instrument=harp,note=9,powered=true] - minecraft:note_block[instrument=guitar,note=10,powered=true]: minecraft:note_block[instrument=harp,note=10,powered=true] - minecraft:note_block[instrument=guitar,note=11,powered=true]: minecraft:note_block[instrument=harp,note=11,powered=true] - minecraft:note_block[instrument=guitar,note=12,powered=true]: minecraft:note_block[instrument=harp,note=12,powered=true] - minecraft:note_block[instrument=guitar,note=13,powered=true]: minecraft:note_block[instrument=harp,note=13,powered=true] - minecraft:note_block[instrument=guitar,note=14,powered=true]: minecraft:note_block[instrument=harp,note=14,powered=true] - minecraft:note_block[instrument=guitar,note=15,powered=true]: minecraft:note_block[instrument=harp,note=15,powered=true] - minecraft:note_block[instrument=guitar,note=16,powered=true]: minecraft:note_block[instrument=harp,note=16,powered=true] - minecraft:note_block[instrument=guitar,note=17,powered=true]: minecraft:note_block[instrument=harp,note=17,powered=true] - minecraft:note_block[instrument=guitar,note=18,powered=true]: minecraft:note_block[instrument=harp,note=18,powered=true] - minecraft:note_block[instrument=guitar,note=19,powered=true]: minecraft:note_block[instrument=harp,note=19,powered=true] - minecraft:note_block[instrument=guitar,note=20,powered=true]: minecraft:note_block[instrument=harp,note=20,powered=true] - minecraft:note_block[instrument=guitar,note=21,powered=true]: minecraft:note_block[instrument=harp,note=21,powered=true] - minecraft:note_block[instrument=guitar,note=22,powered=true]: minecraft:note_block[instrument=harp,note=22,powered=true] - minecraft:note_block[instrument=guitar,note=23,powered=true]: minecraft:note_block[instrument=harp,note=23,powered=true] - minecraft:note_block[instrument=guitar,note=24,powered=true]: minecraft:note_block[instrument=harp,note=24,powered=true] - minecraft:note_block[instrument=chime,note=0,powered=false]: minecraft:note_block[instrument=harp,note=0,powered=false] - minecraft:note_block[instrument=chime,note=1,powered=false]: minecraft:note_block[instrument=harp,note=1,powered=false] - minecraft:note_block[instrument=chime,note=2,powered=false]: minecraft:note_block[instrument=harp,note=2,powered=false] - minecraft:note_block[instrument=chime,note=3,powered=false]: minecraft:note_block[instrument=harp,note=3,powered=false] - minecraft:note_block[instrument=chime,note=4,powered=false]: minecraft:note_block[instrument=harp,note=4,powered=false] - minecraft:note_block[instrument=chime,note=5,powered=false]: minecraft:note_block[instrument=harp,note=5,powered=false] - minecraft:note_block[instrument=chime,note=6,powered=false]: minecraft:note_block[instrument=harp,note=6,powered=false] - minecraft:note_block[instrument=chime,note=7,powered=false]: minecraft:note_block[instrument=harp,note=7,powered=false] - minecraft:note_block[instrument=chime,note=8,powered=false]: minecraft:note_block[instrument=harp,note=8,powered=false] - minecraft:note_block[instrument=chime,note=9,powered=false]: minecraft:note_block[instrument=harp,note=9,powered=false] - minecraft:note_block[instrument=chime,note=10,powered=false]: minecraft:note_block[instrument=harp,note=10,powered=false] - minecraft:note_block[instrument=chime,note=11,powered=false]: minecraft:note_block[instrument=harp,note=11,powered=false] - minecraft:note_block[instrument=chime,note=12,powered=false]: minecraft:note_block[instrument=harp,note=12,powered=false] - minecraft:note_block[instrument=chime,note=13,powered=false]: minecraft:note_block[instrument=harp,note=13,powered=false] - minecraft:note_block[instrument=chime,note=14,powered=false]: minecraft:note_block[instrument=harp,note=14,powered=false] - minecraft:note_block[instrument=chime,note=15,powered=false]: minecraft:note_block[instrument=harp,note=15,powered=false] - minecraft:note_block[instrument=chime,note=16,powered=false]: minecraft:note_block[instrument=harp,note=16,powered=false] - minecraft:note_block[instrument=chime,note=17,powered=false]: minecraft:note_block[instrument=harp,note=17,powered=false] - minecraft:note_block[instrument=chime,note=18,powered=false]: minecraft:note_block[instrument=harp,note=18,powered=false] - minecraft:note_block[instrument=chime,note=19,powered=false]: minecraft:note_block[instrument=harp,note=19,powered=false] - minecraft:note_block[instrument=chime,note=20,powered=false]: minecraft:note_block[instrument=harp,note=20,powered=false] - minecraft:note_block[instrument=chime,note=21,powered=false]: minecraft:note_block[instrument=harp,note=21,powered=false] - minecraft:note_block[instrument=chime,note=22,powered=false]: minecraft:note_block[instrument=harp,note=22,powered=false] - minecraft:note_block[instrument=chime,note=23,powered=false]: minecraft:note_block[instrument=harp,note=23,powered=false] - minecraft:note_block[instrument=chime,note=24,powered=false]: minecraft:note_block[instrument=harp,note=24,powered=false] - minecraft:note_block[instrument=chime,note=0,powered=true]: minecraft:note_block[instrument=harp,note=0,powered=true] - minecraft:note_block[instrument=chime,note=1,powered=true]: minecraft:note_block[instrument=harp,note=1,powered=true] - minecraft:note_block[instrument=chime,note=2,powered=true]: minecraft:note_block[instrument=harp,note=2,powered=true] - minecraft:note_block[instrument=chime,note=3,powered=true]: minecraft:note_block[instrument=harp,note=3,powered=true] - minecraft:note_block[instrument=chime,note=4,powered=true]: minecraft:note_block[instrument=harp,note=4,powered=true] - minecraft:note_block[instrument=chime,note=5,powered=true]: minecraft:note_block[instrument=harp,note=5,powered=true] - minecraft:note_block[instrument=chime,note=6,powered=true]: minecraft:note_block[instrument=harp,note=6,powered=true] - minecraft:note_block[instrument=chime,note=7,powered=true]: minecraft:note_block[instrument=harp,note=7,powered=true] - minecraft:note_block[instrument=chime,note=8,powered=true]: minecraft:note_block[instrument=harp,note=8,powered=true] - minecraft:note_block[instrument=chime,note=9,powered=true]: minecraft:note_block[instrument=harp,note=9,powered=true] - minecraft:note_block[instrument=chime,note=10,powered=true]: minecraft:note_block[instrument=harp,note=10,powered=true] - minecraft:note_block[instrument=chime,note=11,powered=true]: minecraft:note_block[instrument=harp,note=11,powered=true] - minecraft:note_block[instrument=chime,note=12,powered=true]: minecraft:note_block[instrument=harp,note=12,powered=true] - minecraft:note_block[instrument=chime,note=13,powered=true]: minecraft:note_block[instrument=harp,note=13,powered=true] - minecraft:note_block[instrument=chime,note=14,powered=true]: minecraft:note_block[instrument=harp,note=14,powered=true] - minecraft:note_block[instrument=chime,note=15,powered=true]: minecraft:note_block[instrument=harp,note=15,powered=true] - minecraft:note_block[instrument=chime,note=16,powered=true]: minecraft:note_block[instrument=harp,note=16,powered=true] - minecraft:note_block[instrument=chime,note=17,powered=true]: minecraft:note_block[instrument=harp,note=17,powered=true] - minecraft:note_block[instrument=chime,note=18,powered=true]: minecraft:note_block[instrument=harp,note=18,powered=true] - minecraft:note_block[instrument=chime,note=19,powered=true]: minecraft:note_block[instrument=harp,note=19,powered=true] - minecraft:note_block[instrument=chime,note=20,powered=true]: minecraft:note_block[instrument=harp,note=20,powered=true] - minecraft:note_block[instrument=chime,note=21,powered=true]: minecraft:note_block[instrument=harp,note=21,powered=true] - minecraft:note_block[instrument=chime,note=22,powered=true]: minecraft:note_block[instrument=harp,note=22,powered=true] - minecraft:note_block[instrument=chime,note=23,powered=true]: minecraft:note_block[instrument=harp,note=23,powered=true] - minecraft:note_block[instrument=chime,note=24,powered=true]: minecraft:note_block[instrument=harp,note=24,powered=true] - minecraft:note_block[instrument=xylophone,note=0,powered=false]: minecraft:note_block[instrument=harp,note=0,powered=false] - minecraft:note_block[instrument=xylophone,note=1,powered=false]: minecraft:note_block[instrument=harp,note=1,powered=false] - minecraft:note_block[instrument=xylophone,note=2,powered=false]: minecraft:note_block[instrument=harp,note=2,powered=false] - minecraft:note_block[instrument=xylophone,note=3,powered=false]: minecraft:note_block[instrument=harp,note=3,powered=false] - minecraft:note_block[instrument=xylophone,note=4,powered=false]: minecraft:note_block[instrument=harp,note=4,powered=false] - minecraft:note_block[instrument=xylophone,note=5,powered=false]: minecraft:note_block[instrument=harp,note=5,powered=false] - minecraft:note_block[instrument=xylophone,note=6,powered=false]: minecraft:note_block[instrument=harp,note=6,powered=false] - minecraft:note_block[instrument=xylophone,note=7,powered=false]: minecraft:note_block[instrument=harp,note=7,powered=false] - minecraft:note_block[instrument=xylophone,note=8,powered=false]: minecraft:note_block[instrument=harp,note=8,powered=false] - minecraft:note_block[instrument=xylophone,note=9,powered=false]: minecraft:note_block[instrument=harp,note=9,powered=false] - minecraft:note_block[instrument=xylophone,note=10,powered=false]: minecraft:note_block[instrument=harp,note=10,powered=false] - minecraft:note_block[instrument=xylophone,note=11,powered=false]: minecraft:note_block[instrument=harp,note=11,powered=false] - minecraft:note_block[instrument=xylophone,note=12,powered=false]: minecraft:note_block[instrument=harp,note=12,powered=false] - minecraft:note_block[instrument=xylophone,note=13,powered=false]: minecraft:note_block[instrument=harp,note=13,powered=false] - minecraft:note_block[instrument=xylophone,note=14,powered=false]: minecraft:note_block[instrument=harp,note=14,powered=false] - minecraft:note_block[instrument=xylophone,note=15,powered=false]: minecraft:note_block[instrument=harp,note=15,powered=false] - minecraft:note_block[instrument=xylophone,note=16,powered=false]: minecraft:note_block[instrument=harp,note=16,powered=false] - minecraft:note_block[instrument=xylophone,note=17,powered=false]: minecraft:note_block[instrument=harp,note=17,powered=false] - minecraft:note_block[instrument=xylophone,note=18,powered=false]: minecraft:note_block[instrument=harp,note=18,powered=false] - minecraft:note_block[instrument=xylophone,note=19,powered=false]: minecraft:note_block[instrument=harp,note=19,powered=false] - minecraft:note_block[instrument=xylophone,note=20,powered=false]: minecraft:note_block[instrument=harp,note=20,powered=false] - minecraft:note_block[instrument=xylophone,note=21,powered=false]: minecraft:note_block[instrument=harp,note=21,powered=false] - minecraft:note_block[instrument=xylophone,note=22,powered=false]: minecraft:note_block[instrument=harp,note=22,powered=false] - minecraft:note_block[instrument=xylophone,note=23,powered=false]: minecraft:note_block[instrument=harp,note=23,powered=false] - minecraft:note_block[instrument=xylophone,note=24,powered=false]: minecraft:note_block[instrument=harp,note=24,powered=false] - minecraft:note_block[instrument=xylophone,note=0,powered=true]: minecraft:note_block[instrument=harp,note=0,powered=true] - minecraft:note_block[instrument=xylophone,note=1,powered=true]: minecraft:note_block[instrument=harp,note=1,powered=true] - minecraft:note_block[instrument=xylophone,note=2,powered=true]: minecraft:note_block[instrument=harp,note=2,powered=true] - minecraft:note_block[instrument=xylophone,note=3,powered=true]: minecraft:note_block[instrument=harp,note=3,powered=true] - minecraft:note_block[instrument=xylophone,note=4,powered=true]: minecraft:note_block[instrument=harp,note=4,powered=true] - minecraft:note_block[instrument=xylophone,note=5,powered=true]: minecraft:note_block[instrument=harp,note=5,powered=true] - minecraft:note_block[instrument=xylophone,note=6,powered=true]: minecraft:note_block[instrument=harp,note=6,powered=true] - minecraft:note_block[instrument=xylophone,note=7,powered=true]: minecraft:note_block[instrument=harp,note=7,powered=true] - minecraft:note_block[instrument=xylophone,note=8,powered=true]: minecraft:note_block[instrument=harp,note=8,powered=true] - minecraft:note_block[instrument=xylophone,note=9,powered=true]: minecraft:note_block[instrument=harp,note=9,powered=true] - minecraft:note_block[instrument=xylophone,note=10,powered=true]: minecraft:note_block[instrument=harp,note=10,powered=true] - minecraft:note_block[instrument=xylophone,note=11,powered=true]: minecraft:note_block[instrument=harp,note=11,powered=true] - minecraft:note_block[instrument=xylophone,note=12,powered=true]: minecraft:note_block[instrument=harp,note=12,powered=true] - minecraft:note_block[instrument=xylophone,note=13,powered=true]: minecraft:note_block[instrument=harp,note=13,powered=true] - minecraft:note_block[instrument=xylophone,note=14,powered=true]: minecraft:note_block[instrument=harp,note=14,powered=true] - minecraft:note_block[instrument=xylophone,note=15,powered=true]: minecraft:note_block[instrument=harp,note=15,powered=true] - minecraft:note_block[instrument=xylophone,note=16,powered=true]: minecraft:note_block[instrument=harp,note=16,powered=true] - minecraft:note_block[instrument=xylophone,note=17,powered=true]: minecraft:note_block[instrument=harp,note=17,powered=true] - minecraft:note_block[instrument=xylophone,note=18,powered=true]: minecraft:note_block[instrument=harp,note=18,powered=true] - minecraft:note_block[instrument=xylophone,note=19,powered=true]: minecraft:note_block[instrument=harp,note=19,powered=true] - minecraft:note_block[instrument=xylophone,note=20,powered=true]: minecraft:note_block[instrument=harp,note=20,powered=true] - minecraft:note_block[instrument=xylophone,note=21,powered=true]: minecraft:note_block[instrument=harp,note=21,powered=true] - minecraft:note_block[instrument=xylophone,note=22,powered=true]: minecraft:note_block[instrument=harp,note=22,powered=true] - minecraft:note_block[instrument=xylophone,note=23,powered=true]: minecraft:note_block[instrument=harp,note=23,powered=true] - minecraft:note_block[instrument=xylophone,note=24,powered=true]: minecraft:note_block[instrument=harp,note=24,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=0,powered=false]: minecraft:note_block[instrument=harp,note=0,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=1,powered=false]: minecraft:note_block[instrument=harp,note=1,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=2,powered=false]: minecraft:note_block[instrument=harp,note=2,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=3,powered=false]: minecraft:note_block[instrument=harp,note=3,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=4,powered=false]: minecraft:note_block[instrument=harp,note=4,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=5,powered=false]: minecraft:note_block[instrument=harp,note=5,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=6,powered=false]: minecraft:note_block[instrument=harp,note=6,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=7,powered=false]: minecraft:note_block[instrument=harp,note=7,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=8,powered=false]: minecraft:note_block[instrument=harp,note=8,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=9,powered=false]: minecraft:note_block[instrument=harp,note=9,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=10,powered=false]: minecraft:note_block[instrument=harp,note=10,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=11,powered=false]: minecraft:note_block[instrument=harp,note=11,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=12,powered=false]: minecraft:note_block[instrument=harp,note=12,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=13,powered=false]: minecraft:note_block[instrument=harp,note=13,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=14,powered=false]: minecraft:note_block[instrument=harp,note=14,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=15,powered=false]: minecraft:note_block[instrument=harp,note=15,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=16,powered=false]: minecraft:note_block[instrument=harp,note=16,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=17,powered=false]: minecraft:note_block[instrument=harp,note=17,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=18,powered=false]: minecraft:note_block[instrument=harp,note=18,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=19,powered=false]: minecraft:note_block[instrument=harp,note=19,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=20,powered=false]: minecraft:note_block[instrument=harp,note=20,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=21,powered=false]: minecraft:note_block[instrument=harp,note=21,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=22,powered=false]: minecraft:note_block[instrument=harp,note=22,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=23,powered=false]: minecraft:note_block[instrument=harp,note=23,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=24,powered=false]: minecraft:note_block[instrument=harp,note=24,powered=false] - minecraft:note_block[instrument=iron_xylophone,note=0,powered=true]: minecraft:note_block[instrument=harp,note=0,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=1,powered=true]: minecraft:note_block[instrument=harp,note=1,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=2,powered=true]: minecraft:note_block[instrument=harp,note=2,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=3,powered=true]: minecraft:note_block[instrument=harp,note=3,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=4,powered=true]: minecraft:note_block[instrument=harp,note=4,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=5,powered=true]: minecraft:note_block[instrument=harp,note=5,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=6,powered=true]: minecraft:note_block[instrument=harp,note=6,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=7,powered=true]: minecraft:note_block[instrument=harp,note=7,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=8,powered=true]: minecraft:note_block[instrument=harp,note=8,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=9,powered=true]: minecraft:note_block[instrument=harp,note=9,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=10,powered=true]: minecraft:note_block[instrument=harp,note=10,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=11,powered=true]: minecraft:note_block[instrument=harp,note=11,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=12,powered=true]: minecraft:note_block[instrument=harp,note=12,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=13,powered=true]: minecraft:note_block[instrument=harp,note=13,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=14,powered=true]: minecraft:note_block[instrument=harp,note=14,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=15,powered=true]: minecraft:note_block[instrument=harp,note=15,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=16,powered=true]: minecraft:note_block[instrument=harp,note=16,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=17,powered=true]: minecraft:note_block[instrument=harp,note=17,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=18,powered=true]: minecraft:note_block[instrument=harp,note=18,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=19,powered=true]: minecraft:note_block[instrument=harp,note=19,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=20,powered=true]: minecraft:note_block[instrument=harp,note=20,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=21,powered=true]: minecraft:note_block[instrument=harp,note=21,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=22,powered=true]: minecraft:note_block[instrument=harp,note=22,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=23,powered=true]: minecraft:note_block[instrument=harp,note=23,powered=true] - minecraft:note_block[instrument=iron_xylophone,note=24,powered=true]: minecraft:note_block[instrument=harp,note=24,powered=true] - minecraft:note_block[instrument=cow_bell,note=0,powered=false]: minecraft:note_block[instrument=harp,note=0,powered=false] - minecraft:note_block[instrument=cow_bell,note=1,powered=false]: minecraft:note_block[instrument=harp,note=1,powered=false] - minecraft:note_block[instrument=cow_bell,note=2,powered=false]: minecraft:note_block[instrument=harp,note=2,powered=false] - minecraft:note_block[instrument=cow_bell,note=3,powered=false]: minecraft:note_block[instrument=harp,note=3,powered=false] - minecraft:note_block[instrument=cow_bell,note=4,powered=false]: minecraft:note_block[instrument=harp,note=4,powered=false] - minecraft:note_block[instrument=cow_bell,note=5,powered=false]: minecraft:note_block[instrument=harp,note=5,powered=false] - minecraft:note_block[instrument=cow_bell,note=6,powered=false]: minecraft:note_block[instrument=harp,note=6,powered=false] - minecraft:note_block[instrument=cow_bell,note=7,powered=false]: minecraft:note_block[instrument=harp,note=7,powered=false] - minecraft:note_block[instrument=cow_bell,note=8,powered=false]: minecraft:note_block[instrument=harp,note=8,powered=false] - minecraft:note_block[instrument=cow_bell,note=9,powered=false]: minecraft:note_block[instrument=harp,note=9,powered=false] - minecraft:note_block[instrument=cow_bell,note=10,powered=false]: minecraft:note_block[instrument=harp,note=10,powered=false] - minecraft:note_block[instrument=cow_bell,note=11,powered=false]: minecraft:note_block[instrument=harp,note=11,powered=false] - minecraft:note_block[instrument=cow_bell,note=12,powered=false]: minecraft:note_block[instrument=harp,note=12,powered=false] - minecraft:note_block[instrument=cow_bell,note=13,powered=false]: minecraft:note_block[instrument=harp,note=13,powered=false] - minecraft:note_block[instrument=cow_bell,note=14,powered=false]: minecraft:note_block[instrument=harp,note=14,powered=false] - minecraft:note_block[instrument=cow_bell,note=15,powered=false]: minecraft:note_block[instrument=harp,note=15,powered=false] - minecraft:note_block[instrument=cow_bell,note=16,powered=false]: minecraft:note_block[instrument=harp,note=16,powered=false] - minecraft:note_block[instrument=cow_bell,note=17,powered=false]: minecraft:note_block[instrument=harp,note=17,powered=false] - minecraft:note_block[instrument=cow_bell,note=18,powered=false]: minecraft:note_block[instrument=harp,note=18,powered=false] - minecraft:note_block[instrument=cow_bell,note=19,powered=false]: minecraft:note_block[instrument=harp,note=19,powered=false] - minecraft:note_block[instrument=cow_bell,note=20,powered=false]: minecraft:note_block[instrument=harp,note=20,powered=false] - minecraft:note_block[instrument=cow_bell,note=21,powered=false]: minecraft:note_block[instrument=harp,note=21,powered=false] - minecraft:note_block[instrument=cow_bell,note=22,powered=false]: minecraft:note_block[instrument=harp,note=22,powered=false] - minecraft:note_block[instrument=cow_bell,note=23,powered=false]: minecraft:note_block[instrument=harp,note=23,powered=false] - minecraft:note_block[instrument=cow_bell,note=24,powered=false]: minecraft:note_block[instrument=harp,note=24,powered=false] - minecraft:note_block[instrument=cow_bell,note=0,powered=true]: minecraft:note_block[instrument=harp,note=0,powered=true] - minecraft:note_block[instrument=cow_bell,note=1,powered=true]: minecraft:note_block[instrument=harp,note=1,powered=true] - minecraft:note_block[instrument=cow_bell,note=2,powered=true]: minecraft:note_block[instrument=harp,note=2,powered=true] - minecraft:note_block[instrument=cow_bell,note=3,powered=true]: minecraft:note_block[instrument=harp,note=3,powered=true] - minecraft:note_block[instrument=cow_bell,note=4,powered=true]: minecraft:note_block[instrument=harp,note=4,powered=true] - minecraft:note_block[instrument=cow_bell,note=5,powered=true]: minecraft:note_block[instrument=harp,note=5,powered=true] - minecraft:note_block[instrument=cow_bell,note=6,powered=true]: minecraft:note_block[instrument=harp,note=6,powered=true] - minecraft:note_block[instrument=cow_bell,note=7,powered=true]: minecraft:note_block[instrument=harp,note=7,powered=true] - minecraft:note_block[instrument=cow_bell,note=8,powered=true]: minecraft:note_block[instrument=harp,note=8,powered=true] - minecraft:note_block[instrument=cow_bell,note=9,powered=true]: minecraft:note_block[instrument=harp,note=9,powered=true] - minecraft:note_block[instrument=cow_bell,note=10,powered=true]: minecraft:note_block[instrument=harp,note=10,powered=true] - minecraft:note_block[instrument=cow_bell,note=11,powered=true]: minecraft:note_block[instrument=harp,note=11,powered=true] - minecraft:note_block[instrument=cow_bell,note=12,powered=true]: minecraft:note_block[instrument=harp,note=12,powered=true] - minecraft:note_block[instrument=cow_bell,note=13,powered=true]: minecraft:note_block[instrument=harp,note=13,powered=true] - minecraft:note_block[instrument=cow_bell,note=14,powered=true]: minecraft:note_block[instrument=harp,note=14,powered=true] - minecraft:note_block[instrument=cow_bell,note=15,powered=true]: minecraft:note_block[instrument=harp,note=15,powered=true] - minecraft:note_block[instrument=cow_bell,note=16,powered=true]: minecraft:note_block[instrument=harp,note=16,powered=true] - minecraft:note_block[instrument=cow_bell,note=17,powered=true]: minecraft:note_block[instrument=harp,note=17,powered=true] - minecraft:note_block[instrument=cow_bell,note=18,powered=true]: minecraft:note_block[instrument=harp,note=18,powered=true] - minecraft:note_block[instrument=cow_bell,note=19,powered=true]: minecraft:note_block[instrument=harp,note=19,powered=true] - minecraft:note_block[instrument=cow_bell,note=20,powered=true]: minecraft:note_block[instrument=harp,note=20,powered=true] - minecraft:note_block[instrument=cow_bell,note=21,powered=true]: minecraft:note_block[instrument=harp,note=21,powered=true] - minecraft:note_block[instrument=cow_bell,note=22,powered=true]: minecraft:note_block[instrument=harp,note=22,powered=true] - minecraft:note_block[instrument=cow_bell,note=23,powered=true]: minecraft:note_block[instrument=harp,note=23,powered=true] - minecraft:note_block[instrument=cow_bell,note=24,powered=true]: minecraft:note_block[instrument=harp,note=24,powered=true] - minecraft:note_block[instrument=didgeridoo,note=0,powered=false]: minecraft:note_block[instrument=harp,note=0,powered=false] - minecraft:note_block[instrument=didgeridoo,note=1,powered=false]: minecraft:note_block[instrument=harp,note=1,powered=false] - minecraft:note_block[instrument=didgeridoo,note=2,powered=false]: minecraft:note_block[instrument=harp,note=2,powered=false] - minecraft:note_block[instrument=didgeridoo,note=3,powered=false]: minecraft:note_block[instrument=harp,note=3,powered=false] - minecraft:note_block[instrument=didgeridoo,note=4,powered=false]: minecraft:note_block[instrument=harp,note=4,powered=false] - minecraft:note_block[instrument=didgeridoo,note=5,powered=false]: minecraft:note_block[instrument=harp,note=5,powered=false] - minecraft:note_block[instrument=didgeridoo,note=6,powered=false]: minecraft:note_block[instrument=harp,note=6,powered=false] - minecraft:note_block[instrument=didgeridoo,note=7,powered=false]: minecraft:note_block[instrument=harp,note=7,powered=false] - minecraft:note_block[instrument=didgeridoo,note=8,powered=false]: minecraft:note_block[instrument=harp,note=8,powered=false] - minecraft:note_block[instrument=didgeridoo,note=9,powered=false]: minecraft:note_block[instrument=harp,note=9,powered=false] - minecraft:note_block[instrument=didgeridoo,note=10,powered=false]: minecraft:note_block[instrument=harp,note=10,powered=false] - minecraft:note_block[instrument=didgeridoo,note=11,powered=false]: minecraft:note_block[instrument=harp,note=11,powered=false] - minecraft:note_block[instrument=didgeridoo,note=12,powered=false]: minecraft:note_block[instrument=harp,note=12,powered=false] - minecraft:note_block[instrument=didgeridoo,note=13,powered=false]: minecraft:note_block[instrument=harp,note=13,powered=false] - minecraft:note_block[instrument=didgeridoo,note=14,powered=false]: minecraft:note_block[instrument=harp,note=14,powered=false] - minecraft:note_block[instrument=didgeridoo,note=15,powered=false]: minecraft:note_block[instrument=harp,note=15,powered=false] - minecraft:note_block[instrument=didgeridoo,note=16,powered=false]: minecraft:note_block[instrument=harp,note=16,powered=false] - minecraft:note_block[instrument=didgeridoo,note=17,powered=false]: minecraft:note_block[instrument=harp,note=17,powered=false] - minecraft:note_block[instrument=didgeridoo,note=18,powered=false]: minecraft:note_block[instrument=harp,note=18,powered=false] - minecraft:note_block[instrument=didgeridoo,note=19,powered=false]: minecraft:note_block[instrument=harp,note=19,powered=false] - minecraft:note_block[instrument=didgeridoo,note=20,powered=false]: minecraft:note_block[instrument=harp,note=20,powered=false] - minecraft:note_block[instrument=didgeridoo,note=21,powered=false]: minecraft:note_block[instrument=harp,note=21,powered=false] - minecraft:note_block[instrument=didgeridoo,note=22,powered=false]: minecraft:note_block[instrument=harp,note=22,powered=false] - minecraft:note_block[instrument=didgeridoo,note=23,powered=false]: minecraft:note_block[instrument=harp,note=23,powered=false] - minecraft:note_block[instrument=didgeridoo,note=24,powered=false]: minecraft:note_block[instrument=harp,note=24,powered=false] - minecraft:note_block[instrument=didgeridoo,note=0,powered=true]: minecraft:note_block[instrument=harp,note=0,powered=true] - minecraft:note_block[instrument=didgeridoo,note=1,powered=true]: minecraft:note_block[instrument=harp,note=1,powered=true] - minecraft:note_block[instrument=didgeridoo,note=2,powered=true]: minecraft:note_block[instrument=harp,note=2,powered=true] - minecraft:note_block[instrument=didgeridoo,note=3,powered=true]: minecraft:note_block[instrument=harp,note=3,powered=true] - minecraft:note_block[instrument=didgeridoo,note=4,powered=true]: minecraft:note_block[instrument=harp,note=4,powered=true] - minecraft:note_block[instrument=didgeridoo,note=5,powered=true]: minecraft:note_block[instrument=harp,note=5,powered=true] - minecraft:note_block[instrument=didgeridoo,note=6,powered=true]: minecraft:note_block[instrument=harp,note=6,powered=true] - minecraft:note_block[instrument=didgeridoo,note=7,powered=true]: minecraft:note_block[instrument=harp,note=7,powered=true] - minecraft:note_block[instrument=didgeridoo,note=8,powered=true]: minecraft:note_block[instrument=harp,note=8,powered=true] - minecraft:note_block[instrument=didgeridoo,note=9,powered=true]: minecraft:note_block[instrument=harp,note=9,powered=true] - minecraft:note_block[instrument=didgeridoo,note=10,powered=true]: minecraft:note_block[instrument=harp,note=10,powered=true] - minecraft:note_block[instrument=didgeridoo,note=11,powered=true]: minecraft:note_block[instrument=harp,note=11,powered=true] - minecraft:note_block[instrument=didgeridoo,note=12,powered=true]: minecraft:note_block[instrument=harp,note=12,powered=true] - minecraft:note_block[instrument=didgeridoo,note=13,powered=true]: minecraft:note_block[instrument=harp,note=13,powered=true] - minecraft:note_block[instrument=didgeridoo,note=14,powered=true]: minecraft:note_block[instrument=harp,note=14,powered=true] - minecraft:note_block[instrument=didgeridoo,note=15,powered=true]: minecraft:note_block[instrument=harp,note=15,powered=true] - minecraft:note_block[instrument=didgeridoo,note=16,powered=true]: minecraft:note_block[instrument=harp,note=16,powered=true] - minecraft:note_block[instrument=didgeridoo,note=17,powered=true]: minecraft:note_block[instrument=harp,note=17,powered=true] - minecraft:note_block[instrument=didgeridoo,note=18,powered=true]: minecraft:note_block[instrument=harp,note=18,powered=true] - minecraft:note_block[instrument=didgeridoo,note=19,powered=true]: minecraft:note_block[instrument=harp,note=19,powered=true] - minecraft:note_block[instrument=didgeridoo,note=20,powered=true]: minecraft:note_block[instrument=harp,note=20,powered=true] - minecraft:note_block[instrument=didgeridoo,note=21,powered=true]: minecraft:note_block[instrument=harp,note=21,powered=true] - minecraft:note_block[instrument=didgeridoo,note=22,powered=true]: minecraft:note_block[instrument=harp,note=22,powered=true] - minecraft:note_block[instrument=didgeridoo,note=23,powered=true]: minecraft:note_block[instrument=harp,note=23,powered=true] - minecraft:note_block[instrument=didgeridoo,note=24,powered=true]: minecraft:note_block[instrument=harp,note=24,powered=true] - minecraft:note_block[instrument=bit,note=0,powered=false]: minecraft:note_block[instrument=harp,note=0,powered=false] - minecraft:note_block[instrument=bit,note=1,powered=false]: minecraft:note_block[instrument=harp,note=1,powered=false] - minecraft:note_block[instrument=bit,note=2,powered=false]: minecraft:note_block[instrument=harp,note=2,powered=false] - minecraft:note_block[instrument=bit,note=3,powered=false]: minecraft:note_block[instrument=harp,note=3,powered=false] - minecraft:note_block[instrument=bit,note=4,powered=false]: minecraft:note_block[instrument=harp,note=4,powered=false] - minecraft:note_block[instrument=bit,note=5,powered=false]: minecraft:note_block[instrument=harp,note=5,powered=false] - minecraft:note_block[instrument=bit,note=6,powered=false]: minecraft:note_block[instrument=harp,note=6,powered=false] - minecraft:note_block[instrument=bit,note=7,powered=false]: minecraft:note_block[instrument=harp,note=7,powered=false] - minecraft:note_block[instrument=bit,note=8,powered=false]: minecraft:note_block[instrument=harp,note=8,powered=false] - minecraft:note_block[instrument=bit,note=9,powered=false]: minecraft:note_block[instrument=harp,note=9,powered=false] - minecraft:note_block[instrument=bit,note=10,powered=false]: minecraft:note_block[instrument=harp,note=10,powered=false] - minecraft:note_block[instrument=bit,note=11,powered=false]: minecraft:note_block[instrument=harp,note=11,powered=false] - minecraft:note_block[instrument=bit,note=12,powered=false]: minecraft:note_block[instrument=harp,note=12,powered=false] - minecraft:note_block[instrument=bit,note=13,powered=false]: minecraft:note_block[instrument=harp,note=13,powered=false] - minecraft:note_block[instrument=bit,note=14,powered=false]: minecraft:note_block[instrument=harp,note=14,powered=false] - minecraft:note_block[instrument=bit,note=15,powered=false]: minecraft:note_block[instrument=harp,note=15,powered=false] - minecraft:note_block[instrument=bit,note=16,powered=false]: minecraft:note_block[instrument=harp,note=16,powered=false] - minecraft:note_block[instrument=bit,note=17,powered=false]: minecraft:note_block[instrument=harp,note=17,powered=false] - minecraft:note_block[instrument=bit,note=18,powered=false]: minecraft:note_block[instrument=harp,note=18,powered=false] - minecraft:note_block[instrument=bit,note=19,powered=false]: minecraft:note_block[instrument=harp,note=19,powered=false] - minecraft:note_block[instrument=bit,note=20,powered=false]: minecraft:note_block[instrument=harp,note=20,powered=false] - minecraft:note_block[instrument=bit,note=21,powered=false]: minecraft:note_block[instrument=harp,note=21,powered=false] - minecraft:note_block[instrument=bit,note=22,powered=false]: minecraft:note_block[instrument=harp,note=22,powered=false] - minecraft:note_block[instrument=bit,note=23,powered=false]: minecraft:note_block[instrument=harp,note=23,powered=false] - minecraft:note_block[instrument=bit,note=24,powered=false]: minecraft:note_block[instrument=harp,note=24,powered=false] - minecraft:note_block[instrument=bit,note=0,powered=true]: minecraft:note_block[instrument=harp,note=0,powered=true] - minecraft:note_block[instrument=bit,note=1,powered=true]: minecraft:note_block[instrument=harp,note=1,powered=true] - minecraft:note_block[instrument=bit,note=2,powered=true]: minecraft:note_block[instrument=harp,note=2,powered=true] - minecraft:note_block[instrument=bit,note=3,powered=true]: minecraft:note_block[instrument=harp,note=3,powered=true] - minecraft:note_block[instrument=bit,note=4,powered=true]: minecraft:note_block[instrument=harp,note=4,powered=true] - minecraft:note_block[instrument=bit,note=5,powered=true]: minecraft:note_block[instrument=harp,note=5,powered=true] - minecraft:note_block[instrument=bit,note=6,powered=true]: minecraft:note_block[instrument=harp,note=6,powered=true] - minecraft:note_block[instrument=bit,note=7,powered=true]: minecraft:note_block[instrument=harp,note=7,powered=true] - minecraft:note_block[instrument=bit,note=8,powered=true]: minecraft:note_block[instrument=harp,note=8,powered=true] - minecraft:note_block[instrument=bit,note=9,powered=true]: minecraft:note_block[instrument=harp,note=9,powered=true] - minecraft:note_block[instrument=bit,note=10,powered=true]: minecraft:note_block[instrument=harp,note=10,powered=true] - minecraft:note_block[instrument=bit,note=11,powered=true]: minecraft:note_block[instrument=harp,note=11,powered=true] - minecraft:note_block[instrument=bit,note=12,powered=true]: minecraft:note_block[instrument=harp,note=12,powered=true] - minecraft:note_block[instrument=bit,note=13,powered=true]: minecraft:note_block[instrument=harp,note=13,powered=true] - minecraft:note_block[instrument=bit,note=14,powered=true]: minecraft:note_block[instrument=harp,note=14,powered=true] - minecraft:note_block[instrument=bit,note=15,powered=true]: minecraft:note_block[instrument=harp,note=15,powered=true] - minecraft:note_block[instrument=bit,note=16,powered=true]: minecraft:note_block[instrument=harp,note=16,powered=true] - minecraft:note_block[instrument=bit,note=17,powered=true]: minecraft:note_block[instrument=harp,note=17,powered=true] - minecraft:note_block[instrument=bit,note=18,powered=true]: minecraft:note_block[instrument=harp,note=18,powered=true] - minecraft:note_block[instrument=bit,note=19,powered=true]: minecraft:note_block[instrument=harp,note=19,powered=true] - minecraft:note_block[instrument=bit,note=20,powered=true]: minecraft:note_block[instrument=harp,note=20,powered=true] - minecraft:note_block[instrument=bit,note=21,powered=true]: minecraft:note_block[instrument=harp,note=21,powered=true] - minecraft:note_block[instrument=bit,note=22,powered=true]: minecraft:note_block[instrument=harp,note=22,powered=true] - minecraft:note_block[instrument=bit,note=23,powered=true]: minecraft:note_block[instrument=harp,note=23,powered=true] - minecraft:note_block[instrument=bit,note=24,powered=true]: minecraft:note_block[instrument=harp,note=24,powered=true] - minecraft:note_block[instrument=banjo,note=0,powered=false]: minecraft:note_block[instrument=harp,note=0,powered=false] - minecraft:note_block[instrument=banjo,note=1,powered=false]: minecraft:note_block[instrument=harp,note=1,powered=false] - minecraft:note_block[instrument=banjo,note=2,powered=false]: minecraft:note_block[instrument=harp,note=2,powered=false] - minecraft:note_block[instrument=banjo,note=3,powered=false]: minecraft:note_block[instrument=harp,note=3,powered=false] - minecraft:note_block[instrument=banjo,note=4,powered=false]: minecraft:note_block[instrument=harp,note=4,powered=false] - minecraft:note_block[instrument=banjo,note=5,powered=false]: minecraft:note_block[instrument=harp,note=5,powered=false] - minecraft:note_block[instrument=banjo,note=6,powered=false]: minecraft:note_block[instrument=harp,note=6,powered=false] - minecraft:note_block[instrument=banjo,note=7,powered=false]: minecraft:note_block[instrument=harp,note=7,powered=false] - minecraft:note_block[instrument=banjo,note=8,powered=false]: minecraft:note_block[instrument=harp,note=8,powered=false] - minecraft:note_block[instrument=banjo,note=9,powered=false]: minecraft:note_block[instrument=harp,note=9,powered=false] - minecraft:note_block[instrument=banjo,note=10,powered=false]: minecraft:note_block[instrument=harp,note=10,powered=false] - minecraft:note_block[instrument=banjo,note=11,powered=false]: minecraft:note_block[instrument=harp,note=11,powered=false] - minecraft:note_block[instrument=banjo,note=12,powered=false]: minecraft:note_block[instrument=harp,note=12,powered=false] - minecraft:note_block[instrument=banjo,note=13,powered=false]: minecraft:note_block[instrument=harp,note=13,powered=false] - minecraft:note_block[instrument=banjo,note=14,powered=false]: minecraft:note_block[instrument=harp,note=14,powered=false] - minecraft:note_block[instrument=banjo,note=15,powered=false]: minecraft:note_block[instrument=harp,note=15,powered=false] - minecraft:note_block[instrument=banjo,note=16,powered=false]: minecraft:note_block[instrument=harp,note=16,powered=false] - minecraft:note_block[instrument=banjo,note=17,powered=false]: minecraft:note_block[instrument=harp,note=17,powered=false] - minecraft:note_block[instrument=banjo,note=18,powered=false]: minecraft:note_block[instrument=harp,note=18,powered=false] - minecraft:note_block[instrument=banjo,note=19,powered=false]: minecraft:note_block[instrument=harp,note=19,powered=false] - minecraft:note_block[instrument=banjo,note=20,powered=false]: minecraft:note_block[instrument=harp,note=20,powered=false] - minecraft:note_block[instrument=banjo,note=21,powered=false]: minecraft:note_block[instrument=harp,note=21,powered=false] - minecraft:note_block[instrument=banjo,note=22,powered=false]: minecraft:note_block[instrument=harp,note=22,powered=false] - minecraft:note_block[instrument=banjo,note=23,powered=false]: minecraft:note_block[instrument=harp,note=23,powered=false] - minecraft:note_block[instrument=banjo,note=24,powered=false]: minecraft:note_block[instrument=harp,note=24,powered=false] - minecraft:note_block[instrument=banjo,note=0,powered=true]: minecraft:note_block[instrument=harp,note=0,powered=true] - minecraft:note_block[instrument=banjo,note=1,powered=true]: minecraft:note_block[instrument=harp,note=1,powered=true] - minecraft:note_block[instrument=banjo,note=2,powered=true]: minecraft:note_block[instrument=harp,note=2,powered=true] - minecraft:note_block[instrument=banjo,note=3,powered=true]: minecraft:note_block[instrument=harp,note=3,powered=true] - minecraft:note_block[instrument=banjo,note=4,powered=true]: minecraft:note_block[instrument=harp,note=4,powered=true] - minecraft:note_block[instrument=banjo,note=5,powered=true]: minecraft:note_block[instrument=harp,note=5,powered=true] - minecraft:note_block[instrument=banjo,note=6,powered=true]: minecraft:note_block[instrument=harp,note=6,powered=true] - minecraft:note_block[instrument=banjo,note=7,powered=true]: minecraft:note_block[instrument=harp,note=7,powered=true] - minecraft:note_block[instrument=banjo,note=8,powered=true]: minecraft:note_block[instrument=harp,note=8,powered=true] - minecraft:note_block[instrument=banjo,note=9,powered=true]: minecraft:note_block[instrument=harp,note=9,powered=true] - minecraft:note_block[instrument=banjo,note=10,powered=true]: minecraft:note_block[instrument=harp,note=10,powered=true] - minecraft:note_block[instrument=banjo,note=11,powered=true]: minecraft:note_block[instrument=harp,note=11,powered=true] - minecraft:note_block[instrument=banjo,note=12,powered=true]: minecraft:note_block[instrument=harp,note=12,powered=true] - minecraft:note_block[instrument=banjo,note=13,powered=true]: minecraft:note_block[instrument=harp,note=13,powered=true] - minecraft:note_block[instrument=banjo,note=14,powered=true]: minecraft:note_block[instrument=harp,note=14,powered=true] - minecraft:note_block[instrument=banjo,note=15,powered=true]: minecraft:note_block[instrument=harp,note=15,powered=true] - minecraft:note_block[instrument=banjo,note=16,powered=true]: minecraft:note_block[instrument=harp,note=16,powered=true] - minecraft:note_block[instrument=banjo,note=17,powered=true]: minecraft:note_block[instrument=harp,note=17,powered=true] - minecraft:note_block[instrument=banjo,note=18,powered=true]: minecraft:note_block[instrument=harp,note=18,powered=true] - minecraft:note_block[instrument=banjo,note=19,powered=true]: minecraft:note_block[instrument=harp,note=19,powered=true] - minecraft:note_block[instrument=banjo,note=20,powered=true]: minecraft:note_block[instrument=harp,note=20,powered=true] - minecraft:note_block[instrument=banjo,note=21,powered=true]: minecraft:note_block[instrument=harp,note=21,powered=true] - minecraft:note_block[instrument=banjo,note=22,powered=true]: minecraft:note_block[instrument=harp,note=22,powered=true] - minecraft:note_block[instrument=banjo,note=23,powered=true]: minecraft:note_block[instrument=harp,note=23,powered=true] - minecraft:note_block[instrument=banjo,note=24,powered=true]: minecraft:note_block[instrument=harp,note=24,powered=true] - minecraft:note_block[instrument=pling,note=0,powered=false]: minecraft:note_block[instrument=harp,note=0,powered=false] - minecraft:note_block[instrument=pling,note=1,powered=false]: minecraft:note_block[instrument=harp,note=1,powered=false] - minecraft:note_block[instrument=pling,note=2,powered=false]: minecraft:note_block[instrument=harp,note=2,powered=false] - minecraft:note_block[instrument=pling,note=3,powered=false]: minecraft:note_block[instrument=harp,note=3,powered=false] - minecraft:note_block[instrument=pling,note=4,powered=false]: minecraft:note_block[instrument=harp,note=4,powered=false] - minecraft:note_block[instrument=pling,note=5,powered=false]: minecraft:note_block[instrument=harp,note=5,powered=false] - minecraft:note_block[instrument=pling,note=6,powered=false]: minecraft:note_block[instrument=harp,note=6,powered=false] - minecraft:note_block[instrument=pling,note=7,powered=false]: minecraft:note_block[instrument=harp,note=7,powered=false] - minecraft:note_block[instrument=pling,note=8,powered=false]: minecraft:note_block[instrument=harp,note=8,powered=false] - minecraft:note_block[instrument=pling,note=9,powered=false]: minecraft:note_block[instrument=harp,note=9,powered=false] - minecraft:note_block[instrument=pling,note=10,powered=false]: minecraft:note_block[instrument=harp,note=10,powered=false] - minecraft:note_block[instrument=pling,note=11,powered=false]: minecraft:note_block[instrument=harp,note=11,powered=false] - minecraft:note_block[instrument=pling,note=12,powered=false]: minecraft:note_block[instrument=harp,note=12,powered=false] - minecraft:note_block[instrument=pling,note=13,powered=false]: minecraft:note_block[instrument=harp,note=13,powered=false] - minecraft:note_block[instrument=pling,note=14,powered=false]: minecraft:note_block[instrument=harp,note=14,powered=false] - minecraft:note_block[instrument=pling,note=15,powered=false]: minecraft:note_block[instrument=harp,note=15,powered=false] - minecraft:note_block[instrument=pling,note=16,powered=false]: minecraft:note_block[instrument=harp,note=16,powered=false] - minecraft:note_block[instrument=pling,note=17,powered=false]: minecraft:note_block[instrument=harp,note=17,powered=false] - minecraft:note_block[instrument=pling,note=18,powered=false]: minecraft:note_block[instrument=harp,note=18,powered=false] - minecraft:note_block[instrument=pling,note=19,powered=false]: minecraft:note_block[instrument=harp,note=19,powered=false] - minecraft:note_block[instrument=pling,note=20,powered=false]: minecraft:note_block[instrument=harp,note=20,powered=false] - minecraft:note_block[instrument=pling,note=21,powered=false]: minecraft:note_block[instrument=harp,note=21,powered=false] - minecraft:note_block[instrument=pling,note=22,powered=false]: minecraft:note_block[instrument=harp,note=22,powered=false] - minecraft:note_block[instrument=pling,note=23,powered=false]: minecraft:note_block[instrument=harp,note=23,powered=false] - minecraft:note_block[instrument=pling,note=24,powered=false]: minecraft:note_block[instrument=harp,note=24,powered=false] - minecraft:note_block[instrument=pling,note=0,powered=true]: minecraft:note_block[instrument=harp,note=0,powered=true] - minecraft:note_block[instrument=pling,note=1,powered=true]: minecraft:note_block[instrument=harp,note=1,powered=true] - minecraft:note_block[instrument=pling,note=2,powered=true]: minecraft:note_block[instrument=harp,note=2,powered=true] - minecraft:note_block[instrument=pling,note=3,powered=true]: minecraft:note_block[instrument=harp,note=3,powered=true] - minecraft:note_block[instrument=pling,note=4,powered=true]: minecraft:note_block[instrument=harp,note=4,powered=true] - minecraft:note_block[instrument=pling,note=5,powered=true]: minecraft:note_block[instrument=harp,note=5,powered=true] - minecraft:note_block[instrument=pling,note=6,powered=true]: minecraft:note_block[instrument=harp,note=6,powered=true] - minecraft:note_block[instrument=pling,note=7,powered=true]: minecraft:note_block[instrument=harp,note=7,powered=true] - minecraft:note_block[instrument=pling,note=8,powered=true]: minecraft:note_block[instrument=harp,note=8,powered=true] - minecraft:note_block[instrument=pling,note=9,powered=true]: minecraft:note_block[instrument=harp,note=9,powered=true] - minecraft:note_block[instrument=pling,note=10,powered=true]: minecraft:note_block[instrument=harp,note=10,powered=true] - minecraft:note_block[instrument=pling,note=11,powered=true]: minecraft:note_block[instrument=harp,note=11,powered=true] - minecraft:note_block[instrument=pling,note=12,powered=true]: minecraft:note_block[instrument=harp,note=12,powered=true] - minecraft:note_block[instrument=pling,note=13,powered=true]: minecraft:note_block[instrument=harp,note=13,powered=true] - minecraft:note_block[instrument=pling,note=14,powered=true]: minecraft:note_block[instrument=harp,note=14,powered=true] - minecraft:note_block[instrument=pling,note=15,powered=true]: minecraft:note_block[instrument=harp,note=15,powered=true] - minecraft:note_block[instrument=pling,note=16,powered=true]: minecraft:note_block[instrument=harp,note=16,powered=true] - minecraft:note_block[instrument=pling,note=17,powered=true]: minecraft:note_block[instrument=harp,note=17,powered=true] - minecraft:note_block[instrument=pling,note=18,powered=true]: minecraft:note_block[instrument=harp,note=18,powered=true] - minecraft:note_block[instrument=pling,note=19,powered=true]: minecraft:note_block[instrument=harp,note=19,powered=true] - minecraft:note_block[instrument=pling,note=20,powered=true]: minecraft:note_block[instrument=harp,note=20,powered=true] - minecraft:note_block[instrument=pling,note=21,powered=true]: minecraft:note_block[instrument=harp,note=21,powered=true] - minecraft:note_block[instrument=pling,note=22,powered=true]: minecraft:note_block[instrument=harp,note=22,powered=true] - minecraft:note_block[instrument=pling,note=23,powered=true]: minecraft:note_block[instrument=harp,note=23,powered=true] - minecraft:note_block[instrument=pling,note=24,powered=true]: minecraft:note_block[instrument=harp,note=24,powered=true] - minecraft:note_block[instrument=zombie,note=0,powered=false]: minecraft:note_block[instrument=harp,note=0,powered=false] - minecraft:note_block[instrument=zombie,note=1,powered=false]: minecraft:note_block[instrument=harp,note=1,powered=false] - minecraft:note_block[instrument=zombie,note=2,powered=false]: minecraft:note_block[instrument=harp,note=2,powered=false] - minecraft:note_block[instrument=zombie,note=3,powered=false]: minecraft:note_block[instrument=harp,note=3,powered=false] - minecraft:note_block[instrument=zombie,note=4,powered=false]: minecraft:note_block[instrument=harp,note=4,powered=false] - minecraft:note_block[instrument=zombie,note=5,powered=false]: minecraft:note_block[instrument=harp,note=5,powered=false] - minecraft:note_block[instrument=zombie,note=6,powered=false]: minecraft:note_block[instrument=harp,note=6,powered=false] - minecraft:note_block[instrument=zombie,note=7,powered=false]: minecraft:note_block[instrument=harp,note=7,powered=false] - minecraft:note_block[instrument=zombie,note=8,powered=false]: minecraft:note_block[instrument=harp,note=8,powered=false] - minecraft:note_block[instrument=zombie,note=9,powered=false]: minecraft:note_block[instrument=harp,note=9,powered=false] - minecraft:note_block[instrument=zombie,note=10,powered=false]: minecraft:note_block[instrument=harp,note=10,powered=false] - minecraft:note_block[instrument=zombie,note=11,powered=false]: minecraft:note_block[instrument=harp,note=11,powered=false] - minecraft:note_block[instrument=zombie,note=12,powered=false]: minecraft:note_block[instrument=harp,note=12,powered=false] - minecraft:note_block[instrument=zombie,note=13,powered=false]: minecraft:note_block[instrument=harp,note=13,powered=false] - minecraft:note_block[instrument=zombie,note=14,powered=false]: minecraft:note_block[instrument=harp,note=14,powered=false] - minecraft:note_block[instrument=zombie,note=15,powered=false]: minecraft:note_block[instrument=harp,note=15,powered=false] - minecraft:note_block[instrument=zombie,note=16,powered=false]: minecraft:note_block[instrument=harp,note=16,powered=false] - minecraft:note_block[instrument=zombie,note=17,powered=false]: minecraft:note_block[instrument=harp,note=17,powered=false] - minecraft:note_block[instrument=zombie,note=18,powered=false]: minecraft:note_block[instrument=harp,note=18,powered=false] - minecraft:note_block[instrument=zombie,note=19,powered=false]: minecraft:note_block[instrument=harp,note=19,powered=false] - minecraft:note_block[instrument=zombie,note=20,powered=false]: minecraft:note_block[instrument=harp,note=20,powered=false] - minecraft:note_block[instrument=zombie,note=21,powered=false]: minecraft:note_block[instrument=harp,note=21,powered=false] - minecraft:note_block[instrument=zombie,note=22,powered=false]: minecraft:note_block[instrument=harp,note=22,powered=false] - minecraft:note_block[instrument=zombie,note=23,powered=false]: minecraft:note_block[instrument=harp,note=23,powered=false] - minecraft:note_block[instrument=zombie,note=24,powered=false]: minecraft:note_block[instrument=harp,note=24,powered=false] - minecraft:note_block[instrument=zombie,note=0,powered=true]: minecraft:note_block[instrument=harp,note=0,powered=true] - minecraft:note_block[instrument=zombie,note=1,powered=true]: minecraft:note_block[instrument=harp,note=1,powered=true] - minecraft:note_block[instrument=zombie,note=2,powered=true]: minecraft:note_block[instrument=harp,note=2,powered=true] - minecraft:note_block[instrument=zombie,note=3,powered=true]: minecraft:note_block[instrument=harp,note=3,powered=true] - minecraft:note_block[instrument=zombie,note=4,powered=true]: minecraft:note_block[instrument=harp,note=4,powered=true] - minecraft:note_block[instrument=zombie,note=5,powered=true]: minecraft:note_block[instrument=harp,note=5,powered=true] - minecraft:note_block[instrument=zombie,note=6,powered=true]: minecraft:note_block[instrument=harp,note=6,powered=true] - minecraft:note_block[instrument=zombie,note=7,powered=true]: minecraft:note_block[instrument=harp,note=7,powered=true] - minecraft:note_block[instrument=zombie,note=8,powered=true]: minecraft:note_block[instrument=harp,note=8,powered=true] - minecraft:note_block[instrument=zombie,note=9,powered=true]: minecraft:note_block[instrument=harp,note=9,powered=true] - minecraft:note_block[instrument=zombie,note=10,powered=true]: minecraft:note_block[instrument=harp,note=10,powered=true] - minecraft:note_block[instrument=zombie,note=11,powered=true]: minecraft:note_block[instrument=harp,note=11,powered=true] - minecraft:note_block[instrument=zombie,note=12,powered=true]: minecraft:note_block[instrument=harp,note=12,powered=true] - minecraft:note_block[instrument=zombie,note=13,powered=true]: minecraft:note_block[instrument=harp,note=13,powered=true] - minecraft:note_block[instrument=zombie,note=14,powered=true]: minecraft:note_block[instrument=harp,note=14,powered=true] - minecraft:note_block[instrument=zombie,note=15,powered=true]: minecraft:note_block[instrument=harp,note=15,powered=true] - minecraft:note_block[instrument=zombie,note=16,powered=true]: minecraft:note_block[instrument=harp,note=16,powered=true] - minecraft:note_block[instrument=zombie,note=17,powered=true]: minecraft:note_block[instrument=harp,note=17,powered=true] - minecraft:note_block[instrument=zombie,note=18,powered=true]: minecraft:note_block[instrument=harp,note=18,powered=true] - minecraft:note_block[instrument=zombie,note=19,powered=true]: minecraft:note_block[instrument=harp,note=19,powered=true] - minecraft:note_block[instrument=zombie,note=20,powered=true]: minecraft:note_block[instrument=harp,note=20,powered=true] - minecraft:note_block[instrument=zombie,note=21,powered=true]: minecraft:note_block[instrument=harp,note=21,powered=true] - minecraft:note_block[instrument=zombie,note=22,powered=true]: minecraft:note_block[instrument=harp,note=22,powered=true] - minecraft:note_block[instrument=zombie,note=23,powered=true]: minecraft:note_block[instrument=harp,note=23,powered=true] - minecraft:note_block[instrument=zombie,note=24,powered=true]: minecraft:note_block[instrument=harp,note=24,powered=true] - minecraft:note_block[instrument=skeleton,note=0,powered=false]: minecraft:note_block[instrument=harp,note=0,powered=false] - minecraft:note_block[instrument=skeleton,note=1,powered=false]: minecraft:note_block[instrument=harp,note=1,powered=false] - minecraft:note_block[instrument=skeleton,note=2,powered=false]: minecraft:note_block[instrument=harp,note=2,powered=false] - minecraft:note_block[instrument=skeleton,note=3,powered=false]: minecraft:note_block[instrument=harp,note=3,powered=false] - minecraft:note_block[instrument=skeleton,note=4,powered=false]: minecraft:note_block[instrument=harp,note=4,powered=false] - minecraft:note_block[instrument=skeleton,note=5,powered=false]: minecraft:note_block[instrument=harp,note=5,powered=false] - minecraft:note_block[instrument=skeleton,note=6,powered=false]: minecraft:note_block[instrument=harp,note=6,powered=false] - minecraft:note_block[instrument=skeleton,note=7,powered=false]: minecraft:note_block[instrument=harp,note=7,powered=false] - minecraft:note_block[instrument=skeleton,note=8,powered=false]: minecraft:note_block[instrument=harp,note=8,powered=false] - minecraft:note_block[instrument=skeleton,note=9,powered=false]: minecraft:note_block[instrument=harp,note=9,powered=false] - minecraft:note_block[instrument=skeleton,note=10,powered=false]: minecraft:note_block[instrument=harp,note=10,powered=false] - minecraft:note_block[instrument=skeleton,note=11,powered=false]: minecraft:note_block[instrument=harp,note=11,powered=false] - minecraft:note_block[instrument=skeleton,note=12,powered=false]: minecraft:note_block[instrument=harp,note=12,powered=false] - minecraft:note_block[instrument=skeleton,note=13,powered=false]: minecraft:note_block[instrument=harp,note=13,powered=false] - minecraft:note_block[instrument=skeleton,note=14,powered=false]: minecraft:note_block[instrument=harp,note=14,powered=false] - minecraft:note_block[instrument=skeleton,note=15,powered=false]: minecraft:note_block[instrument=harp,note=15,powered=false] - minecraft:note_block[instrument=skeleton,note=16,powered=false]: minecraft:note_block[instrument=harp,note=16,powered=false] - minecraft:note_block[instrument=skeleton,note=17,powered=false]: minecraft:note_block[instrument=harp,note=17,powered=false] - minecraft:note_block[instrument=skeleton,note=18,powered=false]: minecraft:note_block[instrument=harp,note=18,powered=false] - minecraft:note_block[instrument=skeleton,note=19,powered=false]: minecraft:note_block[instrument=harp,note=19,powered=false] - minecraft:note_block[instrument=skeleton,note=20,powered=false]: minecraft:note_block[instrument=harp,note=20,powered=false] - minecraft:note_block[instrument=skeleton,note=21,powered=false]: minecraft:note_block[instrument=harp,note=21,powered=false] - minecraft:note_block[instrument=skeleton,note=22,powered=false]: minecraft:note_block[instrument=harp,note=22,powered=false] - minecraft:note_block[instrument=skeleton,note=23,powered=false]: minecraft:note_block[instrument=harp,note=23,powered=false] - minecraft:note_block[instrument=skeleton,note=24,powered=false]: minecraft:note_block[instrument=harp,note=24,powered=false] - minecraft:note_block[instrument=skeleton,note=0,powered=true]: minecraft:note_block[instrument=harp,note=0,powered=true] - minecraft:note_block[instrument=skeleton,note=1,powered=true]: minecraft:note_block[instrument=harp,note=1,powered=true] - minecraft:note_block[instrument=skeleton,note=2,powered=true]: minecraft:note_block[instrument=harp,note=2,powered=true] - minecraft:note_block[instrument=skeleton,note=3,powered=true]: minecraft:note_block[instrument=harp,note=3,powered=true] - minecraft:note_block[instrument=skeleton,note=4,powered=true]: minecraft:note_block[instrument=harp,note=4,powered=true] - minecraft:note_block[instrument=skeleton,note=5,powered=true]: minecraft:note_block[instrument=harp,note=5,powered=true] - minecraft:note_block[instrument=skeleton,note=6,powered=true]: minecraft:note_block[instrument=harp,note=6,powered=true] - minecraft:note_block[instrument=skeleton,note=7,powered=true]: minecraft:note_block[instrument=harp,note=7,powered=true] - minecraft:note_block[instrument=skeleton,note=8,powered=true]: minecraft:note_block[instrument=harp,note=8,powered=true] - minecraft:note_block[instrument=skeleton,note=9,powered=true]: minecraft:note_block[instrument=harp,note=9,powered=true] - minecraft:note_block[instrument=skeleton,note=10,powered=true]: minecraft:note_block[instrument=harp,note=10,powered=true] - minecraft:note_block[instrument=skeleton,note=11,powered=true]: minecraft:note_block[instrument=harp,note=11,powered=true] - minecraft:note_block[instrument=skeleton,note=12,powered=true]: minecraft:note_block[instrument=harp,note=12,powered=true] - minecraft:note_block[instrument=skeleton,note=13,powered=true]: minecraft:note_block[instrument=harp,note=13,powered=true] - minecraft:note_block[instrument=skeleton,note=14,powered=true]: minecraft:note_block[instrument=harp,note=14,powered=true] - minecraft:note_block[instrument=skeleton,note=15,powered=true]: minecraft:note_block[instrument=harp,note=15,powered=true] - minecraft:note_block[instrument=skeleton,note=16,powered=true]: minecraft:note_block[instrument=harp,note=16,powered=true] - minecraft:note_block[instrument=skeleton,note=17,powered=true]: minecraft:note_block[instrument=harp,note=17,powered=true] - minecraft:note_block[instrument=skeleton,note=18,powered=true]: minecraft:note_block[instrument=harp,note=18,powered=true] - minecraft:note_block[instrument=skeleton,note=19,powered=true]: minecraft:note_block[instrument=harp,note=19,powered=true] - minecraft:note_block[instrument=skeleton,note=20,powered=true]: minecraft:note_block[instrument=harp,note=20,powered=true] - minecraft:note_block[instrument=skeleton,note=21,powered=true]: minecraft:note_block[instrument=harp,note=21,powered=true] - minecraft:note_block[instrument=skeleton,note=22,powered=true]: minecraft:note_block[instrument=harp,note=22,powered=true] - minecraft:note_block[instrument=skeleton,note=23,powered=true]: minecraft:note_block[instrument=harp,note=23,powered=true] - minecraft:note_block[instrument=skeleton,note=24,powered=true]: minecraft:note_block[instrument=harp,note=24,powered=true] - minecraft:note_block[instrument=creeper,note=0,powered=false]: minecraft:note_block[instrument=harp,note=0,powered=false] - minecraft:note_block[instrument=creeper,note=1,powered=false]: minecraft:note_block[instrument=harp,note=1,powered=false] - minecraft:note_block[instrument=creeper,note=2,powered=false]: minecraft:note_block[instrument=harp,note=2,powered=false] - minecraft:note_block[instrument=creeper,note=3,powered=false]: minecraft:note_block[instrument=harp,note=3,powered=false] - minecraft:note_block[instrument=creeper,note=4,powered=false]: minecraft:note_block[instrument=harp,note=4,powered=false] - minecraft:note_block[instrument=creeper,note=5,powered=false]: minecraft:note_block[instrument=harp,note=5,powered=false] - minecraft:note_block[instrument=creeper,note=6,powered=false]: minecraft:note_block[instrument=harp,note=6,powered=false] - minecraft:note_block[instrument=creeper,note=7,powered=false]: minecraft:note_block[instrument=harp,note=7,powered=false] - minecraft:note_block[instrument=creeper,note=8,powered=false]: minecraft:note_block[instrument=harp,note=8,powered=false] - minecraft:note_block[instrument=creeper,note=9,powered=false]: minecraft:note_block[instrument=harp,note=9,powered=false] - minecraft:note_block[instrument=creeper,note=10,powered=false]: minecraft:note_block[instrument=harp,note=10,powered=false] - minecraft:note_block[instrument=creeper,note=11,powered=false]: minecraft:note_block[instrument=harp,note=11,powered=false] - minecraft:note_block[instrument=creeper,note=12,powered=false]: minecraft:note_block[instrument=harp,note=12,powered=false] - minecraft:note_block[instrument=creeper,note=13,powered=false]: minecraft:note_block[instrument=harp,note=13,powered=false] - minecraft:note_block[instrument=creeper,note=14,powered=false]: minecraft:note_block[instrument=harp,note=14,powered=false] - minecraft:note_block[instrument=creeper,note=15,powered=false]: minecraft:note_block[instrument=harp,note=15,powered=false] - minecraft:note_block[instrument=creeper,note=16,powered=false]: minecraft:note_block[instrument=harp,note=16,powered=false] - minecraft:note_block[instrument=creeper,note=17,powered=false]: minecraft:note_block[instrument=harp,note=17,powered=false] - minecraft:note_block[instrument=creeper,note=18,powered=false]: minecraft:note_block[instrument=harp,note=18,powered=false] - minecraft:note_block[instrument=creeper,note=19,powered=false]: minecraft:note_block[instrument=harp,note=19,powered=false] - minecraft:note_block[instrument=creeper,note=20,powered=false]: minecraft:note_block[instrument=harp,note=20,powered=false] - minecraft:note_block[instrument=creeper,note=21,powered=false]: minecraft:note_block[instrument=harp,note=21,powered=false] - minecraft:note_block[instrument=creeper,note=22,powered=false]: minecraft:note_block[instrument=harp,note=22,powered=false] - minecraft:note_block[instrument=creeper,note=23,powered=false]: minecraft:note_block[instrument=harp,note=23,powered=false] - minecraft:note_block[instrument=creeper,note=24,powered=false]: minecraft:note_block[instrument=harp,note=24,powered=false] - minecraft:note_block[instrument=creeper,note=0,powered=true]: minecraft:note_block[instrument=harp,note=0,powered=true] - minecraft:note_block[instrument=creeper,note=1,powered=true]: minecraft:note_block[instrument=harp,note=1,powered=true] - minecraft:note_block[instrument=creeper,note=2,powered=true]: minecraft:note_block[instrument=harp,note=2,powered=true] - minecraft:note_block[instrument=creeper,note=3,powered=true]: minecraft:note_block[instrument=harp,note=3,powered=true] - minecraft:note_block[instrument=creeper,note=4,powered=true]: minecraft:note_block[instrument=harp,note=4,powered=true] - minecraft:note_block[instrument=creeper,note=5,powered=true]: minecraft:note_block[instrument=harp,note=5,powered=true] - minecraft:note_block[instrument=creeper,note=6,powered=true]: minecraft:note_block[instrument=harp,note=6,powered=true] - minecraft:note_block[instrument=creeper,note=7,powered=true]: minecraft:note_block[instrument=harp,note=7,powered=true] - minecraft:note_block[instrument=creeper,note=8,powered=true]: minecraft:note_block[instrument=harp,note=8,powered=true] - minecraft:note_block[instrument=creeper,note=9,powered=true]: minecraft:note_block[instrument=harp,note=9,powered=true] - minecraft:note_block[instrument=creeper,note=10,powered=true]: minecraft:note_block[instrument=harp,note=10,powered=true] - minecraft:note_block[instrument=creeper,note=11,powered=true]: minecraft:note_block[instrument=harp,note=11,powered=true] - minecraft:note_block[instrument=creeper,note=12,powered=true]: minecraft:note_block[instrument=harp,note=12,powered=true] - minecraft:note_block[instrument=creeper,note=13,powered=true]: minecraft:note_block[instrument=harp,note=13,powered=true] - minecraft:note_block[instrument=creeper,note=14,powered=true]: minecraft:note_block[instrument=harp,note=14,powered=true] - minecraft:note_block[instrument=creeper,note=15,powered=true]: minecraft:note_block[instrument=harp,note=15,powered=true] - minecraft:note_block[instrument=creeper,note=16,powered=true]: minecraft:note_block[instrument=harp,note=16,powered=true] - minecraft:note_block[instrument=creeper,note=17,powered=true]: minecraft:note_block[instrument=harp,note=17,powered=true] - minecraft:note_block[instrument=creeper,note=18,powered=true]: minecraft:note_block[instrument=harp,note=18,powered=true] - minecraft:note_block[instrument=creeper,note=19,powered=true]: minecraft:note_block[instrument=harp,note=19,powered=true] - minecraft:note_block[instrument=creeper,note=20,powered=true]: minecraft:note_block[instrument=harp,note=20,powered=true] - minecraft:note_block[instrument=creeper,note=21,powered=true]: minecraft:note_block[instrument=harp,note=21,powered=true] - minecraft:note_block[instrument=creeper,note=22,powered=true]: minecraft:note_block[instrument=harp,note=22,powered=true] - minecraft:note_block[instrument=creeper,note=23,powered=true]: minecraft:note_block[instrument=harp,note=23,powered=true] - minecraft:note_block[instrument=creeper,note=24,powered=true]: minecraft:note_block[instrument=harp,note=24,powered=true] - minecraft:note_block[instrument=dragon,note=0,powered=false]: minecraft:note_block[instrument=harp,note=0,powered=false] - minecraft:note_block[instrument=dragon,note=1,powered=false]: minecraft:note_block[instrument=harp,note=1,powered=false] - minecraft:note_block[instrument=dragon,note=2,powered=false]: minecraft:note_block[instrument=harp,note=2,powered=false] - minecraft:note_block[instrument=dragon,note=3,powered=false]: minecraft:note_block[instrument=harp,note=3,powered=false] - minecraft:note_block[instrument=dragon,note=4,powered=false]: minecraft:note_block[instrument=harp,note=4,powered=false] - minecraft:note_block[instrument=dragon,note=5,powered=false]: minecraft:note_block[instrument=harp,note=5,powered=false] - minecraft:note_block[instrument=dragon,note=6,powered=false]: minecraft:note_block[instrument=harp,note=6,powered=false] - minecraft:note_block[instrument=dragon,note=7,powered=false]: minecraft:note_block[instrument=harp,note=7,powered=false] - minecraft:note_block[instrument=dragon,note=8,powered=false]: minecraft:note_block[instrument=harp,note=8,powered=false] - minecraft:note_block[instrument=dragon,note=9,powered=false]: minecraft:note_block[instrument=harp,note=9,powered=false] - minecraft:note_block[instrument=dragon,note=10,powered=false]: minecraft:note_block[instrument=harp,note=10,powered=false] - minecraft:note_block[instrument=dragon,note=11,powered=false]: minecraft:note_block[instrument=harp,note=11,powered=false] - minecraft:note_block[instrument=dragon,note=12,powered=false]: minecraft:note_block[instrument=harp,note=12,powered=false] - minecraft:note_block[instrument=dragon,note=13,powered=false]: minecraft:note_block[instrument=harp,note=13,powered=false] - minecraft:note_block[instrument=dragon,note=14,powered=false]: minecraft:note_block[instrument=harp,note=14,powered=false] - minecraft:note_block[instrument=dragon,note=15,powered=false]: minecraft:note_block[instrument=harp,note=15,powered=false] - minecraft:note_block[instrument=dragon,note=16,powered=false]: minecraft:note_block[instrument=harp,note=16,powered=false] - minecraft:note_block[instrument=dragon,note=17,powered=false]: minecraft:note_block[instrument=harp,note=17,powered=false] - minecraft:note_block[instrument=dragon,note=18,powered=false]: minecraft:note_block[instrument=harp,note=18,powered=false] - minecraft:note_block[instrument=dragon,note=19,powered=false]: minecraft:note_block[instrument=harp,note=19,powered=false] - minecraft:note_block[instrument=dragon,note=20,powered=false]: minecraft:note_block[instrument=harp,note=20,powered=false] - minecraft:note_block[instrument=dragon,note=21,powered=false]: minecraft:note_block[instrument=harp,note=21,powered=false] - minecraft:note_block[instrument=dragon,note=22,powered=false]: minecraft:note_block[instrument=harp,note=22,powered=false] - minecraft:note_block[instrument=dragon,note=23,powered=false]: minecraft:note_block[instrument=harp,note=23,powered=false] - minecraft:note_block[instrument=dragon,note=24,powered=false]: minecraft:note_block[instrument=harp,note=24,powered=false] - minecraft:note_block[instrument=dragon,note=0,powered=true]: minecraft:note_block[instrument=harp,note=0,powered=true] - minecraft:note_block[instrument=dragon,note=1,powered=true]: minecraft:note_block[instrument=harp,note=1,powered=true] - minecraft:note_block[instrument=dragon,note=2,powered=true]: minecraft:note_block[instrument=harp,note=2,powered=true] - minecraft:note_block[instrument=dragon,note=3,powered=true]: minecraft:note_block[instrument=harp,note=3,powered=true] - minecraft:note_block[instrument=dragon,note=4,powered=true]: minecraft:note_block[instrument=harp,note=4,powered=true] - minecraft:note_block[instrument=dragon,note=5,powered=true]: minecraft:note_block[instrument=harp,note=5,powered=true] - minecraft:note_block[instrument=dragon,note=6,powered=true]: minecraft:note_block[instrument=harp,note=6,powered=true] - minecraft:note_block[instrument=dragon,note=7,powered=true]: minecraft:note_block[instrument=harp,note=7,powered=true] - minecraft:note_block[instrument=dragon,note=8,powered=true]: minecraft:note_block[instrument=harp,note=8,powered=true] - minecraft:note_block[instrument=dragon,note=9,powered=true]: minecraft:note_block[instrument=harp,note=9,powered=true] - minecraft:note_block[instrument=dragon,note=10,powered=true]: minecraft:note_block[instrument=harp,note=10,powered=true] - minecraft:note_block[instrument=dragon,note=11,powered=true]: minecraft:note_block[instrument=harp,note=11,powered=true] - minecraft:note_block[instrument=dragon,note=12,powered=true]: minecraft:note_block[instrument=harp,note=12,powered=true] - minecraft:note_block[instrument=dragon,note=13,powered=true]: minecraft:note_block[instrument=harp,note=13,powered=true] - minecraft:note_block[instrument=dragon,note=14,powered=true]: minecraft:note_block[instrument=harp,note=14,powered=true] - minecraft:note_block[instrument=dragon,note=15,powered=true]: minecraft:note_block[instrument=harp,note=15,powered=true] - minecraft:note_block[instrument=dragon,note=16,powered=true]: minecraft:note_block[instrument=harp,note=16,powered=true] - minecraft:note_block[instrument=dragon,note=17,powered=true]: minecraft:note_block[instrument=harp,note=17,powered=true] - minecraft:note_block[instrument=dragon,note=18,powered=true]: minecraft:note_block[instrument=harp,note=18,powered=true] - minecraft:note_block[instrument=dragon,note=19,powered=true]: minecraft:note_block[instrument=harp,note=19,powered=true] - minecraft:note_block[instrument=dragon,note=20,powered=true]: minecraft:note_block[instrument=harp,note=20,powered=true] - minecraft:note_block[instrument=dragon,note=21,powered=true]: minecraft:note_block[instrument=harp,note=21,powered=true] - minecraft:note_block[instrument=dragon,note=22,powered=true]: minecraft:note_block[instrument=harp,note=22,powered=true] - minecraft:note_block[instrument=dragon,note=23,powered=true]: minecraft:note_block[instrument=harp,note=23,powered=true] - minecraft:note_block[instrument=dragon,note=24,powered=true]: minecraft:note_block[instrument=harp,note=24,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=0,powered=false]: minecraft:note_block[instrument=harp,note=0,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=1,powered=false]: minecraft:note_block[instrument=harp,note=1,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=2,powered=false]: minecraft:note_block[instrument=harp,note=2,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=3,powered=false]: minecraft:note_block[instrument=harp,note=3,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=4,powered=false]: minecraft:note_block[instrument=harp,note=4,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=5,powered=false]: minecraft:note_block[instrument=harp,note=5,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=6,powered=false]: minecraft:note_block[instrument=harp,note=6,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=7,powered=false]: minecraft:note_block[instrument=harp,note=7,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=8,powered=false]: minecraft:note_block[instrument=harp,note=8,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=9,powered=false]: minecraft:note_block[instrument=harp,note=9,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=10,powered=false]: minecraft:note_block[instrument=harp,note=10,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=11,powered=false]: minecraft:note_block[instrument=harp,note=11,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=12,powered=false]: minecraft:note_block[instrument=harp,note=12,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=13,powered=false]: minecraft:note_block[instrument=harp,note=13,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=14,powered=false]: minecraft:note_block[instrument=harp,note=14,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=15,powered=false]: minecraft:note_block[instrument=harp,note=15,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=16,powered=false]: minecraft:note_block[instrument=harp,note=16,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=17,powered=false]: minecraft:note_block[instrument=harp,note=17,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=18,powered=false]: minecraft:note_block[instrument=harp,note=18,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=19,powered=false]: minecraft:note_block[instrument=harp,note=19,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=20,powered=false]: minecraft:note_block[instrument=harp,note=20,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=21,powered=false]: minecraft:note_block[instrument=harp,note=21,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=22,powered=false]: minecraft:note_block[instrument=harp,note=22,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=23,powered=false]: minecraft:note_block[instrument=harp,note=23,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=24,powered=false]: minecraft:note_block[instrument=harp,note=24,powered=false] - minecraft:note_block[instrument=wither_skeleton,note=0,powered=true]: minecraft:note_block[instrument=harp,note=0,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=1,powered=true]: minecraft:note_block[instrument=harp,note=1,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=2,powered=true]: minecraft:note_block[instrument=harp,note=2,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=3,powered=true]: minecraft:note_block[instrument=harp,note=3,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=4,powered=true]: minecraft:note_block[instrument=harp,note=4,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=5,powered=true]: minecraft:note_block[instrument=harp,note=5,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=6,powered=true]: minecraft:note_block[instrument=harp,note=6,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=7,powered=true]: minecraft:note_block[instrument=harp,note=7,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=8,powered=true]: minecraft:note_block[instrument=harp,note=8,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=9,powered=true]: minecraft:note_block[instrument=harp,note=9,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=10,powered=true]: minecraft:note_block[instrument=harp,note=10,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=11,powered=true]: minecraft:note_block[instrument=harp,note=11,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=12,powered=true]: minecraft:note_block[instrument=harp,note=12,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=13,powered=true]: minecraft:note_block[instrument=harp,note=13,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=14,powered=true]: minecraft:note_block[instrument=harp,note=14,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=15,powered=true]: minecraft:note_block[instrument=harp,note=15,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=16,powered=true]: minecraft:note_block[instrument=harp,note=16,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=17,powered=true]: minecraft:note_block[instrument=harp,note=17,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=18,powered=true]: minecraft:note_block[instrument=harp,note=18,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=19,powered=true]: minecraft:note_block[instrument=harp,note=19,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=20,powered=true]: minecraft:note_block[instrument=harp,note=20,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=21,powered=true]: minecraft:note_block[instrument=harp,note=21,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=22,powered=true]: minecraft:note_block[instrument=harp,note=22,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=23,powered=true]: minecraft:note_block[instrument=harp,note=23,powered=true] - minecraft:note_block[instrument=wither_skeleton,note=24,powered=true]: minecraft:note_block[instrument=harp,note=24,powered=true] - minecraft:note_block[instrument=piglin,note=0,powered=false]: minecraft:note_block[instrument=harp,note=0,powered=false] - minecraft:note_block[instrument=piglin,note=1,powered=false]: minecraft:note_block[instrument=harp,note=1,powered=false] - minecraft:note_block[instrument=piglin,note=2,powered=false]: minecraft:note_block[instrument=harp,note=2,powered=false] - minecraft:note_block[instrument=piglin,note=3,powered=false]: minecraft:note_block[instrument=harp,note=3,powered=false] - minecraft:note_block[instrument=piglin,note=4,powered=false]: minecraft:note_block[instrument=harp,note=4,powered=false] - minecraft:note_block[instrument=piglin,note=5,powered=false]: minecraft:note_block[instrument=harp,note=5,powered=false] - minecraft:note_block[instrument=piglin,note=6,powered=false]: minecraft:note_block[instrument=harp,note=6,powered=false] - minecraft:note_block[instrument=piglin,note=7,powered=false]: minecraft:note_block[instrument=harp,note=7,powered=false] - minecraft:note_block[instrument=piglin,note=8,powered=false]: minecraft:note_block[instrument=harp,note=8,powered=false] - minecraft:note_block[instrument=piglin,note=9,powered=false]: minecraft:note_block[instrument=harp,note=9,powered=false] - minecraft:note_block[instrument=piglin,note=10,powered=false]: minecraft:note_block[instrument=harp,note=10,powered=false] - minecraft:note_block[instrument=piglin,note=11,powered=false]: minecraft:note_block[instrument=harp,note=11,powered=false] - minecraft:note_block[instrument=piglin,note=12,powered=false]: minecraft:note_block[instrument=harp,note=12,powered=false] - minecraft:note_block[instrument=piglin,note=13,powered=false]: minecraft:note_block[instrument=harp,note=13,powered=false] - minecraft:note_block[instrument=piglin,note=14,powered=false]: minecraft:note_block[instrument=harp,note=14,powered=false] - minecraft:note_block[instrument=piglin,note=15,powered=false]: minecraft:note_block[instrument=harp,note=15,powered=false] - minecraft:note_block[instrument=piglin,note=16,powered=false]: minecraft:note_block[instrument=harp,note=16,powered=false] - minecraft:note_block[instrument=piglin,note=17,powered=false]: minecraft:note_block[instrument=harp,note=17,powered=false] - minecraft:note_block[instrument=piglin,note=18,powered=false]: minecraft:note_block[instrument=harp,note=18,powered=false] - minecraft:note_block[instrument=piglin,note=19,powered=false]: minecraft:note_block[instrument=harp,note=19,powered=false] - minecraft:note_block[instrument=piglin,note=20,powered=false]: minecraft:note_block[instrument=harp,note=20,powered=false] - minecraft:note_block[instrument=piglin,note=21,powered=false]: minecraft:note_block[instrument=harp,note=21,powered=false] - minecraft:note_block[instrument=piglin,note=22,powered=false]: minecraft:note_block[instrument=harp,note=22,powered=false] - minecraft:note_block[instrument=piglin,note=23,powered=false]: minecraft:note_block[instrument=harp,note=23,powered=false] - minecraft:note_block[instrument=piglin,note=24,powered=false]: minecraft:note_block[instrument=harp,note=24,powered=false] - minecraft:note_block[instrument=piglin,note=0,powered=true]: minecraft:note_block[instrument=harp,note=0,powered=true] - minecraft:note_block[instrument=piglin,note=1,powered=true]: minecraft:note_block[instrument=harp,note=1,powered=true] - minecraft:note_block[instrument=piglin,note=2,powered=true]: minecraft:note_block[instrument=harp,note=2,powered=true] - minecraft:note_block[instrument=piglin,note=3,powered=true]: minecraft:note_block[instrument=harp,note=3,powered=true] - minecraft:note_block[instrument=piglin,note=4,powered=true]: minecraft:note_block[instrument=harp,note=4,powered=true] - minecraft:note_block[instrument=piglin,note=5,powered=true]: minecraft:note_block[instrument=harp,note=5,powered=true] - minecraft:note_block[instrument=piglin,note=6,powered=true]: minecraft:note_block[instrument=harp,note=6,powered=true] - minecraft:note_block[instrument=piglin,note=7,powered=true]: minecraft:note_block[instrument=harp,note=7,powered=true] - minecraft:note_block[instrument=piglin,note=8,powered=true]: minecraft:note_block[instrument=harp,note=8,powered=true] - minecraft:note_block[instrument=piglin,note=9,powered=true]: minecraft:note_block[instrument=harp,note=9,powered=true] - minecraft:note_block[instrument=piglin,note=10,powered=true]: minecraft:note_block[instrument=harp,note=10,powered=true] - minecraft:note_block[instrument=piglin,note=11,powered=true]: minecraft:note_block[instrument=harp,note=11,powered=true] - minecraft:note_block[instrument=piglin,note=12,powered=true]: minecraft:note_block[instrument=harp,note=12,powered=true] - minecraft:note_block[instrument=piglin,note=13,powered=true]: minecraft:note_block[instrument=harp,note=13,powered=true] - minecraft:note_block[instrument=piglin,note=14,powered=true]: minecraft:note_block[instrument=harp,note=14,powered=true] - minecraft:note_block[instrument=piglin,note=15,powered=true]: minecraft:note_block[instrument=harp,note=15,powered=true] - minecraft:note_block[instrument=piglin,note=16,powered=true]: minecraft:note_block[instrument=harp,note=16,powered=true] - minecraft:note_block[instrument=piglin,note=17,powered=true]: minecraft:note_block[instrument=harp,note=17,powered=true] - minecraft:note_block[instrument=piglin,note=18,powered=true]: minecraft:note_block[instrument=harp,note=18,powered=true] - minecraft:note_block[instrument=piglin,note=19,powered=true]: minecraft:note_block[instrument=harp,note=19,powered=true] - minecraft:note_block[instrument=piglin,note=20,powered=true]: minecraft:note_block[instrument=harp,note=20,powered=true] - minecraft:note_block[instrument=piglin,note=21,powered=true]: minecraft:note_block[instrument=harp,note=21,powered=true] - minecraft:note_block[instrument=piglin,note=22,powered=true]: minecraft:note_block[instrument=harp,note=22,powered=true] - minecraft:note_block[instrument=piglin,note=23,powered=true]: minecraft:note_block[instrument=harp,note=23,powered=true] - minecraft:note_block[instrument=piglin,note=24,powered=true]: minecraft:note_block[instrument=harp,note=24,powered=true] - minecraft:note_block[instrument=custom_head,note=0,powered=false]: minecraft:note_block[instrument=harp,note=0,powered=false] - minecraft:note_block[instrument=custom_head,note=1,powered=false]: minecraft:note_block[instrument=harp,note=1,powered=false] - minecraft:note_block[instrument=custom_head,note=2,powered=false]: minecraft:note_block[instrument=harp,note=2,powered=false] - minecraft:note_block[instrument=custom_head,note=3,powered=false]: minecraft:note_block[instrument=harp,note=3,powered=false] - minecraft:note_block[instrument=custom_head,note=4,powered=false]: minecraft:note_block[instrument=harp,note=4,powered=false] - minecraft:note_block[instrument=custom_head,note=5,powered=false]: minecraft:note_block[instrument=harp,note=5,powered=false] - minecraft:note_block[instrument=custom_head,note=6,powered=false]: minecraft:note_block[instrument=harp,note=6,powered=false] - minecraft:note_block[instrument=custom_head,note=7,powered=false]: minecraft:note_block[instrument=harp,note=7,powered=false] - minecraft:note_block[instrument=custom_head,note=8,powered=false]: minecraft:note_block[instrument=harp,note=8,powered=false] - minecraft:note_block[instrument=custom_head,note=9,powered=false]: minecraft:note_block[instrument=harp,note=9,powered=false] - minecraft:note_block[instrument=custom_head,note=10,powered=false]: minecraft:note_block[instrument=harp,note=10,powered=false] - minecraft:note_block[instrument=custom_head,note=11,powered=false]: minecraft:note_block[instrument=harp,note=11,powered=false] - minecraft:note_block[instrument=custom_head,note=12,powered=false]: minecraft:note_block[instrument=harp,note=12,powered=false] - minecraft:note_block[instrument=custom_head,note=13,powered=false]: minecraft:note_block[instrument=harp,note=13,powered=false] - minecraft:note_block[instrument=custom_head,note=14,powered=false]: minecraft:note_block[instrument=harp,note=14,powered=false] - minecraft:note_block[instrument=custom_head,note=15,powered=false]: minecraft:note_block[instrument=harp,note=15,powered=false] - minecraft:note_block[instrument=custom_head,note=16,powered=false]: minecraft:note_block[instrument=harp,note=16,powered=false] - minecraft:note_block[instrument=custom_head,note=17,powered=false]: minecraft:note_block[instrument=harp,note=17,powered=false] - minecraft:note_block[instrument=custom_head,note=18,powered=false]: minecraft:note_block[instrument=harp,note=18,powered=false] - minecraft:note_block[instrument=custom_head,note=19,powered=false]: minecraft:note_block[instrument=harp,note=19,powered=false] - minecraft:note_block[instrument=custom_head,note=20,powered=false]: minecraft:note_block[instrument=harp,note=20,powered=false] - minecraft:note_block[instrument=custom_head,note=21,powered=false]: minecraft:note_block[instrument=harp,note=21,powered=false] - minecraft:note_block[instrument=custom_head,note=22,powered=false]: minecraft:note_block[instrument=harp,note=22,powered=false] - minecraft:note_block[instrument=custom_head,note=23,powered=false]: minecraft:note_block[instrument=harp,note=23,powered=false] - minecraft:note_block[instrument=custom_head,note=24,powered=false]: minecraft:note_block[instrument=harp,note=24,powered=false] - minecraft:note_block[instrument=custom_head,note=0,powered=true]: minecraft:note_block[instrument=harp,note=0,powered=true] - minecraft:note_block[instrument=custom_head,note=1,powered=true]: minecraft:note_block[instrument=harp,note=1,powered=true] - minecraft:note_block[instrument=custom_head,note=2,powered=true]: minecraft:note_block[instrument=harp,note=2,powered=true] - minecraft:note_block[instrument=custom_head,note=3,powered=true]: minecraft:note_block[instrument=harp,note=3,powered=true] - minecraft:note_block[instrument=custom_head,note=4,powered=true]: minecraft:note_block[instrument=harp,note=4,powered=true] - minecraft:note_block[instrument=custom_head,note=5,powered=true]: minecraft:note_block[instrument=harp,note=5,powered=true] - minecraft:note_block[instrument=custom_head,note=6,powered=true]: minecraft:note_block[instrument=harp,note=6,powered=true] - minecraft:note_block[instrument=custom_head,note=7,powered=true]: minecraft:note_block[instrument=harp,note=7,powered=true] - minecraft:note_block[instrument=custom_head,note=8,powered=true]: minecraft:note_block[instrument=harp,note=8,powered=true] - minecraft:note_block[instrument=custom_head,note=9,powered=true]: minecraft:note_block[instrument=harp,note=9,powered=true] - minecraft:note_block[instrument=custom_head,note=10,powered=true]: minecraft:note_block[instrument=harp,note=10,powered=true] - minecraft:note_block[instrument=custom_head,note=11,powered=true]: minecraft:note_block[instrument=harp,note=11,powered=true] - minecraft:note_block[instrument=custom_head,note=12,powered=true]: minecraft:note_block[instrument=harp,note=12,powered=true] - minecraft:note_block[instrument=custom_head,note=13,powered=true]: minecraft:note_block[instrument=harp,note=13,powered=true] - minecraft:note_block[instrument=custom_head,note=14,powered=true]: minecraft:note_block[instrument=harp,note=14,powered=true] - minecraft:note_block[instrument=custom_head,note=15,powered=true]: minecraft:note_block[instrument=harp,note=15,powered=true] - minecraft:note_block[instrument=custom_head,note=16,powered=true]: minecraft:note_block[instrument=harp,note=16,powered=true] - minecraft:note_block[instrument=custom_head,note=17,powered=true]: minecraft:note_block[instrument=harp,note=17,powered=true] - minecraft:note_block[instrument=custom_head,note=18,powered=true]: minecraft:note_block[instrument=harp,note=18,powered=true] - minecraft:note_block[instrument=custom_head,note=19,powered=true]: minecraft:note_block[instrument=harp,note=19,powered=true] - minecraft:note_block[instrument=custom_head,note=20,powered=true]: minecraft:note_block[instrument=harp,note=20,powered=true] - minecraft:note_block[instrument=custom_head,note=21,powered=true]: minecraft:note_block[instrument=harp,note=21,powered=true] - minecraft:note_block[instrument=custom_head,note=22,powered=true]: minecraft:note_block[instrument=harp,note=22,powered=true] - minecraft:note_block[instrument=custom_head,note=23,powered=true]: minecraft:note_block[instrument=harp,note=23,powered=true] - minecraft:note_block[instrument=custom_head,note=24,powered=true]: minecraft:note_block[instrument=harp,note=24,powered=true] + note_block[instrument=basedrum,note=0,powered=true]: note_block[instrument=harp,note=0,powered=true] + note_block[instrument=basedrum,note=0,powered=false]: note_block[instrument=harp,note=0,powered=false] + note_block[instrument=basedrum,note=1,powered=true]: note_block[instrument=harp,note=1,powered=true] + note_block[instrument=basedrum,note=1,powered=false]: note_block[instrument=harp,note=1,powered=false] + note_block[instrument=basedrum,note=2,powered=true]: note_block[instrument=harp,note=2,powered=true] + note_block[instrument=basedrum,note=2,powered=false]: note_block[instrument=harp,note=2,powered=false] + note_block[instrument=basedrum,note=3,powered=true]: note_block[instrument=harp,note=3,powered=true] + note_block[instrument=basedrum,note=3,powered=false]: note_block[instrument=harp,note=3,powered=false] + note_block[instrument=basedrum,note=4,powered=true]: note_block[instrument=harp,note=4,powered=true] + note_block[instrument=basedrum,note=4,powered=false]: note_block[instrument=harp,note=4,powered=false] + note_block[instrument=basedrum,note=5,powered=true]: note_block[instrument=harp,note=5,powered=true] + note_block[instrument=basedrum,note=5,powered=false]: note_block[instrument=harp,note=5,powered=false] + note_block[instrument=basedrum,note=6,powered=true]: note_block[instrument=harp,note=6,powered=true] + note_block[instrument=basedrum,note=6,powered=false]: note_block[instrument=harp,note=6,powered=false] + note_block[instrument=basedrum,note=7,powered=true]: note_block[instrument=harp,note=7,powered=true] + note_block[instrument=basedrum,note=7,powered=false]: note_block[instrument=harp,note=7,powered=false] + note_block[instrument=basedrum,note=8,powered=true]: note_block[instrument=harp,note=8,powered=true] + note_block[instrument=basedrum,note=8,powered=false]: note_block[instrument=harp,note=8,powered=false] + note_block[instrument=basedrum,note=9,powered=true]: note_block[instrument=harp,note=9,powered=true] + note_block[instrument=basedrum,note=9,powered=false]: note_block[instrument=harp,note=9,powered=false] + note_block[instrument=basedrum,note=10,powered=true]: note_block[instrument=harp,note=10,powered=true] + note_block[instrument=basedrum,note=10,powered=false]: note_block[instrument=harp,note=10,powered=false] + note_block[instrument=basedrum,note=11,powered=true]: note_block[instrument=harp,note=11,powered=true] + note_block[instrument=basedrum,note=11,powered=false]: note_block[instrument=harp,note=11,powered=false] + note_block[instrument=basedrum,note=12,powered=true]: note_block[instrument=harp,note=12,powered=true] + note_block[instrument=basedrum,note=12,powered=false]: note_block[instrument=harp,note=12,powered=false] + note_block[instrument=basedrum,note=13,powered=true]: note_block[instrument=harp,note=13,powered=true] + note_block[instrument=basedrum,note=13,powered=false]: note_block[instrument=harp,note=13,powered=false] + note_block[instrument=basedrum,note=14,powered=true]: note_block[instrument=harp,note=14,powered=true] + note_block[instrument=basedrum,note=14,powered=false]: note_block[instrument=harp,note=14,powered=false] + note_block[instrument=basedrum,note=15,powered=true]: note_block[instrument=harp,note=15,powered=true] + note_block[instrument=basedrum,note=15,powered=false]: note_block[instrument=harp,note=15,powered=false] + note_block[instrument=basedrum,note=16,powered=true]: note_block[instrument=harp,note=16,powered=true] + note_block[instrument=basedrum,note=16,powered=false]: note_block[instrument=harp,note=16,powered=false] + note_block[instrument=basedrum,note=17,powered=true]: note_block[instrument=harp,note=17,powered=true] + note_block[instrument=basedrum,note=17,powered=false]: note_block[instrument=harp,note=17,powered=false] + note_block[instrument=basedrum,note=18,powered=true]: note_block[instrument=harp,note=18,powered=true] + note_block[instrument=basedrum,note=18,powered=false]: note_block[instrument=harp,note=18,powered=false] + note_block[instrument=basedrum,note=19,powered=true]: note_block[instrument=harp,note=19,powered=true] + note_block[instrument=basedrum,note=19,powered=false]: note_block[instrument=harp,note=19,powered=false] + note_block[instrument=basedrum,note=20,powered=true]: note_block[instrument=harp,note=20,powered=true] + note_block[instrument=basedrum,note=20,powered=false]: note_block[instrument=harp,note=20,powered=false] + note_block[instrument=basedrum,note=21,powered=true]: note_block[instrument=harp,note=21,powered=true] + note_block[instrument=basedrum,note=21,powered=false]: note_block[instrument=harp,note=21,powered=false] + note_block[instrument=basedrum,note=22,powered=true]: note_block[instrument=harp,note=22,powered=true] + note_block[instrument=basedrum,note=22,powered=false]: note_block[instrument=harp,note=22,powered=false] + note_block[instrument=basedrum,note=23,powered=true]: note_block[instrument=harp,note=23,powered=true] + note_block[instrument=basedrum,note=23,powered=false]: note_block[instrument=harp,note=23,powered=false] + note_block[instrument=basedrum,note=24,powered=true]: note_block[instrument=harp,note=24,powered=true] + note_block[instrument=basedrum,note=24,powered=false]: note_block[instrument=harp,note=24,powered=false] + note_block[instrument=snare,note=0,powered=true]: note_block[instrument=harp,note=0,powered=true] + note_block[instrument=snare,note=0,powered=false]: note_block[instrument=harp,note=0,powered=false] + note_block[instrument=snare,note=1,powered=true]: note_block[instrument=harp,note=1,powered=true] + note_block[instrument=snare,note=1,powered=false]: note_block[instrument=harp,note=1,powered=false] + note_block[instrument=snare,note=2,powered=true]: note_block[instrument=harp,note=2,powered=true] + note_block[instrument=snare,note=2,powered=false]: note_block[instrument=harp,note=2,powered=false] + note_block[instrument=snare,note=3,powered=true]: note_block[instrument=harp,note=3,powered=true] + note_block[instrument=snare,note=3,powered=false]: note_block[instrument=harp,note=3,powered=false] + note_block[instrument=snare,note=4,powered=true]: note_block[instrument=harp,note=4,powered=true] + note_block[instrument=snare,note=4,powered=false]: note_block[instrument=harp,note=4,powered=false] + note_block[instrument=snare,note=5,powered=true]: note_block[instrument=harp,note=5,powered=true] + note_block[instrument=snare,note=5,powered=false]: note_block[instrument=harp,note=5,powered=false] + note_block[instrument=snare,note=6,powered=true]: note_block[instrument=harp,note=6,powered=true] + note_block[instrument=snare,note=6,powered=false]: note_block[instrument=harp,note=6,powered=false] + note_block[instrument=snare,note=7,powered=true]: note_block[instrument=harp,note=7,powered=true] + note_block[instrument=snare,note=7,powered=false]: note_block[instrument=harp,note=7,powered=false] + note_block[instrument=snare,note=8,powered=true]: note_block[instrument=harp,note=8,powered=true] + note_block[instrument=snare,note=8,powered=false]: note_block[instrument=harp,note=8,powered=false] + note_block[instrument=snare,note=9,powered=true]: note_block[instrument=harp,note=9,powered=true] + note_block[instrument=snare,note=9,powered=false]: note_block[instrument=harp,note=9,powered=false] + note_block[instrument=snare,note=10,powered=true]: note_block[instrument=harp,note=10,powered=true] + note_block[instrument=snare,note=10,powered=false]: note_block[instrument=harp,note=10,powered=false] + note_block[instrument=snare,note=11,powered=true]: note_block[instrument=harp,note=11,powered=true] + note_block[instrument=snare,note=11,powered=false]: note_block[instrument=harp,note=11,powered=false] + note_block[instrument=snare,note=12,powered=true]: note_block[instrument=harp,note=12,powered=true] + note_block[instrument=snare,note=12,powered=false]: note_block[instrument=harp,note=12,powered=false] + note_block[instrument=snare,note=13,powered=true]: note_block[instrument=harp,note=13,powered=true] + note_block[instrument=snare,note=13,powered=false]: note_block[instrument=harp,note=13,powered=false] + note_block[instrument=snare,note=14,powered=true]: note_block[instrument=harp,note=14,powered=true] + note_block[instrument=snare,note=14,powered=false]: note_block[instrument=harp,note=14,powered=false] + note_block[instrument=snare,note=15,powered=true]: note_block[instrument=harp,note=15,powered=true] + note_block[instrument=snare,note=15,powered=false]: note_block[instrument=harp,note=15,powered=false] + note_block[instrument=snare,note=16,powered=true]: note_block[instrument=harp,note=16,powered=true] + note_block[instrument=snare,note=16,powered=false]: note_block[instrument=harp,note=16,powered=false] + note_block[instrument=snare,note=17,powered=true]: note_block[instrument=harp,note=17,powered=true] + note_block[instrument=snare,note=17,powered=false]: note_block[instrument=harp,note=17,powered=false] + note_block[instrument=snare,note=18,powered=true]: note_block[instrument=harp,note=18,powered=true] + note_block[instrument=snare,note=18,powered=false]: note_block[instrument=harp,note=18,powered=false] + note_block[instrument=snare,note=19,powered=true]: note_block[instrument=harp,note=19,powered=true] + note_block[instrument=snare,note=19,powered=false]: note_block[instrument=harp,note=19,powered=false] + note_block[instrument=snare,note=20,powered=true]: note_block[instrument=harp,note=20,powered=true] + note_block[instrument=snare,note=20,powered=false]: note_block[instrument=harp,note=20,powered=false] + note_block[instrument=snare,note=21,powered=true]: note_block[instrument=harp,note=21,powered=true] + note_block[instrument=snare,note=21,powered=false]: note_block[instrument=harp,note=21,powered=false] + note_block[instrument=snare,note=22,powered=true]: note_block[instrument=harp,note=22,powered=true] + note_block[instrument=snare,note=22,powered=false]: note_block[instrument=harp,note=22,powered=false] + note_block[instrument=snare,note=23,powered=true]: note_block[instrument=harp,note=23,powered=true] + note_block[instrument=snare,note=23,powered=false]: note_block[instrument=harp,note=23,powered=false] + note_block[instrument=snare,note=24,powered=true]: note_block[instrument=harp,note=24,powered=true] + note_block[instrument=snare,note=24,powered=false]: note_block[instrument=harp,note=24,powered=false] + note_block[instrument=hat,note=0,powered=true]: note_block[instrument=harp,note=0,powered=true] + note_block[instrument=hat,note=0,powered=false]: note_block[instrument=harp,note=0,powered=false] + note_block[instrument=hat,note=1,powered=true]: note_block[instrument=harp,note=1,powered=true] + note_block[instrument=hat,note=1,powered=false]: note_block[instrument=harp,note=1,powered=false] + note_block[instrument=hat,note=2,powered=true]: note_block[instrument=harp,note=2,powered=true] + note_block[instrument=hat,note=2,powered=false]: note_block[instrument=harp,note=2,powered=false] + note_block[instrument=hat,note=3,powered=true]: note_block[instrument=harp,note=3,powered=true] + note_block[instrument=hat,note=3,powered=false]: note_block[instrument=harp,note=3,powered=false] + note_block[instrument=hat,note=4,powered=true]: note_block[instrument=harp,note=4,powered=true] + note_block[instrument=hat,note=4,powered=false]: note_block[instrument=harp,note=4,powered=false] + note_block[instrument=hat,note=5,powered=true]: note_block[instrument=harp,note=5,powered=true] + note_block[instrument=hat,note=5,powered=false]: note_block[instrument=harp,note=5,powered=false] + note_block[instrument=hat,note=6,powered=true]: note_block[instrument=harp,note=6,powered=true] + note_block[instrument=hat,note=6,powered=false]: note_block[instrument=harp,note=6,powered=false] + note_block[instrument=hat,note=7,powered=true]: note_block[instrument=harp,note=7,powered=true] + note_block[instrument=hat,note=7,powered=false]: note_block[instrument=harp,note=7,powered=false] + note_block[instrument=hat,note=8,powered=true]: note_block[instrument=harp,note=8,powered=true] + note_block[instrument=hat,note=8,powered=false]: note_block[instrument=harp,note=8,powered=false] + note_block[instrument=hat,note=9,powered=true]: note_block[instrument=harp,note=9,powered=true] + note_block[instrument=hat,note=9,powered=false]: note_block[instrument=harp,note=9,powered=false] + note_block[instrument=hat,note=10,powered=true]: note_block[instrument=harp,note=10,powered=true] + note_block[instrument=hat,note=10,powered=false]: note_block[instrument=harp,note=10,powered=false] + note_block[instrument=hat,note=11,powered=true]: note_block[instrument=harp,note=11,powered=true] + note_block[instrument=hat,note=11,powered=false]: note_block[instrument=harp,note=11,powered=false] + note_block[instrument=hat,note=12,powered=true]: note_block[instrument=harp,note=12,powered=true] + note_block[instrument=hat,note=12,powered=false]: note_block[instrument=harp,note=12,powered=false] + note_block[instrument=hat,note=13,powered=true]: note_block[instrument=harp,note=13,powered=true] + note_block[instrument=hat,note=13,powered=false]: note_block[instrument=harp,note=13,powered=false] + note_block[instrument=hat,note=14,powered=true]: note_block[instrument=harp,note=14,powered=true] + note_block[instrument=hat,note=14,powered=false]: note_block[instrument=harp,note=14,powered=false] + note_block[instrument=hat,note=15,powered=true]: note_block[instrument=harp,note=15,powered=true] + note_block[instrument=hat,note=15,powered=false]: note_block[instrument=harp,note=15,powered=false] + note_block[instrument=hat,note=16,powered=true]: note_block[instrument=harp,note=16,powered=true] + note_block[instrument=hat,note=16,powered=false]: note_block[instrument=harp,note=16,powered=false] + note_block[instrument=hat,note=17,powered=true]: note_block[instrument=harp,note=17,powered=true] + note_block[instrument=hat,note=17,powered=false]: note_block[instrument=harp,note=17,powered=false] + note_block[instrument=hat,note=18,powered=true]: note_block[instrument=harp,note=18,powered=true] + note_block[instrument=hat,note=18,powered=false]: note_block[instrument=harp,note=18,powered=false] + note_block[instrument=hat,note=19,powered=true]: note_block[instrument=harp,note=19,powered=true] + note_block[instrument=hat,note=19,powered=false]: note_block[instrument=harp,note=19,powered=false] + note_block[instrument=hat,note=20,powered=true]: note_block[instrument=harp,note=20,powered=true] + note_block[instrument=hat,note=20,powered=false]: note_block[instrument=harp,note=20,powered=false] + note_block[instrument=hat,note=21,powered=true]: note_block[instrument=harp,note=21,powered=true] + note_block[instrument=hat,note=21,powered=false]: note_block[instrument=harp,note=21,powered=false] + note_block[instrument=hat,note=22,powered=true]: note_block[instrument=harp,note=22,powered=true] + note_block[instrument=hat,note=22,powered=false]: note_block[instrument=harp,note=22,powered=false] + note_block[instrument=hat,note=23,powered=true]: note_block[instrument=harp,note=23,powered=true] + note_block[instrument=hat,note=23,powered=false]: note_block[instrument=harp,note=23,powered=false] + note_block[instrument=hat,note=24,powered=true]: note_block[instrument=harp,note=24,powered=true] + note_block[instrument=hat,note=24,powered=false]: note_block[instrument=harp,note=24,powered=false] + note_block[instrument=bass,note=0,powered=true]: note_block[instrument=harp,note=0,powered=true] + note_block[instrument=bass,note=0,powered=false]: note_block[instrument=harp,note=0,powered=false] + note_block[instrument=bass,note=1,powered=true]: note_block[instrument=harp,note=1,powered=true] + note_block[instrument=bass,note=1,powered=false]: note_block[instrument=harp,note=1,powered=false] + note_block[instrument=bass,note=2,powered=true]: note_block[instrument=harp,note=2,powered=true] + note_block[instrument=bass,note=2,powered=false]: note_block[instrument=harp,note=2,powered=false] + note_block[instrument=bass,note=3,powered=true]: note_block[instrument=harp,note=3,powered=true] + note_block[instrument=bass,note=3,powered=false]: note_block[instrument=harp,note=3,powered=false] + note_block[instrument=bass,note=4,powered=true]: note_block[instrument=harp,note=4,powered=true] + note_block[instrument=bass,note=4,powered=false]: note_block[instrument=harp,note=4,powered=false] + note_block[instrument=bass,note=5,powered=true]: note_block[instrument=harp,note=5,powered=true] + note_block[instrument=bass,note=5,powered=false]: note_block[instrument=harp,note=5,powered=false] + note_block[instrument=bass,note=6,powered=true]: note_block[instrument=harp,note=6,powered=true] + note_block[instrument=bass,note=6,powered=false]: note_block[instrument=harp,note=6,powered=false] + note_block[instrument=bass,note=7,powered=true]: note_block[instrument=harp,note=7,powered=true] + note_block[instrument=bass,note=7,powered=false]: note_block[instrument=harp,note=7,powered=false] + note_block[instrument=bass,note=8,powered=true]: note_block[instrument=harp,note=8,powered=true] + note_block[instrument=bass,note=8,powered=false]: note_block[instrument=harp,note=8,powered=false] + note_block[instrument=bass,note=9,powered=true]: note_block[instrument=harp,note=9,powered=true] + note_block[instrument=bass,note=9,powered=false]: note_block[instrument=harp,note=9,powered=false] + note_block[instrument=bass,note=10,powered=true]: note_block[instrument=harp,note=10,powered=true] + note_block[instrument=bass,note=10,powered=false]: note_block[instrument=harp,note=10,powered=false] + note_block[instrument=bass,note=11,powered=true]: note_block[instrument=harp,note=11,powered=true] + note_block[instrument=bass,note=11,powered=false]: note_block[instrument=harp,note=11,powered=false] + note_block[instrument=bass,note=12,powered=true]: note_block[instrument=harp,note=12,powered=true] + note_block[instrument=bass,note=12,powered=false]: note_block[instrument=harp,note=12,powered=false] + note_block[instrument=bass,note=13,powered=true]: note_block[instrument=harp,note=13,powered=true] + note_block[instrument=bass,note=13,powered=false]: note_block[instrument=harp,note=13,powered=false] + note_block[instrument=bass,note=14,powered=true]: note_block[instrument=harp,note=14,powered=true] + note_block[instrument=bass,note=14,powered=false]: note_block[instrument=harp,note=14,powered=false] + note_block[instrument=bass,note=15,powered=true]: note_block[instrument=harp,note=15,powered=true] + note_block[instrument=bass,note=15,powered=false]: note_block[instrument=harp,note=15,powered=false] + note_block[instrument=bass,note=16,powered=true]: note_block[instrument=harp,note=16,powered=true] + note_block[instrument=bass,note=16,powered=false]: note_block[instrument=harp,note=16,powered=false] + note_block[instrument=bass,note=17,powered=true]: note_block[instrument=harp,note=17,powered=true] + note_block[instrument=bass,note=17,powered=false]: note_block[instrument=harp,note=17,powered=false] + note_block[instrument=bass,note=18,powered=true]: note_block[instrument=harp,note=18,powered=true] + note_block[instrument=bass,note=18,powered=false]: note_block[instrument=harp,note=18,powered=false] + note_block[instrument=bass,note=19,powered=true]: note_block[instrument=harp,note=19,powered=true] + note_block[instrument=bass,note=19,powered=false]: note_block[instrument=harp,note=19,powered=false] + note_block[instrument=bass,note=20,powered=true]: note_block[instrument=harp,note=20,powered=true] + note_block[instrument=bass,note=20,powered=false]: note_block[instrument=harp,note=20,powered=false] + note_block[instrument=bass,note=21,powered=true]: note_block[instrument=harp,note=21,powered=true] + note_block[instrument=bass,note=21,powered=false]: note_block[instrument=harp,note=21,powered=false] + note_block[instrument=bass,note=22,powered=true]: note_block[instrument=harp,note=22,powered=true] + note_block[instrument=bass,note=22,powered=false]: note_block[instrument=harp,note=22,powered=false] + note_block[instrument=bass,note=23,powered=true]: note_block[instrument=harp,note=23,powered=true] + note_block[instrument=bass,note=23,powered=false]: note_block[instrument=harp,note=23,powered=false] + note_block[instrument=bass,note=24,powered=true]: note_block[instrument=harp,note=24,powered=true] + note_block[instrument=bass,note=24,powered=false]: note_block[instrument=harp,note=24,powered=false] + note_block[instrument=flute,note=0,powered=true]: note_block[instrument=harp,note=0,powered=true] + note_block[instrument=flute,note=0,powered=false]: note_block[instrument=harp,note=0,powered=false] + note_block[instrument=flute,note=1,powered=true]: note_block[instrument=harp,note=1,powered=true] + note_block[instrument=flute,note=1,powered=false]: note_block[instrument=harp,note=1,powered=false] + note_block[instrument=flute,note=2,powered=true]: note_block[instrument=harp,note=2,powered=true] + note_block[instrument=flute,note=2,powered=false]: note_block[instrument=harp,note=2,powered=false] + note_block[instrument=flute,note=3,powered=true]: note_block[instrument=harp,note=3,powered=true] + note_block[instrument=flute,note=3,powered=false]: note_block[instrument=harp,note=3,powered=false] + note_block[instrument=flute,note=4,powered=true]: note_block[instrument=harp,note=4,powered=true] + note_block[instrument=flute,note=4,powered=false]: note_block[instrument=harp,note=4,powered=false] + note_block[instrument=flute,note=5,powered=true]: note_block[instrument=harp,note=5,powered=true] + note_block[instrument=flute,note=5,powered=false]: note_block[instrument=harp,note=5,powered=false] + note_block[instrument=flute,note=6,powered=true]: note_block[instrument=harp,note=6,powered=true] + note_block[instrument=flute,note=6,powered=false]: note_block[instrument=harp,note=6,powered=false] + note_block[instrument=flute,note=7,powered=true]: note_block[instrument=harp,note=7,powered=true] + note_block[instrument=flute,note=7,powered=false]: note_block[instrument=harp,note=7,powered=false] + note_block[instrument=flute,note=8,powered=true]: note_block[instrument=harp,note=8,powered=true] + note_block[instrument=flute,note=8,powered=false]: note_block[instrument=harp,note=8,powered=false] + note_block[instrument=flute,note=9,powered=true]: note_block[instrument=harp,note=9,powered=true] + note_block[instrument=flute,note=9,powered=false]: note_block[instrument=harp,note=9,powered=false] + note_block[instrument=flute,note=10,powered=true]: note_block[instrument=harp,note=10,powered=true] + note_block[instrument=flute,note=10,powered=false]: note_block[instrument=harp,note=10,powered=false] + note_block[instrument=flute,note=11,powered=true]: note_block[instrument=harp,note=11,powered=true] + note_block[instrument=flute,note=11,powered=false]: note_block[instrument=harp,note=11,powered=false] + note_block[instrument=flute,note=12,powered=true]: note_block[instrument=harp,note=12,powered=true] + note_block[instrument=flute,note=12,powered=false]: note_block[instrument=harp,note=12,powered=false] + note_block[instrument=flute,note=13,powered=true]: note_block[instrument=harp,note=13,powered=true] + note_block[instrument=flute,note=13,powered=false]: note_block[instrument=harp,note=13,powered=false] + note_block[instrument=flute,note=14,powered=true]: note_block[instrument=harp,note=14,powered=true] + note_block[instrument=flute,note=14,powered=false]: note_block[instrument=harp,note=14,powered=false] + note_block[instrument=flute,note=15,powered=true]: note_block[instrument=harp,note=15,powered=true] + note_block[instrument=flute,note=15,powered=false]: note_block[instrument=harp,note=15,powered=false] + note_block[instrument=flute,note=16,powered=true]: note_block[instrument=harp,note=16,powered=true] + note_block[instrument=flute,note=16,powered=false]: note_block[instrument=harp,note=16,powered=false] + note_block[instrument=flute,note=17,powered=true]: note_block[instrument=harp,note=17,powered=true] + note_block[instrument=flute,note=17,powered=false]: note_block[instrument=harp,note=17,powered=false] + note_block[instrument=flute,note=18,powered=true]: note_block[instrument=harp,note=18,powered=true] + note_block[instrument=flute,note=18,powered=false]: note_block[instrument=harp,note=18,powered=false] + note_block[instrument=flute,note=19,powered=true]: note_block[instrument=harp,note=19,powered=true] + note_block[instrument=flute,note=19,powered=false]: note_block[instrument=harp,note=19,powered=false] + note_block[instrument=flute,note=20,powered=true]: note_block[instrument=harp,note=20,powered=true] + note_block[instrument=flute,note=20,powered=false]: note_block[instrument=harp,note=20,powered=false] + note_block[instrument=flute,note=21,powered=true]: note_block[instrument=harp,note=21,powered=true] + note_block[instrument=flute,note=21,powered=false]: note_block[instrument=harp,note=21,powered=false] + note_block[instrument=flute,note=22,powered=true]: note_block[instrument=harp,note=22,powered=true] + note_block[instrument=flute,note=22,powered=false]: note_block[instrument=harp,note=22,powered=false] + note_block[instrument=flute,note=23,powered=true]: note_block[instrument=harp,note=23,powered=true] + note_block[instrument=flute,note=23,powered=false]: note_block[instrument=harp,note=23,powered=false] + note_block[instrument=flute,note=24,powered=true]: note_block[instrument=harp,note=24,powered=true] + note_block[instrument=flute,note=24,powered=false]: note_block[instrument=harp,note=24,powered=false] + note_block[instrument=bell,note=0,powered=true]: note_block[instrument=harp,note=0,powered=true] + note_block[instrument=bell,note=0,powered=false]: note_block[instrument=harp,note=0,powered=false] + note_block[instrument=bell,note=1,powered=true]: note_block[instrument=harp,note=1,powered=true] + note_block[instrument=bell,note=1,powered=false]: note_block[instrument=harp,note=1,powered=false] + note_block[instrument=bell,note=2,powered=true]: note_block[instrument=harp,note=2,powered=true] + note_block[instrument=bell,note=2,powered=false]: note_block[instrument=harp,note=2,powered=false] + note_block[instrument=bell,note=3,powered=true]: note_block[instrument=harp,note=3,powered=true] + note_block[instrument=bell,note=3,powered=false]: note_block[instrument=harp,note=3,powered=false] + note_block[instrument=bell,note=4,powered=true]: note_block[instrument=harp,note=4,powered=true] + note_block[instrument=bell,note=4,powered=false]: note_block[instrument=harp,note=4,powered=false] + note_block[instrument=bell,note=5,powered=true]: note_block[instrument=harp,note=5,powered=true] + note_block[instrument=bell,note=5,powered=false]: note_block[instrument=harp,note=5,powered=false] + note_block[instrument=bell,note=6,powered=true]: note_block[instrument=harp,note=6,powered=true] + note_block[instrument=bell,note=6,powered=false]: note_block[instrument=harp,note=6,powered=false] + note_block[instrument=bell,note=7,powered=true]: note_block[instrument=harp,note=7,powered=true] + note_block[instrument=bell,note=7,powered=false]: note_block[instrument=harp,note=7,powered=false] + note_block[instrument=bell,note=8,powered=true]: note_block[instrument=harp,note=8,powered=true] + note_block[instrument=bell,note=8,powered=false]: note_block[instrument=harp,note=8,powered=false] + note_block[instrument=bell,note=9,powered=true]: note_block[instrument=harp,note=9,powered=true] + note_block[instrument=bell,note=9,powered=false]: note_block[instrument=harp,note=9,powered=false] + note_block[instrument=bell,note=10,powered=true]: note_block[instrument=harp,note=10,powered=true] + note_block[instrument=bell,note=10,powered=false]: note_block[instrument=harp,note=10,powered=false] + note_block[instrument=bell,note=11,powered=true]: note_block[instrument=harp,note=11,powered=true] + note_block[instrument=bell,note=11,powered=false]: note_block[instrument=harp,note=11,powered=false] + note_block[instrument=bell,note=12,powered=true]: note_block[instrument=harp,note=12,powered=true] + note_block[instrument=bell,note=12,powered=false]: note_block[instrument=harp,note=12,powered=false] + note_block[instrument=bell,note=13,powered=true]: note_block[instrument=harp,note=13,powered=true] + note_block[instrument=bell,note=13,powered=false]: note_block[instrument=harp,note=13,powered=false] + note_block[instrument=bell,note=14,powered=true]: note_block[instrument=harp,note=14,powered=true] + note_block[instrument=bell,note=14,powered=false]: note_block[instrument=harp,note=14,powered=false] + note_block[instrument=bell,note=15,powered=true]: note_block[instrument=harp,note=15,powered=true] + note_block[instrument=bell,note=15,powered=false]: note_block[instrument=harp,note=15,powered=false] + note_block[instrument=bell,note=16,powered=true]: note_block[instrument=harp,note=16,powered=true] + note_block[instrument=bell,note=16,powered=false]: note_block[instrument=harp,note=16,powered=false] + note_block[instrument=bell,note=17,powered=true]: note_block[instrument=harp,note=17,powered=true] + note_block[instrument=bell,note=17,powered=false]: note_block[instrument=harp,note=17,powered=false] + note_block[instrument=bell,note=18,powered=true]: note_block[instrument=harp,note=18,powered=true] + note_block[instrument=bell,note=18,powered=false]: note_block[instrument=harp,note=18,powered=false] + note_block[instrument=bell,note=19,powered=true]: note_block[instrument=harp,note=19,powered=true] + note_block[instrument=bell,note=19,powered=false]: note_block[instrument=harp,note=19,powered=false] + note_block[instrument=bell,note=20,powered=true]: note_block[instrument=harp,note=20,powered=true] + note_block[instrument=bell,note=20,powered=false]: note_block[instrument=harp,note=20,powered=false] + note_block[instrument=bell,note=21,powered=true]: note_block[instrument=harp,note=21,powered=true] + note_block[instrument=bell,note=21,powered=false]: note_block[instrument=harp,note=21,powered=false] + note_block[instrument=bell,note=22,powered=true]: note_block[instrument=harp,note=22,powered=true] + note_block[instrument=bell,note=22,powered=false]: note_block[instrument=harp,note=22,powered=false] + note_block[instrument=bell,note=23,powered=true]: note_block[instrument=harp,note=23,powered=true] + note_block[instrument=bell,note=23,powered=false]: note_block[instrument=harp,note=23,powered=false] + note_block[instrument=bell,note=24,powered=true]: note_block[instrument=harp,note=24,powered=true] + note_block[instrument=bell,note=24,powered=false]: note_block[instrument=harp,note=24,powered=false] + note_block[instrument=guitar,note=0,powered=true]: note_block[instrument=harp,note=0,powered=true] + note_block[instrument=guitar,note=0,powered=false]: note_block[instrument=harp,note=0,powered=false] + note_block[instrument=guitar,note=1,powered=true]: note_block[instrument=harp,note=1,powered=true] + note_block[instrument=guitar,note=1,powered=false]: note_block[instrument=harp,note=1,powered=false] + note_block[instrument=guitar,note=2,powered=true]: note_block[instrument=harp,note=2,powered=true] + note_block[instrument=guitar,note=2,powered=false]: note_block[instrument=harp,note=2,powered=false] + note_block[instrument=guitar,note=3,powered=true]: note_block[instrument=harp,note=3,powered=true] + note_block[instrument=guitar,note=3,powered=false]: note_block[instrument=harp,note=3,powered=false] + note_block[instrument=guitar,note=4,powered=true]: note_block[instrument=harp,note=4,powered=true] + note_block[instrument=guitar,note=4,powered=false]: note_block[instrument=harp,note=4,powered=false] + note_block[instrument=guitar,note=5,powered=true]: note_block[instrument=harp,note=5,powered=true] + note_block[instrument=guitar,note=5,powered=false]: note_block[instrument=harp,note=5,powered=false] + note_block[instrument=guitar,note=6,powered=true]: note_block[instrument=harp,note=6,powered=true] + note_block[instrument=guitar,note=6,powered=false]: note_block[instrument=harp,note=6,powered=false] + note_block[instrument=guitar,note=7,powered=true]: note_block[instrument=harp,note=7,powered=true] + note_block[instrument=guitar,note=7,powered=false]: note_block[instrument=harp,note=7,powered=false] + note_block[instrument=guitar,note=8,powered=true]: note_block[instrument=harp,note=8,powered=true] + note_block[instrument=guitar,note=8,powered=false]: note_block[instrument=harp,note=8,powered=false] + note_block[instrument=guitar,note=9,powered=true]: note_block[instrument=harp,note=9,powered=true] + note_block[instrument=guitar,note=9,powered=false]: note_block[instrument=harp,note=9,powered=false] + note_block[instrument=guitar,note=10,powered=true]: note_block[instrument=harp,note=10,powered=true] + note_block[instrument=guitar,note=10,powered=false]: note_block[instrument=harp,note=10,powered=false] + note_block[instrument=guitar,note=11,powered=true]: note_block[instrument=harp,note=11,powered=true] + note_block[instrument=guitar,note=11,powered=false]: note_block[instrument=harp,note=11,powered=false] + note_block[instrument=guitar,note=12,powered=true]: note_block[instrument=harp,note=12,powered=true] + note_block[instrument=guitar,note=12,powered=false]: note_block[instrument=harp,note=12,powered=false] + note_block[instrument=guitar,note=13,powered=true]: note_block[instrument=harp,note=13,powered=true] + note_block[instrument=guitar,note=13,powered=false]: note_block[instrument=harp,note=13,powered=false] + note_block[instrument=guitar,note=14,powered=true]: note_block[instrument=harp,note=14,powered=true] + note_block[instrument=guitar,note=14,powered=false]: note_block[instrument=harp,note=14,powered=false] + note_block[instrument=guitar,note=15,powered=true]: note_block[instrument=harp,note=15,powered=true] + note_block[instrument=guitar,note=15,powered=false]: note_block[instrument=harp,note=15,powered=false] + note_block[instrument=guitar,note=16,powered=true]: note_block[instrument=harp,note=16,powered=true] + note_block[instrument=guitar,note=16,powered=false]: note_block[instrument=harp,note=16,powered=false] + note_block[instrument=guitar,note=17,powered=true]: note_block[instrument=harp,note=17,powered=true] + note_block[instrument=guitar,note=17,powered=false]: note_block[instrument=harp,note=17,powered=false] + note_block[instrument=guitar,note=18,powered=true]: note_block[instrument=harp,note=18,powered=true] + note_block[instrument=guitar,note=18,powered=false]: note_block[instrument=harp,note=18,powered=false] + note_block[instrument=guitar,note=19,powered=true]: note_block[instrument=harp,note=19,powered=true] + note_block[instrument=guitar,note=19,powered=false]: note_block[instrument=harp,note=19,powered=false] + note_block[instrument=guitar,note=20,powered=true]: note_block[instrument=harp,note=20,powered=true] + note_block[instrument=guitar,note=20,powered=false]: note_block[instrument=harp,note=20,powered=false] + note_block[instrument=guitar,note=21,powered=true]: note_block[instrument=harp,note=21,powered=true] + note_block[instrument=guitar,note=21,powered=false]: note_block[instrument=harp,note=21,powered=false] + note_block[instrument=guitar,note=22,powered=true]: note_block[instrument=harp,note=22,powered=true] + note_block[instrument=guitar,note=22,powered=false]: note_block[instrument=harp,note=22,powered=false] + note_block[instrument=guitar,note=23,powered=true]: note_block[instrument=harp,note=23,powered=true] + note_block[instrument=guitar,note=23,powered=false]: note_block[instrument=harp,note=23,powered=false] + note_block[instrument=guitar,note=24,powered=true]: note_block[instrument=harp,note=24,powered=true] + note_block[instrument=guitar,note=24,powered=false]: note_block[instrument=harp,note=24,powered=false] + note_block[instrument=chime,note=0,powered=true]: note_block[instrument=harp,note=0,powered=true] + note_block[instrument=chime,note=0,powered=false]: note_block[instrument=harp,note=0,powered=false] + note_block[instrument=chime,note=1,powered=true]: note_block[instrument=harp,note=1,powered=true] + note_block[instrument=chime,note=1,powered=false]: note_block[instrument=harp,note=1,powered=false] + note_block[instrument=chime,note=2,powered=true]: note_block[instrument=harp,note=2,powered=true] + note_block[instrument=chime,note=2,powered=false]: note_block[instrument=harp,note=2,powered=false] + note_block[instrument=chime,note=3,powered=true]: note_block[instrument=harp,note=3,powered=true] + note_block[instrument=chime,note=3,powered=false]: note_block[instrument=harp,note=3,powered=false] + note_block[instrument=chime,note=4,powered=true]: note_block[instrument=harp,note=4,powered=true] + note_block[instrument=chime,note=4,powered=false]: note_block[instrument=harp,note=4,powered=false] + note_block[instrument=chime,note=5,powered=true]: note_block[instrument=harp,note=5,powered=true] + note_block[instrument=chime,note=5,powered=false]: note_block[instrument=harp,note=5,powered=false] + note_block[instrument=chime,note=6,powered=true]: note_block[instrument=harp,note=6,powered=true] + note_block[instrument=chime,note=6,powered=false]: note_block[instrument=harp,note=6,powered=false] + note_block[instrument=chime,note=7,powered=true]: note_block[instrument=harp,note=7,powered=true] + note_block[instrument=chime,note=7,powered=false]: note_block[instrument=harp,note=7,powered=false] + note_block[instrument=chime,note=8,powered=true]: note_block[instrument=harp,note=8,powered=true] + note_block[instrument=chime,note=8,powered=false]: note_block[instrument=harp,note=8,powered=false] + note_block[instrument=chime,note=9,powered=true]: note_block[instrument=harp,note=9,powered=true] + note_block[instrument=chime,note=9,powered=false]: note_block[instrument=harp,note=9,powered=false] + note_block[instrument=chime,note=10,powered=true]: note_block[instrument=harp,note=10,powered=true] + note_block[instrument=chime,note=10,powered=false]: note_block[instrument=harp,note=10,powered=false] + note_block[instrument=chime,note=11,powered=true]: note_block[instrument=harp,note=11,powered=true] + note_block[instrument=chime,note=11,powered=false]: note_block[instrument=harp,note=11,powered=false] + note_block[instrument=chime,note=12,powered=true]: note_block[instrument=harp,note=12,powered=true] + note_block[instrument=chime,note=12,powered=false]: note_block[instrument=harp,note=12,powered=false] + note_block[instrument=chime,note=13,powered=true]: note_block[instrument=harp,note=13,powered=true] + note_block[instrument=chime,note=13,powered=false]: note_block[instrument=harp,note=13,powered=false] + note_block[instrument=chime,note=14,powered=true]: note_block[instrument=harp,note=14,powered=true] + note_block[instrument=chime,note=14,powered=false]: note_block[instrument=harp,note=14,powered=false] + note_block[instrument=chime,note=15,powered=true]: note_block[instrument=harp,note=15,powered=true] + note_block[instrument=chime,note=15,powered=false]: note_block[instrument=harp,note=15,powered=false] + note_block[instrument=chime,note=16,powered=true]: note_block[instrument=harp,note=16,powered=true] + note_block[instrument=chime,note=16,powered=false]: note_block[instrument=harp,note=16,powered=false] + note_block[instrument=chime,note=17,powered=true]: note_block[instrument=harp,note=17,powered=true] + note_block[instrument=chime,note=17,powered=false]: note_block[instrument=harp,note=17,powered=false] + note_block[instrument=chime,note=18,powered=true]: note_block[instrument=harp,note=18,powered=true] + note_block[instrument=chime,note=18,powered=false]: note_block[instrument=harp,note=18,powered=false] + note_block[instrument=chime,note=19,powered=true]: note_block[instrument=harp,note=19,powered=true] + note_block[instrument=chime,note=19,powered=false]: note_block[instrument=harp,note=19,powered=false] + note_block[instrument=chime,note=20,powered=true]: note_block[instrument=harp,note=20,powered=true] + note_block[instrument=chime,note=20,powered=false]: note_block[instrument=harp,note=20,powered=false] + note_block[instrument=chime,note=21,powered=true]: note_block[instrument=harp,note=21,powered=true] + note_block[instrument=chime,note=21,powered=false]: note_block[instrument=harp,note=21,powered=false] + note_block[instrument=chime,note=22,powered=true]: note_block[instrument=harp,note=22,powered=true] + note_block[instrument=chime,note=22,powered=false]: note_block[instrument=harp,note=22,powered=false] + note_block[instrument=chime,note=23,powered=true]: note_block[instrument=harp,note=23,powered=true] + note_block[instrument=chime,note=23,powered=false]: note_block[instrument=harp,note=23,powered=false] + note_block[instrument=chime,note=24,powered=true]: note_block[instrument=harp,note=24,powered=true] + note_block[instrument=chime,note=24,powered=false]: note_block[instrument=harp,note=24,powered=false] + note_block[instrument=xylophone,note=0,powered=true]: note_block[instrument=harp,note=0,powered=true] + note_block[instrument=xylophone,note=0,powered=false]: note_block[instrument=harp,note=0,powered=false] + note_block[instrument=xylophone,note=1,powered=true]: note_block[instrument=harp,note=1,powered=true] + note_block[instrument=xylophone,note=1,powered=false]: note_block[instrument=harp,note=1,powered=false] + note_block[instrument=xylophone,note=2,powered=true]: note_block[instrument=harp,note=2,powered=true] + note_block[instrument=xylophone,note=2,powered=false]: note_block[instrument=harp,note=2,powered=false] + note_block[instrument=xylophone,note=3,powered=true]: note_block[instrument=harp,note=3,powered=true] + note_block[instrument=xylophone,note=3,powered=false]: note_block[instrument=harp,note=3,powered=false] + note_block[instrument=xylophone,note=4,powered=true]: note_block[instrument=harp,note=4,powered=true] + note_block[instrument=xylophone,note=4,powered=false]: note_block[instrument=harp,note=4,powered=false] + note_block[instrument=xylophone,note=5,powered=true]: note_block[instrument=harp,note=5,powered=true] + note_block[instrument=xylophone,note=5,powered=false]: note_block[instrument=harp,note=5,powered=false] + note_block[instrument=xylophone,note=6,powered=true]: note_block[instrument=harp,note=6,powered=true] + note_block[instrument=xylophone,note=6,powered=false]: note_block[instrument=harp,note=6,powered=false] + note_block[instrument=xylophone,note=7,powered=true]: note_block[instrument=harp,note=7,powered=true] + note_block[instrument=xylophone,note=7,powered=false]: note_block[instrument=harp,note=7,powered=false] + note_block[instrument=xylophone,note=8,powered=true]: note_block[instrument=harp,note=8,powered=true] + note_block[instrument=xylophone,note=8,powered=false]: note_block[instrument=harp,note=8,powered=false] + note_block[instrument=xylophone,note=9,powered=true]: note_block[instrument=harp,note=9,powered=true] + note_block[instrument=xylophone,note=9,powered=false]: note_block[instrument=harp,note=9,powered=false] + note_block[instrument=xylophone,note=10,powered=true]: note_block[instrument=harp,note=10,powered=true] + note_block[instrument=xylophone,note=10,powered=false]: note_block[instrument=harp,note=10,powered=false] + note_block[instrument=xylophone,note=11,powered=true]: note_block[instrument=harp,note=11,powered=true] + note_block[instrument=xylophone,note=11,powered=false]: note_block[instrument=harp,note=11,powered=false] + note_block[instrument=xylophone,note=12,powered=true]: note_block[instrument=harp,note=12,powered=true] + note_block[instrument=xylophone,note=12,powered=false]: note_block[instrument=harp,note=12,powered=false] + note_block[instrument=xylophone,note=13,powered=true]: note_block[instrument=harp,note=13,powered=true] + note_block[instrument=xylophone,note=13,powered=false]: note_block[instrument=harp,note=13,powered=false] + note_block[instrument=xylophone,note=14,powered=true]: note_block[instrument=harp,note=14,powered=true] + note_block[instrument=xylophone,note=14,powered=false]: note_block[instrument=harp,note=14,powered=false] + note_block[instrument=xylophone,note=15,powered=true]: note_block[instrument=harp,note=15,powered=true] + note_block[instrument=xylophone,note=15,powered=false]: note_block[instrument=harp,note=15,powered=false] + note_block[instrument=xylophone,note=16,powered=true]: note_block[instrument=harp,note=16,powered=true] + note_block[instrument=xylophone,note=16,powered=false]: note_block[instrument=harp,note=16,powered=false] + note_block[instrument=xylophone,note=17,powered=true]: note_block[instrument=harp,note=17,powered=true] + note_block[instrument=xylophone,note=17,powered=false]: note_block[instrument=harp,note=17,powered=false] + note_block[instrument=xylophone,note=18,powered=true]: note_block[instrument=harp,note=18,powered=true] + note_block[instrument=xylophone,note=18,powered=false]: note_block[instrument=harp,note=18,powered=false] + note_block[instrument=xylophone,note=19,powered=true]: note_block[instrument=harp,note=19,powered=true] + note_block[instrument=xylophone,note=19,powered=false]: note_block[instrument=harp,note=19,powered=false] + note_block[instrument=xylophone,note=20,powered=true]: note_block[instrument=harp,note=20,powered=true] + note_block[instrument=xylophone,note=20,powered=false]: note_block[instrument=harp,note=20,powered=false] + note_block[instrument=xylophone,note=21,powered=true]: note_block[instrument=harp,note=21,powered=true] + note_block[instrument=xylophone,note=21,powered=false]: note_block[instrument=harp,note=21,powered=false] + note_block[instrument=xylophone,note=22,powered=true]: note_block[instrument=harp,note=22,powered=true] + note_block[instrument=xylophone,note=22,powered=false]: note_block[instrument=harp,note=22,powered=false] + note_block[instrument=xylophone,note=23,powered=true]: note_block[instrument=harp,note=23,powered=true] + note_block[instrument=xylophone,note=23,powered=false]: note_block[instrument=harp,note=23,powered=false] + note_block[instrument=xylophone,note=24,powered=true]: note_block[instrument=harp,note=24,powered=true] + note_block[instrument=xylophone,note=24,powered=false]: note_block[instrument=harp,note=24,powered=false] + note_block[instrument=iron_xylophone,note=0,powered=true]: note_block[instrument=harp,note=0,powered=true] + note_block[instrument=iron_xylophone,note=0,powered=false]: note_block[instrument=harp,note=0,powered=false] + note_block[instrument=iron_xylophone,note=1,powered=true]: note_block[instrument=harp,note=1,powered=true] + note_block[instrument=iron_xylophone,note=1,powered=false]: note_block[instrument=harp,note=1,powered=false] + note_block[instrument=iron_xylophone,note=2,powered=true]: note_block[instrument=harp,note=2,powered=true] + note_block[instrument=iron_xylophone,note=2,powered=false]: note_block[instrument=harp,note=2,powered=false] + note_block[instrument=iron_xylophone,note=3,powered=true]: note_block[instrument=harp,note=3,powered=true] + note_block[instrument=iron_xylophone,note=3,powered=false]: note_block[instrument=harp,note=3,powered=false] + note_block[instrument=iron_xylophone,note=4,powered=true]: note_block[instrument=harp,note=4,powered=true] + note_block[instrument=iron_xylophone,note=4,powered=false]: note_block[instrument=harp,note=4,powered=false] + note_block[instrument=iron_xylophone,note=5,powered=true]: note_block[instrument=harp,note=5,powered=true] + note_block[instrument=iron_xylophone,note=5,powered=false]: note_block[instrument=harp,note=5,powered=false] + note_block[instrument=iron_xylophone,note=6,powered=true]: note_block[instrument=harp,note=6,powered=true] + note_block[instrument=iron_xylophone,note=6,powered=false]: note_block[instrument=harp,note=6,powered=false] + note_block[instrument=iron_xylophone,note=7,powered=true]: note_block[instrument=harp,note=7,powered=true] + note_block[instrument=iron_xylophone,note=7,powered=false]: note_block[instrument=harp,note=7,powered=false] + note_block[instrument=iron_xylophone,note=8,powered=true]: note_block[instrument=harp,note=8,powered=true] + note_block[instrument=iron_xylophone,note=8,powered=false]: note_block[instrument=harp,note=8,powered=false] + note_block[instrument=iron_xylophone,note=9,powered=true]: note_block[instrument=harp,note=9,powered=true] + note_block[instrument=iron_xylophone,note=9,powered=false]: note_block[instrument=harp,note=9,powered=false] + note_block[instrument=iron_xylophone,note=10,powered=true]: note_block[instrument=harp,note=10,powered=true] + note_block[instrument=iron_xylophone,note=10,powered=false]: note_block[instrument=harp,note=10,powered=false] + note_block[instrument=iron_xylophone,note=11,powered=true]: note_block[instrument=harp,note=11,powered=true] + note_block[instrument=iron_xylophone,note=11,powered=false]: note_block[instrument=harp,note=11,powered=false] + note_block[instrument=iron_xylophone,note=12,powered=true]: note_block[instrument=harp,note=12,powered=true] + note_block[instrument=iron_xylophone,note=12,powered=false]: note_block[instrument=harp,note=12,powered=false] + note_block[instrument=iron_xylophone,note=13,powered=true]: note_block[instrument=harp,note=13,powered=true] + note_block[instrument=iron_xylophone,note=13,powered=false]: note_block[instrument=harp,note=13,powered=false] + note_block[instrument=iron_xylophone,note=14,powered=true]: note_block[instrument=harp,note=14,powered=true] + note_block[instrument=iron_xylophone,note=14,powered=false]: note_block[instrument=harp,note=14,powered=false] + note_block[instrument=iron_xylophone,note=15,powered=true]: note_block[instrument=harp,note=15,powered=true] + note_block[instrument=iron_xylophone,note=15,powered=false]: note_block[instrument=harp,note=15,powered=false] + note_block[instrument=iron_xylophone,note=16,powered=true]: note_block[instrument=harp,note=16,powered=true] + note_block[instrument=iron_xylophone,note=16,powered=false]: note_block[instrument=harp,note=16,powered=false] + note_block[instrument=iron_xylophone,note=17,powered=true]: note_block[instrument=harp,note=17,powered=true] + note_block[instrument=iron_xylophone,note=17,powered=false]: note_block[instrument=harp,note=17,powered=false] + note_block[instrument=iron_xylophone,note=18,powered=true]: note_block[instrument=harp,note=18,powered=true] + note_block[instrument=iron_xylophone,note=18,powered=false]: note_block[instrument=harp,note=18,powered=false] + note_block[instrument=iron_xylophone,note=19,powered=true]: note_block[instrument=harp,note=19,powered=true] + note_block[instrument=iron_xylophone,note=19,powered=false]: note_block[instrument=harp,note=19,powered=false] + note_block[instrument=iron_xylophone,note=20,powered=true]: note_block[instrument=harp,note=20,powered=true] + note_block[instrument=iron_xylophone,note=20,powered=false]: note_block[instrument=harp,note=20,powered=false] + note_block[instrument=iron_xylophone,note=21,powered=true]: note_block[instrument=harp,note=21,powered=true] + note_block[instrument=iron_xylophone,note=21,powered=false]: note_block[instrument=harp,note=21,powered=false] + note_block[instrument=iron_xylophone,note=22,powered=true]: note_block[instrument=harp,note=22,powered=true] + note_block[instrument=iron_xylophone,note=22,powered=false]: note_block[instrument=harp,note=22,powered=false] + note_block[instrument=iron_xylophone,note=23,powered=true]: note_block[instrument=harp,note=23,powered=true] + note_block[instrument=iron_xylophone,note=23,powered=false]: note_block[instrument=harp,note=23,powered=false] + note_block[instrument=iron_xylophone,note=24,powered=true]: note_block[instrument=harp,note=24,powered=true] + note_block[instrument=iron_xylophone,note=24,powered=false]: note_block[instrument=harp,note=24,powered=false] + note_block[instrument=cow_bell,note=0,powered=true]: note_block[instrument=harp,note=0,powered=true] + note_block[instrument=cow_bell,note=0,powered=false]: note_block[instrument=harp,note=0,powered=false] + note_block[instrument=cow_bell,note=1,powered=true]: note_block[instrument=harp,note=1,powered=true] + note_block[instrument=cow_bell,note=1,powered=false]: note_block[instrument=harp,note=1,powered=false] + note_block[instrument=cow_bell,note=2,powered=true]: note_block[instrument=harp,note=2,powered=true] + note_block[instrument=cow_bell,note=2,powered=false]: note_block[instrument=harp,note=2,powered=false] + note_block[instrument=cow_bell,note=3,powered=true]: note_block[instrument=harp,note=3,powered=true] + note_block[instrument=cow_bell,note=3,powered=false]: note_block[instrument=harp,note=3,powered=false] + note_block[instrument=cow_bell,note=4,powered=true]: note_block[instrument=harp,note=4,powered=true] + note_block[instrument=cow_bell,note=4,powered=false]: note_block[instrument=harp,note=4,powered=false] + note_block[instrument=cow_bell,note=5,powered=true]: note_block[instrument=harp,note=5,powered=true] + note_block[instrument=cow_bell,note=5,powered=false]: note_block[instrument=harp,note=5,powered=false] + note_block[instrument=cow_bell,note=6,powered=true]: note_block[instrument=harp,note=6,powered=true] + note_block[instrument=cow_bell,note=6,powered=false]: note_block[instrument=harp,note=6,powered=false] + note_block[instrument=cow_bell,note=7,powered=true]: note_block[instrument=harp,note=7,powered=true] + note_block[instrument=cow_bell,note=7,powered=false]: note_block[instrument=harp,note=7,powered=false] + note_block[instrument=cow_bell,note=8,powered=true]: note_block[instrument=harp,note=8,powered=true] + note_block[instrument=cow_bell,note=8,powered=false]: note_block[instrument=harp,note=8,powered=false] + note_block[instrument=cow_bell,note=9,powered=true]: note_block[instrument=harp,note=9,powered=true] + note_block[instrument=cow_bell,note=9,powered=false]: note_block[instrument=harp,note=9,powered=false] + note_block[instrument=cow_bell,note=10,powered=true]: note_block[instrument=harp,note=10,powered=true] + note_block[instrument=cow_bell,note=10,powered=false]: note_block[instrument=harp,note=10,powered=false] + note_block[instrument=cow_bell,note=11,powered=true]: note_block[instrument=harp,note=11,powered=true] + note_block[instrument=cow_bell,note=11,powered=false]: note_block[instrument=harp,note=11,powered=false] + note_block[instrument=cow_bell,note=12,powered=true]: note_block[instrument=harp,note=12,powered=true] + note_block[instrument=cow_bell,note=12,powered=false]: note_block[instrument=harp,note=12,powered=false] + note_block[instrument=cow_bell,note=13,powered=true]: note_block[instrument=harp,note=13,powered=true] + note_block[instrument=cow_bell,note=13,powered=false]: note_block[instrument=harp,note=13,powered=false] + note_block[instrument=cow_bell,note=14,powered=true]: note_block[instrument=harp,note=14,powered=true] + note_block[instrument=cow_bell,note=14,powered=false]: note_block[instrument=harp,note=14,powered=false] + note_block[instrument=cow_bell,note=15,powered=true]: note_block[instrument=harp,note=15,powered=true] + note_block[instrument=cow_bell,note=15,powered=false]: note_block[instrument=harp,note=15,powered=false] + note_block[instrument=cow_bell,note=16,powered=true]: note_block[instrument=harp,note=16,powered=true] + note_block[instrument=cow_bell,note=16,powered=false]: note_block[instrument=harp,note=16,powered=false] + note_block[instrument=cow_bell,note=17,powered=true]: note_block[instrument=harp,note=17,powered=true] + note_block[instrument=cow_bell,note=17,powered=false]: note_block[instrument=harp,note=17,powered=false] + note_block[instrument=cow_bell,note=18,powered=true]: note_block[instrument=harp,note=18,powered=true] + note_block[instrument=cow_bell,note=18,powered=false]: note_block[instrument=harp,note=18,powered=false] + note_block[instrument=cow_bell,note=19,powered=true]: note_block[instrument=harp,note=19,powered=true] + note_block[instrument=cow_bell,note=19,powered=false]: note_block[instrument=harp,note=19,powered=false] + note_block[instrument=cow_bell,note=20,powered=true]: note_block[instrument=harp,note=20,powered=true] + note_block[instrument=cow_bell,note=20,powered=false]: note_block[instrument=harp,note=20,powered=false] + note_block[instrument=cow_bell,note=21,powered=true]: note_block[instrument=harp,note=21,powered=true] + note_block[instrument=cow_bell,note=21,powered=false]: note_block[instrument=harp,note=21,powered=false] + note_block[instrument=cow_bell,note=22,powered=true]: note_block[instrument=harp,note=22,powered=true] + note_block[instrument=cow_bell,note=22,powered=false]: note_block[instrument=harp,note=22,powered=false] + note_block[instrument=cow_bell,note=23,powered=true]: note_block[instrument=harp,note=23,powered=true] + note_block[instrument=cow_bell,note=23,powered=false]: note_block[instrument=harp,note=23,powered=false] + note_block[instrument=cow_bell,note=24,powered=true]: note_block[instrument=harp,note=24,powered=true] + note_block[instrument=cow_bell,note=24,powered=false]: note_block[instrument=harp,note=24,powered=false] + note_block[instrument=didgeridoo,note=0,powered=true]: note_block[instrument=harp,note=0,powered=true] + note_block[instrument=didgeridoo,note=0,powered=false]: note_block[instrument=harp,note=0,powered=false] + note_block[instrument=didgeridoo,note=1,powered=true]: note_block[instrument=harp,note=1,powered=true] + note_block[instrument=didgeridoo,note=1,powered=false]: note_block[instrument=harp,note=1,powered=false] + note_block[instrument=didgeridoo,note=2,powered=true]: note_block[instrument=harp,note=2,powered=true] + note_block[instrument=didgeridoo,note=2,powered=false]: note_block[instrument=harp,note=2,powered=false] + note_block[instrument=didgeridoo,note=3,powered=true]: note_block[instrument=harp,note=3,powered=true] + note_block[instrument=didgeridoo,note=3,powered=false]: note_block[instrument=harp,note=3,powered=false] + note_block[instrument=didgeridoo,note=4,powered=true]: note_block[instrument=harp,note=4,powered=true] + note_block[instrument=didgeridoo,note=4,powered=false]: note_block[instrument=harp,note=4,powered=false] + note_block[instrument=didgeridoo,note=5,powered=true]: note_block[instrument=harp,note=5,powered=true] + note_block[instrument=didgeridoo,note=5,powered=false]: note_block[instrument=harp,note=5,powered=false] + note_block[instrument=didgeridoo,note=6,powered=true]: note_block[instrument=harp,note=6,powered=true] + note_block[instrument=didgeridoo,note=6,powered=false]: note_block[instrument=harp,note=6,powered=false] + note_block[instrument=didgeridoo,note=7,powered=true]: note_block[instrument=harp,note=7,powered=true] + note_block[instrument=didgeridoo,note=7,powered=false]: note_block[instrument=harp,note=7,powered=false] + note_block[instrument=didgeridoo,note=8,powered=true]: note_block[instrument=harp,note=8,powered=true] + note_block[instrument=didgeridoo,note=8,powered=false]: note_block[instrument=harp,note=8,powered=false] + note_block[instrument=didgeridoo,note=9,powered=true]: note_block[instrument=harp,note=9,powered=true] + note_block[instrument=didgeridoo,note=9,powered=false]: note_block[instrument=harp,note=9,powered=false] + note_block[instrument=didgeridoo,note=10,powered=true]: note_block[instrument=harp,note=10,powered=true] + note_block[instrument=didgeridoo,note=10,powered=false]: note_block[instrument=harp,note=10,powered=false] + note_block[instrument=didgeridoo,note=11,powered=true]: note_block[instrument=harp,note=11,powered=true] + note_block[instrument=didgeridoo,note=11,powered=false]: note_block[instrument=harp,note=11,powered=false] + note_block[instrument=didgeridoo,note=12,powered=true]: note_block[instrument=harp,note=12,powered=true] + note_block[instrument=didgeridoo,note=12,powered=false]: note_block[instrument=harp,note=12,powered=false] + note_block[instrument=didgeridoo,note=13,powered=true]: note_block[instrument=harp,note=13,powered=true] + note_block[instrument=didgeridoo,note=13,powered=false]: note_block[instrument=harp,note=13,powered=false] + note_block[instrument=didgeridoo,note=14,powered=true]: note_block[instrument=harp,note=14,powered=true] + note_block[instrument=didgeridoo,note=14,powered=false]: note_block[instrument=harp,note=14,powered=false] + note_block[instrument=didgeridoo,note=15,powered=true]: note_block[instrument=harp,note=15,powered=true] + note_block[instrument=didgeridoo,note=15,powered=false]: note_block[instrument=harp,note=15,powered=false] + note_block[instrument=didgeridoo,note=16,powered=true]: note_block[instrument=harp,note=16,powered=true] + note_block[instrument=didgeridoo,note=16,powered=false]: note_block[instrument=harp,note=16,powered=false] + note_block[instrument=didgeridoo,note=17,powered=true]: note_block[instrument=harp,note=17,powered=true] + note_block[instrument=didgeridoo,note=17,powered=false]: note_block[instrument=harp,note=17,powered=false] + note_block[instrument=didgeridoo,note=18,powered=true]: note_block[instrument=harp,note=18,powered=true] + note_block[instrument=didgeridoo,note=18,powered=false]: note_block[instrument=harp,note=18,powered=false] + note_block[instrument=didgeridoo,note=19,powered=true]: note_block[instrument=harp,note=19,powered=true] + note_block[instrument=didgeridoo,note=19,powered=false]: note_block[instrument=harp,note=19,powered=false] + note_block[instrument=didgeridoo,note=20,powered=true]: note_block[instrument=harp,note=20,powered=true] + note_block[instrument=didgeridoo,note=20,powered=false]: note_block[instrument=harp,note=20,powered=false] + note_block[instrument=didgeridoo,note=21,powered=true]: note_block[instrument=harp,note=21,powered=true] + note_block[instrument=didgeridoo,note=21,powered=false]: note_block[instrument=harp,note=21,powered=false] + note_block[instrument=didgeridoo,note=22,powered=true]: note_block[instrument=harp,note=22,powered=true] + note_block[instrument=didgeridoo,note=22,powered=false]: note_block[instrument=harp,note=22,powered=false] + note_block[instrument=didgeridoo,note=23,powered=true]: note_block[instrument=harp,note=23,powered=true] + note_block[instrument=didgeridoo,note=23,powered=false]: note_block[instrument=harp,note=23,powered=false] + note_block[instrument=didgeridoo,note=24,powered=true]: note_block[instrument=harp,note=24,powered=true] + note_block[instrument=didgeridoo,note=24,powered=false]: note_block[instrument=harp,note=24,powered=false] + note_block[instrument=bit,note=0,powered=true]: note_block[instrument=harp,note=0,powered=true] + note_block[instrument=bit,note=0,powered=false]: note_block[instrument=harp,note=0,powered=false] + note_block[instrument=bit,note=1,powered=true]: note_block[instrument=harp,note=1,powered=true] + note_block[instrument=bit,note=1,powered=false]: note_block[instrument=harp,note=1,powered=false] + note_block[instrument=bit,note=2,powered=true]: note_block[instrument=harp,note=2,powered=true] + note_block[instrument=bit,note=2,powered=false]: note_block[instrument=harp,note=2,powered=false] + note_block[instrument=bit,note=3,powered=true]: note_block[instrument=harp,note=3,powered=true] + note_block[instrument=bit,note=3,powered=false]: note_block[instrument=harp,note=3,powered=false] + note_block[instrument=bit,note=4,powered=true]: note_block[instrument=harp,note=4,powered=true] + note_block[instrument=bit,note=4,powered=false]: note_block[instrument=harp,note=4,powered=false] + note_block[instrument=bit,note=5,powered=true]: note_block[instrument=harp,note=5,powered=true] + note_block[instrument=bit,note=5,powered=false]: note_block[instrument=harp,note=5,powered=false] + note_block[instrument=bit,note=6,powered=true]: note_block[instrument=harp,note=6,powered=true] + note_block[instrument=bit,note=6,powered=false]: note_block[instrument=harp,note=6,powered=false] + note_block[instrument=bit,note=7,powered=true]: note_block[instrument=harp,note=7,powered=true] + note_block[instrument=bit,note=7,powered=false]: note_block[instrument=harp,note=7,powered=false] + note_block[instrument=bit,note=8,powered=true]: note_block[instrument=harp,note=8,powered=true] + note_block[instrument=bit,note=8,powered=false]: note_block[instrument=harp,note=8,powered=false] + note_block[instrument=bit,note=9,powered=true]: note_block[instrument=harp,note=9,powered=true] + note_block[instrument=bit,note=9,powered=false]: note_block[instrument=harp,note=9,powered=false] + note_block[instrument=bit,note=10,powered=true]: note_block[instrument=harp,note=10,powered=true] + note_block[instrument=bit,note=10,powered=false]: note_block[instrument=harp,note=10,powered=false] + note_block[instrument=bit,note=11,powered=true]: note_block[instrument=harp,note=11,powered=true] + note_block[instrument=bit,note=11,powered=false]: note_block[instrument=harp,note=11,powered=false] + note_block[instrument=bit,note=12,powered=true]: note_block[instrument=harp,note=12,powered=true] + note_block[instrument=bit,note=12,powered=false]: note_block[instrument=harp,note=12,powered=false] + note_block[instrument=bit,note=13,powered=true]: note_block[instrument=harp,note=13,powered=true] + note_block[instrument=bit,note=13,powered=false]: note_block[instrument=harp,note=13,powered=false] + note_block[instrument=bit,note=14,powered=true]: note_block[instrument=harp,note=14,powered=true] + note_block[instrument=bit,note=14,powered=false]: note_block[instrument=harp,note=14,powered=false] + note_block[instrument=bit,note=15,powered=true]: note_block[instrument=harp,note=15,powered=true] + note_block[instrument=bit,note=15,powered=false]: note_block[instrument=harp,note=15,powered=false] + note_block[instrument=bit,note=16,powered=true]: note_block[instrument=harp,note=16,powered=true] + note_block[instrument=bit,note=16,powered=false]: note_block[instrument=harp,note=16,powered=false] + note_block[instrument=bit,note=17,powered=true]: note_block[instrument=harp,note=17,powered=true] + note_block[instrument=bit,note=17,powered=false]: note_block[instrument=harp,note=17,powered=false] + note_block[instrument=bit,note=18,powered=true]: note_block[instrument=harp,note=18,powered=true] + note_block[instrument=bit,note=18,powered=false]: note_block[instrument=harp,note=18,powered=false] + note_block[instrument=bit,note=19,powered=true]: note_block[instrument=harp,note=19,powered=true] + note_block[instrument=bit,note=19,powered=false]: note_block[instrument=harp,note=19,powered=false] + note_block[instrument=bit,note=20,powered=true]: note_block[instrument=harp,note=20,powered=true] + note_block[instrument=bit,note=20,powered=false]: note_block[instrument=harp,note=20,powered=false] + note_block[instrument=bit,note=21,powered=true]: note_block[instrument=harp,note=21,powered=true] + note_block[instrument=bit,note=21,powered=false]: note_block[instrument=harp,note=21,powered=false] + note_block[instrument=bit,note=22,powered=true]: note_block[instrument=harp,note=22,powered=true] + note_block[instrument=bit,note=22,powered=false]: note_block[instrument=harp,note=22,powered=false] + note_block[instrument=bit,note=23,powered=true]: note_block[instrument=harp,note=23,powered=true] + note_block[instrument=bit,note=23,powered=false]: note_block[instrument=harp,note=23,powered=false] + note_block[instrument=bit,note=24,powered=true]: note_block[instrument=harp,note=24,powered=true] + note_block[instrument=bit,note=24,powered=false]: note_block[instrument=harp,note=24,powered=false] + note_block[instrument=banjo,note=0,powered=true]: note_block[instrument=harp,note=0,powered=true] + note_block[instrument=banjo,note=0,powered=false]: note_block[instrument=harp,note=0,powered=false] + note_block[instrument=banjo,note=1,powered=true]: note_block[instrument=harp,note=1,powered=true] + note_block[instrument=banjo,note=1,powered=false]: note_block[instrument=harp,note=1,powered=false] + note_block[instrument=banjo,note=2,powered=true]: note_block[instrument=harp,note=2,powered=true] + note_block[instrument=banjo,note=2,powered=false]: note_block[instrument=harp,note=2,powered=false] + note_block[instrument=banjo,note=3,powered=true]: note_block[instrument=harp,note=3,powered=true] + note_block[instrument=banjo,note=3,powered=false]: note_block[instrument=harp,note=3,powered=false] + note_block[instrument=banjo,note=4,powered=true]: note_block[instrument=harp,note=4,powered=true] + note_block[instrument=banjo,note=4,powered=false]: note_block[instrument=harp,note=4,powered=false] + note_block[instrument=banjo,note=5,powered=true]: note_block[instrument=harp,note=5,powered=true] + note_block[instrument=banjo,note=5,powered=false]: note_block[instrument=harp,note=5,powered=false] + note_block[instrument=banjo,note=6,powered=true]: note_block[instrument=harp,note=6,powered=true] + note_block[instrument=banjo,note=6,powered=false]: note_block[instrument=harp,note=6,powered=false] + note_block[instrument=banjo,note=7,powered=true]: note_block[instrument=harp,note=7,powered=true] + note_block[instrument=banjo,note=7,powered=false]: note_block[instrument=harp,note=7,powered=false] + note_block[instrument=banjo,note=8,powered=true]: note_block[instrument=harp,note=8,powered=true] + note_block[instrument=banjo,note=8,powered=false]: note_block[instrument=harp,note=8,powered=false] + note_block[instrument=banjo,note=9,powered=true]: note_block[instrument=harp,note=9,powered=true] + note_block[instrument=banjo,note=9,powered=false]: note_block[instrument=harp,note=9,powered=false] + note_block[instrument=banjo,note=10,powered=true]: note_block[instrument=harp,note=10,powered=true] + note_block[instrument=banjo,note=10,powered=false]: note_block[instrument=harp,note=10,powered=false] + note_block[instrument=banjo,note=11,powered=true]: note_block[instrument=harp,note=11,powered=true] + note_block[instrument=banjo,note=11,powered=false]: note_block[instrument=harp,note=11,powered=false] + note_block[instrument=banjo,note=12,powered=true]: note_block[instrument=harp,note=12,powered=true] + note_block[instrument=banjo,note=12,powered=false]: note_block[instrument=harp,note=12,powered=false] + note_block[instrument=banjo,note=13,powered=true]: note_block[instrument=harp,note=13,powered=true] + note_block[instrument=banjo,note=13,powered=false]: note_block[instrument=harp,note=13,powered=false] + note_block[instrument=banjo,note=14,powered=true]: note_block[instrument=harp,note=14,powered=true] + note_block[instrument=banjo,note=14,powered=false]: note_block[instrument=harp,note=14,powered=false] + note_block[instrument=banjo,note=15,powered=true]: note_block[instrument=harp,note=15,powered=true] + note_block[instrument=banjo,note=15,powered=false]: note_block[instrument=harp,note=15,powered=false] + note_block[instrument=banjo,note=16,powered=true]: note_block[instrument=harp,note=16,powered=true] + note_block[instrument=banjo,note=16,powered=false]: note_block[instrument=harp,note=16,powered=false] + note_block[instrument=banjo,note=17,powered=true]: note_block[instrument=harp,note=17,powered=true] + note_block[instrument=banjo,note=17,powered=false]: note_block[instrument=harp,note=17,powered=false] + note_block[instrument=banjo,note=18,powered=true]: note_block[instrument=harp,note=18,powered=true] + note_block[instrument=banjo,note=18,powered=false]: note_block[instrument=harp,note=18,powered=false] + note_block[instrument=banjo,note=19,powered=true]: note_block[instrument=harp,note=19,powered=true] + note_block[instrument=banjo,note=19,powered=false]: note_block[instrument=harp,note=19,powered=false] + note_block[instrument=banjo,note=20,powered=true]: note_block[instrument=harp,note=20,powered=true] + note_block[instrument=banjo,note=20,powered=false]: note_block[instrument=harp,note=20,powered=false] + note_block[instrument=banjo,note=21,powered=true]: note_block[instrument=harp,note=21,powered=true] + note_block[instrument=banjo,note=21,powered=false]: note_block[instrument=harp,note=21,powered=false] + note_block[instrument=banjo,note=22,powered=true]: note_block[instrument=harp,note=22,powered=true] + note_block[instrument=banjo,note=22,powered=false]: note_block[instrument=harp,note=22,powered=false] + note_block[instrument=banjo,note=23,powered=true]: note_block[instrument=harp,note=23,powered=true] + note_block[instrument=banjo,note=23,powered=false]: note_block[instrument=harp,note=23,powered=false] + note_block[instrument=banjo,note=24,powered=true]: note_block[instrument=harp,note=24,powered=true] + note_block[instrument=banjo,note=24,powered=false]: note_block[instrument=harp,note=24,powered=false] + note_block[instrument=pling,note=0,powered=true]: note_block[instrument=harp,note=0,powered=true] + note_block[instrument=pling,note=0,powered=false]: note_block[instrument=harp,note=0,powered=false] + note_block[instrument=pling,note=1,powered=true]: note_block[instrument=harp,note=1,powered=true] + note_block[instrument=pling,note=1,powered=false]: note_block[instrument=harp,note=1,powered=false] + note_block[instrument=pling,note=2,powered=true]: note_block[instrument=harp,note=2,powered=true] + note_block[instrument=pling,note=2,powered=false]: note_block[instrument=harp,note=2,powered=false] + note_block[instrument=pling,note=3,powered=true]: note_block[instrument=harp,note=3,powered=true] + note_block[instrument=pling,note=3,powered=false]: note_block[instrument=harp,note=3,powered=false] + note_block[instrument=pling,note=4,powered=true]: note_block[instrument=harp,note=4,powered=true] + note_block[instrument=pling,note=4,powered=false]: note_block[instrument=harp,note=4,powered=false] + note_block[instrument=pling,note=5,powered=true]: note_block[instrument=harp,note=5,powered=true] + note_block[instrument=pling,note=5,powered=false]: note_block[instrument=harp,note=5,powered=false] + note_block[instrument=pling,note=6,powered=true]: note_block[instrument=harp,note=6,powered=true] + note_block[instrument=pling,note=6,powered=false]: note_block[instrument=harp,note=6,powered=false] + note_block[instrument=pling,note=7,powered=true]: note_block[instrument=harp,note=7,powered=true] + note_block[instrument=pling,note=7,powered=false]: note_block[instrument=harp,note=7,powered=false] + note_block[instrument=pling,note=8,powered=true]: note_block[instrument=harp,note=8,powered=true] + note_block[instrument=pling,note=8,powered=false]: note_block[instrument=harp,note=8,powered=false] + note_block[instrument=pling,note=9,powered=true]: note_block[instrument=harp,note=9,powered=true] + note_block[instrument=pling,note=9,powered=false]: note_block[instrument=harp,note=9,powered=false] + note_block[instrument=pling,note=10,powered=true]: note_block[instrument=harp,note=10,powered=true] + note_block[instrument=pling,note=10,powered=false]: note_block[instrument=harp,note=10,powered=false] + note_block[instrument=pling,note=11,powered=true]: note_block[instrument=harp,note=11,powered=true] + note_block[instrument=pling,note=11,powered=false]: note_block[instrument=harp,note=11,powered=false] + note_block[instrument=pling,note=12,powered=true]: note_block[instrument=harp,note=12,powered=true] + note_block[instrument=pling,note=12,powered=false]: note_block[instrument=harp,note=12,powered=false] + note_block[instrument=pling,note=13,powered=true]: note_block[instrument=harp,note=13,powered=true] + note_block[instrument=pling,note=13,powered=false]: note_block[instrument=harp,note=13,powered=false] + note_block[instrument=pling,note=14,powered=true]: note_block[instrument=harp,note=14,powered=true] + note_block[instrument=pling,note=14,powered=false]: note_block[instrument=harp,note=14,powered=false] + note_block[instrument=pling,note=15,powered=true]: note_block[instrument=harp,note=15,powered=true] + note_block[instrument=pling,note=15,powered=false]: note_block[instrument=harp,note=15,powered=false] + note_block[instrument=pling,note=16,powered=true]: note_block[instrument=harp,note=16,powered=true] + note_block[instrument=pling,note=16,powered=false]: note_block[instrument=harp,note=16,powered=false] + note_block[instrument=pling,note=17,powered=true]: note_block[instrument=harp,note=17,powered=true] + note_block[instrument=pling,note=17,powered=false]: note_block[instrument=harp,note=17,powered=false] + note_block[instrument=pling,note=18,powered=true]: note_block[instrument=harp,note=18,powered=true] + note_block[instrument=pling,note=18,powered=false]: note_block[instrument=harp,note=18,powered=false] + note_block[instrument=pling,note=19,powered=true]: note_block[instrument=harp,note=19,powered=true] + note_block[instrument=pling,note=19,powered=false]: note_block[instrument=harp,note=19,powered=false] + note_block[instrument=pling,note=20,powered=true]: note_block[instrument=harp,note=20,powered=true] + note_block[instrument=pling,note=20,powered=false]: note_block[instrument=harp,note=20,powered=false] + note_block[instrument=pling,note=21,powered=true]: note_block[instrument=harp,note=21,powered=true] + note_block[instrument=pling,note=21,powered=false]: note_block[instrument=harp,note=21,powered=false] + note_block[instrument=pling,note=22,powered=true]: note_block[instrument=harp,note=22,powered=true] + note_block[instrument=pling,note=22,powered=false]: note_block[instrument=harp,note=22,powered=false] + note_block[instrument=pling,note=23,powered=true]: note_block[instrument=harp,note=23,powered=true] + note_block[instrument=pling,note=23,powered=false]: note_block[instrument=harp,note=23,powered=false] + note_block[instrument=pling,note=24,powered=true]: note_block[instrument=harp,note=24,powered=true] + note_block[instrument=pling,note=24,powered=false]: note_block[instrument=harp,note=24,powered=false] + note_block[instrument=zombie,note=0,powered=true]: note_block[instrument=harp,note=0,powered=true] + note_block[instrument=zombie,note=0,powered=false]: note_block[instrument=harp,note=0,powered=false] + note_block[instrument=zombie,note=1,powered=true]: note_block[instrument=harp,note=1,powered=true] + note_block[instrument=zombie,note=1,powered=false]: note_block[instrument=harp,note=1,powered=false] + note_block[instrument=zombie,note=2,powered=true]: note_block[instrument=harp,note=2,powered=true] + note_block[instrument=zombie,note=2,powered=false]: note_block[instrument=harp,note=2,powered=false] + note_block[instrument=zombie,note=3,powered=true]: note_block[instrument=harp,note=3,powered=true] + note_block[instrument=zombie,note=3,powered=false]: note_block[instrument=harp,note=3,powered=false] + note_block[instrument=zombie,note=4,powered=true]: note_block[instrument=harp,note=4,powered=true] + note_block[instrument=zombie,note=4,powered=false]: note_block[instrument=harp,note=4,powered=false] + note_block[instrument=zombie,note=5,powered=true]: note_block[instrument=harp,note=5,powered=true] + note_block[instrument=zombie,note=5,powered=false]: note_block[instrument=harp,note=5,powered=false] + note_block[instrument=zombie,note=6,powered=true]: note_block[instrument=harp,note=6,powered=true] + note_block[instrument=zombie,note=6,powered=false]: note_block[instrument=harp,note=6,powered=false] + note_block[instrument=zombie,note=7,powered=true]: note_block[instrument=harp,note=7,powered=true] + note_block[instrument=zombie,note=7,powered=false]: note_block[instrument=harp,note=7,powered=false] + note_block[instrument=zombie,note=8,powered=true]: note_block[instrument=harp,note=8,powered=true] + note_block[instrument=zombie,note=8,powered=false]: note_block[instrument=harp,note=8,powered=false] + note_block[instrument=zombie,note=9,powered=true]: note_block[instrument=harp,note=9,powered=true] + note_block[instrument=zombie,note=9,powered=false]: note_block[instrument=harp,note=9,powered=false] + note_block[instrument=zombie,note=10,powered=true]: note_block[instrument=harp,note=10,powered=true] + note_block[instrument=zombie,note=10,powered=false]: note_block[instrument=harp,note=10,powered=false] + note_block[instrument=zombie,note=11,powered=true]: note_block[instrument=harp,note=11,powered=true] + note_block[instrument=zombie,note=11,powered=false]: note_block[instrument=harp,note=11,powered=false] + note_block[instrument=zombie,note=12,powered=true]: note_block[instrument=harp,note=12,powered=true] + note_block[instrument=zombie,note=12,powered=false]: note_block[instrument=harp,note=12,powered=false] + note_block[instrument=zombie,note=13,powered=true]: note_block[instrument=harp,note=13,powered=true] + note_block[instrument=zombie,note=13,powered=false]: note_block[instrument=harp,note=13,powered=false] + note_block[instrument=zombie,note=14,powered=true]: note_block[instrument=harp,note=14,powered=true] + note_block[instrument=zombie,note=14,powered=false]: note_block[instrument=harp,note=14,powered=false] + note_block[instrument=zombie,note=15,powered=true]: note_block[instrument=harp,note=15,powered=true] + note_block[instrument=zombie,note=15,powered=false]: note_block[instrument=harp,note=15,powered=false] + note_block[instrument=zombie,note=16,powered=true]: note_block[instrument=harp,note=16,powered=true] + note_block[instrument=zombie,note=16,powered=false]: note_block[instrument=harp,note=16,powered=false] + note_block[instrument=zombie,note=17,powered=true]: note_block[instrument=harp,note=17,powered=true] + note_block[instrument=zombie,note=17,powered=false]: note_block[instrument=harp,note=17,powered=false] + note_block[instrument=zombie,note=18,powered=true]: note_block[instrument=harp,note=18,powered=true] + note_block[instrument=zombie,note=18,powered=false]: note_block[instrument=harp,note=18,powered=false] + note_block[instrument=zombie,note=19,powered=true]: note_block[instrument=harp,note=19,powered=true] + note_block[instrument=zombie,note=19,powered=false]: note_block[instrument=harp,note=19,powered=false] + note_block[instrument=zombie,note=20,powered=true]: note_block[instrument=harp,note=20,powered=true] + note_block[instrument=zombie,note=20,powered=false]: note_block[instrument=harp,note=20,powered=false] + note_block[instrument=zombie,note=21,powered=true]: note_block[instrument=harp,note=21,powered=true] + note_block[instrument=zombie,note=21,powered=false]: note_block[instrument=harp,note=21,powered=false] + note_block[instrument=zombie,note=22,powered=true]: note_block[instrument=harp,note=22,powered=true] + note_block[instrument=zombie,note=22,powered=false]: note_block[instrument=harp,note=22,powered=false] + note_block[instrument=zombie,note=23,powered=true]: note_block[instrument=harp,note=23,powered=true] + note_block[instrument=zombie,note=23,powered=false]: note_block[instrument=harp,note=23,powered=false] + note_block[instrument=zombie,note=24,powered=true]: note_block[instrument=harp,note=24,powered=true] + note_block[instrument=zombie,note=24,powered=false]: note_block[instrument=harp,note=24,powered=false] + note_block[instrument=skeleton,note=0,powered=true]: note_block[instrument=harp,note=0,powered=true] + note_block[instrument=skeleton,note=0,powered=false]: note_block[instrument=harp,note=0,powered=false] + note_block[instrument=skeleton,note=1,powered=true]: note_block[instrument=harp,note=1,powered=true] + note_block[instrument=skeleton,note=1,powered=false]: note_block[instrument=harp,note=1,powered=false] + note_block[instrument=skeleton,note=2,powered=true]: note_block[instrument=harp,note=2,powered=true] + note_block[instrument=skeleton,note=2,powered=false]: note_block[instrument=harp,note=2,powered=false] + note_block[instrument=skeleton,note=3,powered=true]: note_block[instrument=harp,note=3,powered=true] + note_block[instrument=skeleton,note=3,powered=false]: note_block[instrument=harp,note=3,powered=false] + note_block[instrument=skeleton,note=4,powered=true]: note_block[instrument=harp,note=4,powered=true] + note_block[instrument=skeleton,note=4,powered=false]: note_block[instrument=harp,note=4,powered=false] + note_block[instrument=skeleton,note=5,powered=true]: note_block[instrument=harp,note=5,powered=true] + note_block[instrument=skeleton,note=5,powered=false]: note_block[instrument=harp,note=5,powered=false] + note_block[instrument=skeleton,note=6,powered=true]: note_block[instrument=harp,note=6,powered=true] + note_block[instrument=skeleton,note=6,powered=false]: note_block[instrument=harp,note=6,powered=false] + note_block[instrument=skeleton,note=7,powered=true]: note_block[instrument=harp,note=7,powered=true] + note_block[instrument=skeleton,note=7,powered=false]: note_block[instrument=harp,note=7,powered=false] + note_block[instrument=skeleton,note=8,powered=true]: note_block[instrument=harp,note=8,powered=true] + note_block[instrument=skeleton,note=8,powered=false]: note_block[instrument=harp,note=8,powered=false] + note_block[instrument=skeleton,note=9,powered=true]: note_block[instrument=harp,note=9,powered=true] + note_block[instrument=skeleton,note=9,powered=false]: note_block[instrument=harp,note=9,powered=false] + note_block[instrument=skeleton,note=10,powered=true]: note_block[instrument=harp,note=10,powered=true] + note_block[instrument=skeleton,note=10,powered=false]: note_block[instrument=harp,note=10,powered=false] + note_block[instrument=skeleton,note=11,powered=true]: note_block[instrument=harp,note=11,powered=true] + note_block[instrument=skeleton,note=11,powered=false]: note_block[instrument=harp,note=11,powered=false] + note_block[instrument=skeleton,note=12,powered=true]: note_block[instrument=harp,note=12,powered=true] + note_block[instrument=skeleton,note=12,powered=false]: note_block[instrument=harp,note=12,powered=false] + note_block[instrument=skeleton,note=13,powered=true]: note_block[instrument=harp,note=13,powered=true] + note_block[instrument=skeleton,note=13,powered=false]: note_block[instrument=harp,note=13,powered=false] + note_block[instrument=skeleton,note=14,powered=true]: note_block[instrument=harp,note=14,powered=true] + note_block[instrument=skeleton,note=14,powered=false]: note_block[instrument=harp,note=14,powered=false] + note_block[instrument=skeleton,note=15,powered=true]: note_block[instrument=harp,note=15,powered=true] + note_block[instrument=skeleton,note=15,powered=false]: note_block[instrument=harp,note=15,powered=false] + note_block[instrument=skeleton,note=16,powered=true]: note_block[instrument=harp,note=16,powered=true] + note_block[instrument=skeleton,note=16,powered=false]: note_block[instrument=harp,note=16,powered=false] + note_block[instrument=skeleton,note=17,powered=true]: note_block[instrument=harp,note=17,powered=true] + note_block[instrument=skeleton,note=17,powered=false]: note_block[instrument=harp,note=17,powered=false] + note_block[instrument=skeleton,note=18,powered=true]: note_block[instrument=harp,note=18,powered=true] + note_block[instrument=skeleton,note=18,powered=false]: note_block[instrument=harp,note=18,powered=false] + note_block[instrument=skeleton,note=19,powered=true]: note_block[instrument=harp,note=19,powered=true] + note_block[instrument=skeleton,note=19,powered=false]: note_block[instrument=harp,note=19,powered=false] + note_block[instrument=skeleton,note=20,powered=true]: note_block[instrument=harp,note=20,powered=true] + note_block[instrument=skeleton,note=20,powered=false]: note_block[instrument=harp,note=20,powered=false] + note_block[instrument=skeleton,note=21,powered=true]: note_block[instrument=harp,note=21,powered=true] + note_block[instrument=skeleton,note=21,powered=false]: note_block[instrument=harp,note=21,powered=false] + note_block[instrument=skeleton,note=22,powered=true]: note_block[instrument=harp,note=22,powered=true] + note_block[instrument=skeleton,note=22,powered=false]: note_block[instrument=harp,note=22,powered=false] + note_block[instrument=skeleton,note=23,powered=true]: note_block[instrument=harp,note=23,powered=true] + note_block[instrument=skeleton,note=23,powered=false]: note_block[instrument=harp,note=23,powered=false] + note_block[instrument=skeleton,note=24,powered=true]: note_block[instrument=harp,note=24,powered=true] + note_block[instrument=skeleton,note=24,powered=false]: note_block[instrument=harp,note=24,powered=false] + note_block[instrument=creeper,note=0,powered=true]: note_block[instrument=harp,note=0,powered=true] + note_block[instrument=creeper,note=0,powered=false]: note_block[instrument=harp,note=0,powered=false] + note_block[instrument=creeper,note=1,powered=true]: note_block[instrument=harp,note=1,powered=true] + note_block[instrument=creeper,note=1,powered=false]: note_block[instrument=harp,note=1,powered=false] + note_block[instrument=creeper,note=2,powered=true]: note_block[instrument=harp,note=2,powered=true] + note_block[instrument=creeper,note=2,powered=false]: note_block[instrument=harp,note=2,powered=false] + note_block[instrument=creeper,note=3,powered=true]: note_block[instrument=harp,note=3,powered=true] + note_block[instrument=creeper,note=3,powered=false]: note_block[instrument=harp,note=3,powered=false] + note_block[instrument=creeper,note=4,powered=true]: note_block[instrument=harp,note=4,powered=true] + note_block[instrument=creeper,note=4,powered=false]: note_block[instrument=harp,note=4,powered=false] + note_block[instrument=creeper,note=5,powered=true]: note_block[instrument=harp,note=5,powered=true] + note_block[instrument=creeper,note=5,powered=false]: note_block[instrument=harp,note=5,powered=false] + note_block[instrument=creeper,note=6,powered=true]: note_block[instrument=harp,note=6,powered=true] + note_block[instrument=creeper,note=6,powered=false]: note_block[instrument=harp,note=6,powered=false] + note_block[instrument=creeper,note=7,powered=true]: note_block[instrument=harp,note=7,powered=true] + note_block[instrument=creeper,note=7,powered=false]: note_block[instrument=harp,note=7,powered=false] + note_block[instrument=creeper,note=8,powered=true]: note_block[instrument=harp,note=8,powered=true] + note_block[instrument=creeper,note=8,powered=false]: note_block[instrument=harp,note=8,powered=false] + note_block[instrument=creeper,note=9,powered=true]: note_block[instrument=harp,note=9,powered=true] + note_block[instrument=creeper,note=9,powered=false]: note_block[instrument=harp,note=9,powered=false] + note_block[instrument=creeper,note=10,powered=true]: note_block[instrument=harp,note=10,powered=true] + note_block[instrument=creeper,note=10,powered=false]: note_block[instrument=harp,note=10,powered=false] + note_block[instrument=creeper,note=11,powered=true]: note_block[instrument=harp,note=11,powered=true] + note_block[instrument=creeper,note=11,powered=false]: note_block[instrument=harp,note=11,powered=false] + note_block[instrument=creeper,note=12,powered=true]: note_block[instrument=harp,note=12,powered=true] + note_block[instrument=creeper,note=12,powered=false]: note_block[instrument=harp,note=12,powered=false] + note_block[instrument=creeper,note=13,powered=true]: note_block[instrument=harp,note=13,powered=true] + note_block[instrument=creeper,note=13,powered=false]: note_block[instrument=harp,note=13,powered=false] + note_block[instrument=creeper,note=14,powered=true]: note_block[instrument=harp,note=14,powered=true] + note_block[instrument=creeper,note=14,powered=false]: note_block[instrument=harp,note=14,powered=false] + note_block[instrument=creeper,note=15,powered=true]: note_block[instrument=harp,note=15,powered=true] + note_block[instrument=creeper,note=15,powered=false]: note_block[instrument=harp,note=15,powered=false] + note_block[instrument=creeper,note=16,powered=true]: note_block[instrument=harp,note=16,powered=true] + note_block[instrument=creeper,note=16,powered=false]: note_block[instrument=harp,note=16,powered=false] + note_block[instrument=creeper,note=17,powered=true]: note_block[instrument=harp,note=17,powered=true] + note_block[instrument=creeper,note=17,powered=false]: note_block[instrument=harp,note=17,powered=false] + note_block[instrument=creeper,note=18,powered=true]: note_block[instrument=harp,note=18,powered=true] + note_block[instrument=creeper,note=18,powered=false]: note_block[instrument=harp,note=18,powered=false] + note_block[instrument=creeper,note=19,powered=true]: note_block[instrument=harp,note=19,powered=true] + note_block[instrument=creeper,note=19,powered=false]: note_block[instrument=harp,note=19,powered=false] + note_block[instrument=creeper,note=20,powered=true]: note_block[instrument=harp,note=20,powered=true] + note_block[instrument=creeper,note=20,powered=false]: note_block[instrument=harp,note=20,powered=false] + note_block[instrument=creeper,note=21,powered=true]: note_block[instrument=harp,note=21,powered=true] + note_block[instrument=creeper,note=21,powered=false]: note_block[instrument=harp,note=21,powered=false] + note_block[instrument=creeper,note=22,powered=true]: note_block[instrument=harp,note=22,powered=true] + note_block[instrument=creeper,note=22,powered=false]: note_block[instrument=harp,note=22,powered=false] + note_block[instrument=creeper,note=23,powered=true]: note_block[instrument=harp,note=23,powered=true] + note_block[instrument=creeper,note=23,powered=false]: note_block[instrument=harp,note=23,powered=false] + note_block[instrument=creeper,note=24,powered=true]: note_block[instrument=harp,note=24,powered=true] + note_block[instrument=creeper,note=24,powered=false]: note_block[instrument=harp,note=24,powered=false] + note_block[instrument=dragon,note=0,powered=true]: note_block[instrument=harp,note=0,powered=true] + note_block[instrument=dragon,note=0,powered=false]: note_block[instrument=harp,note=0,powered=false] + note_block[instrument=dragon,note=1,powered=true]: note_block[instrument=harp,note=1,powered=true] + note_block[instrument=dragon,note=1,powered=false]: note_block[instrument=harp,note=1,powered=false] + note_block[instrument=dragon,note=2,powered=true]: note_block[instrument=harp,note=2,powered=true] + note_block[instrument=dragon,note=2,powered=false]: note_block[instrument=harp,note=2,powered=false] + note_block[instrument=dragon,note=3,powered=true]: note_block[instrument=harp,note=3,powered=true] + note_block[instrument=dragon,note=3,powered=false]: note_block[instrument=harp,note=3,powered=false] + note_block[instrument=dragon,note=4,powered=true]: note_block[instrument=harp,note=4,powered=true] + note_block[instrument=dragon,note=4,powered=false]: note_block[instrument=harp,note=4,powered=false] + note_block[instrument=dragon,note=5,powered=true]: note_block[instrument=harp,note=5,powered=true] + note_block[instrument=dragon,note=5,powered=false]: note_block[instrument=harp,note=5,powered=false] + note_block[instrument=dragon,note=6,powered=true]: note_block[instrument=harp,note=6,powered=true] + note_block[instrument=dragon,note=6,powered=false]: note_block[instrument=harp,note=6,powered=false] + note_block[instrument=dragon,note=7,powered=true]: note_block[instrument=harp,note=7,powered=true] + note_block[instrument=dragon,note=7,powered=false]: note_block[instrument=harp,note=7,powered=false] + note_block[instrument=dragon,note=8,powered=true]: note_block[instrument=harp,note=8,powered=true] + note_block[instrument=dragon,note=8,powered=false]: note_block[instrument=harp,note=8,powered=false] + note_block[instrument=dragon,note=9,powered=true]: note_block[instrument=harp,note=9,powered=true] + note_block[instrument=dragon,note=9,powered=false]: note_block[instrument=harp,note=9,powered=false] + note_block[instrument=dragon,note=10,powered=true]: note_block[instrument=harp,note=10,powered=true] + note_block[instrument=dragon,note=10,powered=false]: note_block[instrument=harp,note=10,powered=false] + note_block[instrument=dragon,note=11,powered=true]: note_block[instrument=harp,note=11,powered=true] + note_block[instrument=dragon,note=11,powered=false]: note_block[instrument=harp,note=11,powered=false] + note_block[instrument=dragon,note=12,powered=true]: note_block[instrument=harp,note=12,powered=true] + note_block[instrument=dragon,note=12,powered=false]: note_block[instrument=harp,note=12,powered=false] + note_block[instrument=dragon,note=13,powered=true]: note_block[instrument=harp,note=13,powered=true] + note_block[instrument=dragon,note=13,powered=false]: note_block[instrument=harp,note=13,powered=false] + note_block[instrument=dragon,note=14,powered=true]: note_block[instrument=harp,note=14,powered=true] + note_block[instrument=dragon,note=14,powered=false]: note_block[instrument=harp,note=14,powered=false] + note_block[instrument=dragon,note=15,powered=true]: note_block[instrument=harp,note=15,powered=true] + note_block[instrument=dragon,note=15,powered=false]: note_block[instrument=harp,note=15,powered=false] + note_block[instrument=dragon,note=16,powered=true]: note_block[instrument=harp,note=16,powered=true] + note_block[instrument=dragon,note=16,powered=false]: note_block[instrument=harp,note=16,powered=false] + note_block[instrument=dragon,note=17,powered=true]: note_block[instrument=harp,note=17,powered=true] + note_block[instrument=dragon,note=17,powered=false]: note_block[instrument=harp,note=17,powered=false] + note_block[instrument=dragon,note=18,powered=true]: note_block[instrument=harp,note=18,powered=true] + note_block[instrument=dragon,note=18,powered=false]: note_block[instrument=harp,note=18,powered=false] + note_block[instrument=dragon,note=19,powered=true]: note_block[instrument=harp,note=19,powered=true] + note_block[instrument=dragon,note=19,powered=false]: note_block[instrument=harp,note=19,powered=false] + note_block[instrument=dragon,note=20,powered=true]: note_block[instrument=harp,note=20,powered=true] + note_block[instrument=dragon,note=20,powered=false]: note_block[instrument=harp,note=20,powered=false] + note_block[instrument=dragon,note=21,powered=true]: note_block[instrument=harp,note=21,powered=true] + note_block[instrument=dragon,note=21,powered=false]: note_block[instrument=harp,note=21,powered=false] + note_block[instrument=dragon,note=22,powered=true]: note_block[instrument=harp,note=22,powered=true] + note_block[instrument=dragon,note=22,powered=false]: note_block[instrument=harp,note=22,powered=false] + note_block[instrument=dragon,note=23,powered=true]: note_block[instrument=harp,note=23,powered=true] + note_block[instrument=dragon,note=23,powered=false]: note_block[instrument=harp,note=23,powered=false] + note_block[instrument=dragon,note=24,powered=true]: note_block[instrument=harp,note=24,powered=true] + note_block[instrument=dragon,note=24,powered=false]: note_block[instrument=harp,note=24,powered=false] + note_block[instrument=wither_skeleton,note=0,powered=true]: note_block[instrument=harp,note=0,powered=true] + note_block[instrument=wither_skeleton,note=0,powered=false]: note_block[instrument=harp,note=0,powered=false] + note_block[instrument=wither_skeleton,note=1,powered=true]: note_block[instrument=harp,note=1,powered=true] + note_block[instrument=wither_skeleton,note=1,powered=false]: note_block[instrument=harp,note=1,powered=false] + note_block[instrument=wither_skeleton,note=2,powered=true]: note_block[instrument=harp,note=2,powered=true] + note_block[instrument=wither_skeleton,note=2,powered=false]: note_block[instrument=harp,note=2,powered=false] + note_block[instrument=wither_skeleton,note=3,powered=true]: note_block[instrument=harp,note=3,powered=true] + note_block[instrument=wither_skeleton,note=3,powered=false]: note_block[instrument=harp,note=3,powered=false] + note_block[instrument=wither_skeleton,note=4,powered=true]: note_block[instrument=harp,note=4,powered=true] + note_block[instrument=wither_skeleton,note=4,powered=false]: note_block[instrument=harp,note=4,powered=false] + note_block[instrument=wither_skeleton,note=5,powered=true]: note_block[instrument=harp,note=5,powered=true] + note_block[instrument=wither_skeleton,note=5,powered=false]: note_block[instrument=harp,note=5,powered=false] + note_block[instrument=wither_skeleton,note=6,powered=true]: note_block[instrument=harp,note=6,powered=true] + note_block[instrument=wither_skeleton,note=6,powered=false]: note_block[instrument=harp,note=6,powered=false] + note_block[instrument=wither_skeleton,note=7,powered=true]: note_block[instrument=harp,note=7,powered=true] + note_block[instrument=wither_skeleton,note=7,powered=false]: note_block[instrument=harp,note=7,powered=false] + note_block[instrument=wither_skeleton,note=8,powered=true]: note_block[instrument=harp,note=8,powered=true] + note_block[instrument=wither_skeleton,note=8,powered=false]: note_block[instrument=harp,note=8,powered=false] + note_block[instrument=wither_skeleton,note=9,powered=true]: note_block[instrument=harp,note=9,powered=true] + note_block[instrument=wither_skeleton,note=9,powered=false]: note_block[instrument=harp,note=9,powered=false] + note_block[instrument=wither_skeleton,note=10,powered=true]: note_block[instrument=harp,note=10,powered=true] + note_block[instrument=wither_skeleton,note=10,powered=false]: note_block[instrument=harp,note=10,powered=false] + note_block[instrument=wither_skeleton,note=11,powered=true]: note_block[instrument=harp,note=11,powered=true] + note_block[instrument=wither_skeleton,note=11,powered=false]: note_block[instrument=harp,note=11,powered=false] + note_block[instrument=wither_skeleton,note=12,powered=true]: note_block[instrument=harp,note=12,powered=true] + note_block[instrument=wither_skeleton,note=12,powered=false]: note_block[instrument=harp,note=12,powered=false] + note_block[instrument=wither_skeleton,note=13,powered=true]: note_block[instrument=harp,note=13,powered=true] + note_block[instrument=wither_skeleton,note=13,powered=false]: note_block[instrument=harp,note=13,powered=false] + note_block[instrument=wither_skeleton,note=14,powered=true]: note_block[instrument=harp,note=14,powered=true] + note_block[instrument=wither_skeleton,note=14,powered=false]: note_block[instrument=harp,note=14,powered=false] + note_block[instrument=wither_skeleton,note=15,powered=true]: note_block[instrument=harp,note=15,powered=true] + note_block[instrument=wither_skeleton,note=15,powered=false]: note_block[instrument=harp,note=15,powered=false] + note_block[instrument=wither_skeleton,note=16,powered=true]: note_block[instrument=harp,note=16,powered=true] + note_block[instrument=wither_skeleton,note=16,powered=false]: note_block[instrument=harp,note=16,powered=false] + note_block[instrument=wither_skeleton,note=17,powered=true]: note_block[instrument=harp,note=17,powered=true] + note_block[instrument=wither_skeleton,note=17,powered=false]: note_block[instrument=harp,note=17,powered=false] + note_block[instrument=wither_skeleton,note=18,powered=true]: note_block[instrument=harp,note=18,powered=true] + note_block[instrument=wither_skeleton,note=18,powered=false]: note_block[instrument=harp,note=18,powered=false] + note_block[instrument=wither_skeleton,note=19,powered=true]: note_block[instrument=harp,note=19,powered=true] + note_block[instrument=wither_skeleton,note=19,powered=false]: note_block[instrument=harp,note=19,powered=false] + note_block[instrument=wither_skeleton,note=20,powered=true]: note_block[instrument=harp,note=20,powered=true] + note_block[instrument=wither_skeleton,note=20,powered=false]: note_block[instrument=harp,note=20,powered=false] + note_block[instrument=wither_skeleton,note=21,powered=true]: note_block[instrument=harp,note=21,powered=true] + note_block[instrument=wither_skeleton,note=21,powered=false]: note_block[instrument=harp,note=21,powered=false] + note_block[instrument=wither_skeleton,note=22,powered=true]: note_block[instrument=harp,note=22,powered=true] + note_block[instrument=wither_skeleton,note=22,powered=false]: note_block[instrument=harp,note=22,powered=false] + note_block[instrument=wither_skeleton,note=23,powered=true]: note_block[instrument=harp,note=23,powered=true] + note_block[instrument=wither_skeleton,note=23,powered=false]: note_block[instrument=harp,note=23,powered=false] + note_block[instrument=wither_skeleton,note=24,powered=true]: note_block[instrument=harp,note=24,powered=true] + note_block[instrument=wither_skeleton,note=24,powered=false]: note_block[instrument=harp,note=24,powered=false] + note_block[instrument=piglin,note=0,powered=true]: note_block[instrument=harp,note=0,powered=true] + note_block[instrument=piglin,note=0,powered=false]: note_block[instrument=harp,note=0,powered=false] + note_block[instrument=piglin,note=1,powered=true]: note_block[instrument=harp,note=1,powered=true] + note_block[instrument=piglin,note=1,powered=false]: note_block[instrument=harp,note=1,powered=false] + note_block[instrument=piglin,note=2,powered=true]: note_block[instrument=harp,note=2,powered=true] + note_block[instrument=piglin,note=2,powered=false]: note_block[instrument=harp,note=2,powered=false] + note_block[instrument=piglin,note=3,powered=true]: note_block[instrument=harp,note=3,powered=true] + note_block[instrument=piglin,note=3,powered=false]: note_block[instrument=harp,note=3,powered=false] + note_block[instrument=piglin,note=4,powered=true]: note_block[instrument=harp,note=4,powered=true] + note_block[instrument=piglin,note=4,powered=false]: note_block[instrument=harp,note=4,powered=false] + note_block[instrument=piglin,note=5,powered=true]: note_block[instrument=harp,note=5,powered=true] + note_block[instrument=piglin,note=5,powered=false]: note_block[instrument=harp,note=5,powered=false] + note_block[instrument=piglin,note=6,powered=true]: note_block[instrument=harp,note=6,powered=true] + note_block[instrument=piglin,note=6,powered=false]: note_block[instrument=harp,note=6,powered=false] + note_block[instrument=piglin,note=7,powered=true]: note_block[instrument=harp,note=7,powered=true] + note_block[instrument=piglin,note=7,powered=false]: note_block[instrument=harp,note=7,powered=false] + note_block[instrument=piglin,note=8,powered=true]: note_block[instrument=harp,note=8,powered=true] + note_block[instrument=piglin,note=8,powered=false]: note_block[instrument=harp,note=8,powered=false] + note_block[instrument=piglin,note=9,powered=true]: note_block[instrument=harp,note=9,powered=true] + note_block[instrument=piglin,note=9,powered=false]: note_block[instrument=harp,note=9,powered=false] + note_block[instrument=piglin,note=10,powered=true]: note_block[instrument=harp,note=10,powered=true] + note_block[instrument=piglin,note=10,powered=false]: note_block[instrument=harp,note=10,powered=false] + note_block[instrument=piglin,note=11,powered=true]: note_block[instrument=harp,note=11,powered=true] + note_block[instrument=piglin,note=11,powered=false]: note_block[instrument=harp,note=11,powered=false] + note_block[instrument=piglin,note=12,powered=true]: note_block[instrument=harp,note=12,powered=true] + note_block[instrument=piglin,note=12,powered=false]: note_block[instrument=harp,note=12,powered=false] + note_block[instrument=piglin,note=13,powered=true]: note_block[instrument=harp,note=13,powered=true] + note_block[instrument=piglin,note=13,powered=false]: note_block[instrument=harp,note=13,powered=false] + note_block[instrument=piglin,note=14,powered=true]: note_block[instrument=harp,note=14,powered=true] + note_block[instrument=piglin,note=14,powered=false]: note_block[instrument=harp,note=14,powered=false] + note_block[instrument=piglin,note=15,powered=true]: note_block[instrument=harp,note=15,powered=true] + note_block[instrument=piglin,note=15,powered=false]: note_block[instrument=harp,note=15,powered=false] + note_block[instrument=piglin,note=16,powered=true]: note_block[instrument=harp,note=16,powered=true] + note_block[instrument=piglin,note=16,powered=false]: note_block[instrument=harp,note=16,powered=false] + note_block[instrument=piglin,note=17,powered=true]: note_block[instrument=harp,note=17,powered=true] + note_block[instrument=piglin,note=17,powered=false]: note_block[instrument=harp,note=17,powered=false] + note_block[instrument=piglin,note=18,powered=true]: note_block[instrument=harp,note=18,powered=true] + note_block[instrument=piglin,note=18,powered=false]: note_block[instrument=harp,note=18,powered=false] + note_block[instrument=piglin,note=19,powered=true]: note_block[instrument=harp,note=19,powered=true] + note_block[instrument=piglin,note=19,powered=false]: note_block[instrument=harp,note=19,powered=false] + note_block[instrument=piglin,note=20,powered=true]: note_block[instrument=harp,note=20,powered=true] + note_block[instrument=piglin,note=20,powered=false]: note_block[instrument=harp,note=20,powered=false] + note_block[instrument=piglin,note=21,powered=true]: note_block[instrument=harp,note=21,powered=true] + note_block[instrument=piglin,note=21,powered=false]: note_block[instrument=harp,note=21,powered=false] + note_block[instrument=piglin,note=22,powered=true]: note_block[instrument=harp,note=22,powered=true] + note_block[instrument=piglin,note=22,powered=false]: note_block[instrument=harp,note=22,powered=false] + note_block[instrument=piglin,note=23,powered=true]: note_block[instrument=harp,note=23,powered=true] + note_block[instrument=piglin,note=23,powered=false]: note_block[instrument=harp,note=23,powered=false] + note_block[instrument=piglin,note=24,powered=true]: note_block[instrument=harp,note=24,powered=true] + note_block[instrument=piglin,note=24,powered=false]: note_block[instrument=harp,note=24,powered=false] + note_block[instrument=custom_head,note=0,powered=true]: note_block[instrument=harp,note=0,powered=true] + note_block[instrument=custom_head,note=0,powered=false]: note_block[instrument=harp,note=0,powered=false] + note_block[instrument=custom_head,note=1,powered=true]: note_block[instrument=harp,note=1,powered=true] + note_block[instrument=custom_head,note=1,powered=false]: note_block[instrument=harp,note=1,powered=false] + note_block[instrument=custom_head,note=2,powered=true]: note_block[instrument=harp,note=2,powered=true] + note_block[instrument=custom_head,note=2,powered=false]: note_block[instrument=harp,note=2,powered=false] + note_block[instrument=custom_head,note=3,powered=true]: note_block[instrument=harp,note=3,powered=true] + note_block[instrument=custom_head,note=3,powered=false]: note_block[instrument=harp,note=3,powered=false] + note_block[instrument=custom_head,note=4,powered=true]: note_block[instrument=harp,note=4,powered=true] + note_block[instrument=custom_head,note=4,powered=false]: note_block[instrument=harp,note=4,powered=false] + note_block[instrument=custom_head,note=5,powered=true]: note_block[instrument=harp,note=5,powered=true] + note_block[instrument=custom_head,note=5,powered=false]: note_block[instrument=harp,note=5,powered=false] + note_block[instrument=custom_head,note=6,powered=true]: note_block[instrument=harp,note=6,powered=true] + note_block[instrument=custom_head,note=6,powered=false]: note_block[instrument=harp,note=6,powered=false] + note_block[instrument=custom_head,note=7,powered=true]: note_block[instrument=harp,note=7,powered=true] + note_block[instrument=custom_head,note=7,powered=false]: note_block[instrument=harp,note=7,powered=false] + note_block[instrument=custom_head,note=8,powered=true]: note_block[instrument=harp,note=8,powered=true] + note_block[instrument=custom_head,note=8,powered=false]: note_block[instrument=harp,note=8,powered=false] + note_block[instrument=custom_head,note=9,powered=true]: note_block[instrument=harp,note=9,powered=true] + note_block[instrument=custom_head,note=9,powered=false]: note_block[instrument=harp,note=9,powered=false] + note_block[instrument=custom_head,note=10,powered=true]: note_block[instrument=harp,note=10,powered=true] + note_block[instrument=custom_head,note=10,powered=false]: note_block[instrument=harp,note=10,powered=false] + note_block[instrument=custom_head,note=11,powered=true]: note_block[instrument=harp,note=11,powered=true] + note_block[instrument=custom_head,note=11,powered=false]: note_block[instrument=harp,note=11,powered=false] + note_block[instrument=custom_head,note=12,powered=true]: note_block[instrument=harp,note=12,powered=true] + note_block[instrument=custom_head,note=12,powered=false]: note_block[instrument=harp,note=12,powered=false] + note_block[instrument=custom_head,note=13,powered=true]: note_block[instrument=harp,note=13,powered=true] + note_block[instrument=custom_head,note=13,powered=false]: note_block[instrument=harp,note=13,powered=false] + note_block[instrument=custom_head,note=14,powered=true]: note_block[instrument=harp,note=14,powered=true] + note_block[instrument=custom_head,note=14,powered=false]: note_block[instrument=harp,note=14,powered=false] + note_block[instrument=custom_head,note=15,powered=true]: note_block[instrument=harp,note=15,powered=true] + note_block[instrument=custom_head,note=15,powered=false]: note_block[instrument=harp,note=15,powered=false] + note_block[instrument=custom_head,note=16,powered=true]: note_block[instrument=harp,note=16,powered=true] + note_block[instrument=custom_head,note=16,powered=false]: note_block[instrument=harp,note=16,powered=false] + note_block[instrument=custom_head,note=17,powered=true]: note_block[instrument=harp,note=17,powered=true] + note_block[instrument=custom_head,note=17,powered=false]: note_block[instrument=harp,note=17,powered=false] + note_block[instrument=custom_head,note=18,powered=true]: note_block[instrument=harp,note=18,powered=true] + note_block[instrument=custom_head,note=18,powered=false]: note_block[instrument=harp,note=18,powered=false] + note_block[instrument=custom_head,note=19,powered=true]: note_block[instrument=harp,note=19,powered=true] + note_block[instrument=custom_head,note=19,powered=false]: note_block[instrument=harp,note=19,powered=false] + note_block[instrument=custom_head,note=20,powered=true]: note_block[instrument=harp,note=20,powered=true] + note_block[instrument=custom_head,note=20,powered=false]: note_block[instrument=harp,note=20,powered=false] + note_block[instrument=custom_head,note=21,powered=true]: note_block[instrument=harp,note=21,powered=true] + note_block[instrument=custom_head,note=21,powered=false]: note_block[instrument=harp,note=21,powered=false] + note_block[instrument=custom_head,note=22,powered=true]: note_block[instrument=harp,note=22,powered=true] + note_block[instrument=custom_head,note=22,powered=false]: note_block[instrument=harp,note=22,powered=false] + note_block[instrument=custom_head,note=23,powered=true]: note_block[instrument=harp,note=23,powered=true] + note_block[instrument=custom_head,note=23,powered=false]: note_block[instrument=harp,note=23,powered=false] + note_block[instrument=custom_head,note=24,powered=true]: note_block[instrument=harp,note=24,powered=true] + note_block[instrument=custom_head,note=24,powered=false]: note_block[instrument=harp,note=24,powered=false] #### Trapdoor #### # Trapdoors look identical whether they're powered or not - which means we can double our trapdoors by using both states - minecraft:iron_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: minecraft:iron_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] - minecraft:iron_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: minecraft:iron_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] - minecraft:iron_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: minecraft:iron_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] - minecraft:iron_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: minecraft:iron_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] - minecraft:iron_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: minecraft:iron_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] - minecraft:iron_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: minecraft:iron_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] - minecraft:iron_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: minecraft:iron_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] - minecraft:iron_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: minecraft:iron_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] - minecraft:iron_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: minecraft:iron_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] - minecraft:iron_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: minecraft:iron_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] - minecraft:iron_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: minecraft:iron_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] - minecraft:iron_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: minecraft:iron_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] - minecraft:iron_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: minecraft:iron_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] - minecraft:iron_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: minecraft:iron_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] - minecraft:iron_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: minecraft:iron_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] - minecraft:iron_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: minecraft:iron_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] - minecraft:iron_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:iron_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:iron_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:iron_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:iron_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:iron_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:iron_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:iron_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:iron_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:iron_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:iron_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:iron_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:iron_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:iron_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:iron_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:iron_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:iron_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:iron_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:iron_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:iron_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:iron_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:iron_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:iron_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:iron_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:iron_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:iron_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:iron_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:iron_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:iron_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:iron_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:iron_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:iron_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:acacia_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: minecraft:acacia_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] - minecraft:acacia_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: minecraft:acacia_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] - minecraft:acacia_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: minecraft:acacia_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] - minecraft:acacia_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: minecraft:acacia_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] - minecraft:acacia_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: minecraft:acacia_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] - minecraft:acacia_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: minecraft:acacia_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] - minecraft:acacia_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: minecraft:acacia_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] - minecraft:acacia_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: minecraft:acacia_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] - minecraft:acacia_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: minecraft:acacia_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] - minecraft:acacia_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: minecraft:acacia_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] - minecraft:acacia_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: minecraft:acacia_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] - minecraft:acacia_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: minecraft:acacia_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] - minecraft:acacia_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: minecraft:acacia_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] - minecraft:acacia_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: minecraft:acacia_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] - minecraft:acacia_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: minecraft:acacia_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] - minecraft:acacia_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: minecraft:acacia_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] - minecraft:acacia_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:acacia_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:acacia_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:acacia_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:acacia_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:acacia_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:acacia_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:acacia_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:acacia_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:acacia_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:acacia_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:acacia_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:acacia_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:acacia_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:acacia_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:acacia_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:acacia_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:acacia_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:acacia_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:acacia_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:acacia_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:acacia_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:acacia_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:acacia_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:acacia_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:acacia_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:acacia_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:acacia_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:acacia_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:acacia_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:acacia_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:acacia_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] - minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] - minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] - minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] - minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] - minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] - minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] - minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] - minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] - minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] - minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] - minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] - minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] - minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] - minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] - minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] - minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:spruce_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: minecraft:spruce_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] - minecraft:spruce_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: minecraft:spruce_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] - minecraft:spruce_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: minecraft:spruce_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] - minecraft:spruce_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: minecraft:spruce_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] - minecraft:spruce_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: minecraft:spruce_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] - minecraft:spruce_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: minecraft:spruce_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] - minecraft:spruce_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: minecraft:spruce_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] - minecraft:spruce_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: minecraft:spruce_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] - minecraft:spruce_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: minecraft:spruce_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] - minecraft:spruce_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: minecraft:spruce_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] - minecraft:spruce_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: minecraft:spruce_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] - minecraft:spruce_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: minecraft:spruce_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] - minecraft:spruce_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: minecraft:spruce_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] - minecraft:spruce_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: minecraft:spruce_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] - minecraft:spruce_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: minecraft:spruce_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] - minecraft:spruce_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: minecraft:spruce_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] - minecraft:spruce_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:spruce_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:spruce_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:spruce_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:spruce_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:spruce_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:spruce_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:spruce_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:spruce_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:spruce_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:spruce_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:spruce_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:spruce_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:spruce_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:spruce_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:spruce_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:spruce_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:spruce_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:spruce_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:spruce_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:spruce_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:spruce_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:spruce_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:spruce_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:spruce_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:spruce_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:spruce_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:spruce_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:spruce_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:spruce_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:spruce_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:spruce_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:birch_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: minecraft:birch_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] - minecraft:birch_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: minecraft:birch_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] - minecraft:birch_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: minecraft:birch_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] - minecraft:birch_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: minecraft:birch_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] - minecraft:birch_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: minecraft:birch_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] - minecraft:birch_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: minecraft:birch_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] - minecraft:birch_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: minecraft:birch_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] - minecraft:birch_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: minecraft:birch_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] - minecraft:birch_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: minecraft:birch_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] - minecraft:birch_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: minecraft:birch_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] - minecraft:birch_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: minecraft:birch_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] - minecraft:birch_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: minecraft:birch_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] - minecraft:birch_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: minecraft:birch_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] - minecraft:birch_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: minecraft:birch_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] - minecraft:birch_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: minecraft:birch_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] - minecraft:birch_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: minecraft:birch_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] - minecraft:birch_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:birch_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:birch_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:birch_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:birch_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:birch_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:birch_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:birch_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:birch_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:birch_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:birch_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:birch_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:birch_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:birch_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:birch_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:birch_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:birch_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:birch_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:birch_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:birch_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:birch_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:birch_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:birch_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:birch_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:birch_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:birch_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:birch_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:birch_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:birch_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:birch_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:birch_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:birch_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:jungle_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: minecraft:jungle_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] - minecraft:jungle_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: minecraft:jungle_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] - minecraft:jungle_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: minecraft:jungle_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] - minecraft:jungle_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: minecraft:jungle_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] - minecraft:jungle_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: minecraft:jungle_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] - minecraft:jungle_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: minecraft:jungle_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] - minecraft:jungle_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: minecraft:jungle_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] - minecraft:jungle_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: minecraft:jungle_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] - minecraft:jungle_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: minecraft:jungle_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] - minecraft:jungle_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: minecraft:jungle_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] - minecraft:jungle_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: minecraft:jungle_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] - minecraft:jungle_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: minecraft:jungle_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] - minecraft:jungle_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: minecraft:jungle_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] - minecraft:jungle_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: minecraft:jungle_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] - minecraft:jungle_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: minecraft:jungle_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] - minecraft:jungle_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: minecraft:jungle_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] - minecraft:jungle_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:jungle_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:jungle_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:jungle_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:jungle_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:jungle_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:jungle_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:jungle_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:jungle_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:jungle_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:jungle_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:jungle_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:jungle_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:jungle_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:jungle_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:jungle_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:jungle_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:jungle_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:jungle_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:jungle_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:jungle_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:jungle_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:jungle_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:jungle_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:jungle_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:jungle_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:jungle_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:jungle_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:jungle_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:jungle_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:jungle_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:jungle_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:dark_oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: minecraft:dark_oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] - minecraft:dark_oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: minecraft:dark_oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] - minecraft:dark_oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: minecraft:dark_oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] - minecraft:dark_oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: minecraft:dark_oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] - minecraft:dark_oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: minecraft:dark_oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] - minecraft:dark_oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: minecraft:dark_oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] - minecraft:dark_oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: minecraft:dark_oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] - minecraft:dark_oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: minecraft:dark_oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] - minecraft:dark_oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: minecraft:dark_oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] - minecraft:dark_oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: minecraft:dark_oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] - minecraft:dark_oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: minecraft:dark_oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] - minecraft:dark_oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: minecraft:dark_oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] - minecraft:dark_oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: minecraft:dark_oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] - minecraft:dark_oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: minecraft:dark_oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] - minecraft:dark_oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: minecraft:dark_oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] - minecraft:dark_oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: minecraft:dark_oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] - minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:mangrove_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: minecraft:mangrove_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] - minecraft:mangrove_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: minecraft:mangrove_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] - minecraft:mangrove_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: minecraft:mangrove_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] - minecraft:mangrove_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: minecraft:mangrove_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] - minecraft:mangrove_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: minecraft:mangrove_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] - minecraft:mangrove_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: minecraft:mangrove_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] - minecraft:mangrove_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: minecraft:mangrove_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] - minecraft:mangrove_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: minecraft:mangrove_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] - minecraft:mangrove_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: minecraft:mangrove_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] - minecraft:mangrove_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: minecraft:mangrove_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] - minecraft:mangrove_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: minecraft:mangrove_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] - minecraft:mangrove_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: minecraft:mangrove_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] - minecraft:mangrove_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: minecraft:mangrove_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] - minecraft:mangrove_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: minecraft:mangrove_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] - minecraft:mangrove_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: minecraft:mangrove_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] - minecraft:mangrove_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: minecraft:mangrove_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] - minecraft:mangrove_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:mangrove_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:mangrove_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:mangrove_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:mangrove_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:mangrove_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:mangrove_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:mangrove_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:mangrove_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:mangrove_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:mangrove_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:mangrove_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:mangrove_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:mangrove_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:mangrove_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:mangrove_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:mangrove_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:mangrove_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:mangrove_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:mangrove_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:mangrove_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:mangrove_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:mangrove_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:mangrove_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:mangrove_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:mangrove_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:mangrove_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:mangrove_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:mangrove_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:mangrove_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:mangrove_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:mangrove_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:cherry_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: minecraft:cherry_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] - minecraft:cherry_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: minecraft:cherry_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] - minecraft:cherry_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: minecraft:cherry_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] - minecraft:cherry_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: minecraft:cherry_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] - minecraft:cherry_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: minecraft:cherry_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] - minecraft:cherry_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: minecraft:cherry_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] - minecraft:cherry_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: minecraft:cherry_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] - minecraft:cherry_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: minecraft:cherry_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] - minecraft:cherry_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: minecraft:cherry_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] - minecraft:cherry_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: minecraft:cherry_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] - minecraft:cherry_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: minecraft:cherry_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] - minecraft:cherry_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: minecraft:cherry_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] - minecraft:cherry_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: minecraft:cherry_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] - minecraft:cherry_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: minecraft:cherry_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] - minecraft:cherry_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: minecraft:cherry_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] - minecraft:cherry_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: minecraft:cherry_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] - minecraft:cherry_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:cherry_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:cherry_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:cherry_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:cherry_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:cherry_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:cherry_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:cherry_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:cherry_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:cherry_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:cherry_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:cherry_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:cherry_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:cherry_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:cherry_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:cherry_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:cherry_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:cherry_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:cherry_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:cherry_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:cherry_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:cherry_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:cherry_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:cherry_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:cherry_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:cherry_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:cherry_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:cherry_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:cherry_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:cherry_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:cherry_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:cherry_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:bamboo_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: minecraft:bamboo_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] - minecraft:bamboo_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: minecraft:bamboo_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] - minecraft:bamboo_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: minecraft:bamboo_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] - minecraft:bamboo_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: minecraft:bamboo_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] - minecraft:bamboo_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: minecraft:bamboo_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] - minecraft:bamboo_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: minecraft:bamboo_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] - minecraft:bamboo_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: minecraft:bamboo_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] - minecraft:bamboo_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: minecraft:bamboo_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] - minecraft:bamboo_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: minecraft:bamboo_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] - minecraft:bamboo_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: minecraft:bamboo_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] - minecraft:bamboo_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: minecraft:bamboo_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] - minecraft:bamboo_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: minecraft:bamboo_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] - minecraft:bamboo_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: minecraft:bamboo_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] - minecraft:bamboo_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: minecraft:bamboo_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] - minecraft:bamboo_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: minecraft:bamboo_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] - minecraft:bamboo_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: minecraft:bamboo_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] - minecraft:bamboo_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:bamboo_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:bamboo_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:bamboo_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:bamboo_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:bamboo_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:bamboo_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:bamboo_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:bamboo_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:bamboo_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:bamboo_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:bamboo_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:bamboo_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:bamboo_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:bamboo_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:bamboo_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:bamboo_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:bamboo_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:bamboo_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:bamboo_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:bamboo_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:bamboo_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:bamboo_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:bamboo_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:bamboo_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:bamboo_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:bamboo_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:bamboo_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:bamboo_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:bamboo_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:bamboo_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:bamboo_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:crimson_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: minecraft:crimson_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] - minecraft:crimson_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: minecraft:crimson_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] - minecraft:crimson_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: minecraft:crimson_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] - minecraft:crimson_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: minecraft:crimson_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] - minecraft:crimson_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: minecraft:crimson_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] - minecraft:crimson_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: minecraft:crimson_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] - minecraft:crimson_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: minecraft:crimson_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] - minecraft:crimson_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: minecraft:crimson_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] - minecraft:crimson_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: minecraft:crimson_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] - minecraft:crimson_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: minecraft:crimson_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] - minecraft:crimson_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: minecraft:crimson_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] - minecraft:crimson_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: minecraft:crimson_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] - minecraft:crimson_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: minecraft:crimson_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] - minecraft:crimson_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: minecraft:crimson_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] - minecraft:crimson_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: minecraft:crimson_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] - minecraft:crimson_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: minecraft:crimson_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] - minecraft:crimson_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:crimson_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:crimson_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:crimson_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:crimson_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:crimson_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:crimson_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:crimson_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:crimson_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:crimson_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:crimson_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:crimson_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:crimson_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:crimson_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:crimson_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:crimson_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:crimson_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:crimson_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:crimson_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:crimson_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:crimson_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:crimson_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:crimson_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:crimson_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:crimson_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:crimson_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:crimson_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:crimson_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:crimson_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:crimson_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:crimson_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:crimson_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:warped_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: minecraft:warped_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] - minecraft:warped_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: minecraft:warped_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] - minecraft:warped_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: minecraft:warped_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] - minecraft:warped_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: minecraft:warped_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] - minecraft:warped_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: minecraft:warped_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] - minecraft:warped_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: minecraft:warped_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] - minecraft:warped_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: minecraft:warped_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] - minecraft:warped_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: minecraft:warped_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] - minecraft:warped_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: minecraft:warped_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] - minecraft:warped_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: minecraft:warped_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] - minecraft:warped_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: minecraft:warped_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] - minecraft:warped_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: minecraft:warped_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] - minecraft:warped_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: minecraft:warped_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] - minecraft:warped_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: minecraft:warped_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] - minecraft:warped_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: minecraft:warped_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] - minecraft:warped_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: minecraft:warped_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] - minecraft:warped_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:warped_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:warped_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:warped_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:warped_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:warped_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:warped_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:warped_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:warped_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:warped_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:warped_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:warped_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:warped_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:warped_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:warped_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:warped_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:warped_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:warped_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:warped_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:warped_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:warped_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:warped_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:warped_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:warped_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:warped_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:warped_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:warped_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:warped_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:warped_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:warped_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:warped_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:warped_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] + iron_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: iron_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] + iron_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: iron_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] + iron_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: iron_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] + iron_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: iron_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] + iron_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: iron_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] + iron_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: iron_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] + iron_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: iron_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] + iron_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: iron_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] + iron_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: iron_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] + iron_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: iron_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] + iron_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: iron_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] + iron_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: iron_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] + iron_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: iron_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] + iron_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: iron_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] + iron_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: iron_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] + iron_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: iron_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] + iron_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: iron_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] + iron_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: iron_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] + iron_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: iron_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] + iron_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: iron_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] + iron_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: iron_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] + iron_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: iron_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] + iron_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: iron_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] + iron_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: iron_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] + iron_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: iron_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] + iron_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: iron_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] + iron_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: iron_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] + iron_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: iron_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] + iron_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: iron_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] + iron_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: iron_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] + iron_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: iron_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] + iron_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: iron_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] + acacia_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: acacia_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] + acacia_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: acacia_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] + acacia_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: acacia_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] + acacia_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: acacia_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] + acacia_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: acacia_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] + acacia_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: acacia_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] + acacia_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: acacia_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] + acacia_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: acacia_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] + acacia_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: acacia_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] + acacia_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: acacia_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] + acacia_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: acacia_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] + acacia_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: acacia_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] + acacia_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: acacia_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] + acacia_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: acacia_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] + acacia_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: acacia_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] + acacia_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: acacia_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] + acacia_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: acacia_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] + acacia_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: acacia_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] + acacia_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: acacia_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] + acacia_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: acacia_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] + acacia_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: acacia_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] + acacia_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: acacia_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] + acacia_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: acacia_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] + acacia_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: acacia_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] + acacia_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: acacia_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] + acacia_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: acacia_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] + acacia_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: acacia_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] + acacia_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: acacia_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] + acacia_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: acacia_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] + acacia_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: acacia_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] + acacia_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: acacia_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] + acacia_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: acacia_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] + oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] + oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] + oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] + oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] + oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] + oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] + oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] + oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] + oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] + oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] + oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] + oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] + oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] + oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] + oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] + oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] + oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] + oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] + oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] + oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] + oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] + oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] + oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] + oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] + oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] + oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] + oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] + oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] + oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] + oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] + oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] + oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] + spruce_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: spruce_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] + spruce_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: spruce_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] + spruce_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: spruce_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] + spruce_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: spruce_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] + spruce_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: spruce_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] + spruce_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: spruce_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] + spruce_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: spruce_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] + spruce_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: spruce_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] + spruce_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: spruce_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] + spruce_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: spruce_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] + spruce_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: spruce_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] + spruce_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: spruce_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] + spruce_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: spruce_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] + spruce_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: spruce_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] + spruce_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: spruce_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] + spruce_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: spruce_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] + spruce_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: spruce_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] + spruce_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: spruce_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] + spruce_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: spruce_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] + spruce_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: spruce_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] + spruce_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: spruce_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] + spruce_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: spruce_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] + spruce_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: spruce_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] + spruce_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: spruce_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] + spruce_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: spruce_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] + spruce_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: spruce_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] + spruce_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: spruce_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] + spruce_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: spruce_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] + spruce_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: spruce_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] + spruce_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: spruce_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] + spruce_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: spruce_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] + spruce_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: spruce_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] + birch_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: birch_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] + birch_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: birch_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] + birch_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: birch_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] + birch_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: birch_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] + birch_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: birch_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] + birch_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: birch_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] + birch_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: birch_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] + birch_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: birch_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] + birch_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: birch_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] + birch_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: birch_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] + birch_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: birch_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] + birch_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: birch_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] + birch_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: birch_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] + birch_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: birch_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] + birch_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: birch_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] + birch_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: birch_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] + birch_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: birch_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] + birch_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: birch_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] + birch_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: birch_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] + birch_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: birch_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] + birch_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: birch_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] + birch_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: birch_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] + birch_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: birch_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] + birch_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: birch_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] + birch_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: birch_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] + birch_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: birch_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] + birch_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: birch_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] + birch_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: birch_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] + birch_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: birch_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] + birch_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: birch_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] + birch_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: birch_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] + birch_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: birch_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] + jungle_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: jungle_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] + jungle_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: jungle_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] + jungle_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: jungle_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] + jungle_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: jungle_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] + jungle_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: jungle_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] + jungle_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: jungle_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] + jungle_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: jungle_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] + jungle_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: jungle_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] + jungle_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: jungle_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] + jungle_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: jungle_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] + jungle_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: jungle_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] + jungle_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: jungle_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] + jungle_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: jungle_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] + jungle_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: jungle_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] + jungle_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: jungle_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] + jungle_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: jungle_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] + jungle_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: jungle_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] + jungle_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: jungle_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] + jungle_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: jungle_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] + jungle_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: jungle_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] + jungle_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: jungle_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] + jungle_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: jungle_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] + jungle_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: jungle_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] + jungle_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: jungle_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] + jungle_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: jungle_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] + jungle_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: jungle_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] + jungle_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: jungle_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] + jungle_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: jungle_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] + jungle_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: jungle_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] + jungle_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: jungle_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] + jungle_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: jungle_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] + jungle_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: jungle_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] + dark_oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: dark_oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] + dark_oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: dark_oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] + dark_oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: dark_oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] + dark_oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: dark_oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] + dark_oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: dark_oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] + dark_oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: dark_oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] + dark_oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: dark_oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] + dark_oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: dark_oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] + dark_oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: dark_oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] + dark_oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: dark_oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] + dark_oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: dark_oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] + dark_oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: dark_oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] + dark_oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: dark_oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] + dark_oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: dark_oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] + dark_oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: dark_oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] + dark_oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: dark_oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] + dark_oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: dark_oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] + dark_oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: dark_oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] + dark_oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: dark_oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] + dark_oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: dark_oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] + dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] + dark_oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: dark_oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] + dark_oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: dark_oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] + dark_oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: dark_oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] + dark_oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: dark_oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] + dark_oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: dark_oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] + dark_oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: dark_oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] + dark_oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: dark_oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] + dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] + dark_oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: dark_oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] + dark_oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: dark_oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] + dark_oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: dark_oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] + mangrove_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: mangrove_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] + mangrove_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: mangrove_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] + mangrove_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: mangrove_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] + mangrove_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: mangrove_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] + mangrove_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: mangrove_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] + mangrove_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: mangrove_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] + mangrove_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: mangrove_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] + mangrove_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: mangrove_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] + mangrove_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: mangrove_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] + mangrove_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: mangrove_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] + mangrove_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: mangrove_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] + mangrove_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: mangrove_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] + mangrove_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: mangrove_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] + mangrove_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: mangrove_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] + mangrove_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: mangrove_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] + mangrove_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: mangrove_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] + mangrove_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: mangrove_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] + mangrove_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: mangrove_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] + mangrove_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: mangrove_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] + mangrove_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: mangrove_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] + mangrove_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: mangrove_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] + mangrove_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: mangrove_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] + mangrove_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: mangrove_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] + mangrove_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: mangrove_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] + mangrove_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: mangrove_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] + mangrove_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: mangrove_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] + mangrove_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: mangrove_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] + mangrove_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: mangrove_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] + mangrove_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: mangrove_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] + mangrove_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: mangrove_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] + mangrove_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: mangrove_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] + mangrove_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: mangrove_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] + cherry_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: cherry_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] + cherry_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: cherry_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] + cherry_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: cherry_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] + cherry_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: cherry_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] + cherry_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: cherry_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] + cherry_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: cherry_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] + cherry_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: cherry_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] + cherry_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: cherry_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] + cherry_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: cherry_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] + cherry_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: cherry_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] + cherry_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: cherry_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] + cherry_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: cherry_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] + cherry_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: cherry_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] + cherry_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: cherry_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] + cherry_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: cherry_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] + cherry_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: cherry_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] + cherry_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: cherry_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] + cherry_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: cherry_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] + cherry_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: cherry_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] + cherry_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: cherry_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] + cherry_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: cherry_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] + cherry_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: cherry_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] + cherry_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: cherry_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] + cherry_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: cherry_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] + cherry_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: cherry_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] + cherry_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: cherry_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] + cherry_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: cherry_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] + cherry_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: cherry_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] + cherry_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: cherry_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] + cherry_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: cherry_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] + cherry_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: cherry_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] + cherry_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: cherry_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] + bamboo_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: bamboo_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] + bamboo_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: bamboo_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] + bamboo_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: bamboo_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] + bamboo_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: bamboo_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] + bamboo_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: bamboo_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] + bamboo_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: bamboo_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] + bamboo_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: bamboo_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] + bamboo_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: bamboo_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] + bamboo_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: bamboo_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] + bamboo_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: bamboo_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] + bamboo_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: bamboo_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] + bamboo_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: bamboo_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] + bamboo_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: bamboo_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] + bamboo_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: bamboo_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] + bamboo_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: bamboo_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] + bamboo_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: bamboo_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] + bamboo_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: bamboo_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] + bamboo_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: bamboo_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] + bamboo_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: bamboo_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] + bamboo_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: bamboo_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] + bamboo_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: bamboo_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] + bamboo_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: bamboo_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] + bamboo_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: bamboo_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] + bamboo_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: bamboo_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] + bamboo_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: bamboo_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] + bamboo_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: bamboo_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] + bamboo_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: bamboo_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] + bamboo_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: bamboo_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] + bamboo_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: bamboo_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] + bamboo_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: bamboo_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] + bamboo_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: bamboo_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] + bamboo_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: bamboo_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] + crimson_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: crimson_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] + crimson_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: crimson_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] + crimson_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: crimson_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] + crimson_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: crimson_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] + crimson_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: crimson_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] + crimson_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: crimson_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] + crimson_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: crimson_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] + crimson_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: crimson_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] + crimson_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: crimson_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] + crimson_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: crimson_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] + crimson_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: crimson_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] + crimson_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: crimson_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] + crimson_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: crimson_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] + crimson_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: crimson_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] + crimson_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: crimson_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] + crimson_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: crimson_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] + crimson_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: crimson_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] + crimson_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: crimson_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] + crimson_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: crimson_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] + crimson_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: crimson_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] + crimson_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: crimson_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] + crimson_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: crimson_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] + crimson_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: crimson_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] + crimson_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: crimson_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] + crimson_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: crimson_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] + crimson_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: crimson_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] + crimson_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: crimson_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] + crimson_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: crimson_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] + crimson_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: crimson_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] + crimson_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: crimson_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] + crimson_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: crimson_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] + crimson_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: crimson_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] + warped_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: warped_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] + warped_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: warped_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] + warped_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: warped_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] + warped_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: warped_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] + warped_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: warped_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] + warped_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: warped_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] + warped_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: warped_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] + warped_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: warped_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] + warped_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: warped_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] + warped_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: warped_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] + warped_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: warped_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] + warped_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: warped_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] + warped_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: warped_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] + warped_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: warped_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] + warped_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: warped_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] + warped_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: warped_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] + warped_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: warped_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] + warped_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: warped_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] + warped_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: warped_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] + warped_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: warped_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] + warped_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: warped_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] + warped_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: warped_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] + warped_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: warped_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] + warped_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: warped_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] + warped_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: warped_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] + warped_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: warped_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] + warped_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: warped_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] + warped_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: warped_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] + warped_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: warped_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] + warped_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: warped_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] + warped_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: warped_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] + warped_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: warped_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] $$>=1.20.3#trapdoor: - minecraft:copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: minecraft:copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] - minecraft:copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: minecraft:copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] - minecraft:copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: minecraft:copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] - minecraft:copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: minecraft:copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] - minecraft:copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: minecraft:copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] - minecraft:copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: minecraft:copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] - minecraft:copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: minecraft:copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] - minecraft:copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: minecraft:copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] - minecraft:copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: minecraft:copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] - minecraft:copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: minecraft:copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] - minecraft:copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: minecraft:copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] - minecraft:copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: minecraft:copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] - minecraft:copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: minecraft:copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] - minecraft:copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: minecraft:copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] - minecraft:copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: minecraft:copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] - minecraft:copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: minecraft:copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] - minecraft:copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:exposed_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: minecraft:exposed_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] - minecraft:exposed_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: minecraft:exposed_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] - minecraft:exposed_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: minecraft:exposed_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] - minecraft:exposed_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: minecraft:exposed_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] - minecraft:exposed_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: minecraft:exposed_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] - minecraft:exposed_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: minecraft:exposed_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] - minecraft:exposed_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: minecraft:exposed_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] - minecraft:exposed_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: minecraft:exposed_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] - minecraft:exposed_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: minecraft:exposed_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] - minecraft:exposed_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: minecraft:exposed_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] - minecraft:exposed_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: minecraft:exposed_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] - minecraft:exposed_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: minecraft:exposed_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] - minecraft:exposed_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: minecraft:exposed_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] - minecraft:exposed_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: minecraft:exposed_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] - minecraft:exposed_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: minecraft:exposed_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] - minecraft:exposed_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: minecraft:exposed_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] - minecraft:exposed_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:exposed_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:exposed_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:exposed_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:exposed_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:exposed_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:exposed_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:exposed_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:exposed_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:exposed_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:exposed_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:exposed_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:exposed_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:exposed_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:exposed_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:exposed_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:exposed_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:exposed_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:exposed_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:exposed_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:exposed_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:exposed_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:exposed_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:exposed_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:exposed_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:exposed_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:exposed_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:exposed_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:exposed_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:exposed_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:exposed_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:exposed_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:weathered_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: minecraft:weathered_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] - minecraft:weathered_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: minecraft:weathered_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] - minecraft:weathered_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: minecraft:weathered_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] - minecraft:weathered_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: minecraft:weathered_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] - minecraft:weathered_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: minecraft:weathered_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] - minecraft:weathered_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: minecraft:weathered_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] - minecraft:weathered_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: minecraft:weathered_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] - minecraft:weathered_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: minecraft:weathered_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] - minecraft:weathered_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: minecraft:weathered_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] - minecraft:weathered_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: minecraft:weathered_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] - minecraft:weathered_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: minecraft:weathered_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] - minecraft:weathered_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: minecraft:weathered_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] - minecraft:weathered_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: minecraft:weathered_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] - minecraft:weathered_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: minecraft:weathered_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] - minecraft:weathered_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: minecraft:weathered_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] - minecraft:weathered_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: minecraft:weathered_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] - minecraft:weathered_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:weathered_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:weathered_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:weathered_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:weathered_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:weathered_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:weathered_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:weathered_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:weathered_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:weathered_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:weathered_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:weathered_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:weathered_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:weathered_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:weathered_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:weathered_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:weathered_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:weathered_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:weathered_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:weathered_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:weathered_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:weathered_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:weathered_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:weathered_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:weathered_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:weathered_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:weathered_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:weathered_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:weathered_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:weathered_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:weathered_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:weathered_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:oxidized_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: minecraft:oxidized_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] - minecraft:oxidized_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: minecraft:oxidized_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] - minecraft:oxidized_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: minecraft:oxidized_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] - minecraft:oxidized_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: minecraft:oxidized_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] - minecraft:oxidized_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: minecraft:oxidized_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] - minecraft:oxidized_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: minecraft:oxidized_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] - minecraft:oxidized_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: minecraft:oxidized_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] - minecraft:oxidized_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: minecraft:oxidized_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] - minecraft:oxidized_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: minecraft:oxidized_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] - minecraft:oxidized_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: minecraft:oxidized_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] - minecraft:oxidized_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: minecraft:oxidized_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] - minecraft:oxidized_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: minecraft:oxidized_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] - minecraft:oxidized_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: minecraft:oxidized_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] - minecraft:oxidized_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: minecraft:oxidized_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] - minecraft:oxidized_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: minecraft:oxidized_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] - minecraft:oxidized_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: minecraft:oxidized_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] - minecraft:oxidized_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:oxidized_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:oxidized_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:oxidized_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:oxidized_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:oxidized_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:oxidized_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:oxidized_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:oxidized_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:oxidized_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:oxidized_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:oxidized_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:oxidized_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:oxidized_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:oxidized_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:oxidized_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:oxidized_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:oxidized_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:oxidized_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:oxidized_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:oxidized_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:oxidized_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:oxidized_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:oxidized_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:oxidized_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:oxidized_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:oxidized_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:oxidized_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:oxidized_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:oxidized_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:oxidized_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:oxidized_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] + copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] + copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] + copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] + copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] + copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] + copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] + copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] + copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] + copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] + copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] + copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] + copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] + copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] + copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] + copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] + copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] + copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] + copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] + copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] + copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] + copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] + copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] + copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] + copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] + copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] + copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] + copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] + copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] + copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] + copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] + copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] + copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] + exposed_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: exposed_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] + exposed_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: exposed_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] + exposed_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: exposed_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] + exposed_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: exposed_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] + exposed_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: exposed_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] + exposed_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: exposed_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] + exposed_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: exposed_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] + exposed_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: exposed_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] + exposed_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: exposed_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] + exposed_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: exposed_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] + exposed_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: exposed_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] + exposed_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: exposed_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] + exposed_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: exposed_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] + exposed_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: exposed_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] + exposed_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: exposed_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] + exposed_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: exposed_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] + exposed_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: exposed_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] + exposed_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: exposed_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] + exposed_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: exposed_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] + exposed_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: exposed_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] + exposed_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: exposed_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] + exposed_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: exposed_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] + exposed_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: exposed_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] + exposed_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: exposed_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] + exposed_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: exposed_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] + exposed_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: exposed_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] + exposed_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: exposed_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] + exposed_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: exposed_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] + exposed_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: exposed_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] + exposed_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: exposed_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] + exposed_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: exposed_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] + exposed_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: exposed_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] + weathered_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: weathered_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] + weathered_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: weathered_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] + weathered_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: weathered_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] + weathered_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: weathered_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] + weathered_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: weathered_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] + weathered_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: weathered_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] + weathered_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: weathered_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] + weathered_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: weathered_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] + weathered_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: weathered_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] + weathered_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: weathered_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] + weathered_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: weathered_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] + weathered_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: weathered_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] + weathered_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: weathered_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] + weathered_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: weathered_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] + weathered_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: weathered_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] + weathered_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: weathered_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] + weathered_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: weathered_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] + weathered_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: weathered_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] + weathered_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: weathered_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] + weathered_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: weathered_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] + weathered_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: weathered_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] + weathered_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: weathered_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] + weathered_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: weathered_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] + weathered_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: weathered_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] + weathered_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: weathered_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] + weathered_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: weathered_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] + weathered_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: weathered_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] + weathered_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: weathered_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] + weathered_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: weathered_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] + weathered_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: weathered_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] + weathered_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: weathered_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] + weathered_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: weathered_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] + oxidized_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: oxidized_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] + oxidized_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: oxidized_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] + oxidized_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: oxidized_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] + oxidized_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: oxidized_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] + oxidized_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: oxidized_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] + oxidized_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: oxidized_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] + oxidized_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: oxidized_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] + oxidized_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: oxidized_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] + oxidized_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: oxidized_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] + oxidized_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: oxidized_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] + oxidized_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: oxidized_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] + oxidized_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: oxidized_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] + oxidized_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: oxidized_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] + oxidized_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: oxidized_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] + oxidized_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: oxidized_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] + oxidized_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: oxidized_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] + oxidized_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: oxidized_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] + oxidized_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: oxidized_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] + oxidized_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: oxidized_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] + oxidized_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: oxidized_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] + oxidized_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: oxidized_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] + oxidized_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: oxidized_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] + oxidized_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: oxidized_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] + oxidized_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: oxidized_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] + oxidized_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: oxidized_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] + oxidized_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: oxidized_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] + oxidized_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: oxidized_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] + oxidized_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: oxidized_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] + oxidized_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: oxidized_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] + oxidized_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: oxidized_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] + oxidized_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: oxidized_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] + oxidized_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: oxidized_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] # Fun fact: copper blocks look the same whether waxed or not. # We're playing it safe with the default setup - keeping vanilla's waxed states recognizable. # But you can always change it to convert waxed blocks back to regular ones. - minecraft:waxed_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: minecraft:waxed_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] - minecraft:waxed_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: minecraft:waxed_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] - minecraft:waxed_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: minecraft:waxed_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] - minecraft:waxed_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: minecraft:waxed_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] - minecraft:waxed_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: minecraft:waxed_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] - minecraft:waxed_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: minecraft:waxed_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] - minecraft:waxed_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: minecraft:waxed_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] - minecraft:waxed_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: minecraft:waxed_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] - minecraft:waxed_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: minecraft:waxed_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] - minecraft:waxed_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: minecraft:waxed_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] - minecraft:waxed_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: minecraft:waxed_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] - minecraft:waxed_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: minecraft:waxed_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] - minecraft:waxed_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: minecraft:waxed_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] - minecraft:waxed_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: minecraft:waxed_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] - minecraft:waxed_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: minecraft:waxed_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] - minecraft:waxed_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: minecraft:waxed_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] - minecraft:waxed_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:waxed_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:waxed_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:waxed_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:waxed_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:waxed_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:waxed_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:waxed_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:waxed_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:waxed_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:waxed_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:waxed_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:waxed_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:waxed_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:waxed_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:waxed_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:waxed_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:waxed_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:waxed_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:waxed_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:waxed_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:waxed_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:waxed_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:waxed_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:waxed_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:waxed_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:waxed_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:waxed_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:waxed_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:waxed_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:waxed_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:waxed_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:waxed_exposed_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: minecraft:waxed_exposed_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] - minecraft:waxed_exposed_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: minecraft:waxed_exposed_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] - minecraft:waxed_exposed_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: minecraft:waxed_exposed_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] - minecraft:waxed_exposed_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: minecraft:waxed_exposed_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] - minecraft:waxed_exposed_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: minecraft:waxed_exposed_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] - minecraft:waxed_exposed_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: minecraft:waxed_exposed_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] - minecraft:waxed_exposed_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: minecraft:waxed_exposed_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] - minecraft:waxed_exposed_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: minecraft:waxed_exposed_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] - minecraft:waxed_exposed_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: minecraft:waxed_exposed_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] - minecraft:waxed_exposed_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: minecraft:waxed_exposed_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] - minecraft:waxed_exposed_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: minecraft:waxed_exposed_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] - minecraft:waxed_exposed_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: minecraft:waxed_exposed_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] - minecraft:waxed_exposed_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: minecraft:waxed_exposed_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] - minecraft:waxed_exposed_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: minecraft:waxed_exposed_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] - minecraft:waxed_exposed_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: minecraft:waxed_exposed_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] - minecraft:waxed_exposed_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: minecraft:waxed_exposed_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] - minecraft:waxed_exposed_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:waxed_exposed_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:waxed_exposed_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:waxed_exposed_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:waxed_exposed_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:waxed_exposed_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:waxed_exposed_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:waxed_exposed_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:waxed_exposed_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:waxed_exposed_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:waxed_exposed_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:waxed_exposed_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:waxed_exposed_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:waxed_exposed_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:waxed_exposed_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:waxed_exposed_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:waxed_exposed_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:waxed_exposed_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:waxed_exposed_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:waxed_exposed_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:waxed_exposed_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:waxed_exposed_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:waxed_exposed_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:waxed_exposed_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:waxed_exposed_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:waxed_exposed_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:waxed_exposed_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:waxed_exposed_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:waxed_exposed_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:waxed_exposed_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:waxed_exposed_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:waxed_exposed_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:waxed_weathered_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: minecraft:waxed_weathered_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] - minecraft:waxed_weathered_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: minecraft:waxed_weathered_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] - minecraft:waxed_weathered_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: minecraft:waxed_weathered_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] - minecraft:waxed_weathered_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: minecraft:waxed_weathered_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] - minecraft:waxed_weathered_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: minecraft:waxed_weathered_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] - minecraft:waxed_weathered_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: minecraft:waxed_weathered_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] - minecraft:waxed_weathered_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: minecraft:waxed_weathered_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] - minecraft:waxed_weathered_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: minecraft:waxed_weathered_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] - minecraft:waxed_weathered_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: minecraft:waxed_weathered_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] - minecraft:waxed_weathered_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: minecraft:waxed_weathered_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] - minecraft:waxed_weathered_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: minecraft:waxed_weathered_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] - minecraft:waxed_weathered_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: minecraft:waxed_weathered_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] - minecraft:waxed_weathered_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: minecraft:waxed_weathered_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] - minecraft:waxed_weathered_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: minecraft:waxed_weathered_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] - minecraft:waxed_weathered_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: minecraft:waxed_weathered_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] - minecraft:waxed_weathered_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: minecraft:waxed_weathered_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] - minecraft:waxed_weathered_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:waxed_weathered_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:waxed_weathered_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:waxed_weathered_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:waxed_weathered_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:waxed_weathered_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:waxed_weathered_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:waxed_weathered_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:waxed_weathered_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:waxed_weathered_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:waxed_weathered_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:waxed_weathered_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:waxed_weathered_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:waxed_weathered_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:waxed_weathered_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:waxed_weathered_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:waxed_weathered_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:waxed_weathered_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:waxed_weathered_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:waxed_weathered_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:waxed_weathered_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:waxed_weathered_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:waxed_weathered_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:waxed_weathered_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:waxed_weathered_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:waxed_weathered_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:waxed_weathered_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:waxed_weathered_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:waxed_weathered_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:waxed_weathered_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:waxed_weathered_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:waxed_weathered_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:waxed_oxidized_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: minecraft:waxed_oxidized_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] - minecraft:waxed_oxidized_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: minecraft:waxed_oxidized_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] - minecraft:waxed_oxidized_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: minecraft:waxed_oxidized_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] - minecraft:waxed_oxidized_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: minecraft:waxed_oxidized_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] - minecraft:waxed_oxidized_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: minecraft:waxed_oxidized_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] - minecraft:waxed_oxidized_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: minecraft:waxed_oxidized_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] - minecraft:waxed_oxidized_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: minecraft:waxed_oxidized_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] - minecraft:waxed_oxidized_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: minecraft:waxed_oxidized_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] - minecraft:waxed_oxidized_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: minecraft:waxed_oxidized_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] - minecraft:waxed_oxidized_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: minecraft:waxed_oxidized_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] - minecraft:waxed_oxidized_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: minecraft:waxed_oxidized_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] - minecraft:waxed_oxidized_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: minecraft:waxed_oxidized_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] - minecraft:waxed_oxidized_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: minecraft:waxed_oxidized_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] - minecraft:waxed_oxidized_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: minecraft:waxed_oxidized_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] - minecraft:waxed_oxidized_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: minecraft:waxed_oxidized_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] - minecraft:waxed_oxidized_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: minecraft:waxed_oxidized_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] - minecraft:waxed_oxidized_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:waxed_oxidized_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:waxed_oxidized_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:waxed_oxidized_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:waxed_oxidized_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:waxed_oxidized_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:waxed_oxidized_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:waxed_oxidized_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:waxed_oxidized_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:waxed_oxidized_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:waxed_oxidized_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:waxed_oxidized_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:waxed_oxidized_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:waxed_oxidized_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:waxed_oxidized_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:waxed_oxidized_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:waxed_oxidized_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:waxed_oxidized_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:waxed_oxidized_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:waxed_oxidized_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:waxed_oxidized_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:waxed_oxidized_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:waxed_oxidized_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:waxed_oxidized_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:waxed_oxidized_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:waxed_oxidized_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:waxed_oxidized_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:waxed_oxidized_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:waxed_oxidized_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:waxed_oxidized_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:waxed_oxidized_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:waxed_oxidized_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] + waxed_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: waxed_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] + waxed_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: waxed_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] + waxed_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: waxed_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] + waxed_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: waxed_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] + waxed_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: waxed_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] + waxed_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: waxed_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] + waxed_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: waxed_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] + waxed_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: waxed_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] + waxed_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: waxed_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] + waxed_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: waxed_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] + waxed_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: waxed_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] + waxed_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: waxed_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] + waxed_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: waxed_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] + waxed_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: waxed_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] + waxed_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: waxed_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] + waxed_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: waxed_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] + waxed_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: waxed_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] + waxed_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: waxed_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] + waxed_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: waxed_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] + waxed_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: waxed_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] + waxed_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: waxed_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] + waxed_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: waxed_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] + waxed_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: waxed_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] + waxed_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: waxed_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] + waxed_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: waxed_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] + waxed_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: waxed_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] + waxed_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: waxed_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] + waxed_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: waxed_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] + waxed_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: waxed_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] + waxed_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: waxed_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] + waxed_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: waxed_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] + waxed_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: waxed_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] + waxed_exposed_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: waxed_exposed_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] + waxed_exposed_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: waxed_exposed_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] + waxed_exposed_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: waxed_exposed_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] + waxed_exposed_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: waxed_exposed_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] + waxed_exposed_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: waxed_exposed_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] + waxed_exposed_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: waxed_exposed_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] + waxed_exposed_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: waxed_exposed_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] + waxed_exposed_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: waxed_exposed_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] + waxed_exposed_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: waxed_exposed_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] + waxed_exposed_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: waxed_exposed_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] + waxed_exposed_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: waxed_exposed_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] + waxed_exposed_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: waxed_exposed_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] + waxed_exposed_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: waxed_exposed_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] + waxed_exposed_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: waxed_exposed_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] + waxed_exposed_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: waxed_exposed_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] + waxed_exposed_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: waxed_exposed_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] + waxed_exposed_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: waxed_exposed_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] + waxed_exposed_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: waxed_exposed_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] + waxed_exposed_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: waxed_exposed_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] + waxed_exposed_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: waxed_exposed_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] + waxed_exposed_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: waxed_exposed_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] + waxed_exposed_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: waxed_exposed_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] + waxed_exposed_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: waxed_exposed_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] + waxed_exposed_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: waxed_exposed_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] + waxed_exposed_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: waxed_exposed_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] + waxed_exposed_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: waxed_exposed_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] + waxed_exposed_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: waxed_exposed_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] + waxed_exposed_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: waxed_exposed_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] + waxed_exposed_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: waxed_exposed_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] + waxed_exposed_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: waxed_exposed_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] + waxed_exposed_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: waxed_exposed_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] + waxed_exposed_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: waxed_exposed_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] + waxed_weathered_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: waxed_weathered_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] + waxed_weathered_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: waxed_weathered_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] + waxed_weathered_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: waxed_weathered_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] + waxed_weathered_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: waxed_weathered_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] + waxed_weathered_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: waxed_weathered_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] + waxed_weathered_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: waxed_weathered_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] + waxed_weathered_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: waxed_weathered_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] + waxed_weathered_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: waxed_weathered_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] + waxed_weathered_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: waxed_weathered_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] + waxed_weathered_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: waxed_weathered_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] + waxed_weathered_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: waxed_weathered_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] + waxed_weathered_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: waxed_weathered_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] + waxed_weathered_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: waxed_weathered_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] + waxed_weathered_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: waxed_weathered_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] + waxed_weathered_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: waxed_weathered_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] + waxed_weathered_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: waxed_weathered_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] + waxed_weathered_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: waxed_weathered_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] + waxed_weathered_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: waxed_weathered_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] + waxed_weathered_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: waxed_weathered_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] + waxed_weathered_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: waxed_weathered_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] + waxed_weathered_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: waxed_weathered_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] + waxed_weathered_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: waxed_weathered_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] + waxed_weathered_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: waxed_weathered_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] + waxed_weathered_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: waxed_weathered_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] + waxed_weathered_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: waxed_weathered_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] + waxed_weathered_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: waxed_weathered_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] + waxed_weathered_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: waxed_weathered_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] + waxed_weathered_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: waxed_weathered_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] + waxed_weathered_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: waxed_weathered_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] + waxed_weathered_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: waxed_weathered_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] + waxed_weathered_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: waxed_weathered_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] + waxed_weathered_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: waxed_weathered_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] + waxed_oxidized_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: waxed_oxidized_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] + waxed_oxidized_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: waxed_oxidized_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] + waxed_oxidized_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: waxed_oxidized_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] + waxed_oxidized_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: waxed_oxidized_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] + waxed_oxidized_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: waxed_oxidized_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] + waxed_oxidized_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: waxed_oxidized_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] + waxed_oxidized_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: waxed_oxidized_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] + waxed_oxidized_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: waxed_oxidized_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] + waxed_oxidized_copper_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: waxed_oxidized_copper_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] + waxed_oxidized_copper_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: waxed_oxidized_copper_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] + waxed_oxidized_copper_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: waxed_oxidized_copper_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] + waxed_oxidized_copper_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: waxed_oxidized_copper_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] + waxed_oxidized_copper_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: waxed_oxidized_copper_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] + waxed_oxidized_copper_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: waxed_oxidized_copper_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] + waxed_oxidized_copper_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: waxed_oxidized_copper_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] + waxed_oxidized_copper_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: waxed_oxidized_copper_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] + waxed_oxidized_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: waxed_oxidized_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] + waxed_oxidized_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: waxed_oxidized_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] + waxed_oxidized_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: waxed_oxidized_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] + waxed_oxidized_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: waxed_oxidized_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] + waxed_oxidized_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: waxed_oxidized_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] + waxed_oxidized_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: waxed_oxidized_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] + waxed_oxidized_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: waxed_oxidized_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] + waxed_oxidized_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: waxed_oxidized_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] + waxed_oxidized_copper_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: waxed_oxidized_copper_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] + waxed_oxidized_copper_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: waxed_oxidized_copper_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] + waxed_oxidized_copper_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: waxed_oxidized_copper_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] + waxed_oxidized_copper_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: waxed_oxidized_copper_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] + waxed_oxidized_copper_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: waxed_oxidized_copper_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] + waxed_oxidized_copper_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: waxed_oxidized_copper_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] + waxed_oxidized_copper_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: waxed_oxidized_copper_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] + waxed_oxidized_copper_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: waxed_oxidized_copper_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] $$>=1.21.4#trapdoor: - minecraft:pale_oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: minecraft:pale_oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] - minecraft:pale_oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: minecraft:pale_oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] - minecraft:pale_oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: minecraft:pale_oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] - minecraft:pale_oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: minecraft:pale_oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] - minecraft:pale_oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: minecraft:pale_oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] - minecraft:pale_oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: minecraft:pale_oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] - minecraft:pale_oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: minecraft:pale_oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] - minecraft:pale_oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: minecraft:pale_oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] - minecraft:pale_oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: minecraft:pale_oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] - minecraft:pale_oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: minecraft:pale_oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] - minecraft:pale_oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: minecraft:pale_oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] - minecraft:pale_oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: minecraft:pale_oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] - minecraft:pale_oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: minecraft:pale_oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] - minecraft:pale_oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: minecraft:pale_oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] - minecraft:pale_oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: minecraft:pale_oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] - minecraft:pale_oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: minecraft:pale_oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] - minecraft:pale_oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:pale_oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:pale_oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:pale_oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:pale_oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:pale_oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:pale_oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: minecraft:pale_oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] - minecraft:pale_oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:pale_oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:pale_oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:pale_oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:pale_oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:pale_oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:pale_oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: minecraft:pale_oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] - minecraft:pale_oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:pale_oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:pale_oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:pale_oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:pale_oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:pale_oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:pale_oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: minecraft:pale_oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] - minecraft:pale_oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:pale_oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:pale_oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:pale_oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:pale_oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:pale_oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] - minecraft:pale_oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: minecraft:pale_oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] + pale_oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]: pale_oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false] + pale_oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]: pale_oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false] + pale_oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]: pale_oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false] + pale_oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]: pale_oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false] + pale_oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]: pale_oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false] + pale_oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]: pale_oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false] + pale_oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]: pale_oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false] + pale_oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]: pale_oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false] + pale_oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]: pale_oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true] + pale_oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]: pale_oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true] + pale_oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]: pale_oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true] + pale_oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]: pale_oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true] + pale_oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]: pale_oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true] + pale_oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]: pale_oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true] + pale_oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]: pale_oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true] + pale_oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]: pale_oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true] + pale_oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]: pale_oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false] + pale_oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]: pale_oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false] + pale_oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]: pale_oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false] + pale_oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]: pale_oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false] + pale_oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]: pale_oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false] + pale_oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]: pale_oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false] + pale_oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]: pale_oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false] + pale_oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]: pale_oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false] + pale_oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]: pale_oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true] + pale_oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]: pale_oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true] + pale_oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]: pale_oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true] + pale_oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]: pale_oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true] + pale_oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]: pale_oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true] + pale_oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]: pale_oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true] + pale_oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]: pale_oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true] + pale_oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]: pale_oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true] #### Door #### # A door look exactly the same whether it's powered on or off, just like how a trapdoor works - minecraft:oak_door[facing=east,half=lower,hinge=left,open=false,powered=true]: minecraft:oak_door[facing=east,half=lower,hinge=left,open=false,powered=false] - minecraft:oak_door[facing=east,half=lower,hinge=right,open=false,powered=true]: minecraft:oak_door[facing=east,half=lower,hinge=right,open=false,powered=false] - minecraft:oak_door[facing=east,half=upper,hinge=left,open=false,powered=true]: minecraft:oak_door[facing=east,half=upper,hinge=left,open=false,powered=false] - minecraft:oak_door[facing=east,half=upper,hinge=right,open=false,powered=true]: minecraft:oak_door[facing=east,half=upper,hinge=right,open=false,powered=false] - minecraft:oak_door[facing=east,half=lower,hinge=left,open=true,powered=true]: minecraft:oak_door[facing=east,half=lower,hinge=left,open=true,powered=false] - minecraft:oak_door[facing=east,half=lower,hinge=right,open=true,powered=true]: minecraft:oak_door[facing=east,half=lower,hinge=right,open=true,powered=false] - minecraft:oak_door[facing=east,half=upper,hinge=left,open=true,powered=true]: minecraft:oak_door[facing=east,half=upper,hinge=left,open=true,powered=false] - minecraft:oak_door[facing=east,half=upper,hinge=right,open=true,powered=true]: minecraft:oak_door[facing=east,half=upper,hinge=right,open=true,powered=false] - minecraft:oak_door[facing=north,half=lower,hinge=left,open=false,powered=true]: minecraft:oak_door[facing=north,half=lower,hinge=left,open=false,powered=false] - minecraft:oak_door[facing=north,half=lower,hinge=right,open=false,powered=true]: minecraft:oak_door[facing=north,half=lower,hinge=right,open=false,powered=false] - minecraft:oak_door[facing=north,half=upper,hinge=left,open=false,powered=true]: minecraft:oak_door[facing=north,half=upper,hinge=left,open=false,powered=false] - minecraft:oak_door[facing=north,half=upper,hinge=right,open=false,powered=true]: minecraft:oak_door[facing=north,half=upper,hinge=right,open=false,powered=false] - minecraft:oak_door[facing=north,half=lower,hinge=left,open=true,powered=true]: minecraft:oak_door[facing=north,half=lower,hinge=left,open=true,powered=false] - minecraft:oak_door[facing=north,half=lower,hinge=right,open=true,powered=true]: minecraft:oak_door[facing=north,half=lower,hinge=right,open=true,powered=false] - minecraft:oak_door[facing=north,half=upper,hinge=left,open=true,powered=true]: minecraft:oak_door[facing=north,half=upper,hinge=left,open=true,powered=false] - minecraft:oak_door[facing=north,half=upper,hinge=right,open=true,powered=true]: minecraft:oak_door[facing=north,half=upper,hinge=right,open=true,powered=false] - minecraft:oak_door[facing=south,half=lower,hinge=left,open=false,powered=true]: minecraft:oak_door[facing=south,half=lower,hinge=left,open=false,powered=false] - minecraft:oak_door[facing=south,half=lower,hinge=right,open=false,powered=true]: minecraft:oak_door[facing=south,half=lower,hinge=right,open=false,powered=false] - minecraft:oak_door[facing=south,half=upper,hinge=left,open=false,powered=true]: minecraft:oak_door[facing=south,half=upper,hinge=left,open=false,powered=false] - minecraft:oak_door[facing=south,half=upper,hinge=right,open=false,powered=true]: minecraft:oak_door[facing=south,half=upper,hinge=right,open=false,powered=false] - minecraft:oak_door[facing=south,half=lower,hinge=left,open=true,powered=true]: minecraft:oak_door[facing=south,half=lower,hinge=left,open=true,powered=false] - minecraft:oak_door[facing=south,half=lower,hinge=right,open=true,powered=true]: minecraft:oak_door[facing=south,half=lower,hinge=right,open=true,powered=false] - minecraft:oak_door[facing=south,half=upper,hinge=left,open=true,powered=true]: minecraft:oak_door[facing=south,half=upper,hinge=left,open=true,powered=false] - minecraft:oak_door[facing=south,half=upper,hinge=right,open=true,powered=true]: minecraft:oak_door[facing=south,half=upper,hinge=right,open=true,powered=false] - minecraft:oak_door[facing=west,half=lower,hinge=left,open=false,powered=true]: minecraft:oak_door[facing=west,half=lower,hinge=left,open=false,powered=false] - minecraft:oak_door[facing=west,half=lower,hinge=right,open=false,powered=true]: minecraft:oak_door[facing=west,half=lower,hinge=right,open=false,powered=false] - minecraft:oak_door[facing=west,half=upper,hinge=left,open=false,powered=true]: minecraft:oak_door[facing=west,half=upper,hinge=left,open=false,powered=false] - minecraft:oak_door[facing=west,half=upper,hinge=right,open=false,powered=true]: minecraft:oak_door[facing=west,half=upper,hinge=right,open=false,powered=false] - minecraft:oak_door[facing=west,half=lower,hinge=left,open=true,powered=true]: minecraft:oak_door[facing=west,half=lower,hinge=left,open=true,powered=false] - minecraft:oak_door[facing=west,half=lower,hinge=right,open=true,powered=true]: minecraft:oak_door[facing=west,half=lower,hinge=right,open=true,powered=false] - minecraft:oak_door[facing=west,half=upper,hinge=left,open=true,powered=true]: minecraft:oak_door[facing=west,half=upper,hinge=left,open=true,powered=false] - minecraft:oak_door[facing=west,half=upper,hinge=right,open=true,powered=true]: minecraft:oak_door[facing=west,half=upper,hinge=right,open=true,powered=false] - minecraft:spruce_door[facing=east,half=lower,hinge=left,open=false,powered=true]: minecraft:spruce_door[facing=east,half=lower,hinge=left,open=false,powered=false] - minecraft:spruce_door[facing=east,half=lower,hinge=right,open=false,powered=true]: minecraft:spruce_door[facing=east,half=lower,hinge=right,open=false,powered=false] - minecraft:spruce_door[facing=east,half=upper,hinge=left,open=false,powered=true]: minecraft:spruce_door[facing=east,half=upper,hinge=left,open=false,powered=false] - minecraft:spruce_door[facing=east,half=upper,hinge=right,open=false,powered=true]: minecraft:spruce_door[facing=east,half=upper,hinge=right,open=false,powered=false] - minecraft:spruce_door[facing=east,half=lower,hinge=left,open=true,powered=true]: minecraft:spruce_door[facing=east,half=lower,hinge=left,open=true,powered=false] - minecraft:spruce_door[facing=east,half=lower,hinge=right,open=true,powered=true]: minecraft:spruce_door[facing=east,half=lower,hinge=right,open=true,powered=false] - minecraft:spruce_door[facing=east,half=upper,hinge=left,open=true,powered=true]: minecraft:spruce_door[facing=east,half=upper,hinge=left,open=true,powered=false] - minecraft:spruce_door[facing=east,half=upper,hinge=right,open=true,powered=true]: minecraft:spruce_door[facing=east,half=upper,hinge=right,open=true,powered=false] - minecraft:spruce_door[facing=north,half=lower,hinge=left,open=false,powered=true]: minecraft:spruce_door[facing=north,half=lower,hinge=left,open=false,powered=false] - minecraft:spruce_door[facing=north,half=lower,hinge=right,open=false,powered=true]: minecraft:spruce_door[facing=north,half=lower,hinge=right,open=false,powered=false] - minecraft:spruce_door[facing=north,half=upper,hinge=left,open=false,powered=true]: minecraft:spruce_door[facing=north,half=upper,hinge=left,open=false,powered=false] - minecraft:spruce_door[facing=north,half=upper,hinge=right,open=false,powered=true]: minecraft:spruce_door[facing=north,half=upper,hinge=right,open=false,powered=false] - minecraft:spruce_door[facing=north,half=lower,hinge=left,open=true,powered=true]: minecraft:spruce_door[facing=north,half=lower,hinge=left,open=true,powered=false] - minecraft:spruce_door[facing=north,half=lower,hinge=right,open=true,powered=true]: minecraft:spruce_door[facing=north,half=lower,hinge=right,open=true,powered=false] - minecraft:spruce_door[facing=north,half=upper,hinge=left,open=true,powered=true]: minecraft:spruce_door[facing=north,half=upper,hinge=left,open=true,powered=false] - minecraft:spruce_door[facing=north,half=upper,hinge=right,open=true,powered=true]: minecraft:spruce_door[facing=north,half=upper,hinge=right,open=true,powered=false] - minecraft:spruce_door[facing=south,half=lower,hinge=left,open=false,powered=true]: minecraft:spruce_door[facing=south,half=lower,hinge=left,open=false,powered=false] - minecraft:spruce_door[facing=south,half=lower,hinge=right,open=false,powered=true]: minecraft:spruce_door[facing=south,half=lower,hinge=right,open=false,powered=false] - minecraft:spruce_door[facing=south,half=upper,hinge=left,open=false,powered=true]: minecraft:spruce_door[facing=south,half=upper,hinge=left,open=false,powered=false] - minecraft:spruce_door[facing=south,half=upper,hinge=right,open=false,powered=true]: minecraft:spruce_door[facing=south,half=upper,hinge=right,open=false,powered=false] - minecraft:spruce_door[facing=south,half=lower,hinge=left,open=true,powered=true]: minecraft:spruce_door[facing=south,half=lower,hinge=left,open=true,powered=false] - minecraft:spruce_door[facing=south,half=lower,hinge=right,open=true,powered=true]: minecraft:spruce_door[facing=south,half=lower,hinge=right,open=true,powered=false] - minecraft:spruce_door[facing=south,half=upper,hinge=left,open=true,powered=true]: minecraft:spruce_door[facing=south,half=upper,hinge=left,open=true,powered=false] - minecraft:spruce_door[facing=south,half=upper,hinge=right,open=true,powered=true]: minecraft:spruce_door[facing=south,half=upper,hinge=right,open=true,powered=false] - minecraft:spruce_door[facing=west,half=lower,hinge=left,open=false,powered=true]: minecraft:spruce_door[facing=west,half=lower,hinge=left,open=false,powered=false] - minecraft:spruce_door[facing=west,half=lower,hinge=right,open=false,powered=true]: minecraft:spruce_door[facing=west,half=lower,hinge=right,open=false,powered=false] - minecraft:spruce_door[facing=west,half=upper,hinge=left,open=false,powered=true]: minecraft:spruce_door[facing=west,half=upper,hinge=left,open=false,powered=false] - minecraft:spruce_door[facing=west,half=upper,hinge=right,open=false,powered=true]: minecraft:spruce_door[facing=west,half=upper,hinge=right,open=false,powered=false] - minecraft:spruce_door[facing=west,half=lower,hinge=left,open=true,powered=true]: minecraft:spruce_door[facing=west,half=lower,hinge=left,open=true,powered=false] - minecraft:spruce_door[facing=west,half=lower,hinge=right,open=true,powered=true]: minecraft:spruce_door[facing=west,half=lower,hinge=right,open=true,powered=false] - minecraft:spruce_door[facing=west,half=upper,hinge=left,open=true,powered=true]: minecraft:spruce_door[facing=west,half=upper,hinge=left,open=true,powered=false] - minecraft:spruce_door[facing=west,half=upper,hinge=right,open=true,powered=true]: minecraft:spruce_door[facing=west,half=upper,hinge=right,open=true,powered=false] - minecraft:birch_door[facing=east,half=lower,hinge=left,open=false,powered=true]: minecraft:birch_door[facing=east,half=lower,hinge=left,open=false,powered=false] - minecraft:birch_door[facing=east,half=lower,hinge=right,open=false,powered=true]: minecraft:birch_door[facing=east,half=lower,hinge=right,open=false,powered=false] - minecraft:birch_door[facing=east,half=upper,hinge=left,open=false,powered=true]: minecraft:birch_door[facing=east,half=upper,hinge=left,open=false,powered=false] - minecraft:birch_door[facing=east,half=upper,hinge=right,open=false,powered=true]: minecraft:birch_door[facing=east,half=upper,hinge=right,open=false,powered=false] - minecraft:birch_door[facing=east,half=lower,hinge=left,open=true,powered=true]: minecraft:birch_door[facing=east,half=lower,hinge=left,open=true,powered=false] - minecraft:birch_door[facing=east,half=lower,hinge=right,open=true,powered=true]: minecraft:birch_door[facing=east,half=lower,hinge=right,open=true,powered=false] - minecraft:birch_door[facing=east,half=upper,hinge=left,open=true,powered=true]: minecraft:birch_door[facing=east,half=upper,hinge=left,open=true,powered=false] - minecraft:birch_door[facing=east,half=upper,hinge=right,open=true,powered=true]: minecraft:birch_door[facing=east,half=upper,hinge=right,open=true,powered=false] - minecraft:birch_door[facing=north,half=lower,hinge=left,open=false,powered=true]: minecraft:birch_door[facing=north,half=lower,hinge=left,open=false,powered=false] - minecraft:birch_door[facing=north,half=lower,hinge=right,open=false,powered=true]: minecraft:birch_door[facing=north,half=lower,hinge=right,open=false,powered=false] - minecraft:birch_door[facing=north,half=upper,hinge=left,open=false,powered=true]: minecraft:birch_door[facing=north,half=upper,hinge=left,open=false,powered=false] - minecraft:birch_door[facing=north,half=upper,hinge=right,open=false,powered=true]: minecraft:birch_door[facing=north,half=upper,hinge=right,open=false,powered=false] - minecraft:birch_door[facing=north,half=lower,hinge=left,open=true,powered=true]: minecraft:birch_door[facing=north,half=lower,hinge=left,open=true,powered=false] - minecraft:birch_door[facing=north,half=lower,hinge=right,open=true,powered=true]: minecraft:birch_door[facing=north,half=lower,hinge=right,open=true,powered=false] - minecraft:birch_door[facing=north,half=upper,hinge=left,open=true,powered=true]: minecraft:birch_door[facing=north,half=upper,hinge=left,open=true,powered=false] - minecraft:birch_door[facing=north,half=upper,hinge=right,open=true,powered=true]: minecraft:birch_door[facing=north,half=upper,hinge=right,open=true,powered=false] - minecraft:birch_door[facing=south,half=lower,hinge=left,open=false,powered=true]: minecraft:birch_door[facing=south,half=lower,hinge=left,open=false,powered=false] - minecraft:birch_door[facing=south,half=lower,hinge=right,open=false,powered=true]: minecraft:birch_door[facing=south,half=lower,hinge=right,open=false,powered=false] - minecraft:birch_door[facing=south,half=upper,hinge=left,open=false,powered=true]: minecraft:birch_door[facing=south,half=upper,hinge=left,open=false,powered=false] - minecraft:birch_door[facing=south,half=upper,hinge=right,open=false,powered=true]: minecraft:birch_door[facing=south,half=upper,hinge=right,open=false,powered=false] - minecraft:birch_door[facing=south,half=lower,hinge=left,open=true,powered=true]: minecraft:birch_door[facing=south,half=lower,hinge=left,open=true,powered=false] - minecraft:birch_door[facing=south,half=lower,hinge=right,open=true,powered=true]: minecraft:birch_door[facing=south,half=lower,hinge=right,open=true,powered=false] - minecraft:birch_door[facing=south,half=upper,hinge=left,open=true,powered=true]: minecraft:birch_door[facing=south,half=upper,hinge=left,open=true,powered=false] - minecraft:birch_door[facing=south,half=upper,hinge=right,open=true,powered=true]: minecraft:birch_door[facing=south,half=upper,hinge=right,open=true,powered=false] - minecraft:birch_door[facing=west,half=lower,hinge=left,open=false,powered=true]: minecraft:birch_door[facing=west,half=lower,hinge=left,open=false,powered=false] - minecraft:birch_door[facing=west,half=lower,hinge=right,open=false,powered=true]: minecraft:birch_door[facing=west,half=lower,hinge=right,open=false,powered=false] - minecraft:birch_door[facing=west,half=upper,hinge=left,open=false,powered=true]: minecraft:birch_door[facing=west,half=upper,hinge=left,open=false,powered=false] - minecraft:birch_door[facing=west,half=upper,hinge=right,open=false,powered=true]: minecraft:birch_door[facing=west,half=upper,hinge=right,open=false,powered=false] - minecraft:birch_door[facing=west,half=lower,hinge=left,open=true,powered=true]: minecraft:birch_door[facing=west,half=lower,hinge=left,open=true,powered=false] - minecraft:birch_door[facing=west,half=lower,hinge=right,open=true,powered=true]: minecraft:birch_door[facing=west,half=lower,hinge=right,open=true,powered=false] - minecraft:birch_door[facing=west,half=upper,hinge=left,open=true,powered=true]: minecraft:birch_door[facing=west,half=upper,hinge=left,open=true,powered=false] - minecraft:birch_door[facing=west,half=upper,hinge=right,open=true,powered=true]: minecraft:birch_door[facing=west,half=upper,hinge=right,open=true,powered=false] - minecraft:jungle_door[facing=east,half=lower,hinge=left,open=false,powered=true]: minecraft:jungle_door[facing=east,half=lower,hinge=left,open=false,powered=false] - minecraft:jungle_door[facing=east,half=lower,hinge=right,open=false,powered=true]: minecraft:jungle_door[facing=east,half=lower,hinge=right,open=false,powered=false] - minecraft:jungle_door[facing=east,half=upper,hinge=left,open=false,powered=true]: minecraft:jungle_door[facing=east,half=upper,hinge=left,open=false,powered=false] - minecraft:jungle_door[facing=east,half=upper,hinge=right,open=false,powered=true]: minecraft:jungle_door[facing=east,half=upper,hinge=right,open=false,powered=false] - minecraft:jungle_door[facing=east,half=lower,hinge=left,open=true,powered=true]: minecraft:jungle_door[facing=east,half=lower,hinge=left,open=true,powered=false] - minecraft:jungle_door[facing=east,half=lower,hinge=right,open=true,powered=true]: minecraft:jungle_door[facing=east,half=lower,hinge=right,open=true,powered=false] - minecraft:jungle_door[facing=east,half=upper,hinge=left,open=true,powered=true]: minecraft:jungle_door[facing=east,half=upper,hinge=left,open=true,powered=false] - minecraft:jungle_door[facing=east,half=upper,hinge=right,open=true,powered=true]: minecraft:jungle_door[facing=east,half=upper,hinge=right,open=true,powered=false] - minecraft:jungle_door[facing=north,half=lower,hinge=left,open=false,powered=true]: minecraft:jungle_door[facing=north,half=lower,hinge=left,open=false,powered=false] - minecraft:jungle_door[facing=north,half=lower,hinge=right,open=false,powered=true]: minecraft:jungle_door[facing=north,half=lower,hinge=right,open=false,powered=false] - minecraft:jungle_door[facing=north,half=upper,hinge=left,open=false,powered=true]: minecraft:jungle_door[facing=north,half=upper,hinge=left,open=false,powered=false] - minecraft:jungle_door[facing=north,half=upper,hinge=right,open=false,powered=true]: minecraft:jungle_door[facing=north,half=upper,hinge=right,open=false,powered=false] - minecraft:jungle_door[facing=north,half=lower,hinge=left,open=true,powered=true]: minecraft:jungle_door[facing=north,half=lower,hinge=left,open=true,powered=false] - minecraft:jungle_door[facing=north,half=lower,hinge=right,open=true,powered=true]: minecraft:jungle_door[facing=north,half=lower,hinge=right,open=true,powered=false] - minecraft:jungle_door[facing=north,half=upper,hinge=left,open=true,powered=true]: minecraft:jungle_door[facing=north,half=upper,hinge=left,open=true,powered=false] - minecraft:jungle_door[facing=north,half=upper,hinge=right,open=true,powered=true]: minecraft:jungle_door[facing=north,half=upper,hinge=right,open=true,powered=false] - minecraft:jungle_door[facing=south,half=lower,hinge=left,open=false,powered=true]: minecraft:jungle_door[facing=south,half=lower,hinge=left,open=false,powered=false] - minecraft:jungle_door[facing=south,half=lower,hinge=right,open=false,powered=true]: minecraft:jungle_door[facing=south,half=lower,hinge=right,open=false,powered=false] - minecraft:jungle_door[facing=south,half=upper,hinge=left,open=false,powered=true]: minecraft:jungle_door[facing=south,half=upper,hinge=left,open=false,powered=false] - minecraft:jungle_door[facing=south,half=upper,hinge=right,open=false,powered=true]: minecraft:jungle_door[facing=south,half=upper,hinge=right,open=false,powered=false] - minecraft:jungle_door[facing=south,half=lower,hinge=left,open=true,powered=true]: minecraft:jungle_door[facing=south,half=lower,hinge=left,open=true,powered=false] - minecraft:jungle_door[facing=south,half=lower,hinge=right,open=true,powered=true]: minecraft:jungle_door[facing=south,half=lower,hinge=right,open=true,powered=false] - minecraft:jungle_door[facing=south,half=upper,hinge=left,open=true,powered=true]: minecraft:jungle_door[facing=south,half=upper,hinge=left,open=true,powered=false] - minecraft:jungle_door[facing=south,half=upper,hinge=right,open=true,powered=true]: minecraft:jungle_door[facing=south,half=upper,hinge=right,open=true,powered=false] - minecraft:jungle_door[facing=west,half=lower,hinge=left,open=false,powered=true]: minecraft:jungle_door[facing=west,half=lower,hinge=left,open=false,powered=false] - minecraft:jungle_door[facing=west,half=lower,hinge=right,open=false,powered=true]: minecraft:jungle_door[facing=west,half=lower,hinge=right,open=false,powered=false] - minecraft:jungle_door[facing=west,half=upper,hinge=left,open=false,powered=true]: minecraft:jungle_door[facing=west,half=upper,hinge=left,open=false,powered=false] - minecraft:jungle_door[facing=west,half=upper,hinge=right,open=false,powered=true]: minecraft:jungle_door[facing=west,half=upper,hinge=right,open=false,powered=false] - minecraft:jungle_door[facing=west,half=lower,hinge=left,open=true,powered=true]: minecraft:jungle_door[facing=west,half=lower,hinge=left,open=true,powered=false] - minecraft:jungle_door[facing=west,half=lower,hinge=right,open=true,powered=true]: minecraft:jungle_door[facing=west,half=lower,hinge=right,open=true,powered=false] - minecraft:jungle_door[facing=west,half=upper,hinge=left,open=true,powered=true]: minecraft:jungle_door[facing=west,half=upper,hinge=left,open=true,powered=false] - minecraft:jungle_door[facing=west,half=upper,hinge=right,open=true,powered=true]: minecraft:jungle_door[facing=west,half=upper,hinge=right,open=true,powered=false] - minecraft:acacia_door[facing=east,half=lower,hinge=left,open=false,powered=true]: minecraft:acacia_door[facing=east,half=lower,hinge=left,open=false,powered=false] - minecraft:acacia_door[facing=east,half=lower,hinge=right,open=false,powered=true]: minecraft:acacia_door[facing=east,half=lower,hinge=right,open=false,powered=false] - minecraft:acacia_door[facing=east,half=upper,hinge=left,open=false,powered=true]: minecraft:acacia_door[facing=east,half=upper,hinge=left,open=false,powered=false] - minecraft:acacia_door[facing=east,half=upper,hinge=right,open=false,powered=true]: minecraft:acacia_door[facing=east,half=upper,hinge=right,open=false,powered=false] - minecraft:acacia_door[facing=east,half=lower,hinge=left,open=true,powered=true]: minecraft:acacia_door[facing=east,half=lower,hinge=left,open=true,powered=false] - minecraft:acacia_door[facing=east,half=lower,hinge=right,open=true,powered=true]: minecraft:acacia_door[facing=east,half=lower,hinge=right,open=true,powered=false] - minecraft:acacia_door[facing=east,half=upper,hinge=left,open=true,powered=true]: minecraft:acacia_door[facing=east,half=upper,hinge=left,open=true,powered=false] - minecraft:acacia_door[facing=east,half=upper,hinge=right,open=true,powered=true]: minecraft:acacia_door[facing=east,half=upper,hinge=right,open=true,powered=false] - minecraft:acacia_door[facing=north,half=lower,hinge=left,open=false,powered=true]: minecraft:acacia_door[facing=north,half=lower,hinge=left,open=false,powered=false] - minecraft:acacia_door[facing=north,half=lower,hinge=right,open=false,powered=true]: minecraft:acacia_door[facing=north,half=lower,hinge=right,open=false,powered=false] - minecraft:acacia_door[facing=north,half=upper,hinge=left,open=false,powered=true]: minecraft:acacia_door[facing=north,half=upper,hinge=left,open=false,powered=false] - minecraft:acacia_door[facing=north,half=upper,hinge=right,open=false,powered=true]: minecraft:acacia_door[facing=north,half=upper,hinge=right,open=false,powered=false] - minecraft:acacia_door[facing=north,half=lower,hinge=left,open=true,powered=true]: minecraft:acacia_door[facing=north,half=lower,hinge=left,open=true,powered=false] - minecraft:acacia_door[facing=north,half=lower,hinge=right,open=true,powered=true]: minecraft:acacia_door[facing=north,half=lower,hinge=right,open=true,powered=false] - minecraft:acacia_door[facing=north,half=upper,hinge=left,open=true,powered=true]: minecraft:acacia_door[facing=north,half=upper,hinge=left,open=true,powered=false] - minecraft:acacia_door[facing=north,half=upper,hinge=right,open=true,powered=true]: minecraft:acacia_door[facing=north,half=upper,hinge=right,open=true,powered=false] - minecraft:acacia_door[facing=south,half=lower,hinge=left,open=false,powered=true]: minecraft:acacia_door[facing=south,half=lower,hinge=left,open=false,powered=false] - minecraft:acacia_door[facing=south,half=lower,hinge=right,open=false,powered=true]: minecraft:acacia_door[facing=south,half=lower,hinge=right,open=false,powered=false] - minecraft:acacia_door[facing=south,half=upper,hinge=left,open=false,powered=true]: minecraft:acacia_door[facing=south,half=upper,hinge=left,open=false,powered=false] - minecraft:acacia_door[facing=south,half=upper,hinge=right,open=false,powered=true]: minecraft:acacia_door[facing=south,half=upper,hinge=right,open=false,powered=false] - minecraft:acacia_door[facing=south,half=lower,hinge=left,open=true,powered=true]: minecraft:acacia_door[facing=south,half=lower,hinge=left,open=true,powered=false] - minecraft:acacia_door[facing=south,half=lower,hinge=right,open=true,powered=true]: minecraft:acacia_door[facing=south,half=lower,hinge=right,open=true,powered=false] - minecraft:acacia_door[facing=south,half=upper,hinge=left,open=true,powered=true]: minecraft:acacia_door[facing=south,half=upper,hinge=left,open=true,powered=false] - minecraft:acacia_door[facing=south,half=upper,hinge=right,open=true,powered=true]: minecraft:acacia_door[facing=south,half=upper,hinge=right,open=true,powered=false] - minecraft:acacia_door[facing=west,half=lower,hinge=left,open=false,powered=true]: minecraft:acacia_door[facing=west,half=lower,hinge=left,open=false,powered=false] - minecraft:acacia_door[facing=west,half=lower,hinge=right,open=false,powered=true]: minecraft:acacia_door[facing=west,half=lower,hinge=right,open=false,powered=false] - minecraft:acacia_door[facing=west,half=upper,hinge=left,open=false,powered=true]: minecraft:acacia_door[facing=west,half=upper,hinge=left,open=false,powered=false] - minecraft:acacia_door[facing=west,half=upper,hinge=right,open=false,powered=true]: minecraft:acacia_door[facing=west,half=upper,hinge=right,open=false,powered=false] - minecraft:acacia_door[facing=west,half=lower,hinge=left,open=true,powered=true]: minecraft:acacia_door[facing=west,half=lower,hinge=left,open=true,powered=false] - minecraft:acacia_door[facing=west,half=lower,hinge=right,open=true,powered=true]: minecraft:acacia_door[facing=west,half=lower,hinge=right,open=true,powered=false] - minecraft:acacia_door[facing=west,half=upper,hinge=left,open=true,powered=true]: minecraft:acacia_door[facing=west,half=upper,hinge=left,open=true,powered=false] - minecraft:acacia_door[facing=west,half=upper,hinge=right,open=true,powered=true]: minecraft:acacia_door[facing=west,half=upper,hinge=right,open=true,powered=false] - minecraft:dark_oak_door[facing=east,half=lower,hinge=left,open=false,powered=true]: minecraft:dark_oak_door[facing=east,half=lower,hinge=left,open=false,powered=false] - minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=false,powered=true]: minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=false,powered=false] - minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=false,powered=true]: minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=false,powered=false] - minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=false,powered=true]: minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=false,powered=false] - minecraft:dark_oak_door[facing=east,half=lower,hinge=left,open=true,powered=true]: minecraft:dark_oak_door[facing=east,half=lower,hinge=left,open=true,powered=false] - minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=true,powered=true]: minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=true,powered=false] - minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=true,powered=true]: minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=true,powered=false] - minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=true,powered=true]: minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=true,powered=false] - minecraft:dark_oak_door[facing=north,half=lower,hinge=left,open=false,powered=true]: minecraft:dark_oak_door[facing=north,half=lower,hinge=left,open=false,powered=false] - minecraft:dark_oak_door[facing=north,half=lower,hinge=right,open=false,powered=true]: minecraft:dark_oak_door[facing=north,half=lower,hinge=right,open=false,powered=false] - minecraft:dark_oak_door[facing=north,half=upper,hinge=left,open=false,powered=true]: minecraft:dark_oak_door[facing=north,half=upper,hinge=left,open=false,powered=false] - minecraft:dark_oak_door[facing=north,half=upper,hinge=right,open=false,powered=true]: minecraft:dark_oak_door[facing=north,half=upper,hinge=right,open=false,powered=false] - minecraft:dark_oak_door[facing=north,half=lower,hinge=left,open=true,powered=true]: minecraft:dark_oak_door[facing=north,half=lower,hinge=left,open=true,powered=false] - minecraft:dark_oak_door[facing=north,half=lower,hinge=right,open=true,powered=true]: minecraft:dark_oak_door[facing=north,half=lower,hinge=right,open=true,powered=false] - minecraft:dark_oak_door[facing=north,half=upper,hinge=left,open=true,powered=true]: minecraft:dark_oak_door[facing=north,half=upper,hinge=left,open=true,powered=false] - minecraft:dark_oak_door[facing=north,half=upper,hinge=right,open=true,powered=true]: minecraft:dark_oak_door[facing=north,half=upper,hinge=right,open=true,powered=false] - minecraft:dark_oak_door[facing=south,half=lower,hinge=left,open=false,powered=true]: minecraft:dark_oak_door[facing=south,half=lower,hinge=left,open=false,powered=false] - minecraft:dark_oak_door[facing=south,half=lower,hinge=right,open=false,powered=true]: minecraft:dark_oak_door[facing=south,half=lower,hinge=right,open=false,powered=false] - minecraft:dark_oak_door[facing=south,half=upper,hinge=left,open=false,powered=true]: minecraft:dark_oak_door[facing=south,half=upper,hinge=left,open=false,powered=false] - minecraft:dark_oak_door[facing=south,half=upper,hinge=right,open=false,powered=true]: minecraft:dark_oak_door[facing=south,half=upper,hinge=right,open=false,powered=false] - minecraft:dark_oak_door[facing=south,half=lower,hinge=left,open=true,powered=true]: minecraft:dark_oak_door[facing=south,half=lower,hinge=left,open=true,powered=false] - minecraft:dark_oak_door[facing=south,half=lower,hinge=right,open=true,powered=true]: minecraft:dark_oak_door[facing=south,half=lower,hinge=right,open=true,powered=false] - minecraft:dark_oak_door[facing=south,half=upper,hinge=left,open=true,powered=true]: minecraft:dark_oak_door[facing=south,half=upper,hinge=left,open=true,powered=false] - minecraft:dark_oak_door[facing=south,half=upper,hinge=right,open=true,powered=true]: minecraft:dark_oak_door[facing=south,half=upper,hinge=right,open=true,powered=false] - minecraft:dark_oak_door[facing=west,half=lower,hinge=left,open=false,powered=true]: minecraft:dark_oak_door[facing=west,half=lower,hinge=left,open=false,powered=false] - minecraft:dark_oak_door[facing=west,half=lower,hinge=right,open=false,powered=true]: minecraft:dark_oak_door[facing=west,half=lower,hinge=right,open=false,powered=false] - minecraft:dark_oak_door[facing=west,half=upper,hinge=left,open=false,powered=true]: minecraft:dark_oak_door[facing=west,half=upper,hinge=left,open=false,powered=false] - minecraft:dark_oak_door[facing=west,half=upper,hinge=right,open=false,powered=true]: minecraft:dark_oak_door[facing=west,half=upper,hinge=right,open=false,powered=false] - minecraft:dark_oak_door[facing=west,half=lower,hinge=left,open=true,powered=true]: minecraft:dark_oak_door[facing=west,half=lower,hinge=left,open=true,powered=false] - minecraft:dark_oak_door[facing=west,half=lower,hinge=right,open=true,powered=true]: minecraft:dark_oak_door[facing=west,half=lower,hinge=right,open=true,powered=false] - minecraft:dark_oak_door[facing=west,half=upper,hinge=left,open=true,powered=true]: minecraft:dark_oak_door[facing=west,half=upper,hinge=left,open=true,powered=false] - minecraft:dark_oak_door[facing=west,half=upper,hinge=right,open=true,powered=true]: minecraft:dark_oak_door[facing=west,half=upper,hinge=right,open=true,powered=false] - minecraft:mangrove_door[facing=east,half=lower,hinge=left,open=false,powered=true]: minecraft:mangrove_door[facing=east,half=lower,hinge=left,open=false,powered=false] - minecraft:mangrove_door[facing=east,half=lower,hinge=right,open=false,powered=true]: minecraft:mangrove_door[facing=east,half=lower,hinge=right,open=false,powered=false] - minecraft:mangrove_door[facing=east,half=upper,hinge=left,open=false,powered=true]: minecraft:mangrove_door[facing=east,half=upper,hinge=left,open=false,powered=false] - minecraft:mangrove_door[facing=east,half=upper,hinge=right,open=false,powered=true]: minecraft:mangrove_door[facing=east,half=upper,hinge=right,open=false,powered=false] - minecraft:mangrove_door[facing=east,half=lower,hinge=left,open=true,powered=true]: minecraft:mangrove_door[facing=east,half=lower,hinge=left,open=true,powered=false] - minecraft:mangrove_door[facing=east,half=lower,hinge=right,open=true,powered=true]: minecraft:mangrove_door[facing=east,half=lower,hinge=right,open=true,powered=false] - minecraft:mangrove_door[facing=east,half=upper,hinge=left,open=true,powered=true]: minecraft:mangrove_door[facing=east,half=upper,hinge=left,open=true,powered=false] - minecraft:mangrove_door[facing=east,half=upper,hinge=right,open=true,powered=true]: minecraft:mangrove_door[facing=east,half=upper,hinge=right,open=true,powered=false] - minecraft:mangrove_door[facing=north,half=lower,hinge=left,open=false,powered=true]: minecraft:mangrove_door[facing=north,half=lower,hinge=left,open=false,powered=false] - minecraft:mangrove_door[facing=north,half=lower,hinge=right,open=false,powered=true]: minecraft:mangrove_door[facing=north,half=lower,hinge=right,open=false,powered=false] - minecraft:mangrove_door[facing=north,half=upper,hinge=left,open=false,powered=true]: minecraft:mangrove_door[facing=north,half=upper,hinge=left,open=false,powered=false] - minecraft:mangrove_door[facing=north,half=upper,hinge=right,open=false,powered=true]: minecraft:mangrove_door[facing=north,half=upper,hinge=right,open=false,powered=false] - minecraft:mangrove_door[facing=north,half=lower,hinge=left,open=true,powered=true]: minecraft:mangrove_door[facing=north,half=lower,hinge=left,open=true,powered=false] - minecraft:mangrove_door[facing=north,half=lower,hinge=right,open=true,powered=true]: minecraft:mangrove_door[facing=north,half=lower,hinge=right,open=true,powered=false] - minecraft:mangrove_door[facing=north,half=upper,hinge=left,open=true,powered=true]: minecraft:mangrove_door[facing=north,half=upper,hinge=left,open=true,powered=false] - minecraft:mangrove_door[facing=north,half=upper,hinge=right,open=true,powered=true]: minecraft:mangrove_door[facing=north,half=upper,hinge=right,open=true,powered=false] - minecraft:mangrove_door[facing=south,half=lower,hinge=left,open=false,powered=true]: minecraft:mangrove_door[facing=south,half=lower,hinge=left,open=false,powered=false] - minecraft:mangrove_door[facing=south,half=lower,hinge=right,open=false,powered=true]: minecraft:mangrove_door[facing=south,half=lower,hinge=right,open=false,powered=false] - minecraft:mangrove_door[facing=south,half=upper,hinge=left,open=false,powered=true]: minecraft:mangrove_door[facing=south,half=upper,hinge=left,open=false,powered=false] - minecraft:mangrove_door[facing=south,half=upper,hinge=right,open=false,powered=true]: minecraft:mangrove_door[facing=south,half=upper,hinge=right,open=false,powered=false] - minecraft:mangrove_door[facing=south,half=lower,hinge=left,open=true,powered=true]: minecraft:mangrove_door[facing=south,half=lower,hinge=left,open=true,powered=false] - minecraft:mangrove_door[facing=south,half=lower,hinge=right,open=true,powered=true]: minecraft:mangrove_door[facing=south,half=lower,hinge=right,open=true,powered=false] - minecraft:mangrove_door[facing=south,half=upper,hinge=left,open=true,powered=true]: minecraft:mangrove_door[facing=south,half=upper,hinge=left,open=true,powered=false] - minecraft:mangrove_door[facing=south,half=upper,hinge=right,open=true,powered=true]: minecraft:mangrove_door[facing=south,half=upper,hinge=right,open=true,powered=false] - minecraft:mangrove_door[facing=west,half=lower,hinge=left,open=false,powered=true]: minecraft:mangrove_door[facing=west,half=lower,hinge=left,open=false,powered=false] - minecraft:mangrove_door[facing=west,half=lower,hinge=right,open=false,powered=true]: minecraft:mangrove_door[facing=west,half=lower,hinge=right,open=false,powered=false] - minecraft:mangrove_door[facing=west,half=upper,hinge=left,open=false,powered=true]: minecraft:mangrove_door[facing=west,half=upper,hinge=left,open=false,powered=false] - minecraft:mangrove_door[facing=west,half=upper,hinge=right,open=false,powered=true]: minecraft:mangrove_door[facing=west,half=upper,hinge=right,open=false,powered=false] - minecraft:mangrove_door[facing=west,half=lower,hinge=left,open=true,powered=true]: minecraft:mangrove_door[facing=west,half=lower,hinge=left,open=true,powered=false] - minecraft:mangrove_door[facing=west,half=lower,hinge=right,open=true,powered=true]: minecraft:mangrove_door[facing=west,half=lower,hinge=right,open=true,powered=false] - minecraft:mangrove_door[facing=west,half=upper,hinge=left,open=true,powered=true]: minecraft:mangrove_door[facing=west,half=upper,hinge=left,open=true,powered=false] - minecraft:mangrove_door[facing=west,half=upper,hinge=right,open=true,powered=true]: minecraft:mangrove_door[facing=west,half=upper,hinge=right,open=true,powered=false] - minecraft:cherry_door[facing=east,half=lower,hinge=left,open=false,powered=true]: minecraft:cherry_door[facing=east,half=lower,hinge=left,open=false,powered=false] - minecraft:cherry_door[facing=east,half=lower,hinge=right,open=false,powered=true]: minecraft:cherry_door[facing=east,half=lower,hinge=right,open=false,powered=false] - minecraft:cherry_door[facing=east,half=upper,hinge=left,open=false,powered=true]: minecraft:cherry_door[facing=east,half=upper,hinge=left,open=false,powered=false] - minecraft:cherry_door[facing=east,half=upper,hinge=right,open=false,powered=true]: minecraft:cherry_door[facing=east,half=upper,hinge=right,open=false,powered=false] - minecraft:cherry_door[facing=east,half=lower,hinge=left,open=true,powered=true]: minecraft:cherry_door[facing=east,half=lower,hinge=left,open=true,powered=false] - minecraft:cherry_door[facing=east,half=lower,hinge=right,open=true,powered=true]: minecraft:cherry_door[facing=east,half=lower,hinge=right,open=true,powered=false] - minecraft:cherry_door[facing=east,half=upper,hinge=left,open=true,powered=true]: minecraft:cherry_door[facing=east,half=upper,hinge=left,open=true,powered=false] - minecraft:cherry_door[facing=east,half=upper,hinge=right,open=true,powered=true]: minecraft:cherry_door[facing=east,half=upper,hinge=right,open=true,powered=false] - minecraft:cherry_door[facing=north,half=lower,hinge=left,open=false,powered=true]: minecraft:cherry_door[facing=north,half=lower,hinge=left,open=false,powered=false] - minecraft:cherry_door[facing=north,half=lower,hinge=right,open=false,powered=true]: minecraft:cherry_door[facing=north,half=lower,hinge=right,open=false,powered=false] - minecraft:cherry_door[facing=north,half=upper,hinge=left,open=false,powered=true]: minecraft:cherry_door[facing=north,half=upper,hinge=left,open=false,powered=false] - minecraft:cherry_door[facing=north,half=upper,hinge=right,open=false,powered=true]: minecraft:cherry_door[facing=north,half=upper,hinge=right,open=false,powered=false] - minecraft:cherry_door[facing=north,half=lower,hinge=left,open=true,powered=true]: minecraft:cherry_door[facing=north,half=lower,hinge=left,open=true,powered=false] - minecraft:cherry_door[facing=north,half=lower,hinge=right,open=true,powered=true]: minecraft:cherry_door[facing=north,half=lower,hinge=right,open=true,powered=false] - minecraft:cherry_door[facing=north,half=upper,hinge=left,open=true,powered=true]: minecraft:cherry_door[facing=north,half=upper,hinge=left,open=true,powered=false] - minecraft:cherry_door[facing=north,half=upper,hinge=right,open=true,powered=true]: minecraft:cherry_door[facing=north,half=upper,hinge=right,open=true,powered=false] - minecraft:cherry_door[facing=south,half=lower,hinge=left,open=false,powered=true]: minecraft:cherry_door[facing=south,half=lower,hinge=left,open=false,powered=false] - minecraft:cherry_door[facing=south,half=lower,hinge=right,open=false,powered=true]: minecraft:cherry_door[facing=south,half=lower,hinge=right,open=false,powered=false] - minecraft:cherry_door[facing=south,half=upper,hinge=left,open=false,powered=true]: minecraft:cherry_door[facing=south,half=upper,hinge=left,open=false,powered=false] - minecraft:cherry_door[facing=south,half=upper,hinge=right,open=false,powered=true]: minecraft:cherry_door[facing=south,half=upper,hinge=right,open=false,powered=false] - minecraft:cherry_door[facing=south,half=lower,hinge=left,open=true,powered=true]: minecraft:cherry_door[facing=south,half=lower,hinge=left,open=true,powered=false] - minecraft:cherry_door[facing=south,half=lower,hinge=right,open=true,powered=true]: minecraft:cherry_door[facing=south,half=lower,hinge=right,open=true,powered=false] - minecraft:cherry_door[facing=south,half=upper,hinge=left,open=true,powered=true]: minecraft:cherry_door[facing=south,half=upper,hinge=left,open=true,powered=false] - minecraft:cherry_door[facing=south,half=upper,hinge=right,open=true,powered=true]: minecraft:cherry_door[facing=south,half=upper,hinge=right,open=true,powered=false] - minecraft:cherry_door[facing=west,half=lower,hinge=left,open=false,powered=true]: minecraft:cherry_door[facing=west,half=lower,hinge=left,open=false,powered=false] - minecraft:cherry_door[facing=west,half=lower,hinge=right,open=false,powered=true]: minecraft:cherry_door[facing=west,half=lower,hinge=right,open=false,powered=false] - minecraft:cherry_door[facing=west,half=upper,hinge=left,open=false,powered=true]: minecraft:cherry_door[facing=west,half=upper,hinge=left,open=false,powered=false] - minecraft:cherry_door[facing=west,half=upper,hinge=right,open=false,powered=true]: minecraft:cherry_door[facing=west,half=upper,hinge=right,open=false,powered=false] - minecraft:cherry_door[facing=west,half=lower,hinge=left,open=true,powered=true]: minecraft:cherry_door[facing=west,half=lower,hinge=left,open=true,powered=false] - minecraft:cherry_door[facing=west,half=lower,hinge=right,open=true,powered=true]: minecraft:cherry_door[facing=west,half=lower,hinge=right,open=true,powered=false] - minecraft:cherry_door[facing=west,half=upper,hinge=left,open=true,powered=true]: minecraft:cherry_door[facing=west,half=upper,hinge=left,open=true,powered=false] - minecraft:cherry_door[facing=west,half=upper,hinge=right,open=true,powered=true]: minecraft:cherry_door[facing=west,half=upper,hinge=right,open=true,powered=false] - minecraft:bamboo_door[facing=east,half=lower,hinge=left,open=false,powered=true]: minecraft:bamboo_door[facing=east,half=lower,hinge=left,open=false,powered=false] - minecraft:bamboo_door[facing=east,half=lower,hinge=right,open=false,powered=true]: minecraft:bamboo_door[facing=east,half=lower,hinge=right,open=false,powered=false] - minecraft:bamboo_door[facing=east,half=upper,hinge=left,open=false,powered=true]: minecraft:bamboo_door[facing=east,half=upper,hinge=left,open=false,powered=false] - minecraft:bamboo_door[facing=east,half=upper,hinge=right,open=false,powered=true]: minecraft:bamboo_door[facing=east,half=upper,hinge=right,open=false,powered=false] - minecraft:bamboo_door[facing=east,half=lower,hinge=left,open=true,powered=true]: minecraft:bamboo_door[facing=east,half=lower,hinge=left,open=true,powered=false] - minecraft:bamboo_door[facing=east,half=lower,hinge=right,open=true,powered=true]: minecraft:bamboo_door[facing=east,half=lower,hinge=right,open=true,powered=false] - minecraft:bamboo_door[facing=east,half=upper,hinge=left,open=true,powered=true]: minecraft:bamboo_door[facing=east,half=upper,hinge=left,open=true,powered=false] - minecraft:bamboo_door[facing=east,half=upper,hinge=right,open=true,powered=true]: minecraft:bamboo_door[facing=east,half=upper,hinge=right,open=true,powered=false] - minecraft:bamboo_door[facing=north,half=lower,hinge=left,open=false,powered=true]: minecraft:bamboo_door[facing=north,half=lower,hinge=left,open=false,powered=false] - minecraft:bamboo_door[facing=north,half=lower,hinge=right,open=false,powered=true]: minecraft:bamboo_door[facing=north,half=lower,hinge=right,open=false,powered=false] - minecraft:bamboo_door[facing=north,half=upper,hinge=left,open=false,powered=true]: minecraft:bamboo_door[facing=north,half=upper,hinge=left,open=false,powered=false] - minecraft:bamboo_door[facing=north,half=upper,hinge=right,open=false,powered=true]: minecraft:bamboo_door[facing=north,half=upper,hinge=right,open=false,powered=false] - minecraft:bamboo_door[facing=north,half=lower,hinge=left,open=true,powered=true]: minecraft:bamboo_door[facing=north,half=lower,hinge=left,open=true,powered=false] - minecraft:bamboo_door[facing=north,half=lower,hinge=right,open=true,powered=true]: minecraft:bamboo_door[facing=north,half=lower,hinge=right,open=true,powered=false] - minecraft:bamboo_door[facing=north,half=upper,hinge=left,open=true,powered=true]: minecraft:bamboo_door[facing=north,half=upper,hinge=left,open=true,powered=false] - minecraft:bamboo_door[facing=north,half=upper,hinge=right,open=true,powered=true]: minecraft:bamboo_door[facing=north,half=upper,hinge=right,open=true,powered=false] - minecraft:bamboo_door[facing=south,half=lower,hinge=left,open=false,powered=true]: minecraft:bamboo_door[facing=south,half=lower,hinge=left,open=false,powered=false] - minecraft:bamboo_door[facing=south,half=lower,hinge=right,open=false,powered=true]: minecraft:bamboo_door[facing=south,half=lower,hinge=right,open=false,powered=false] - minecraft:bamboo_door[facing=south,half=upper,hinge=left,open=false,powered=true]: minecraft:bamboo_door[facing=south,half=upper,hinge=left,open=false,powered=false] - minecraft:bamboo_door[facing=south,half=upper,hinge=right,open=false,powered=true]: minecraft:bamboo_door[facing=south,half=upper,hinge=right,open=false,powered=false] - minecraft:bamboo_door[facing=south,half=lower,hinge=left,open=true,powered=true]: minecraft:bamboo_door[facing=south,half=lower,hinge=left,open=true,powered=false] - minecraft:bamboo_door[facing=south,half=lower,hinge=right,open=true,powered=true]: minecraft:bamboo_door[facing=south,half=lower,hinge=right,open=true,powered=false] - minecraft:bamboo_door[facing=south,half=upper,hinge=left,open=true,powered=true]: minecraft:bamboo_door[facing=south,half=upper,hinge=left,open=true,powered=false] - minecraft:bamboo_door[facing=south,half=upper,hinge=right,open=true,powered=true]: minecraft:bamboo_door[facing=south,half=upper,hinge=right,open=true,powered=false] - minecraft:bamboo_door[facing=west,half=lower,hinge=left,open=false,powered=true]: minecraft:bamboo_door[facing=west,half=lower,hinge=left,open=false,powered=false] - minecraft:bamboo_door[facing=west,half=lower,hinge=right,open=false,powered=true]: minecraft:bamboo_door[facing=west,half=lower,hinge=right,open=false,powered=false] - minecraft:bamboo_door[facing=west,half=upper,hinge=left,open=false,powered=true]: minecraft:bamboo_door[facing=west,half=upper,hinge=left,open=false,powered=false] - minecraft:bamboo_door[facing=west,half=upper,hinge=right,open=false,powered=true]: minecraft:bamboo_door[facing=west,half=upper,hinge=right,open=false,powered=false] - minecraft:bamboo_door[facing=west,half=lower,hinge=left,open=true,powered=true]: minecraft:bamboo_door[facing=west,half=lower,hinge=left,open=true,powered=false] - minecraft:bamboo_door[facing=west,half=lower,hinge=right,open=true,powered=true]: minecraft:bamboo_door[facing=west,half=lower,hinge=right,open=true,powered=false] - minecraft:bamboo_door[facing=west,half=upper,hinge=left,open=true,powered=true]: minecraft:bamboo_door[facing=west,half=upper,hinge=left,open=true,powered=false] - minecraft:bamboo_door[facing=west,half=upper,hinge=right,open=true,powered=true]: minecraft:bamboo_door[facing=west,half=upper,hinge=right,open=true,powered=false] - minecraft:crimson_door[facing=east,half=lower,hinge=left,open=false,powered=true]: minecraft:crimson_door[facing=east,half=lower,hinge=left,open=false,powered=false] - minecraft:crimson_door[facing=east,half=lower,hinge=right,open=false,powered=true]: minecraft:crimson_door[facing=east,half=lower,hinge=right,open=false,powered=false] - minecraft:crimson_door[facing=east,half=upper,hinge=left,open=false,powered=true]: minecraft:crimson_door[facing=east,half=upper,hinge=left,open=false,powered=false] - minecraft:crimson_door[facing=east,half=upper,hinge=right,open=false,powered=true]: minecraft:crimson_door[facing=east,half=upper,hinge=right,open=false,powered=false] - minecraft:crimson_door[facing=east,half=lower,hinge=left,open=true,powered=true]: minecraft:crimson_door[facing=east,half=lower,hinge=left,open=true,powered=false] - minecraft:crimson_door[facing=east,half=lower,hinge=right,open=true,powered=true]: minecraft:crimson_door[facing=east,half=lower,hinge=right,open=true,powered=false] - minecraft:crimson_door[facing=east,half=upper,hinge=left,open=true,powered=true]: minecraft:crimson_door[facing=east,half=upper,hinge=left,open=true,powered=false] - minecraft:crimson_door[facing=east,half=upper,hinge=right,open=true,powered=true]: minecraft:crimson_door[facing=east,half=upper,hinge=right,open=true,powered=false] - minecraft:crimson_door[facing=north,half=lower,hinge=left,open=false,powered=true]: minecraft:crimson_door[facing=north,half=lower,hinge=left,open=false,powered=false] - minecraft:crimson_door[facing=north,half=lower,hinge=right,open=false,powered=true]: minecraft:crimson_door[facing=north,half=lower,hinge=right,open=false,powered=false] - minecraft:crimson_door[facing=north,half=upper,hinge=left,open=false,powered=true]: minecraft:crimson_door[facing=north,half=upper,hinge=left,open=false,powered=false] - minecraft:crimson_door[facing=north,half=upper,hinge=right,open=false,powered=true]: minecraft:crimson_door[facing=north,half=upper,hinge=right,open=false,powered=false] - minecraft:crimson_door[facing=north,half=lower,hinge=left,open=true,powered=true]: minecraft:crimson_door[facing=north,half=lower,hinge=left,open=true,powered=false] - minecraft:crimson_door[facing=north,half=lower,hinge=right,open=true,powered=true]: minecraft:crimson_door[facing=north,half=lower,hinge=right,open=true,powered=false] - minecraft:crimson_door[facing=north,half=upper,hinge=left,open=true,powered=true]: minecraft:crimson_door[facing=north,half=upper,hinge=left,open=true,powered=false] - minecraft:crimson_door[facing=north,half=upper,hinge=right,open=true,powered=true]: minecraft:crimson_door[facing=north,half=upper,hinge=right,open=true,powered=false] - minecraft:crimson_door[facing=south,half=lower,hinge=left,open=false,powered=true]: minecraft:crimson_door[facing=south,half=lower,hinge=left,open=false,powered=false] - minecraft:crimson_door[facing=south,half=lower,hinge=right,open=false,powered=true]: minecraft:crimson_door[facing=south,half=lower,hinge=right,open=false,powered=false] - minecraft:crimson_door[facing=south,half=upper,hinge=left,open=false,powered=true]: minecraft:crimson_door[facing=south,half=upper,hinge=left,open=false,powered=false] - minecraft:crimson_door[facing=south,half=upper,hinge=right,open=false,powered=true]: minecraft:crimson_door[facing=south,half=upper,hinge=right,open=false,powered=false] - minecraft:crimson_door[facing=south,half=lower,hinge=left,open=true,powered=true]: minecraft:crimson_door[facing=south,half=lower,hinge=left,open=true,powered=false] - minecraft:crimson_door[facing=south,half=lower,hinge=right,open=true,powered=true]: minecraft:crimson_door[facing=south,half=lower,hinge=right,open=true,powered=false] - minecraft:crimson_door[facing=south,half=upper,hinge=left,open=true,powered=true]: minecraft:crimson_door[facing=south,half=upper,hinge=left,open=true,powered=false] - minecraft:crimson_door[facing=south,half=upper,hinge=right,open=true,powered=true]: minecraft:crimson_door[facing=south,half=upper,hinge=right,open=true,powered=false] - minecraft:crimson_door[facing=west,half=lower,hinge=left,open=false,powered=true]: minecraft:crimson_door[facing=west,half=lower,hinge=left,open=false,powered=false] - minecraft:crimson_door[facing=west,half=lower,hinge=right,open=false,powered=true]: minecraft:crimson_door[facing=west,half=lower,hinge=right,open=false,powered=false] - minecraft:crimson_door[facing=west,half=upper,hinge=left,open=false,powered=true]: minecraft:crimson_door[facing=west,half=upper,hinge=left,open=false,powered=false] - minecraft:crimson_door[facing=west,half=upper,hinge=right,open=false,powered=true]: minecraft:crimson_door[facing=west,half=upper,hinge=right,open=false,powered=false] - minecraft:crimson_door[facing=west,half=lower,hinge=left,open=true,powered=true]: minecraft:crimson_door[facing=west,half=lower,hinge=left,open=true,powered=false] - minecraft:crimson_door[facing=west,half=lower,hinge=right,open=true,powered=true]: minecraft:crimson_door[facing=west,half=lower,hinge=right,open=true,powered=false] - minecraft:crimson_door[facing=west,half=upper,hinge=left,open=true,powered=true]: minecraft:crimson_door[facing=west,half=upper,hinge=left,open=true,powered=false] - minecraft:crimson_door[facing=west,half=upper,hinge=right,open=true,powered=true]: minecraft:crimson_door[facing=west,half=upper,hinge=right,open=true,powered=false] - minecraft:warped_door[facing=east,half=lower,hinge=left,open=false,powered=true]: minecraft:warped_door[facing=east,half=lower,hinge=left,open=false,powered=false] - minecraft:warped_door[facing=east,half=lower,hinge=right,open=false,powered=true]: minecraft:warped_door[facing=east,half=lower,hinge=right,open=false,powered=false] - minecraft:warped_door[facing=east,half=upper,hinge=left,open=false,powered=true]: minecraft:warped_door[facing=east,half=upper,hinge=left,open=false,powered=false] - minecraft:warped_door[facing=east,half=upper,hinge=right,open=false,powered=true]: minecraft:warped_door[facing=east,half=upper,hinge=right,open=false,powered=false] - minecraft:warped_door[facing=east,half=lower,hinge=left,open=true,powered=true]: minecraft:warped_door[facing=east,half=lower,hinge=left,open=true,powered=false] - minecraft:warped_door[facing=east,half=lower,hinge=right,open=true,powered=true]: minecraft:warped_door[facing=east,half=lower,hinge=right,open=true,powered=false] - minecraft:warped_door[facing=east,half=upper,hinge=left,open=true,powered=true]: minecraft:warped_door[facing=east,half=upper,hinge=left,open=true,powered=false] - minecraft:warped_door[facing=east,half=upper,hinge=right,open=true,powered=true]: minecraft:warped_door[facing=east,half=upper,hinge=right,open=true,powered=false] - minecraft:warped_door[facing=north,half=lower,hinge=left,open=false,powered=true]: minecraft:warped_door[facing=north,half=lower,hinge=left,open=false,powered=false] - minecraft:warped_door[facing=north,half=lower,hinge=right,open=false,powered=true]: minecraft:warped_door[facing=north,half=lower,hinge=right,open=false,powered=false] - minecraft:warped_door[facing=north,half=upper,hinge=left,open=false,powered=true]: minecraft:warped_door[facing=north,half=upper,hinge=left,open=false,powered=false] - minecraft:warped_door[facing=north,half=upper,hinge=right,open=false,powered=true]: minecraft:warped_door[facing=north,half=upper,hinge=right,open=false,powered=false] - minecraft:warped_door[facing=north,half=lower,hinge=left,open=true,powered=true]: minecraft:warped_door[facing=north,half=lower,hinge=left,open=true,powered=false] - minecraft:warped_door[facing=north,half=lower,hinge=right,open=true,powered=true]: minecraft:warped_door[facing=north,half=lower,hinge=right,open=true,powered=false] - minecraft:warped_door[facing=north,half=upper,hinge=left,open=true,powered=true]: minecraft:warped_door[facing=north,half=upper,hinge=left,open=true,powered=false] - minecraft:warped_door[facing=north,half=upper,hinge=right,open=true,powered=true]: minecraft:warped_door[facing=north,half=upper,hinge=right,open=true,powered=false] - minecraft:warped_door[facing=south,half=lower,hinge=left,open=false,powered=true]: minecraft:warped_door[facing=south,half=lower,hinge=left,open=false,powered=false] - minecraft:warped_door[facing=south,half=lower,hinge=right,open=false,powered=true]: minecraft:warped_door[facing=south,half=lower,hinge=right,open=false,powered=false] - minecraft:warped_door[facing=south,half=upper,hinge=left,open=false,powered=true]: minecraft:warped_door[facing=south,half=upper,hinge=left,open=false,powered=false] - minecraft:warped_door[facing=south,half=upper,hinge=right,open=false,powered=true]: minecraft:warped_door[facing=south,half=upper,hinge=right,open=false,powered=false] - minecraft:warped_door[facing=south,half=lower,hinge=left,open=true,powered=true]: minecraft:warped_door[facing=south,half=lower,hinge=left,open=true,powered=false] - minecraft:warped_door[facing=south,half=lower,hinge=right,open=true,powered=true]: minecraft:warped_door[facing=south,half=lower,hinge=right,open=true,powered=false] - minecraft:warped_door[facing=south,half=upper,hinge=left,open=true,powered=true]: minecraft:warped_door[facing=south,half=upper,hinge=left,open=true,powered=false] - minecraft:warped_door[facing=south,half=upper,hinge=right,open=true,powered=true]: minecraft:warped_door[facing=south,half=upper,hinge=right,open=true,powered=false] - minecraft:warped_door[facing=west,half=lower,hinge=left,open=false,powered=true]: minecraft:warped_door[facing=west,half=lower,hinge=left,open=false,powered=false] - minecraft:warped_door[facing=west,half=lower,hinge=right,open=false,powered=true]: minecraft:warped_door[facing=west,half=lower,hinge=right,open=false,powered=false] - minecraft:warped_door[facing=west,half=upper,hinge=left,open=false,powered=true]: minecraft:warped_door[facing=west,half=upper,hinge=left,open=false,powered=false] - minecraft:warped_door[facing=west,half=upper,hinge=right,open=false,powered=true]: minecraft:warped_door[facing=west,half=upper,hinge=right,open=false,powered=false] - minecraft:warped_door[facing=west,half=lower,hinge=left,open=true,powered=true]: minecraft:warped_door[facing=west,half=lower,hinge=left,open=true,powered=false] - minecraft:warped_door[facing=west,half=lower,hinge=right,open=true,powered=true]: minecraft:warped_door[facing=west,half=lower,hinge=right,open=true,powered=false] - minecraft:warped_door[facing=west,half=upper,hinge=left,open=true,powered=true]: minecraft:warped_door[facing=west,half=upper,hinge=left,open=true,powered=false] - minecraft:warped_door[facing=west,half=upper,hinge=right,open=true,powered=true]: minecraft:warped_door[facing=west,half=upper,hinge=right,open=true,powered=false] - minecraft:iron_door[facing=east,half=lower,hinge=left,open=false,powered=true]: minecraft:iron_door[facing=east,half=lower,hinge=left,open=false,powered=false] - minecraft:iron_door[facing=east,half=lower,hinge=right,open=false,powered=true]: minecraft:iron_door[facing=east,half=lower,hinge=right,open=false,powered=false] - minecraft:iron_door[facing=east,half=upper,hinge=left,open=false,powered=true]: minecraft:iron_door[facing=east,half=upper,hinge=left,open=false,powered=false] - minecraft:iron_door[facing=east,half=upper,hinge=right,open=false,powered=true]: minecraft:iron_door[facing=east,half=upper,hinge=right,open=false,powered=false] - minecraft:iron_door[facing=east,half=lower,hinge=left,open=true,powered=true]: minecraft:iron_door[facing=east,half=lower,hinge=left,open=true,powered=false] - minecraft:iron_door[facing=east,half=lower,hinge=right,open=true,powered=true]: minecraft:iron_door[facing=east,half=lower,hinge=right,open=true,powered=false] - minecraft:iron_door[facing=east,half=upper,hinge=left,open=true,powered=true]: minecraft:iron_door[facing=east,half=upper,hinge=left,open=true,powered=false] - minecraft:iron_door[facing=east,half=upper,hinge=right,open=true,powered=true]: minecraft:iron_door[facing=east,half=upper,hinge=right,open=true,powered=false] - minecraft:iron_door[facing=north,half=lower,hinge=left,open=false,powered=true]: minecraft:iron_door[facing=north,half=lower,hinge=left,open=false,powered=false] - minecraft:iron_door[facing=north,half=lower,hinge=right,open=false,powered=true]: minecraft:iron_door[facing=north,half=lower,hinge=right,open=false,powered=false] - minecraft:iron_door[facing=north,half=upper,hinge=left,open=false,powered=true]: minecraft:iron_door[facing=north,half=upper,hinge=left,open=false,powered=false] - minecraft:iron_door[facing=north,half=upper,hinge=right,open=false,powered=true]: minecraft:iron_door[facing=north,half=upper,hinge=right,open=false,powered=false] - minecraft:iron_door[facing=north,half=lower,hinge=left,open=true,powered=true]: minecraft:iron_door[facing=north,half=lower,hinge=left,open=true,powered=false] - minecraft:iron_door[facing=north,half=lower,hinge=right,open=true,powered=true]: minecraft:iron_door[facing=north,half=lower,hinge=right,open=true,powered=false] - minecraft:iron_door[facing=north,half=upper,hinge=left,open=true,powered=true]: minecraft:iron_door[facing=north,half=upper,hinge=left,open=true,powered=false] - minecraft:iron_door[facing=north,half=upper,hinge=right,open=true,powered=true]: minecraft:iron_door[facing=north,half=upper,hinge=right,open=true,powered=false] - minecraft:iron_door[facing=south,half=lower,hinge=left,open=false,powered=true]: minecraft:iron_door[facing=south,half=lower,hinge=left,open=false,powered=false] - minecraft:iron_door[facing=south,half=lower,hinge=right,open=false,powered=true]: minecraft:iron_door[facing=south,half=lower,hinge=right,open=false,powered=false] - minecraft:iron_door[facing=south,half=upper,hinge=left,open=false,powered=true]: minecraft:iron_door[facing=south,half=upper,hinge=left,open=false,powered=false] - minecraft:iron_door[facing=south,half=upper,hinge=right,open=false,powered=true]: minecraft:iron_door[facing=south,half=upper,hinge=right,open=false,powered=false] - minecraft:iron_door[facing=south,half=lower,hinge=left,open=true,powered=true]: minecraft:iron_door[facing=south,half=lower,hinge=left,open=true,powered=false] - minecraft:iron_door[facing=south,half=lower,hinge=right,open=true,powered=true]: minecraft:iron_door[facing=south,half=lower,hinge=right,open=true,powered=false] - minecraft:iron_door[facing=south,half=upper,hinge=left,open=true,powered=true]: minecraft:iron_door[facing=south,half=upper,hinge=left,open=true,powered=false] - minecraft:iron_door[facing=south,half=upper,hinge=right,open=true,powered=true]: minecraft:iron_door[facing=south,half=upper,hinge=right,open=true,powered=false] - minecraft:iron_door[facing=west,half=lower,hinge=left,open=false,powered=true]: minecraft:iron_door[facing=west,half=lower,hinge=left,open=false,powered=false] - minecraft:iron_door[facing=west,half=lower,hinge=right,open=false,powered=true]: minecraft:iron_door[facing=west,half=lower,hinge=right,open=false,powered=false] - minecraft:iron_door[facing=west,half=upper,hinge=left,open=false,powered=true]: minecraft:iron_door[facing=west,half=upper,hinge=left,open=false,powered=false] - minecraft:iron_door[facing=west,half=upper,hinge=right,open=false,powered=true]: minecraft:iron_door[facing=west,half=upper,hinge=right,open=false,powered=false] - minecraft:iron_door[facing=west,half=lower,hinge=left,open=true,powered=true]: minecraft:iron_door[facing=west,half=lower,hinge=left,open=true,powered=false] - minecraft:iron_door[facing=west,half=lower,hinge=right,open=true,powered=true]: minecraft:iron_door[facing=west,half=lower,hinge=right,open=true,powered=false] - minecraft:iron_door[facing=west,half=upper,hinge=left,open=true,powered=true]: minecraft:iron_door[facing=west,half=upper,hinge=left,open=true,powered=false] - minecraft:iron_door[facing=west,half=upper,hinge=right,open=true,powered=true]: minecraft:iron_door[facing=west,half=upper,hinge=right,open=true,powered=false] + oak_door[facing=east,half=lower,hinge=left,open=false,powered=true]: oak_door[facing=east,half=lower,hinge=left,open=false,powered=false] + oak_door[facing=east,half=lower,hinge=right,open=false,powered=true]: oak_door[facing=east,half=lower,hinge=right,open=false,powered=false] + oak_door[facing=east,half=upper,hinge=left,open=false,powered=true]: oak_door[facing=east,half=upper,hinge=left,open=false,powered=false] + oak_door[facing=east,half=upper,hinge=right,open=false,powered=true]: oak_door[facing=east,half=upper,hinge=right,open=false,powered=false] + oak_door[facing=east,half=lower,hinge=left,open=true,powered=true]: oak_door[facing=east,half=lower,hinge=left,open=true,powered=false] + oak_door[facing=east,half=lower,hinge=right,open=true,powered=true]: oak_door[facing=east,half=lower,hinge=right,open=true,powered=false] + oak_door[facing=east,half=upper,hinge=left,open=true,powered=true]: oak_door[facing=east,half=upper,hinge=left,open=true,powered=false] + oak_door[facing=east,half=upper,hinge=right,open=true,powered=true]: oak_door[facing=east,half=upper,hinge=right,open=true,powered=false] + oak_door[facing=north,half=lower,hinge=left,open=false,powered=true]: oak_door[facing=north,half=lower,hinge=left,open=false,powered=false] + oak_door[facing=north,half=lower,hinge=right,open=false,powered=true]: oak_door[facing=north,half=lower,hinge=right,open=false,powered=false] + oak_door[facing=north,half=upper,hinge=left,open=false,powered=true]: oak_door[facing=north,half=upper,hinge=left,open=false,powered=false] + oak_door[facing=north,half=upper,hinge=right,open=false,powered=true]: oak_door[facing=north,half=upper,hinge=right,open=false,powered=false] + oak_door[facing=north,half=lower,hinge=left,open=true,powered=true]: oak_door[facing=north,half=lower,hinge=left,open=true,powered=false] + oak_door[facing=north,half=lower,hinge=right,open=true,powered=true]: oak_door[facing=north,half=lower,hinge=right,open=true,powered=false] + oak_door[facing=north,half=upper,hinge=left,open=true,powered=true]: oak_door[facing=north,half=upper,hinge=left,open=true,powered=false] + oak_door[facing=north,half=upper,hinge=right,open=true,powered=true]: oak_door[facing=north,half=upper,hinge=right,open=true,powered=false] + oak_door[facing=south,half=lower,hinge=left,open=false,powered=true]: oak_door[facing=south,half=lower,hinge=left,open=false,powered=false] + oak_door[facing=south,half=lower,hinge=right,open=false,powered=true]: oak_door[facing=south,half=lower,hinge=right,open=false,powered=false] + oak_door[facing=south,half=upper,hinge=left,open=false,powered=true]: oak_door[facing=south,half=upper,hinge=left,open=false,powered=false] + oak_door[facing=south,half=upper,hinge=right,open=false,powered=true]: oak_door[facing=south,half=upper,hinge=right,open=false,powered=false] + oak_door[facing=south,half=lower,hinge=left,open=true,powered=true]: oak_door[facing=south,half=lower,hinge=left,open=true,powered=false] + oak_door[facing=south,half=lower,hinge=right,open=true,powered=true]: oak_door[facing=south,half=lower,hinge=right,open=true,powered=false] + oak_door[facing=south,half=upper,hinge=left,open=true,powered=true]: oak_door[facing=south,half=upper,hinge=left,open=true,powered=false] + oak_door[facing=south,half=upper,hinge=right,open=true,powered=true]: oak_door[facing=south,half=upper,hinge=right,open=true,powered=false] + oak_door[facing=west,half=lower,hinge=left,open=false,powered=true]: oak_door[facing=west,half=lower,hinge=left,open=false,powered=false] + oak_door[facing=west,half=lower,hinge=right,open=false,powered=true]: oak_door[facing=west,half=lower,hinge=right,open=false,powered=false] + oak_door[facing=west,half=upper,hinge=left,open=false,powered=true]: oak_door[facing=west,half=upper,hinge=left,open=false,powered=false] + oak_door[facing=west,half=upper,hinge=right,open=false,powered=true]: oak_door[facing=west,half=upper,hinge=right,open=false,powered=false] + oak_door[facing=west,half=lower,hinge=left,open=true,powered=true]: oak_door[facing=west,half=lower,hinge=left,open=true,powered=false] + oak_door[facing=west,half=lower,hinge=right,open=true,powered=true]: oak_door[facing=west,half=lower,hinge=right,open=true,powered=false] + oak_door[facing=west,half=upper,hinge=left,open=true,powered=true]: oak_door[facing=west,half=upper,hinge=left,open=true,powered=false] + oak_door[facing=west,half=upper,hinge=right,open=true,powered=true]: oak_door[facing=west,half=upper,hinge=right,open=true,powered=false] + spruce_door[facing=east,half=lower,hinge=left,open=false,powered=true]: spruce_door[facing=east,half=lower,hinge=left,open=false,powered=false] + spruce_door[facing=east,half=lower,hinge=right,open=false,powered=true]: spruce_door[facing=east,half=lower,hinge=right,open=false,powered=false] + spruce_door[facing=east,half=upper,hinge=left,open=false,powered=true]: spruce_door[facing=east,half=upper,hinge=left,open=false,powered=false] + spruce_door[facing=east,half=upper,hinge=right,open=false,powered=true]: spruce_door[facing=east,half=upper,hinge=right,open=false,powered=false] + spruce_door[facing=east,half=lower,hinge=left,open=true,powered=true]: spruce_door[facing=east,half=lower,hinge=left,open=true,powered=false] + spruce_door[facing=east,half=lower,hinge=right,open=true,powered=true]: spruce_door[facing=east,half=lower,hinge=right,open=true,powered=false] + spruce_door[facing=east,half=upper,hinge=left,open=true,powered=true]: spruce_door[facing=east,half=upper,hinge=left,open=true,powered=false] + spruce_door[facing=east,half=upper,hinge=right,open=true,powered=true]: spruce_door[facing=east,half=upper,hinge=right,open=true,powered=false] + spruce_door[facing=north,half=lower,hinge=left,open=false,powered=true]: spruce_door[facing=north,half=lower,hinge=left,open=false,powered=false] + spruce_door[facing=north,half=lower,hinge=right,open=false,powered=true]: spruce_door[facing=north,half=lower,hinge=right,open=false,powered=false] + spruce_door[facing=north,half=upper,hinge=left,open=false,powered=true]: spruce_door[facing=north,half=upper,hinge=left,open=false,powered=false] + spruce_door[facing=north,half=upper,hinge=right,open=false,powered=true]: spruce_door[facing=north,half=upper,hinge=right,open=false,powered=false] + spruce_door[facing=north,half=lower,hinge=left,open=true,powered=true]: spruce_door[facing=north,half=lower,hinge=left,open=true,powered=false] + spruce_door[facing=north,half=lower,hinge=right,open=true,powered=true]: spruce_door[facing=north,half=lower,hinge=right,open=true,powered=false] + spruce_door[facing=north,half=upper,hinge=left,open=true,powered=true]: spruce_door[facing=north,half=upper,hinge=left,open=true,powered=false] + spruce_door[facing=north,half=upper,hinge=right,open=true,powered=true]: spruce_door[facing=north,half=upper,hinge=right,open=true,powered=false] + spruce_door[facing=south,half=lower,hinge=left,open=false,powered=true]: spruce_door[facing=south,half=lower,hinge=left,open=false,powered=false] + spruce_door[facing=south,half=lower,hinge=right,open=false,powered=true]: spruce_door[facing=south,half=lower,hinge=right,open=false,powered=false] + spruce_door[facing=south,half=upper,hinge=left,open=false,powered=true]: spruce_door[facing=south,half=upper,hinge=left,open=false,powered=false] + spruce_door[facing=south,half=upper,hinge=right,open=false,powered=true]: spruce_door[facing=south,half=upper,hinge=right,open=false,powered=false] + spruce_door[facing=south,half=lower,hinge=left,open=true,powered=true]: spruce_door[facing=south,half=lower,hinge=left,open=true,powered=false] + spruce_door[facing=south,half=lower,hinge=right,open=true,powered=true]: spruce_door[facing=south,half=lower,hinge=right,open=true,powered=false] + spruce_door[facing=south,half=upper,hinge=left,open=true,powered=true]: spruce_door[facing=south,half=upper,hinge=left,open=true,powered=false] + spruce_door[facing=south,half=upper,hinge=right,open=true,powered=true]: spruce_door[facing=south,half=upper,hinge=right,open=true,powered=false] + spruce_door[facing=west,half=lower,hinge=left,open=false,powered=true]: spruce_door[facing=west,half=lower,hinge=left,open=false,powered=false] + spruce_door[facing=west,half=lower,hinge=right,open=false,powered=true]: spruce_door[facing=west,half=lower,hinge=right,open=false,powered=false] + spruce_door[facing=west,half=upper,hinge=left,open=false,powered=true]: spruce_door[facing=west,half=upper,hinge=left,open=false,powered=false] + spruce_door[facing=west,half=upper,hinge=right,open=false,powered=true]: spruce_door[facing=west,half=upper,hinge=right,open=false,powered=false] + spruce_door[facing=west,half=lower,hinge=left,open=true,powered=true]: spruce_door[facing=west,half=lower,hinge=left,open=true,powered=false] + spruce_door[facing=west,half=lower,hinge=right,open=true,powered=true]: spruce_door[facing=west,half=lower,hinge=right,open=true,powered=false] + spruce_door[facing=west,half=upper,hinge=left,open=true,powered=true]: spruce_door[facing=west,half=upper,hinge=left,open=true,powered=false] + spruce_door[facing=west,half=upper,hinge=right,open=true,powered=true]: spruce_door[facing=west,half=upper,hinge=right,open=true,powered=false] + birch_door[facing=east,half=lower,hinge=left,open=false,powered=true]: birch_door[facing=east,half=lower,hinge=left,open=false,powered=false] + birch_door[facing=east,half=lower,hinge=right,open=false,powered=true]: birch_door[facing=east,half=lower,hinge=right,open=false,powered=false] + birch_door[facing=east,half=upper,hinge=left,open=false,powered=true]: birch_door[facing=east,half=upper,hinge=left,open=false,powered=false] + birch_door[facing=east,half=upper,hinge=right,open=false,powered=true]: birch_door[facing=east,half=upper,hinge=right,open=false,powered=false] + birch_door[facing=east,half=lower,hinge=left,open=true,powered=true]: birch_door[facing=east,half=lower,hinge=left,open=true,powered=false] + birch_door[facing=east,half=lower,hinge=right,open=true,powered=true]: birch_door[facing=east,half=lower,hinge=right,open=true,powered=false] + birch_door[facing=east,half=upper,hinge=left,open=true,powered=true]: birch_door[facing=east,half=upper,hinge=left,open=true,powered=false] + birch_door[facing=east,half=upper,hinge=right,open=true,powered=true]: birch_door[facing=east,half=upper,hinge=right,open=true,powered=false] + birch_door[facing=north,half=lower,hinge=left,open=false,powered=true]: birch_door[facing=north,half=lower,hinge=left,open=false,powered=false] + birch_door[facing=north,half=lower,hinge=right,open=false,powered=true]: birch_door[facing=north,half=lower,hinge=right,open=false,powered=false] + birch_door[facing=north,half=upper,hinge=left,open=false,powered=true]: birch_door[facing=north,half=upper,hinge=left,open=false,powered=false] + birch_door[facing=north,half=upper,hinge=right,open=false,powered=true]: birch_door[facing=north,half=upper,hinge=right,open=false,powered=false] + birch_door[facing=north,half=lower,hinge=left,open=true,powered=true]: birch_door[facing=north,half=lower,hinge=left,open=true,powered=false] + birch_door[facing=north,half=lower,hinge=right,open=true,powered=true]: birch_door[facing=north,half=lower,hinge=right,open=true,powered=false] + birch_door[facing=north,half=upper,hinge=left,open=true,powered=true]: birch_door[facing=north,half=upper,hinge=left,open=true,powered=false] + birch_door[facing=north,half=upper,hinge=right,open=true,powered=true]: birch_door[facing=north,half=upper,hinge=right,open=true,powered=false] + birch_door[facing=south,half=lower,hinge=left,open=false,powered=true]: birch_door[facing=south,half=lower,hinge=left,open=false,powered=false] + birch_door[facing=south,half=lower,hinge=right,open=false,powered=true]: birch_door[facing=south,half=lower,hinge=right,open=false,powered=false] + birch_door[facing=south,half=upper,hinge=left,open=false,powered=true]: birch_door[facing=south,half=upper,hinge=left,open=false,powered=false] + birch_door[facing=south,half=upper,hinge=right,open=false,powered=true]: birch_door[facing=south,half=upper,hinge=right,open=false,powered=false] + birch_door[facing=south,half=lower,hinge=left,open=true,powered=true]: birch_door[facing=south,half=lower,hinge=left,open=true,powered=false] + birch_door[facing=south,half=lower,hinge=right,open=true,powered=true]: birch_door[facing=south,half=lower,hinge=right,open=true,powered=false] + birch_door[facing=south,half=upper,hinge=left,open=true,powered=true]: birch_door[facing=south,half=upper,hinge=left,open=true,powered=false] + birch_door[facing=south,half=upper,hinge=right,open=true,powered=true]: birch_door[facing=south,half=upper,hinge=right,open=true,powered=false] + birch_door[facing=west,half=lower,hinge=left,open=false,powered=true]: birch_door[facing=west,half=lower,hinge=left,open=false,powered=false] + birch_door[facing=west,half=lower,hinge=right,open=false,powered=true]: birch_door[facing=west,half=lower,hinge=right,open=false,powered=false] + birch_door[facing=west,half=upper,hinge=left,open=false,powered=true]: birch_door[facing=west,half=upper,hinge=left,open=false,powered=false] + birch_door[facing=west,half=upper,hinge=right,open=false,powered=true]: birch_door[facing=west,half=upper,hinge=right,open=false,powered=false] + birch_door[facing=west,half=lower,hinge=left,open=true,powered=true]: birch_door[facing=west,half=lower,hinge=left,open=true,powered=false] + birch_door[facing=west,half=lower,hinge=right,open=true,powered=true]: birch_door[facing=west,half=lower,hinge=right,open=true,powered=false] + birch_door[facing=west,half=upper,hinge=left,open=true,powered=true]: birch_door[facing=west,half=upper,hinge=left,open=true,powered=false] + birch_door[facing=west,half=upper,hinge=right,open=true,powered=true]: birch_door[facing=west,half=upper,hinge=right,open=true,powered=false] + jungle_door[facing=east,half=lower,hinge=left,open=false,powered=true]: jungle_door[facing=east,half=lower,hinge=left,open=false,powered=false] + jungle_door[facing=east,half=lower,hinge=right,open=false,powered=true]: jungle_door[facing=east,half=lower,hinge=right,open=false,powered=false] + jungle_door[facing=east,half=upper,hinge=left,open=false,powered=true]: jungle_door[facing=east,half=upper,hinge=left,open=false,powered=false] + jungle_door[facing=east,half=upper,hinge=right,open=false,powered=true]: jungle_door[facing=east,half=upper,hinge=right,open=false,powered=false] + jungle_door[facing=east,half=lower,hinge=left,open=true,powered=true]: jungle_door[facing=east,half=lower,hinge=left,open=true,powered=false] + jungle_door[facing=east,half=lower,hinge=right,open=true,powered=true]: jungle_door[facing=east,half=lower,hinge=right,open=true,powered=false] + jungle_door[facing=east,half=upper,hinge=left,open=true,powered=true]: jungle_door[facing=east,half=upper,hinge=left,open=true,powered=false] + jungle_door[facing=east,half=upper,hinge=right,open=true,powered=true]: jungle_door[facing=east,half=upper,hinge=right,open=true,powered=false] + jungle_door[facing=north,half=lower,hinge=left,open=false,powered=true]: jungle_door[facing=north,half=lower,hinge=left,open=false,powered=false] + jungle_door[facing=north,half=lower,hinge=right,open=false,powered=true]: jungle_door[facing=north,half=lower,hinge=right,open=false,powered=false] + jungle_door[facing=north,half=upper,hinge=left,open=false,powered=true]: jungle_door[facing=north,half=upper,hinge=left,open=false,powered=false] + jungle_door[facing=north,half=upper,hinge=right,open=false,powered=true]: jungle_door[facing=north,half=upper,hinge=right,open=false,powered=false] + jungle_door[facing=north,half=lower,hinge=left,open=true,powered=true]: jungle_door[facing=north,half=lower,hinge=left,open=true,powered=false] + jungle_door[facing=north,half=lower,hinge=right,open=true,powered=true]: jungle_door[facing=north,half=lower,hinge=right,open=true,powered=false] + jungle_door[facing=north,half=upper,hinge=left,open=true,powered=true]: jungle_door[facing=north,half=upper,hinge=left,open=true,powered=false] + jungle_door[facing=north,half=upper,hinge=right,open=true,powered=true]: jungle_door[facing=north,half=upper,hinge=right,open=true,powered=false] + jungle_door[facing=south,half=lower,hinge=left,open=false,powered=true]: jungle_door[facing=south,half=lower,hinge=left,open=false,powered=false] + jungle_door[facing=south,half=lower,hinge=right,open=false,powered=true]: jungle_door[facing=south,half=lower,hinge=right,open=false,powered=false] + jungle_door[facing=south,half=upper,hinge=left,open=false,powered=true]: jungle_door[facing=south,half=upper,hinge=left,open=false,powered=false] + jungle_door[facing=south,half=upper,hinge=right,open=false,powered=true]: jungle_door[facing=south,half=upper,hinge=right,open=false,powered=false] + jungle_door[facing=south,half=lower,hinge=left,open=true,powered=true]: jungle_door[facing=south,half=lower,hinge=left,open=true,powered=false] + jungle_door[facing=south,half=lower,hinge=right,open=true,powered=true]: jungle_door[facing=south,half=lower,hinge=right,open=true,powered=false] + jungle_door[facing=south,half=upper,hinge=left,open=true,powered=true]: jungle_door[facing=south,half=upper,hinge=left,open=true,powered=false] + jungle_door[facing=south,half=upper,hinge=right,open=true,powered=true]: jungle_door[facing=south,half=upper,hinge=right,open=true,powered=false] + jungle_door[facing=west,half=lower,hinge=left,open=false,powered=true]: jungle_door[facing=west,half=lower,hinge=left,open=false,powered=false] + jungle_door[facing=west,half=lower,hinge=right,open=false,powered=true]: jungle_door[facing=west,half=lower,hinge=right,open=false,powered=false] + jungle_door[facing=west,half=upper,hinge=left,open=false,powered=true]: jungle_door[facing=west,half=upper,hinge=left,open=false,powered=false] + jungle_door[facing=west,half=upper,hinge=right,open=false,powered=true]: jungle_door[facing=west,half=upper,hinge=right,open=false,powered=false] + jungle_door[facing=west,half=lower,hinge=left,open=true,powered=true]: jungle_door[facing=west,half=lower,hinge=left,open=true,powered=false] + jungle_door[facing=west,half=lower,hinge=right,open=true,powered=true]: jungle_door[facing=west,half=lower,hinge=right,open=true,powered=false] + jungle_door[facing=west,half=upper,hinge=left,open=true,powered=true]: jungle_door[facing=west,half=upper,hinge=left,open=true,powered=false] + jungle_door[facing=west,half=upper,hinge=right,open=true,powered=true]: jungle_door[facing=west,half=upper,hinge=right,open=true,powered=false] + acacia_door[facing=east,half=lower,hinge=left,open=false,powered=true]: acacia_door[facing=east,half=lower,hinge=left,open=false,powered=false] + acacia_door[facing=east,half=lower,hinge=right,open=false,powered=true]: acacia_door[facing=east,half=lower,hinge=right,open=false,powered=false] + acacia_door[facing=east,half=upper,hinge=left,open=false,powered=true]: acacia_door[facing=east,half=upper,hinge=left,open=false,powered=false] + acacia_door[facing=east,half=upper,hinge=right,open=false,powered=true]: acacia_door[facing=east,half=upper,hinge=right,open=false,powered=false] + acacia_door[facing=east,half=lower,hinge=left,open=true,powered=true]: acacia_door[facing=east,half=lower,hinge=left,open=true,powered=false] + acacia_door[facing=east,half=lower,hinge=right,open=true,powered=true]: acacia_door[facing=east,half=lower,hinge=right,open=true,powered=false] + acacia_door[facing=east,half=upper,hinge=left,open=true,powered=true]: acacia_door[facing=east,half=upper,hinge=left,open=true,powered=false] + acacia_door[facing=east,half=upper,hinge=right,open=true,powered=true]: acacia_door[facing=east,half=upper,hinge=right,open=true,powered=false] + acacia_door[facing=north,half=lower,hinge=left,open=false,powered=true]: acacia_door[facing=north,half=lower,hinge=left,open=false,powered=false] + acacia_door[facing=north,half=lower,hinge=right,open=false,powered=true]: acacia_door[facing=north,half=lower,hinge=right,open=false,powered=false] + acacia_door[facing=north,half=upper,hinge=left,open=false,powered=true]: acacia_door[facing=north,half=upper,hinge=left,open=false,powered=false] + acacia_door[facing=north,half=upper,hinge=right,open=false,powered=true]: acacia_door[facing=north,half=upper,hinge=right,open=false,powered=false] + acacia_door[facing=north,half=lower,hinge=left,open=true,powered=true]: acacia_door[facing=north,half=lower,hinge=left,open=true,powered=false] + acacia_door[facing=north,half=lower,hinge=right,open=true,powered=true]: acacia_door[facing=north,half=lower,hinge=right,open=true,powered=false] + acacia_door[facing=north,half=upper,hinge=left,open=true,powered=true]: acacia_door[facing=north,half=upper,hinge=left,open=true,powered=false] + acacia_door[facing=north,half=upper,hinge=right,open=true,powered=true]: acacia_door[facing=north,half=upper,hinge=right,open=true,powered=false] + acacia_door[facing=south,half=lower,hinge=left,open=false,powered=true]: acacia_door[facing=south,half=lower,hinge=left,open=false,powered=false] + acacia_door[facing=south,half=lower,hinge=right,open=false,powered=true]: acacia_door[facing=south,half=lower,hinge=right,open=false,powered=false] + acacia_door[facing=south,half=upper,hinge=left,open=false,powered=true]: acacia_door[facing=south,half=upper,hinge=left,open=false,powered=false] + acacia_door[facing=south,half=upper,hinge=right,open=false,powered=true]: acacia_door[facing=south,half=upper,hinge=right,open=false,powered=false] + acacia_door[facing=south,half=lower,hinge=left,open=true,powered=true]: acacia_door[facing=south,half=lower,hinge=left,open=true,powered=false] + acacia_door[facing=south,half=lower,hinge=right,open=true,powered=true]: acacia_door[facing=south,half=lower,hinge=right,open=true,powered=false] + acacia_door[facing=south,half=upper,hinge=left,open=true,powered=true]: acacia_door[facing=south,half=upper,hinge=left,open=true,powered=false] + acacia_door[facing=south,half=upper,hinge=right,open=true,powered=true]: acacia_door[facing=south,half=upper,hinge=right,open=true,powered=false] + acacia_door[facing=west,half=lower,hinge=left,open=false,powered=true]: acacia_door[facing=west,half=lower,hinge=left,open=false,powered=false] + acacia_door[facing=west,half=lower,hinge=right,open=false,powered=true]: acacia_door[facing=west,half=lower,hinge=right,open=false,powered=false] + acacia_door[facing=west,half=upper,hinge=left,open=false,powered=true]: acacia_door[facing=west,half=upper,hinge=left,open=false,powered=false] + acacia_door[facing=west,half=upper,hinge=right,open=false,powered=true]: acacia_door[facing=west,half=upper,hinge=right,open=false,powered=false] + acacia_door[facing=west,half=lower,hinge=left,open=true,powered=true]: acacia_door[facing=west,half=lower,hinge=left,open=true,powered=false] + acacia_door[facing=west,half=lower,hinge=right,open=true,powered=true]: acacia_door[facing=west,half=lower,hinge=right,open=true,powered=false] + acacia_door[facing=west,half=upper,hinge=left,open=true,powered=true]: acacia_door[facing=west,half=upper,hinge=left,open=true,powered=false] + acacia_door[facing=west,half=upper,hinge=right,open=true,powered=true]: acacia_door[facing=west,half=upper,hinge=right,open=true,powered=false] + dark_oak_door[facing=east,half=lower,hinge=left,open=false,powered=true]: dark_oak_door[facing=east,half=lower,hinge=left,open=false,powered=false] + dark_oak_door[facing=east,half=lower,hinge=right,open=false,powered=true]: dark_oak_door[facing=east,half=lower,hinge=right,open=false,powered=false] + dark_oak_door[facing=east,half=upper,hinge=left,open=false,powered=true]: dark_oak_door[facing=east,half=upper,hinge=left,open=false,powered=false] + dark_oak_door[facing=east,half=upper,hinge=right,open=false,powered=true]: dark_oak_door[facing=east,half=upper,hinge=right,open=false,powered=false] + dark_oak_door[facing=east,half=lower,hinge=left,open=true,powered=true]: dark_oak_door[facing=east,half=lower,hinge=left,open=true,powered=false] + dark_oak_door[facing=east,half=lower,hinge=right,open=true,powered=true]: dark_oak_door[facing=east,half=lower,hinge=right,open=true,powered=false] + dark_oak_door[facing=east,half=upper,hinge=left,open=true,powered=true]: dark_oak_door[facing=east,half=upper,hinge=left,open=true,powered=false] + dark_oak_door[facing=east,half=upper,hinge=right,open=true,powered=true]: dark_oak_door[facing=east,half=upper,hinge=right,open=true,powered=false] + dark_oak_door[facing=north,half=lower,hinge=left,open=false,powered=true]: dark_oak_door[facing=north,half=lower,hinge=left,open=false,powered=false] + dark_oak_door[facing=north,half=lower,hinge=right,open=false,powered=true]: dark_oak_door[facing=north,half=lower,hinge=right,open=false,powered=false] + dark_oak_door[facing=north,half=upper,hinge=left,open=false,powered=true]: dark_oak_door[facing=north,half=upper,hinge=left,open=false,powered=false] + dark_oak_door[facing=north,half=upper,hinge=right,open=false,powered=true]: dark_oak_door[facing=north,half=upper,hinge=right,open=false,powered=false] + dark_oak_door[facing=north,half=lower,hinge=left,open=true,powered=true]: dark_oak_door[facing=north,half=lower,hinge=left,open=true,powered=false] + dark_oak_door[facing=north,half=lower,hinge=right,open=true,powered=true]: dark_oak_door[facing=north,half=lower,hinge=right,open=true,powered=false] + dark_oak_door[facing=north,half=upper,hinge=left,open=true,powered=true]: dark_oak_door[facing=north,half=upper,hinge=left,open=true,powered=false] + dark_oak_door[facing=north,half=upper,hinge=right,open=true,powered=true]: dark_oak_door[facing=north,half=upper,hinge=right,open=true,powered=false] + dark_oak_door[facing=south,half=lower,hinge=left,open=false,powered=true]: dark_oak_door[facing=south,half=lower,hinge=left,open=false,powered=false] + dark_oak_door[facing=south,half=lower,hinge=right,open=false,powered=true]: dark_oak_door[facing=south,half=lower,hinge=right,open=false,powered=false] + dark_oak_door[facing=south,half=upper,hinge=left,open=false,powered=true]: dark_oak_door[facing=south,half=upper,hinge=left,open=false,powered=false] + dark_oak_door[facing=south,half=upper,hinge=right,open=false,powered=true]: dark_oak_door[facing=south,half=upper,hinge=right,open=false,powered=false] + dark_oak_door[facing=south,half=lower,hinge=left,open=true,powered=true]: dark_oak_door[facing=south,half=lower,hinge=left,open=true,powered=false] + dark_oak_door[facing=south,half=lower,hinge=right,open=true,powered=true]: dark_oak_door[facing=south,half=lower,hinge=right,open=true,powered=false] + dark_oak_door[facing=south,half=upper,hinge=left,open=true,powered=true]: dark_oak_door[facing=south,half=upper,hinge=left,open=true,powered=false] + dark_oak_door[facing=south,half=upper,hinge=right,open=true,powered=true]: dark_oak_door[facing=south,half=upper,hinge=right,open=true,powered=false] + dark_oak_door[facing=west,half=lower,hinge=left,open=false,powered=true]: dark_oak_door[facing=west,half=lower,hinge=left,open=false,powered=false] + dark_oak_door[facing=west,half=lower,hinge=right,open=false,powered=true]: dark_oak_door[facing=west,half=lower,hinge=right,open=false,powered=false] + dark_oak_door[facing=west,half=upper,hinge=left,open=false,powered=true]: dark_oak_door[facing=west,half=upper,hinge=left,open=false,powered=false] + dark_oak_door[facing=west,half=upper,hinge=right,open=false,powered=true]: dark_oak_door[facing=west,half=upper,hinge=right,open=false,powered=false] + dark_oak_door[facing=west,half=lower,hinge=left,open=true,powered=true]: dark_oak_door[facing=west,half=lower,hinge=left,open=true,powered=false] + dark_oak_door[facing=west,half=lower,hinge=right,open=true,powered=true]: dark_oak_door[facing=west,half=lower,hinge=right,open=true,powered=false] + dark_oak_door[facing=west,half=upper,hinge=left,open=true,powered=true]: dark_oak_door[facing=west,half=upper,hinge=left,open=true,powered=false] + dark_oak_door[facing=west,half=upper,hinge=right,open=true,powered=true]: dark_oak_door[facing=west,half=upper,hinge=right,open=true,powered=false] + mangrove_door[facing=east,half=lower,hinge=left,open=false,powered=true]: mangrove_door[facing=east,half=lower,hinge=left,open=false,powered=false] + mangrove_door[facing=east,half=lower,hinge=right,open=false,powered=true]: mangrove_door[facing=east,half=lower,hinge=right,open=false,powered=false] + mangrove_door[facing=east,half=upper,hinge=left,open=false,powered=true]: mangrove_door[facing=east,half=upper,hinge=left,open=false,powered=false] + mangrove_door[facing=east,half=upper,hinge=right,open=false,powered=true]: mangrove_door[facing=east,half=upper,hinge=right,open=false,powered=false] + mangrove_door[facing=east,half=lower,hinge=left,open=true,powered=true]: mangrove_door[facing=east,half=lower,hinge=left,open=true,powered=false] + mangrove_door[facing=east,half=lower,hinge=right,open=true,powered=true]: mangrove_door[facing=east,half=lower,hinge=right,open=true,powered=false] + mangrove_door[facing=east,half=upper,hinge=left,open=true,powered=true]: mangrove_door[facing=east,half=upper,hinge=left,open=true,powered=false] + mangrove_door[facing=east,half=upper,hinge=right,open=true,powered=true]: mangrove_door[facing=east,half=upper,hinge=right,open=true,powered=false] + mangrove_door[facing=north,half=lower,hinge=left,open=false,powered=true]: mangrove_door[facing=north,half=lower,hinge=left,open=false,powered=false] + mangrove_door[facing=north,half=lower,hinge=right,open=false,powered=true]: mangrove_door[facing=north,half=lower,hinge=right,open=false,powered=false] + mangrove_door[facing=north,half=upper,hinge=left,open=false,powered=true]: mangrove_door[facing=north,half=upper,hinge=left,open=false,powered=false] + mangrove_door[facing=north,half=upper,hinge=right,open=false,powered=true]: mangrove_door[facing=north,half=upper,hinge=right,open=false,powered=false] + mangrove_door[facing=north,half=lower,hinge=left,open=true,powered=true]: mangrove_door[facing=north,half=lower,hinge=left,open=true,powered=false] + mangrove_door[facing=north,half=lower,hinge=right,open=true,powered=true]: mangrove_door[facing=north,half=lower,hinge=right,open=true,powered=false] + mangrove_door[facing=north,half=upper,hinge=left,open=true,powered=true]: mangrove_door[facing=north,half=upper,hinge=left,open=true,powered=false] + mangrove_door[facing=north,half=upper,hinge=right,open=true,powered=true]: mangrove_door[facing=north,half=upper,hinge=right,open=true,powered=false] + mangrove_door[facing=south,half=lower,hinge=left,open=false,powered=true]: mangrove_door[facing=south,half=lower,hinge=left,open=false,powered=false] + mangrove_door[facing=south,half=lower,hinge=right,open=false,powered=true]: mangrove_door[facing=south,half=lower,hinge=right,open=false,powered=false] + mangrove_door[facing=south,half=upper,hinge=left,open=false,powered=true]: mangrove_door[facing=south,half=upper,hinge=left,open=false,powered=false] + mangrove_door[facing=south,half=upper,hinge=right,open=false,powered=true]: mangrove_door[facing=south,half=upper,hinge=right,open=false,powered=false] + mangrove_door[facing=south,half=lower,hinge=left,open=true,powered=true]: mangrove_door[facing=south,half=lower,hinge=left,open=true,powered=false] + mangrove_door[facing=south,half=lower,hinge=right,open=true,powered=true]: mangrove_door[facing=south,half=lower,hinge=right,open=true,powered=false] + mangrove_door[facing=south,half=upper,hinge=left,open=true,powered=true]: mangrove_door[facing=south,half=upper,hinge=left,open=true,powered=false] + mangrove_door[facing=south,half=upper,hinge=right,open=true,powered=true]: mangrove_door[facing=south,half=upper,hinge=right,open=true,powered=false] + mangrove_door[facing=west,half=lower,hinge=left,open=false,powered=true]: mangrove_door[facing=west,half=lower,hinge=left,open=false,powered=false] + mangrove_door[facing=west,half=lower,hinge=right,open=false,powered=true]: mangrove_door[facing=west,half=lower,hinge=right,open=false,powered=false] + mangrove_door[facing=west,half=upper,hinge=left,open=false,powered=true]: mangrove_door[facing=west,half=upper,hinge=left,open=false,powered=false] + mangrove_door[facing=west,half=upper,hinge=right,open=false,powered=true]: mangrove_door[facing=west,half=upper,hinge=right,open=false,powered=false] + mangrove_door[facing=west,half=lower,hinge=left,open=true,powered=true]: mangrove_door[facing=west,half=lower,hinge=left,open=true,powered=false] + mangrove_door[facing=west,half=lower,hinge=right,open=true,powered=true]: mangrove_door[facing=west,half=lower,hinge=right,open=true,powered=false] + mangrove_door[facing=west,half=upper,hinge=left,open=true,powered=true]: mangrove_door[facing=west,half=upper,hinge=left,open=true,powered=false] + mangrove_door[facing=west,half=upper,hinge=right,open=true,powered=true]: mangrove_door[facing=west,half=upper,hinge=right,open=true,powered=false] + cherry_door[facing=east,half=lower,hinge=left,open=false,powered=true]: cherry_door[facing=east,half=lower,hinge=left,open=false,powered=false] + cherry_door[facing=east,half=lower,hinge=right,open=false,powered=true]: cherry_door[facing=east,half=lower,hinge=right,open=false,powered=false] + cherry_door[facing=east,half=upper,hinge=left,open=false,powered=true]: cherry_door[facing=east,half=upper,hinge=left,open=false,powered=false] + cherry_door[facing=east,half=upper,hinge=right,open=false,powered=true]: cherry_door[facing=east,half=upper,hinge=right,open=false,powered=false] + cherry_door[facing=east,half=lower,hinge=left,open=true,powered=true]: cherry_door[facing=east,half=lower,hinge=left,open=true,powered=false] + cherry_door[facing=east,half=lower,hinge=right,open=true,powered=true]: cherry_door[facing=east,half=lower,hinge=right,open=true,powered=false] + cherry_door[facing=east,half=upper,hinge=left,open=true,powered=true]: cherry_door[facing=east,half=upper,hinge=left,open=true,powered=false] + cherry_door[facing=east,half=upper,hinge=right,open=true,powered=true]: cherry_door[facing=east,half=upper,hinge=right,open=true,powered=false] + cherry_door[facing=north,half=lower,hinge=left,open=false,powered=true]: cherry_door[facing=north,half=lower,hinge=left,open=false,powered=false] + cherry_door[facing=north,half=lower,hinge=right,open=false,powered=true]: cherry_door[facing=north,half=lower,hinge=right,open=false,powered=false] + cherry_door[facing=north,half=upper,hinge=left,open=false,powered=true]: cherry_door[facing=north,half=upper,hinge=left,open=false,powered=false] + cherry_door[facing=north,half=upper,hinge=right,open=false,powered=true]: cherry_door[facing=north,half=upper,hinge=right,open=false,powered=false] + cherry_door[facing=north,half=lower,hinge=left,open=true,powered=true]: cherry_door[facing=north,half=lower,hinge=left,open=true,powered=false] + cherry_door[facing=north,half=lower,hinge=right,open=true,powered=true]: cherry_door[facing=north,half=lower,hinge=right,open=true,powered=false] + cherry_door[facing=north,half=upper,hinge=left,open=true,powered=true]: cherry_door[facing=north,half=upper,hinge=left,open=true,powered=false] + cherry_door[facing=north,half=upper,hinge=right,open=true,powered=true]: cherry_door[facing=north,half=upper,hinge=right,open=true,powered=false] + cherry_door[facing=south,half=lower,hinge=left,open=false,powered=true]: cherry_door[facing=south,half=lower,hinge=left,open=false,powered=false] + cherry_door[facing=south,half=lower,hinge=right,open=false,powered=true]: cherry_door[facing=south,half=lower,hinge=right,open=false,powered=false] + cherry_door[facing=south,half=upper,hinge=left,open=false,powered=true]: cherry_door[facing=south,half=upper,hinge=left,open=false,powered=false] + cherry_door[facing=south,half=upper,hinge=right,open=false,powered=true]: cherry_door[facing=south,half=upper,hinge=right,open=false,powered=false] + cherry_door[facing=south,half=lower,hinge=left,open=true,powered=true]: cherry_door[facing=south,half=lower,hinge=left,open=true,powered=false] + cherry_door[facing=south,half=lower,hinge=right,open=true,powered=true]: cherry_door[facing=south,half=lower,hinge=right,open=true,powered=false] + cherry_door[facing=south,half=upper,hinge=left,open=true,powered=true]: cherry_door[facing=south,half=upper,hinge=left,open=true,powered=false] + cherry_door[facing=south,half=upper,hinge=right,open=true,powered=true]: cherry_door[facing=south,half=upper,hinge=right,open=true,powered=false] + cherry_door[facing=west,half=lower,hinge=left,open=false,powered=true]: cherry_door[facing=west,half=lower,hinge=left,open=false,powered=false] + cherry_door[facing=west,half=lower,hinge=right,open=false,powered=true]: cherry_door[facing=west,half=lower,hinge=right,open=false,powered=false] + cherry_door[facing=west,half=upper,hinge=left,open=false,powered=true]: cherry_door[facing=west,half=upper,hinge=left,open=false,powered=false] + cherry_door[facing=west,half=upper,hinge=right,open=false,powered=true]: cherry_door[facing=west,half=upper,hinge=right,open=false,powered=false] + cherry_door[facing=west,half=lower,hinge=left,open=true,powered=true]: cherry_door[facing=west,half=lower,hinge=left,open=true,powered=false] + cherry_door[facing=west,half=lower,hinge=right,open=true,powered=true]: cherry_door[facing=west,half=lower,hinge=right,open=true,powered=false] + cherry_door[facing=west,half=upper,hinge=left,open=true,powered=true]: cherry_door[facing=west,half=upper,hinge=left,open=true,powered=false] + cherry_door[facing=west,half=upper,hinge=right,open=true,powered=true]: cherry_door[facing=west,half=upper,hinge=right,open=true,powered=false] + bamboo_door[facing=east,half=lower,hinge=left,open=false,powered=true]: bamboo_door[facing=east,half=lower,hinge=left,open=false,powered=false] + bamboo_door[facing=east,half=lower,hinge=right,open=false,powered=true]: bamboo_door[facing=east,half=lower,hinge=right,open=false,powered=false] + bamboo_door[facing=east,half=upper,hinge=left,open=false,powered=true]: bamboo_door[facing=east,half=upper,hinge=left,open=false,powered=false] + bamboo_door[facing=east,half=upper,hinge=right,open=false,powered=true]: bamboo_door[facing=east,half=upper,hinge=right,open=false,powered=false] + bamboo_door[facing=east,half=lower,hinge=left,open=true,powered=true]: bamboo_door[facing=east,half=lower,hinge=left,open=true,powered=false] + bamboo_door[facing=east,half=lower,hinge=right,open=true,powered=true]: bamboo_door[facing=east,half=lower,hinge=right,open=true,powered=false] + bamboo_door[facing=east,half=upper,hinge=left,open=true,powered=true]: bamboo_door[facing=east,half=upper,hinge=left,open=true,powered=false] + bamboo_door[facing=east,half=upper,hinge=right,open=true,powered=true]: bamboo_door[facing=east,half=upper,hinge=right,open=true,powered=false] + bamboo_door[facing=north,half=lower,hinge=left,open=false,powered=true]: bamboo_door[facing=north,half=lower,hinge=left,open=false,powered=false] + bamboo_door[facing=north,half=lower,hinge=right,open=false,powered=true]: bamboo_door[facing=north,half=lower,hinge=right,open=false,powered=false] + bamboo_door[facing=north,half=upper,hinge=left,open=false,powered=true]: bamboo_door[facing=north,half=upper,hinge=left,open=false,powered=false] + bamboo_door[facing=north,half=upper,hinge=right,open=false,powered=true]: bamboo_door[facing=north,half=upper,hinge=right,open=false,powered=false] + bamboo_door[facing=north,half=lower,hinge=left,open=true,powered=true]: bamboo_door[facing=north,half=lower,hinge=left,open=true,powered=false] + bamboo_door[facing=north,half=lower,hinge=right,open=true,powered=true]: bamboo_door[facing=north,half=lower,hinge=right,open=true,powered=false] + bamboo_door[facing=north,half=upper,hinge=left,open=true,powered=true]: bamboo_door[facing=north,half=upper,hinge=left,open=true,powered=false] + bamboo_door[facing=north,half=upper,hinge=right,open=true,powered=true]: bamboo_door[facing=north,half=upper,hinge=right,open=true,powered=false] + bamboo_door[facing=south,half=lower,hinge=left,open=false,powered=true]: bamboo_door[facing=south,half=lower,hinge=left,open=false,powered=false] + bamboo_door[facing=south,half=lower,hinge=right,open=false,powered=true]: bamboo_door[facing=south,half=lower,hinge=right,open=false,powered=false] + bamboo_door[facing=south,half=upper,hinge=left,open=false,powered=true]: bamboo_door[facing=south,half=upper,hinge=left,open=false,powered=false] + bamboo_door[facing=south,half=upper,hinge=right,open=false,powered=true]: bamboo_door[facing=south,half=upper,hinge=right,open=false,powered=false] + bamboo_door[facing=south,half=lower,hinge=left,open=true,powered=true]: bamboo_door[facing=south,half=lower,hinge=left,open=true,powered=false] + bamboo_door[facing=south,half=lower,hinge=right,open=true,powered=true]: bamboo_door[facing=south,half=lower,hinge=right,open=true,powered=false] + bamboo_door[facing=south,half=upper,hinge=left,open=true,powered=true]: bamboo_door[facing=south,half=upper,hinge=left,open=true,powered=false] + bamboo_door[facing=south,half=upper,hinge=right,open=true,powered=true]: bamboo_door[facing=south,half=upper,hinge=right,open=true,powered=false] + bamboo_door[facing=west,half=lower,hinge=left,open=false,powered=true]: bamboo_door[facing=west,half=lower,hinge=left,open=false,powered=false] + bamboo_door[facing=west,half=lower,hinge=right,open=false,powered=true]: bamboo_door[facing=west,half=lower,hinge=right,open=false,powered=false] + bamboo_door[facing=west,half=upper,hinge=left,open=false,powered=true]: bamboo_door[facing=west,half=upper,hinge=left,open=false,powered=false] + bamboo_door[facing=west,half=upper,hinge=right,open=false,powered=true]: bamboo_door[facing=west,half=upper,hinge=right,open=false,powered=false] + bamboo_door[facing=west,half=lower,hinge=left,open=true,powered=true]: bamboo_door[facing=west,half=lower,hinge=left,open=true,powered=false] + bamboo_door[facing=west,half=lower,hinge=right,open=true,powered=true]: bamboo_door[facing=west,half=lower,hinge=right,open=true,powered=false] + bamboo_door[facing=west,half=upper,hinge=left,open=true,powered=true]: bamboo_door[facing=west,half=upper,hinge=left,open=true,powered=false] + bamboo_door[facing=west,half=upper,hinge=right,open=true,powered=true]: bamboo_door[facing=west,half=upper,hinge=right,open=true,powered=false] + crimson_door[facing=east,half=lower,hinge=left,open=false,powered=true]: crimson_door[facing=east,half=lower,hinge=left,open=false,powered=false] + crimson_door[facing=east,half=lower,hinge=right,open=false,powered=true]: crimson_door[facing=east,half=lower,hinge=right,open=false,powered=false] + crimson_door[facing=east,half=upper,hinge=left,open=false,powered=true]: crimson_door[facing=east,half=upper,hinge=left,open=false,powered=false] + crimson_door[facing=east,half=upper,hinge=right,open=false,powered=true]: crimson_door[facing=east,half=upper,hinge=right,open=false,powered=false] + crimson_door[facing=east,half=lower,hinge=left,open=true,powered=true]: crimson_door[facing=east,half=lower,hinge=left,open=true,powered=false] + crimson_door[facing=east,half=lower,hinge=right,open=true,powered=true]: crimson_door[facing=east,half=lower,hinge=right,open=true,powered=false] + crimson_door[facing=east,half=upper,hinge=left,open=true,powered=true]: crimson_door[facing=east,half=upper,hinge=left,open=true,powered=false] + crimson_door[facing=east,half=upper,hinge=right,open=true,powered=true]: crimson_door[facing=east,half=upper,hinge=right,open=true,powered=false] + crimson_door[facing=north,half=lower,hinge=left,open=false,powered=true]: crimson_door[facing=north,half=lower,hinge=left,open=false,powered=false] + crimson_door[facing=north,half=lower,hinge=right,open=false,powered=true]: crimson_door[facing=north,half=lower,hinge=right,open=false,powered=false] + crimson_door[facing=north,half=upper,hinge=left,open=false,powered=true]: crimson_door[facing=north,half=upper,hinge=left,open=false,powered=false] + crimson_door[facing=north,half=upper,hinge=right,open=false,powered=true]: crimson_door[facing=north,half=upper,hinge=right,open=false,powered=false] + crimson_door[facing=north,half=lower,hinge=left,open=true,powered=true]: crimson_door[facing=north,half=lower,hinge=left,open=true,powered=false] + crimson_door[facing=north,half=lower,hinge=right,open=true,powered=true]: crimson_door[facing=north,half=lower,hinge=right,open=true,powered=false] + crimson_door[facing=north,half=upper,hinge=left,open=true,powered=true]: crimson_door[facing=north,half=upper,hinge=left,open=true,powered=false] + crimson_door[facing=north,half=upper,hinge=right,open=true,powered=true]: crimson_door[facing=north,half=upper,hinge=right,open=true,powered=false] + crimson_door[facing=south,half=lower,hinge=left,open=false,powered=true]: crimson_door[facing=south,half=lower,hinge=left,open=false,powered=false] + crimson_door[facing=south,half=lower,hinge=right,open=false,powered=true]: crimson_door[facing=south,half=lower,hinge=right,open=false,powered=false] + crimson_door[facing=south,half=upper,hinge=left,open=false,powered=true]: crimson_door[facing=south,half=upper,hinge=left,open=false,powered=false] + crimson_door[facing=south,half=upper,hinge=right,open=false,powered=true]: crimson_door[facing=south,half=upper,hinge=right,open=false,powered=false] + crimson_door[facing=south,half=lower,hinge=left,open=true,powered=true]: crimson_door[facing=south,half=lower,hinge=left,open=true,powered=false] + crimson_door[facing=south,half=lower,hinge=right,open=true,powered=true]: crimson_door[facing=south,half=lower,hinge=right,open=true,powered=false] + crimson_door[facing=south,half=upper,hinge=left,open=true,powered=true]: crimson_door[facing=south,half=upper,hinge=left,open=true,powered=false] + crimson_door[facing=south,half=upper,hinge=right,open=true,powered=true]: crimson_door[facing=south,half=upper,hinge=right,open=true,powered=false] + crimson_door[facing=west,half=lower,hinge=left,open=false,powered=true]: crimson_door[facing=west,half=lower,hinge=left,open=false,powered=false] + crimson_door[facing=west,half=lower,hinge=right,open=false,powered=true]: crimson_door[facing=west,half=lower,hinge=right,open=false,powered=false] + crimson_door[facing=west,half=upper,hinge=left,open=false,powered=true]: crimson_door[facing=west,half=upper,hinge=left,open=false,powered=false] + crimson_door[facing=west,half=upper,hinge=right,open=false,powered=true]: crimson_door[facing=west,half=upper,hinge=right,open=false,powered=false] + crimson_door[facing=west,half=lower,hinge=left,open=true,powered=true]: crimson_door[facing=west,half=lower,hinge=left,open=true,powered=false] + crimson_door[facing=west,half=lower,hinge=right,open=true,powered=true]: crimson_door[facing=west,half=lower,hinge=right,open=true,powered=false] + crimson_door[facing=west,half=upper,hinge=left,open=true,powered=true]: crimson_door[facing=west,half=upper,hinge=left,open=true,powered=false] + crimson_door[facing=west,half=upper,hinge=right,open=true,powered=true]: crimson_door[facing=west,half=upper,hinge=right,open=true,powered=false] + warped_door[facing=east,half=lower,hinge=left,open=false,powered=true]: warped_door[facing=east,half=lower,hinge=left,open=false,powered=false] + warped_door[facing=east,half=lower,hinge=right,open=false,powered=true]: warped_door[facing=east,half=lower,hinge=right,open=false,powered=false] + warped_door[facing=east,half=upper,hinge=left,open=false,powered=true]: warped_door[facing=east,half=upper,hinge=left,open=false,powered=false] + warped_door[facing=east,half=upper,hinge=right,open=false,powered=true]: warped_door[facing=east,half=upper,hinge=right,open=false,powered=false] + warped_door[facing=east,half=lower,hinge=left,open=true,powered=true]: warped_door[facing=east,half=lower,hinge=left,open=true,powered=false] + warped_door[facing=east,half=lower,hinge=right,open=true,powered=true]: warped_door[facing=east,half=lower,hinge=right,open=true,powered=false] + warped_door[facing=east,half=upper,hinge=left,open=true,powered=true]: warped_door[facing=east,half=upper,hinge=left,open=true,powered=false] + warped_door[facing=east,half=upper,hinge=right,open=true,powered=true]: warped_door[facing=east,half=upper,hinge=right,open=true,powered=false] + warped_door[facing=north,half=lower,hinge=left,open=false,powered=true]: warped_door[facing=north,half=lower,hinge=left,open=false,powered=false] + warped_door[facing=north,half=lower,hinge=right,open=false,powered=true]: warped_door[facing=north,half=lower,hinge=right,open=false,powered=false] + warped_door[facing=north,half=upper,hinge=left,open=false,powered=true]: warped_door[facing=north,half=upper,hinge=left,open=false,powered=false] + warped_door[facing=north,half=upper,hinge=right,open=false,powered=true]: warped_door[facing=north,half=upper,hinge=right,open=false,powered=false] + warped_door[facing=north,half=lower,hinge=left,open=true,powered=true]: warped_door[facing=north,half=lower,hinge=left,open=true,powered=false] + warped_door[facing=north,half=lower,hinge=right,open=true,powered=true]: warped_door[facing=north,half=lower,hinge=right,open=true,powered=false] + warped_door[facing=north,half=upper,hinge=left,open=true,powered=true]: warped_door[facing=north,half=upper,hinge=left,open=true,powered=false] + warped_door[facing=north,half=upper,hinge=right,open=true,powered=true]: warped_door[facing=north,half=upper,hinge=right,open=true,powered=false] + warped_door[facing=south,half=lower,hinge=left,open=false,powered=true]: warped_door[facing=south,half=lower,hinge=left,open=false,powered=false] + warped_door[facing=south,half=lower,hinge=right,open=false,powered=true]: warped_door[facing=south,half=lower,hinge=right,open=false,powered=false] + warped_door[facing=south,half=upper,hinge=left,open=false,powered=true]: warped_door[facing=south,half=upper,hinge=left,open=false,powered=false] + warped_door[facing=south,half=upper,hinge=right,open=false,powered=true]: warped_door[facing=south,half=upper,hinge=right,open=false,powered=false] + warped_door[facing=south,half=lower,hinge=left,open=true,powered=true]: warped_door[facing=south,half=lower,hinge=left,open=true,powered=false] + warped_door[facing=south,half=lower,hinge=right,open=true,powered=true]: warped_door[facing=south,half=lower,hinge=right,open=true,powered=false] + warped_door[facing=south,half=upper,hinge=left,open=true,powered=true]: warped_door[facing=south,half=upper,hinge=left,open=true,powered=false] + warped_door[facing=south,half=upper,hinge=right,open=true,powered=true]: warped_door[facing=south,half=upper,hinge=right,open=true,powered=false] + warped_door[facing=west,half=lower,hinge=left,open=false,powered=true]: warped_door[facing=west,half=lower,hinge=left,open=false,powered=false] + warped_door[facing=west,half=lower,hinge=right,open=false,powered=true]: warped_door[facing=west,half=lower,hinge=right,open=false,powered=false] + warped_door[facing=west,half=upper,hinge=left,open=false,powered=true]: warped_door[facing=west,half=upper,hinge=left,open=false,powered=false] + warped_door[facing=west,half=upper,hinge=right,open=false,powered=true]: warped_door[facing=west,half=upper,hinge=right,open=false,powered=false] + warped_door[facing=west,half=lower,hinge=left,open=true,powered=true]: warped_door[facing=west,half=lower,hinge=left,open=true,powered=false] + warped_door[facing=west,half=lower,hinge=right,open=true,powered=true]: warped_door[facing=west,half=lower,hinge=right,open=true,powered=false] + warped_door[facing=west,half=upper,hinge=left,open=true,powered=true]: warped_door[facing=west,half=upper,hinge=left,open=true,powered=false] + warped_door[facing=west,half=upper,hinge=right,open=true,powered=true]: warped_door[facing=west,half=upper,hinge=right,open=true,powered=false] + iron_door[facing=east,half=lower,hinge=left,open=false,powered=true]: iron_door[facing=east,half=lower,hinge=left,open=false,powered=false] + iron_door[facing=east,half=lower,hinge=right,open=false,powered=true]: iron_door[facing=east,half=lower,hinge=right,open=false,powered=false] + iron_door[facing=east,half=upper,hinge=left,open=false,powered=true]: iron_door[facing=east,half=upper,hinge=left,open=false,powered=false] + iron_door[facing=east,half=upper,hinge=right,open=false,powered=true]: iron_door[facing=east,half=upper,hinge=right,open=false,powered=false] + iron_door[facing=east,half=lower,hinge=left,open=true,powered=true]: iron_door[facing=east,half=lower,hinge=left,open=true,powered=false] + iron_door[facing=east,half=lower,hinge=right,open=true,powered=true]: iron_door[facing=east,half=lower,hinge=right,open=true,powered=false] + iron_door[facing=east,half=upper,hinge=left,open=true,powered=true]: iron_door[facing=east,half=upper,hinge=left,open=true,powered=false] + iron_door[facing=east,half=upper,hinge=right,open=true,powered=true]: iron_door[facing=east,half=upper,hinge=right,open=true,powered=false] + iron_door[facing=north,half=lower,hinge=left,open=false,powered=true]: iron_door[facing=north,half=lower,hinge=left,open=false,powered=false] + iron_door[facing=north,half=lower,hinge=right,open=false,powered=true]: iron_door[facing=north,half=lower,hinge=right,open=false,powered=false] + iron_door[facing=north,half=upper,hinge=left,open=false,powered=true]: iron_door[facing=north,half=upper,hinge=left,open=false,powered=false] + iron_door[facing=north,half=upper,hinge=right,open=false,powered=true]: iron_door[facing=north,half=upper,hinge=right,open=false,powered=false] + iron_door[facing=north,half=lower,hinge=left,open=true,powered=true]: iron_door[facing=north,half=lower,hinge=left,open=true,powered=false] + iron_door[facing=north,half=lower,hinge=right,open=true,powered=true]: iron_door[facing=north,half=lower,hinge=right,open=true,powered=false] + iron_door[facing=north,half=upper,hinge=left,open=true,powered=true]: iron_door[facing=north,half=upper,hinge=left,open=true,powered=false] + iron_door[facing=north,half=upper,hinge=right,open=true,powered=true]: iron_door[facing=north,half=upper,hinge=right,open=true,powered=false] + iron_door[facing=south,half=lower,hinge=left,open=false,powered=true]: iron_door[facing=south,half=lower,hinge=left,open=false,powered=false] + iron_door[facing=south,half=lower,hinge=right,open=false,powered=true]: iron_door[facing=south,half=lower,hinge=right,open=false,powered=false] + iron_door[facing=south,half=upper,hinge=left,open=false,powered=true]: iron_door[facing=south,half=upper,hinge=left,open=false,powered=false] + iron_door[facing=south,half=upper,hinge=right,open=false,powered=true]: iron_door[facing=south,half=upper,hinge=right,open=false,powered=false] + iron_door[facing=south,half=lower,hinge=left,open=true,powered=true]: iron_door[facing=south,half=lower,hinge=left,open=true,powered=false] + iron_door[facing=south,half=lower,hinge=right,open=true,powered=true]: iron_door[facing=south,half=lower,hinge=right,open=true,powered=false] + iron_door[facing=south,half=upper,hinge=left,open=true,powered=true]: iron_door[facing=south,half=upper,hinge=left,open=true,powered=false] + iron_door[facing=south,half=upper,hinge=right,open=true,powered=true]: iron_door[facing=south,half=upper,hinge=right,open=true,powered=false] + iron_door[facing=west,half=lower,hinge=left,open=false,powered=true]: iron_door[facing=west,half=lower,hinge=left,open=false,powered=false] + iron_door[facing=west,half=lower,hinge=right,open=false,powered=true]: iron_door[facing=west,half=lower,hinge=right,open=false,powered=false] + iron_door[facing=west,half=upper,hinge=left,open=false,powered=true]: iron_door[facing=west,half=upper,hinge=left,open=false,powered=false] + iron_door[facing=west,half=upper,hinge=right,open=false,powered=true]: iron_door[facing=west,half=upper,hinge=right,open=false,powered=false] + iron_door[facing=west,half=lower,hinge=left,open=true,powered=true]: iron_door[facing=west,half=lower,hinge=left,open=true,powered=false] + iron_door[facing=west,half=lower,hinge=right,open=true,powered=true]: iron_door[facing=west,half=lower,hinge=right,open=true,powered=false] + iron_door[facing=west,half=upper,hinge=left,open=true,powered=true]: iron_door[facing=west,half=upper,hinge=left,open=true,powered=false] + iron_door[facing=west,half=upper,hinge=right,open=true,powered=true]: iron_door[facing=west,half=upper,hinge=right,open=true,powered=false] $$>=1.20.3#door: - minecraft:copper_door[facing=east,half=lower,hinge=left,open=false,powered=true]: minecraft:copper_door[facing=east,half=lower,hinge=left,open=false,powered=false] - minecraft:copper_door[facing=east,half=lower,hinge=right,open=false,powered=true]: minecraft:copper_door[facing=east,half=lower,hinge=right,open=false,powered=false] - minecraft:copper_door[facing=east,half=upper,hinge=left,open=false,powered=true]: minecraft:copper_door[facing=east,half=upper,hinge=left,open=false,powered=false] - minecraft:copper_door[facing=east,half=upper,hinge=right,open=false,powered=true]: minecraft:copper_door[facing=east,half=upper,hinge=right,open=false,powered=false] - minecraft:copper_door[facing=east,half=lower,hinge=left,open=true,powered=true]: minecraft:copper_door[facing=east,half=lower,hinge=left,open=true,powered=false] - minecraft:copper_door[facing=east,half=lower,hinge=right,open=true,powered=true]: minecraft:copper_door[facing=east,half=lower,hinge=right,open=true,powered=false] - minecraft:copper_door[facing=east,half=upper,hinge=left,open=true,powered=true]: minecraft:copper_door[facing=east,half=upper,hinge=left,open=true,powered=false] - minecraft:copper_door[facing=east,half=upper,hinge=right,open=true,powered=true]: minecraft:copper_door[facing=east,half=upper,hinge=right,open=true,powered=false] - minecraft:copper_door[facing=north,half=lower,hinge=left,open=false,powered=true]: minecraft:copper_door[facing=north,half=lower,hinge=left,open=false,powered=false] - minecraft:copper_door[facing=north,half=lower,hinge=right,open=false,powered=true]: minecraft:copper_door[facing=north,half=lower,hinge=right,open=false,powered=false] - minecraft:copper_door[facing=north,half=upper,hinge=left,open=false,powered=true]: minecraft:copper_door[facing=north,half=upper,hinge=left,open=false,powered=false] - minecraft:copper_door[facing=north,half=upper,hinge=right,open=false,powered=true]: minecraft:copper_door[facing=north,half=upper,hinge=right,open=false,powered=false] - minecraft:copper_door[facing=north,half=lower,hinge=left,open=true,powered=true]: minecraft:copper_door[facing=north,half=lower,hinge=left,open=true,powered=false] - minecraft:copper_door[facing=north,half=lower,hinge=right,open=true,powered=true]: minecraft:copper_door[facing=north,half=lower,hinge=right,open=true,powered=false] - minecraft:copper_door[facing=north,half=upper,hinge=left,open=true,powered=true]: minecraft:copper_door[facing=north,half=upper,hinge=left,open=true,powered=false] - minecraft:copper_door[facing=north,half=upper,hinge=right,open=true,powered=true]: minecraft:copper_door[facing=north,half=upper,hinge=right,open=true,powered=false] - minecraft:copper_door[facing=south,half=lower,hinge=left,open=false,powered=true]: minecraft:copper_door[facing=south,half=lower,hinge=left,open=false,powered=false] - minecraft:copper_door[facing=south,half=lower,hinge=right,open=false,powered=true]: minecraft:copper_door[facing=south,half=lower,hinge=right,open=false,powered=false] - minecraft:copper_door[facing=south,half=upper,hinge=left,open=false,powered=true]: minecraft:copper_door[facing=south,half=upper,hinge=left,open=false,powered=false] - minecraft:copper_door[facing=south,half=upper,hinge=right,open=false,powered=true]: minecraft:copper_door[facing=south,half=upper,hinge=right,open=false,powered=false] - minecraft:copper_door[facing=south,half=lower,hinge=left,open=true,powered=true]: minecraft:copper_door[facing=south,half=lower,hinge=left,open=true,powered=false] - minecraft:copper_door[facing=south,half=lower,hinge=right,open=true,powered=true]: minecraft:copper_door[facing=south,half=lower,hinge=right,open=true,powered=false] - minecraft:copper_door[facing=south,half=upper,hinge=left,open=true,powered=true]: minecraft:copper_door[facing=south,half=upper,hinge=left,open=true,powered=false] - minecraft:copper_door[facing=south,half=upper,hinge=right,open=true,powered=true]: minecraft:copper_door[facing=south,half=upper,hinge=right,open=true,powered=false] - minecraft:copper_door[facing=west,half=lower,hinge=left,open=false,powered=true]: minecraft:copper_door[facing=west,half=lower,hinge=left,open=false,powered=false] - minecraft:copper_door[facing=west,half=lower,hinge=right,open=false,powered=true]: minecraft:copper_door[facing=west,half=lower,hinge=right,open=false,powered=false] - minecraft:copper_door[facing=west,half=upper,hinge=left,open=false,powered=true]: minecraft:copper_door[facing=west,half=upper,hinge=left,open=false,powered=false] - minecraft:copper_door[facing=west,half=upper,hinge=right,open=false,powered=true]: minecraft:copper_door[facing=west,half=upper,hinge=right,open=false,powered=false] - minecraft:copper_door[facing=west,half=lower,hinge=left,open=true,powered=true]: minecraft:copper_door[facing=west,half=lower,hinge=left,open=true,powered=false] - minecraft:copper_door[facing=west,half=lower,hinge=right,open=true,powered=true]: minecraft:copper_door[facing=west,half=lower,hinge=right,open=true,powered=false] - minecraft:copper_door[facing=west,half=upper,hinge=left,open=true,powered=true]: minecraft:copper_door[facing=west,half=upper,hinge=left,open=true,powered=false] - minecraft:copper_door[facing=west,half=upper,hinge=right,open=true,powered=true]: minecraft:copper_door[facing=west,half=upper,hinge=right,open=true,powered=false] - minecraft:exposed_copper_door[facing=east,half=lower,hinge=left,open=false,powered=true]: minecraft:exposed_copper_door[facing=east,half=lower,hinge=left,open=false,powered=false] - minecraft:exposed_copper_door[facing=east,half=lower,hinge=right,open=false,powered=true]: minecraft:exposed_copper_door[facing=east,half=lower,hinge=right,open=false,powered=false] - minecraft:exposed_copper_door[facing=east,half=upper,hinge=left,open=false,powered=true]: minecraft:exposed_copper_door[facing=east,half=upper,hinge=left,open=false,powered=false] - minecraft:exposed_copper_door[facing=east,half=upper,hinge=right,open=false,powered=true]: minecraft:exposed_copper_door[facing=east,half=upper,hinge=right,open=false,powered=false] - minecraft:exposed_copper_door[facing=east,half=lower,hinge=left,open=true,powered=true]: minecraft:exposed_copper_door[facing=east,half=lower,hinge=left,open=true,powered=false] - minecraft:exposed_copper_door[facing=east,half=lower,hinge=right,open=true,powered=true]: minecraft:exposed_copper_door[facing=east,half=lower,hinge=right,open=true,powered=false] - minecraft:exposed_copper_door[facing=east,half=upper,hinge=left,open=true,powered=true]: minecraft:exposed_copper_door[facing=east,half=upper,hinge=left,open=true,powered=false] - minecraft:exposed_copper_door[facing=east,half=upper,hinge=right,open=true,powered=true]: minecraft:exposed_copper_door[facing=east,half=upper,hinge=right,open=true,powered=false] - minecraft:exposed_copper_door[facing=north,half=lower,hinge=left,open=false,powered=true]: minecraft:exposed_copper_door[facing=north,half=lower,hinge=left,open=false,powered=false] - minecraft:exposed_copper_door[facing=north,half=lower,hinge=right,open=false,powered=true]: minecraft:exposed_copper_door[facing=north,half=lower,hinge=right,open=false,powered=false] - minecraft:exposed_copper_door[facing=north,half=upper,hinge=left,open=false,powered=true]: minecraft:exposed_copper_door[facing=north,half=upper,hinge=left,open=false,powered=false] - minecraft:exposed_copper_door[facing=north,half=upper,hinge=right,open=false,powered=true]: minecraft:exposed_copper_door[facing=north,half=upper,hinge=right,open=false,powered=false] - minecraft:exposed_copper_door[facing=north,half=lower,hinge=left,open=true,powered=true]: minecraft:exposed_copper_door[facing=north,half=lower,hinge=left,open=true,powered=false] - minecraft:exposed_copper_door[facing=north,half=lower,hinge=right,open=true,powered=true]: minecraft:exposed_copper_door[facing=north,half=lower,hinge=right,open=true,powered=false] - minecraft:exposed_copper_door[facing=north,half=upper,hinge=left,open=true,powered=true]: minecraft:exposed_copper_door[facing=north,half=upper,hinge=left,open=true,powered=false] - minecraft:exposed_copper_door[facing=north,half=upper,hinge=right,open=true,powered=true]: minecraft:exposed_copper_door[facing=north,half=upper,hinge=right,open=true,powered=false] - minecraft:exposed_copper_door[facing=south,half=lower,hinge=left,open=false,powered=true]: minecraft:exposed_copper_door[facing=south,half=lower,hinge=left,open=false,powered=false] - minecraft:exposed_copper_door[facing=south,half=lower,hinge=right,open=false,powered=true]: minecraft:exposed_copper_door[facing=south,half=lower,hinge=right,open=false,powered=false] - minecraft:exposed_copper_door[facing=south,half=upper,hinge=left,open=false,powered=true]: minecraft:exposed_copper_door[facing=south,half=upper,hinge=left,open=false,powered=false] - minecraft:exposed_copper_door[facing=south,half=upper,hinge=right,open=false,powered=true]: minecraft:exposed_copper_door[facing=south,half=upper,hinge=right,open=false,powered=false] - minecraft:exposed_copper_door[facing=south,half=lower,hinge=left,open=true,powered=true]: minecraft:exposed_copper_door[facing=south,half=lower,hinge=left,open=true,powered=false] - minecraft:exposed_copper_door[facing=south,half=lower,hinge=right,open=true,powered=true]: minecraft:exposed_copper_door[facing=south,half=lower,hinge=right,open=true,powered=false] - minecraft:exposed_copper_door[facing=south,half=upper,hinge=left,open=true,powered=true]: minecraft:exposed_copper_door[facing=south,half=upper,hinge=left,open=true,powered=false] - minecraft:exposed_copper_door[facing=south,half=upper,hinge=right,open=true,powered=true]: minecraft:exposed_copper_door[facing=south,half=upper,hinge=right,open=true,powered=false] - minecraft:exposed_copper_door[facing=west,half=lower,hinge=left,open=false,powered=true]: minecraft:exposed_copper_door[facing=west,half=lower,hinge=left,open=false,powered=false] - minecraft:exposed_copper_door[facing=west,half=lower,hinge=right,open=false,powered=true]: minecraft:exposed_copper_door[facing=west,half=lower,hinge=right,open=false,powered=false] - minecraft:exposed_copper_door[facing=west,half=upper,hinge=left,open=false,powered=true]: minecraft:exposed_copper_door[facing=west,half=upper,hinge=left,open=false,powered=false] - minecraft:exposed_copper_door[facing=west,half=upper,hinge=right,open=false,powered=true]: minecraft:exposed_copper_door[facing=west,half=upper,hinge=right,open=false,powered=false] - minecraft:exposed_copper_door[facing=west,half=lower,hinge=left,open=true,powered=true]: minecraft:exposed_copper_door[facing=west,half=lower,hinge=left,open=true,powered=false] - minecraft:exposed_copper_door[facing=west,half=lower,hinge=right,open=true,powered=true]: minecraft:exposed_copper_door[facing=west,half=lower,hinge=right,open=true,powered=false] - minecraft:exposed_copper_door[facing=west,half=upper,hinge=left,open=true,powered=true]: minecraft:exposed_copper_door[facing=west,half=upper,hinge=left,open=true,powered=false] - minecraft:exposed_copper_door[facing=west,half=upper,hinge=right,open=true,powered=true]: minecraft:exposed_copper_door[facing=west,half=upper,hinge=right,open=true,powered=false] - minecraft:weathered_copper_door[facing=east,half=lower,hinge=left,open=false,powered=true]: minecraft:weathered_copper_door[facing=east,half=lower,hinge=left,open=false,powered=false] - minecraft:weathered_copper_door[facing=east,half=lower,hinge=right,open=false,powered=true]: minecraft:weathered_copper_door[facing=east,half=lower,hinge=right,open=false,powered=false] - minecraft:weathered_copper_door[facing=east,half=upper,hinge=left,open=false,powered=true]: minecraft:weathered_copper_door[facing=east,half=upper,hinge=left,open=false,powered=false] - minecraft:weathered_copper_door[facing=east,half=upper,hinge=right,open=false,powered=true]: minecraft:weathered_copper_door[facing=east,half=upper,hinge=right,open=false,powered=false] - minecraft:weathered_copper_door[facing=east,half=lower,hinge=left,open=true,powered=true]: minecraft:weathered_copper_door[facing=east,half=lower,hinge=left,open=true,powered=false] - minecraft:weathered_copper_door[facing=east,half=lower,hinge=right,open=true,powered=true]: minecraft:weathered_copper_door[facing=east,half=lower,hinge=right,open=true,powered=false] - minecraft:weathered_copper_door[facing=east,half=upper,hinge=left,open=true,powered=true]: minecraft:weathered_copper_door[facing=east,half=upper,hinge=left,open=true,powered=false] - minecraft:weathered_copper_door[facing=east,half=upper,hinge=right,open=true,powered=true]: minecraft:weathered_copper_door[facing=east,half=upper,hinge=right,open=true,powered=false] - minecraft:weathered_copper_door[facing=north,half=lower,hinge=left,open=false,powered=true]: minecraft:weathered_copper_door[facing=north,half=lower,hinge=left,open=false,powered=false] - minecraft:weathered_copper_door[facing=north,half=lower,hinge=right,open=false,powered=true]: minecraft:weathered_copper_door[facing=north,half=lower,hinge=right,open=false,powered=false] - minecraft:weathered_copper_door[facing=north,half=upper,hinge=left,open=false,powered=true]: minecraft:weathered_copper_door[facing=north,half=upper,hinge=left,open=false,powered=false] - minecraft:weathered_copper_door[facing=north,half=upper,hinge=right,open=false,powered=true]: minecraft:weathered_copper_door[facing=north,half=upper,hinge=right,open=false,powered=false] - minecraft:weathered_copper_door[facing=north,half=lower,hinge=left,open=true,powered=true]: minecraft:weathered_copper_door[facing=north,half=lower,hinge=left,open=true,powered=false] - minecraft:weathered_copper_door[facing=north,half=lower,hinge=right,open=true,powered=true]: minecraft:weathered_copper_door[facing=north,half=lower,hinge=right,open=true,powered=false] - minecraft:weathered_copper_door[facing=north,half=upper,hinge=left,open=true,powered=true]: minecraft:weathered_copper_door[facing=north,half=upper,hinge=left,open=true,powered=false] - minecraft:weathered_copper_door[facing=north,half=upper,hinge=right,open=true,powered=true]: minecraft:weathered_copper_door[facing=north,half=upper,hinge=right,open=true,powered=false] - minecraft:weathered_copper_door[facing=south,half=lower,hinge=left,open=false,powered=true]: minecraft:weathered_copper_door[facing=south,half=lower,hinge=left,open=false,powered=false] - minecraft:weathered_copper_door[facing=south,half=lower,hinge=right,open=false,powered=true]: minecraft:weathered_copper_door[facing=south,half=lower,hinge=right,open=false,powered=false] - minecraft:weathered_copper_door[facing=south,half=upper,hinge=left,open=false,powered=true]: minecraft:weathered_copper_door[facing=south,half=upper,hinge=left,open=false,powered=false] - minecraft:weathered_copper_door[facing=south,half=upper,hinge=right,open=false,powered=true]: minecraft:weathered_copper_door[facing=south,half=upper,hinge=right,open=false,powered=false] - minecraft:weathered_copper_door[facing=south,half=lower,hinge=left,open=true,powered=true]: minecraft:weathered_copper_door[facing=south,half=lower,hinge=left,open=true,powered=false] - minecraft:weathered_copper_door[facing=south,half=lower,hinge=right,open=true,powered=true]: minecraft:weathered_copper_door[facing=south,half=lower,hinge=right,open=true,powered=false] - minecraft:weathered_copper_door[facing=south,half=upper,hinge=left,open=true,powered=true]: minecraft:weathered_copper_door[facing=south,half=upper,hinge=left,open=true,powered=false] - minecraft:weathered_copper_door[facing=south,half=upper,hinge=right,open=true,powered=true]: minecraft:weathered_copper_door[facing=south,half=upper,hinge=right,open=true,powered=false] - minecraft:weathered_copper_door[facing=west,half=lower,hinge=left,open=false,powered=true]: minecraft:weathered_copper_door[facing=west,half=lower,hinge=left,open=false,powered=false] - minecraft:weathered_copper_door[facing=west,half=lower,hinge=right,open=false,powered=true]: minecraft:weathered_copper_door[facing=west,half=lower,hinge=right,open=false,powered=false] - minecraft:weathered_copper_door[facing=west,half=upper,hinge=left,open=false,powered=true]: minecraft:weathered_copper_door[facing=west,half=upper,hinge=left,open=false,powered=false] - minecraft:weathered_copper_door[facing=west,half=upper,hinge=right,open=false,powered=true]: minecraft:weathered_copper_door[facing=west,half=upper,hinge=right,open=false,powered=false] - minecraft:weathered_copper_door[facing=west,half=lower,hinge=left,open=true,powered=true]: minecraft:weathered_copper_door[facing=west,half=lower,hinge=left,open=true,powered=false] - minecraft:weathered_copper_door[facing=west,half=lower,hinge=right,open=true,powered=true]: minecraft:weathered_copper_door[facing=west,half=lower,hinge=right,open=true,powered=false] - minecraft:weathered_copper_door[facing=west,half=upper,hinge=left,open=true,powered=true]: minecraft:weathered_copper_door[facing=west,half=upper,hinge=left,open=true,powered=false] - minecraft:weathered_copper_door[facing=west,half=upper,hinge=right,open=true,powered=true]: minecraft:weathered_copper_door[facing=west,half=upper,hinge=right,open=true,powered=false] - minecraft:oxidized_copper_door[facing=east,half=lower,hinge=left,open=false,powered=true]: minecraft:oxidized_copper_door[facing=east,half=lower,hinge=left,open=false,powered=false] - minecraft:oxidized_copper_door[facing=east,half=lower,hinge=right,open=false,powered=true]: minecraft:oxidized_copper_door[facing=east,half=lower,hinge=right,open=false,powered=false] - minecraft:oxidized_copper_door[facing=east,half=upper,hinge=left,open=false,powered=true]: minecraft:oxidized_copper_door[facing=east,half=upper,hinge=left,open=false,powered=false] - minecraft:oxidized_copper_door[facing=east,half=upper,hinge=right,open=false,powered=true]: minecraft:oxidized_copper_door[facing=east,half=upper,hinge=right,open=false,powered=false] - minecraft:oxidized_copper_door[facing=east,half=lower,hinge=left,open=true,powered=true]: minecraft:oxidized_copper_door[facing=east,half=lower,hinge=left,open=true,powered=false] - minecraft:oxidized_copper_door[facing=east,half=lower,hinge=right,open=true,powered=true]: minecraft:oxidized_copper_door[facing=east,half=lower,hinge=right,open=true,powered=false] - minecraft:oxidized_copper_door[facing=east,half=upper,hinge=left,open=true,powered=true]: minecraft:oxidized_copper_door[facing=east,half=upper,hinge=left,open=true,powered=false] - minecraft:oxidized_copper_door[facing=east,half=upper,hinge=right,open=true,powered=true]: minecraft:oxidized_copper_door[facing=east,half=upper,hinge=right,open=true,powered=false] - minecraft:oxidized_copper_door[facing=north,half=lower,hinge=left,open=false,powered=true]: minecraft:oxidized_copper_door[facing=north,half=lower,hinge=left,open=false,powered=false] - minecraft:oxidized_copper_door[facing=north,half=lower,hinge=right,open=false,powered=true]: minecraft:oxidized_copper_door[facing=north,half=lower,hinge=right,open=false,powered=false] - minecraft:oxidized_copper_door[facing=north,half=upper,hinge=left,open=false,powered=true]: minecraft:oxidized_copper_door[facing=north,half=upper,hinge=left,open=false,powered=false] - minecraft:oxidized_copper_door[facing=north,half=upper,hinge=right,open=false,powered=true]: minecraft:oxidized_copper_door[facing=north,half=upper,hinge=right,open=false,powered=false] - minecraft:oxidized_copper_door[facing=north,half=lower,hinge=left,open=true,powered=true]: minecraft:oxidized_copper_door[facing=north,half=lower,hinge=left,open=true,powered=false] - minecraft:oxidized_copper_door[facing=north,half=lower,hinge=right,open=true,powered=true]: minecraft:oxidized_copper_door[facing=north,half=lower,hinge=right,open=true,powered=false] - minecraft:oxidized_copper_door[facing=north,half=upper,hinge=left,open=true,powered=true]: minecraft:oxidized_copper_door[facing=north,half=upper,hinge=left,open=true,powered=false] - minecraft:oxidized_copper_door[facing=north,half=upper,hinge=right,open=true,powered=true]: minecraft:oxidized_copper_door[facing=north,half=upper,hinge=right,open=true,powered=false] - minecraft:oxidized_copper_door[facing=south,half=lower,hinge=left,open=false,powered=true]: minecraft:oxidized_copper_door[facing=south,half=lower,hinge=left,open=false,powered=false] - minecraft:oxidized_copper_door[facing=south,half=lower,hinge=right,open=false,powered=true]: minecraft:oxidized_copper_door[facing=south,half=lower,hinge=right,open=false,powered=false] - minecraft:oxidized_copper_door[facing=south,half=upper,hinge=left,open=false,powered=true]: minecraft:oxidized_copper_door[facing=south,half=upper,hinge=left,open=false,powered=false] - minecraft:oxidized_copper_door[facing=south,half=upper,hinge=right,open=false,powered=true]: minecraft:oxidized_copper_door[facing=south,half=upper,hinge=right,open=false,powered=false] - minecraft:oxidized_copper_door[facing=south,half=lower,hinge=left,open=true,powered=true]: minecraft:oxidized_copper_door[facing=south,half=lower,hinge=left,open=true,powered=false] - minecraft:oxidized_copper_door[facing=south,half=lower,hinge=right,open=true,powered=true]: minecraft:oxidized_copper_door[facing=south,half=lower,hinge=right,open=true,powered=false] - minecraft:oxidized_copper_door[facing=south,half=upper,hinge=left,open=true,powered=true]: minecraft:oxidized_copper_door[facing=south,half=upper,hinge=left,open=true,powered=false] - minecraft:oxidized_copper_door[facing=south,half=upper,hinge=right,open=true,powered=true]: minecraft:oxidized_copper_door[facing=south,half=upper,hinge=right,open=true,powered=false] - minecraft:oxidized_copper_door[facing=west,half=lower,hinge=left,open=false,powered=true]: minecraft:oxidized_copper_door[facing=west,half=lower,hinge=left,open=false,powered=false] - minecraft:oxidized_copper_door[facing=west,half=lower,hinge=right,open=false,powered=true]: minecraft:oxidized_copper_door[facing=west,half=lower,hinge=right,open=false,powered=false] - minecraft:oxidized_copper_door[facing=west,half=upper,hinge=left,open=false,powered=true]: minecraft:oxidized_copper_door[facing=west,half=upper,hinge=left,open=false,powered=false] - minecraft:oxidized_copper_door[facing=west,half=upper,hinge=right,open=false,powered=true]: minecraft:oxidized_copper_door[facing=west,half=upper,hinge=right,open=false,powered=false] - minecraft:oxidized_copper_door[facing=west,half=lower,hinge=left,open=true,powered=true]: minecraft:oxidized_copper_door[facing=west,half=lower,hinge=left,open=true,powered=false] - minecraft:oxidized_copper_door[facing=west,half=lower,hinge=right,open=true,powered=true]: minecraft:oxidized_copper_door[facing=west,half=lower,hinge=right,open=true,powered=false] - minecraft:oxidized_copper_door[facing=west,half=upper,hinge=left,open=true,powered=true]: minecraft:oxidized_copper_door[facing=west,half=upper,hinge=left,open=true,powered=false] - minecraft:oxidized_copper_door[facing=west,half=upper,hinge=right,open=true,powered=true]: minecraft:oxidized_copper_door[facing=west,half=upper,hinge=right,open=true,powered=false] - minecraft:waxed_copper_door[facing=east,half=lower,hinge=left,open=false,powered=true]: minecraft:waxed_copper_door[facing=east,half=lower,hinge=left,open=false,powered=false] - minecraft:waxed_copper_door[facing=east,half=lower,hinge=right,open=false,powered=true]: minecraft:waxed_copper_door[facing=east,half=lower,hinge=right,open=false,powered=false] - minecraft:waxed_copper_door[facing=east,half=upper,hinge=left,open=false,powered=true]: minecraft:waxed_copper_door[facing=east,half=upper,hinge=left,open=false,powered=false] - minecraft:waxed_copper_door[facing=east,half=upper,hinge=right,open=false,powered=true]: minecraft:waxed_copper_door[facing=east,half=upper,hinge=right,open=false,powered=false] - minecraft:waxed_copper_door[facing=east,half=lower,hinge=left,open=true,powered=true]: minecraft:waxed_copper_door[facing=east,half=lower,hinge=left,open=true,powered=false] - minecraft:waxed_copper_door[facing=east,half=lower,hinge=right,open=true,powered=true]: minecraft:waxed_copper_door[facing=east,half=lower,hinge=right,open=true,powered=false] - minecraft:waxed_copper_door[facing=east,half=upper,hinge=left,open=true,powered=true]: minecraft:waxed_copper_door[facing=east,half=upper,hinge=left,open=true,powered=false] - minecraft:waxed_copper_door[facing=east,half=upper,hinge=right,open=true,powered=true]: minecraft:waxed_copper_door[facing=east,half=upper,hinge=right,open=true,powered=false] - minecraft:waxed_copper_door[facing=north,half=lower,hinge=left,open=false,powered=true]: minecraft:waxed_copper_door[facing=north,half=lower,hinge=left,open=false,powered=false] - minecraft:waxed_copper_door[facing=north,half=lower,hinge=right,open=false,powered=true]: minecraft:waxed_copper_door[facing=north,half=lower,hinge=right,open=false,powered=false] - minecraft:waxed_copper_door[facing=north,half=upper,hinge=left,open=false,powered=true]: minecraft:waxed_copper_door[facing=north,half=upper,hinge=left,open=false,powered=false] - minecraft:waxed_copper_door[facing=north,half=upper,hinge=right,open=false,powered=true]: minecraft:waxed_copper_door[facing=north,half=upper,hinge=right,open=false,powered=false] - minecraft:waxed_copper_door[facing=north,half=lower,hinge=left,open=true,powered=true]: minecraft:waxed_copper_door[facing=north,half=lower,hinge=left,open=true,powered=false] - minecraft:waxed_copper_door[facing=north,half=lower,hinge=right,open=true,powered=true]: minecraft:waxed_copper_door[facing=north,half=lower,hinge=right,open=true,powered=false] - minecraft:waxed_copper_door[facing=north,half=upper,hinge=left,open=true,powered=true]: minecraft:waxed_copper_door[facing=north,half=upper,hinge=left,open=true,powered=false] - minecraft:waxed_copper_door[facing=north,half=upper,hinge=right,open=true,powered=true]: minecraft:waxed_copper_door[facing=north,half=upper,hinge=right,open=true,powered=false] - minecraft:waxed_copper_door[facing=south,half=lower,hinge=left,open=false,powered=true]: minecraft:waxed_copper_door[facing=south,half=lower,hinge=left,open=false,powered=false] - minecraft:waxed_copper_door[facing=south,half=lower,hinge=right,open=false,powered=true]: minecraft:waxed_copper_door[facing=south,half=lower,hinge=right,open=false,powered=false] - minecraft:waxed_copper_door[facing=south,half=upper,hinge=left,open=false,powered=true]: minecraft:waxed_copper_door[facing=south,half=upper,hinge=left,open=false,powered=false] - minecraft:waxed_copper_door[facing=south,half=upper,hinge=right,open=false,powered=true]: minecraft:waxed_copper_door[facing=south,half=upper,hinge=right,open=false,powered=false] - minecraft:waxed_copper_door[facing=south,half=lower,hinge=left,open=true,powered=true]: minecraft:waxed_copper_door[facing=south,half=lower,hinge=left,open=true,powered=false] - minecraft:waxed_copper_door[facing=south,half=lower,hinge=right,open=true,powered=true]: minecraft:waxed_copper_door[facing=south,half=lower,hinge=right,open=true,powered=false] - minecraft:waxed_copper_door[facing=south,half=upper,hinge=left,open=true,powered=true]: minecraft:waxed_copper_door[facing=south,half=upper,hinge=left,open=true,powered=false] - minecraft:waxed_copper_door[facing=south,half=upper,hinge=right,open=true,powered=true]: minecraft:waxed_copper_door[facing=south,half=upper,hinge=right,open=true,powered=false] - minecraft:waxed_copper_door[facing=west,half=lower,hinge=left,open=false,powered=true]: minecraft:waxed_copper_door[facing=west,half=lower,hinge=left,open=false,powered=false] - minecraft:waxed_copper_door[facing=west,half=lower,hinge=right,open=false,powered=true]: minecraft:waxed_copper_door[facing=west,half=lower,hinge=right,open=false,powered=false] - minecraft:waxed_copper_door[facing=west,half=upper,hinge=left,open=false,powered=true]: minecraft:waxed_copper_door[facing=west,half=upper,hinge=left,open=false,powered=false] - minecraft:waxed_copper_door[facing=west,half=upper,hinge=right,open=false,powered=true]: minecraft:waxed_copper_door[facing=west,half=upper,hinge=right,open=false,powered=false] - minecraft:waxed_copper_door[facing=west,half=lower,hinge=left,open=true,powered=true]: minecraft:waxed_copper_door[facing=west,half=lower,hinge=left,open=true,powered=false] - minecraft:waxed_copper_door[facing=west,half=lower,hinge=right,open=true,powered=true]: minecraft:waxed_copper_door[facing=west,half=lower,hinge=right,open=true,powered=false] - minecraft:waxed_copper_door[facing=west,half=upper,hinge=left,open=true,powered=true]: minecraft:waxed_copper_door[facing=west,half=upper,hinge=left,open=true,powered=false] - minecraft:waxed_copper_door[facing=west,half=upper,hinge=right,open=true,powered=true]: minecraft:waxed_copper_door[facing=west,half=upper,hinge=right,open=true,powered=false] - minecraft:waxed_exposed_copper_door[facing=east,half=lower,hinge=left,open=false,powered=true]: minecraft:waxed_exposed_copper_door[facing=east,half=lower,hinge=left,open=false,powered=false] - minecraft:waxed_exposed_copper_door[facing=east,half=lower,hinge=right,open=false,powered=true]: minecraft:waxed_exposed_copper_door[facing=east,half=lower,hinge=right,open=false,powered=false] - minecraft:waxed_exposed_copper_door[facing=east,half=upper,hinge=left,open=false,powered=true]: minecraft:waxed_exposed_copper_door[facing=east,half=upper,hinge=left,open=false,powered=false] - minecraft:waxed_exposed_copper_door[facing=east,half=upper,hinge=right,open=false,powered=true]: minecraft:waxed_exposed_copper_door[facing=east,half=upper,hinge=right,open=false,powered=false] - minecraft:waxed_exposed_copper_door[facing=east,half=lower,hinge=left,open=true,powered=true]: minecraft:waxed_exposed_copper_door[facing=east,half=lower,hinge=left,open=true,powered=false] - minecraft:waxed_exposed_copper_door[facing=east,half=lower,hinge=right,open=true,powered=true]: minecraft:waxed_exposed_copper_door[facing=east,half=lower,hinge=right,open=true,powered=false] - minecraft:waxed_exposed_copper_door[facing=east,half=upper,hinge=left,open=true,powered=true]: minecraft:waxed_exposed_copper_door[facing=east,half=upper,hinge=left,open=true,powered=false] - minecraft:waxed_exposed_copper_door[facing=east,half=upper,hinge=right,open=true,powered=true]: minecraft:waxed_exposed_copper_door[facing=east,half=upper,hinge=right,open=true,powered=false] - minecraft:waxed_exposed_copper_door[facing=north,half=lower,hinge=left,open=false,powered=true]: minecraft:waxed_exposed_copper_door[facing=north,half=lower,hinge=left,open=false,powered=false] - minecraft:waxed_exposed_copper_door[facing=north,half=lower,hinge=right,open=false,powered=true]: minecraft:waxed_exposed_copper_door[facing=north,half=lower,hinge=right,open=false,powered=false] - minecraft:waxed_exposed_copper_door[facing=north,half=upper,hinge=left,open=false,powered=true]: minecraft:waxed_exposed_copper_door[facing=north,half=upper,hinge=left,open=false,powered=false] - minecraft:waxed_exposed_copper_door[facing=north,half=upper,hinge=right,open=false,powered=true]: minecraft:waxed_exposed_copper_door[facing=north,half=upper,hinge=right,open=false,powered=false] - minecraft:waxed_exposed_copper_door[facing=north,half=lower,hinge=left,open=true,powered=true]: minecraft:waxed_exposed_copper_door[facing=north,half=lower,hinge=left,open=true,powered=false] - minecraft:waxed_exposed_copper_door[facing=north,half=lower,hinge=right,open=true,powered=true]: minecraft:waxed_exposed_copper_door[facing=north,half=lower,hinge=right,open=true,powered=false] - minecraft:waxed_exposed_copper_door[facing=north,half=upper,hinge=left,open=true,powered=true]: minecraft:waxed_exposed_copper_door[facing=north,half=upper,hinge=left,open=true,powered=false] - minecraft:waxed_exposed_copper_door[facing=north,half=upper,hinge=right,open=true,powered=true]: minecraft:waxed_exposed_copper_door[facing=north,half=upper,hinge=right,open=true,powered=false] - minecraft:waxed_exposed_copper_door[facing=south,half=lower,hinge=left,open=false,powered=true]: minecraft:waxed_exposed_copper_door[facing=south,half=lower,hinge=left,open=false,powered=false] - minecraft:waxed_exposed_copper_door[facing=south,half=lower,hinge=right,open=false,powered=true]: minecraft:waxed_exposed_copper_door[facing=south,half=lower,hinge=right,open=false,powered=false] - minecraft:waxed_exposed_copper_door[facing=south,half=upper,hinge=left,open=false,powered=true]: minecraft:waxed_exposed_copper_door[facing=south,half=upper,hinge=left,open=false,powered=false] - minecraft:waxed_exposed_copper_door[facing=south,half=upper,hinge=right,open=false,powered=true]: minecraft:waxed_exposed_copper_door[facing=south,half=upper,hinge=right,open=false,powered=false] - minecraft:waxed_exposed_copper_door[facing=south,half=lower,hinge=left,open=true,powered=true]: minecraft:waxed_exposed_copper_door[facing=south,half=lower,hinge=left,open=true,powered=false] - minecraft:waxed_exposed_copper_door[facing=south,half=lower,hinge=right,open=true,powered=true]: minecraft:waxed_exposed_copper_door[facing=south,half=lower,hinge=right,open=true,powered=false] - minecraft:waxed_exposed_copper_door[facing=south,half=upper,hinge=left,open=true,powered=true]: minecraft:waxed_exposed_copper_door[facing=south,half=upper,hinge=left,open=true,powered=false] - minecraft:waxed_exposed_copper_door[facing=south,half=upper,hinge=right,open=true,powered=true]: minecraft:waxed_exposed_copper_door[facing=south,half=upper,hinge=right,open=true,powered=false] - minecraft:waxed_exposed_copper_door[facing=west,half=lower,hinge=left,open=false,powered=true]: minecraft:waxed_exposed_copper_door[facing=west,half=lower,hinge=left,open=false,powered=false] - minecraft:waxed_exposed_copper_door[facing=west,half=lower,hinge=right,open=false,powered=true]: minecraft:waxed_exposed_copper_door[facing=west,half=lower,hinge=right,open=false,powered=false] - minecraft:waxed_exposed_copper_door[facing=west,half=upper,hinge=left,open=false,powered=true]: minecraft:waxed_exposed_copper_door[facing=west,half=upper,hinge=left,open=false,powered=false] - minecraft:waxed_exposed_copper_door[facing=west,half=upper,hinge=right,open=false,powered=true]: minecraft:waxed_exposed_copper_door[facing=west,half=upper,hinge=right,open=false,powered=false] - minecraft:waxed_exposed_copper_door[facing=west,half=lower,hinge=left,open=true,powered=true]: minecraft:waxed_exposed_copper_door[facing=west,half=lower,hinge=left,open=true,powered=false] - minecraft:waxed_exposed_copper_door[facing=west,half=lower,hinge=right,open=true,powered=true]: minecraft:waxed_exposed_copper_door[facing=west,half=lower,hinge=right,open=true,powered=false] - minecraft:waxed_exposed_copper_door[facing=west,half=upper,hinge=left,open=true,powered=true]: minecraft:waxed_exposed_copper_door[facing=west,half=upper,hinge=left,open=true,powered=false] - minecraft:waxed_exposed_copper_door[facing=west,half=upper,hinge=right,open=true,powered=true]: minecraft:waxed_exposed_copper_door[facing=west,half=upper,hinge=right,open=true,powered=false] - minecraft:waxed_weathered_copper_door[facing=east,half=lower,hinge=left,open=false,powered=true]: minecraft:waxed_weathered_copper_door[facing=east,half=lower,hinge=left,open=false,powered=false] - minecraft:waxed_weathered_copper_door[facing=east,half=lower,hinge=right,open=false,powered=true]: minecraft:waxed_weathered_copper_door[facing=east,half=lower,hinge=right,open=false,powered=false] - minecraft:waxed_weathered_copper_door[facing=east,half=upper,hinge=left,open=false,powered=true]: minecraft:waxed_weathered_copper_door[facing=east,half=upper,hinge=left,open=false,powered=false] - minecraft:waxed_weathered_copper_door[facing=east,half=upper,hinge=right,open=false,powered=true]: minecraft:waxed_weathered_copper_door[facing=east,half=upper,hinge=right,open=false,powered=false] - minecraft:waxed_weathered_copper_door[facing=east,half=lower,hinge=left,open=true,powered=true]: minecraft:waxed_weathered_copper_door[facing=east,half=lower,hinge=left,open=true,powered=false] - minecraft:waxed_weathered_copper_door[facing=east,half=lower,hinge=right,open=true,powered=true]: minecraft:waxed_weathered_copper_door[facing=east,half=lower,hinge=right,open=true,powered=false] - minecraft:waxed_weathered_copper_door[facing=east,half=upper,hinge=left,open=true,powered=true]: minecraft:waxed_weathered_copper_door[facing=east,half=upper,hinge=left,open=true,powered=false] - minecraft:waxed_weathered_copper_door[facing=east,half=upper,hinge=right,open=true,powered=true]: minecraft:waxed_weathered_copper_door[facing=east,half=upper,hinge=right,open=true,powered=false] - minecraft:waxed_weathered_copper_door[facing=north,half=lower,hinge=left,open=false,powered=true]: minecraft:waxed_weathered_copper_door[facing=north,half=lower,hinge=left,open=false,powered=false] - minecraft:waxed_weathered_copper_door[facing=north,half=lower,hinge=right,open=false,powered=true]: minecraft:waxed_weathered_copper_door[facing=north,half=lower,hinge=right,open=false,powered=false] - minecraft:waxed_weathered_copper_door[facing=north,half=upper,hinge=left,open=false,powered=true]: minecraft:waxed_weathered_copper_door[facing=north,half=upper,hinge=left,open=false,powered=false] - minecraft:waxed_weathered_copper_door[facing=north,half=upper,hinge=right,open=false,powered=true]: minecraft:waxed_weathered_copper_door[facing=north,half=upper,hinge=right,open=false,powered=false] - minecraft:waxed_weathered_copper_door[facing=north,half=lower,hinge=left,open=true,powered=true]: minecraft:waxed_weathered_copper_door[facing=north,half=lower,hinge=left,open=true,powered=false] - minecraft:waxed_weathered_copper_door[facing=north,half=lower,hinge=right,open=true,powered=true]: minecraft:waxed_weathered_copper_door[facing=north,half=lower,hinge=right,open=true,powered=false] - minecraft:waxed_weathered_copper_door[facing=north,half=upper,hinge=left,open=true,powered=true]: minecraft:waxed_weathered_copper_door[facing=north,half=upper,hinge=left,open=true,powered=false] - minecraft:waxed_weathered_copper_door[facing=north,half=upper,hinge=right,open=true,powered=true]: minecraft:waxed_weathered_copper_door[facing=north,half=upper,hinge=right,open=true,powered=false] - minecraft:waxed_weathered_copper_door[facing=south,half=lower,hinge=left,open=false,powered=true]: minecraft:waxed_weathered_copper_door[facing=south,half=lower,hinge=left,open=false,powered=false] - minecraft:waxed_weathered_copper_door[facing=south,half=lower,hinge=right,open=false,powered=true]: minecraft:waxed_weathered_copper_door[facing=south,half=lower,hinge=right,open=false,powered=false] - minecraft:waxed_weathered_copper_door[facing=south,half=upper,hinge=left,open=false,powered=true]: minecraft:waxed_weathered_copper_door[facing=south,half=upper,hinge=left,open=false,powered=false] - minecraft:waxed_weathered_copper_door[facing=south,half=upper,hinge=right,open=false,powered=true]: minecraft:waxed_weathered_copper_door[facing=south,half=upper,hinge=right,open=false,powered=false] - minecraft:waxed_weathered_copper_door[facing=south,half=lower,hinge=left,open=true,powered=true]: minecraft:waxed_weathered_copper_door[facing=south,half=lower,hinge=left,open=true,powered=false] - minecraft:waxed_weathered_copper_door[facing=south,half=lower,hinge=right,open=true,powered=true]: minecraft:waxed_weathered_copper_door[facing=south,half=lower,hinge=right,open=true,powered=false] - minecraft:waxed_weathered_copper_door[facing=south,half=upper,hinge=left,open=true,powered=true]: minecraft:waxed_weathered_copper_door[facing=south,half=upper,hinge=left,open=true,powered=false] - minecraft:waxed_weathered_copper_door[facing=south,half=upper,hinge=right,open=true,powered=true]: minecraft:waxed_weathered_copper_door[facing=south,half=upper,hinge=right,open=true,powered=false] - minecraft:waxed_weathered_copper_door[facing=west,half=lower,hinge=left,open=false,powered=true]: minecraft:waxed_weathered_copper_door[facing=west,half=lower,hinge=left,open=false,powered=false] - minecraft:waxed_weathered_copper_door[facing=west,half=lower,hinge=right,open=false,powered=true]: minecraft:waxed_weathered_copper_door[facing=west,half=lower,hinge=right,open=false,powered=false] - minecraft:waxed_weathered_copper_door[facing=west,half=upper,hinge=left,open=false,powered=true]: minecraft:waxed_weathered_copper_door[facing=west,half=upper,hinge=left,open=false,powered=false] - minecraft:waxed_weathered_copper_door[facing=west,half=upper,hinge=right,open=false,powered=true]: minecraft:waxed_weathered_copper_door[facing=west,half=upper,hinge=right,open=false,powered=false] - minecraft:waxed_weathered_copper_door[facing=west,half=lower,hinge=left,open=true,powered=true]: minecraft:waxed_weathered_copper_door[facing=west,half=lower,hinge=left,open=true,powered=false] - minecraft:waxed_weathered_copper_door[facing=west,half=lower,hinge=right,open=true,powered=true]: minecraft:waxed_weathered_copper_door[facing=west,half=lower,hinge=right,open=true,powered=false] - minecraft:waxed_weathered_copper_door[facing=west,half=upper,hinge=left,open=true,powered=true]: minecraft:waxed_weathered_copper_door[facing=west,half=upper,hinge=left,open=true,powered=false] - minecraft:waxed_weathered_copper_door[facing=west,half=upper,hinge=right,open=true,powered=true]: minecraft:waxed_weathered_copper_door[facing=west,half=upper,hinge=right,open=true,powered=false] - minecraft:waxed_oxidized_copper_door[facing=east,half=lower,hinge=left,open=false,powered=true]: minecraft:waxed_oxidized_copper_door[facing=east,half=lower,hinge=left,open=false,powered=false] - minecraft:waxed_oxidized_copper_door[facing=east,half=lower,hinge=right,open=false,powered=true]: minecraft:waxed_oxidized_copper_door[facing=east,half=lower,hinge=right,open=false,powered=false] - minecraft:waxed_oxidized_copper_door[facing=east,half=upper,hinge=left,open=false,powered=true]: minecraft:waxed_oxidized_copper_door[facing=east,half=upper,hinge=left,open=false,powered=false] - minecraft:waxed_oxidized_copper_door[facing=east,half=upper,hinge=right,open=false,powered=true]: minecraft:waxed_oxidized_copper_door[facing=east,half=upper,hinge=right,open=false,powered=false] - minecraft:waxed_oxidized_copper_door[facing=east,half=lower,hinge=left,open=true,powered=true]: minecraft:waxed_oxidized_copper_door[facing=east,half=lower,hinge=left,open=true,powered=false] - minecraft:waxed_oxidized_copper_door[facing=east,half=lower,hinge=right,open=true,powered=true]: minecraft:waxed_oxidized_copper_door[facing=east,half=lower,hinge=right,open=true,powered=false] - minecraft:waxed_oxidized_copper_door[facing=east,half=upper,hinge=left,open=true,powered=true]: minecraft:waxed_oxidized_copper_door[facing=east,half=upper,hinge=left,open=true,powered=false] - minecraft:waxed_oxidized_copper_door[facing=east,half=upper,hinge=right,open=true,powered=true]: minecraft:waxed_oxidized_copper_door[facing=east,half=upper,hinge=right,open=true,powered=false] - minecraft:waxed_oxidized_copper_door[facing=north,half=lower,hinge=left,open=false,powered=true]: minecraft:waxed_oxidized_copper_door[facing=north,half=lower,hinge=left,open=false,powered=false] - minecraft:waxed_oxidized_copper_door[facing=north,half=lower,hinge=right,open=false,powered=true]: minecraft:waxed_oxidized_copper_door[facing=north,half=lower,hinge=right,open=false,powered=false] - minecraft:waxed_oxidized_copper_door[facing=north,half=upper,hinge=left,open=false,powered=true]: minecraft:waxed_oxidized_copper_door[facing=north,half=upper,hinge=left,open=false,powered=false] - minecraft:waxed_oxidized_copper_door[facing=north,half=upper,hinge=right,open=false,powered=true]: minecraft:waxed_oxidized_copper_door[facing=north,half=upper,hinge=right,open=false,powered=false] - minecraft:waxed_oxidized_copper_door[facing=north,half=lower,hinge=left,open=true,powered=true]: minecraft:waxed_oxidized_copper_door[facing=north,half=lower,hinge=left,open=true,powered=false] - minecraft:waxed_oxidized_copper_door[facing=north,half=lower,hinge=right,open=true,powered=true]: minecraft:waxed_oxidized_copper_door[facing=north,half=lower,hinge=right,open=true,powered=false] - minecraft:waxed_oxidized_copper_door[facing=north,half=upper,hinge=left,open=true,powered=true]: minecraft:waxed_oxidized_copper_door[facing=north,half=upper,hinge=left,open=true,powered=false] - minecraft:waxed_oxidized_copper_door[facing=north,half=upper,hinge=right,open=true,powered=true]: minecraft:waxed_oxidized_copper_door[facing=north,half=upper,hinge=right,open=true,powered=false] - minecraft:waxed_oxidized_copper_door[facing=south,half=lower,hinge=left,open=false,powered=true]: minecraft:waxed_oxidized_copper_door[facing=south,half=lower,hinge=left,open=false,powered=false] - minecraft:waxed_oxidized_copper_door[facing=south,half=lower,hinge=right,open=false,powered=true]: minecraft:waxed_oxidized_copper_door[facing=south,half=lower,hinge=right,open=false,powered=false] - minecraft:waxed_oxidized_copper_door[facing=south,half=upper,hinge=left,open=false,powered=true]: minecraft:waxed_oxidized_copper_door[facing=south,half=upper,hinge=left,open=false,powered=false] - minecraft:waxed_oxidized_copper_door[facing=south,half=upper,hinge=right,open=false,powered=true]: minecraft:waxed_oxidized_copper_door[facing=south,half=upper,hinge=right,open=false,powered=false] - minecraft:waxed_oxidized_copper_door[facing=south,half=lower,hinge=left,open=true,powered=true]: minecraft:waxed_oxidized_copper_door[facing=south,half=lower,hinge=left,open=true,powered=false] - minecraft:waxed_oxidized_copper_door[facing=south,half=lower,hinge=right,open=true,powered=true]: minecraft:waxed_oxidized_copper_door[facing=south,half=lower,hinge=right,open=true,powered=false] - minecraft:waxed_oxidized_copper_door[facing=south,half=upper,hinge=left,open=true,powered=true]: minecraft:waxed_oxidized_copper_door[facing=south,half=upper,hinge=left,open=true,powered=false] - minecraft:waxed_oxidized_copper_door[facing=south,half=upper,hinge=right,open=true,powered=true]: minecraft:waxed_oxidized_copper_door[facing=south,half=upper,hinge=right,open=true,powered=false] - minecraft:waxed_oxidized_copper_door[facing=west,half=lower,hinge=left,open=false,powered=true]: minecraft:waxed_oxidized_copper_door[facing=west,half=lower,hinge=left,open=false,powered=false] - minecraft:waxed_oxidized_copper_door[facing=west,half=lower,hinge=right,open=false,powered=true]: minecraft:waxed_oxidized_copper_door[facing=west,half=lower,hinge=right,open=false,powered=false] - minecraft:waxed_oxidized_copper_door[facing=west,half=upper,hinge=left,open=false,powered=true]: minecraft:waxed_oxidized_copper_door[facing=west,half=upper,hinge=left,open=false,powered=false] - minecraft:waxed_oxidized_copper_door[facing=west,half=upper,hinge=right,open=false,powered=true]: minecraft:waxed_oxidized_copper_door[facing=west,half=upper,hinge=right,open=false,powered=false] - minecraft:waxed_oxidized_copper_door[facing=west,half=lower,hinge=left,open=true,powered=true]: minecraft:waxed_oxidized_copper_door[facing=west,half=lower,hinge=left,open=true,powered=false] - minecraft:waxed_oxidized_copper_door[facing=west,half=lower,hinge=right,open=true,powered=true]: minecraft:waxed_oxidized_copper_door[facing=west,half=lower,hinge=right,open=true,powered=false] - minecraft:waxed_oxidized_copper_door[facing=west,half=upper,hinge=left,open=true,powered=true]: minecraft:waxed_oxidized_copper_door[facing=west,half=upper,hinge=left,open=true,powered=false] - minecraft:waxed_oxidized_copper_door[facing=west,half=upper,hinge=right,open=true,powered=true]: minecraft:waxed_oxidized_copper_door[facing=west,half=upper,hinge=right,open=true,powered=false] + copper_door[facing=east,half=lower,hinge=left,open=false,powered=true]: copper_door[facing=east,half=lower,hinge=left,open=false,powered=false] + copper_door[facing=east,half=lower,hinge=right,open=false,powered=true]: copper_door[facing=east,half=lower,hinge=right,open=false,powered=false] + copper_door[facing=east,half=upper,hinge=left,open=false,powered=true]: copper_door[facing=east,half=upper,hinge=left,open=false,powered=false] + copper_door[facing=east,half=upper,hinge=right,open=false,powered=true]: copper_door[facing=east,half=upper,hinge=right,open=false,powered=false] + copper_door[facing=east,half=lower,hinge=left,open=true,powered=true]: copper_door[facing=east,half=lower,hinge=left,open=true,powered=false] + copper_door[facing=east,half=lower,hinge=right,open=true,powered=true]: copper_door[facing=east,half=lower,hinge=right,open=true,powered=false] + copper_door[facing=east,half=upper,hinge=left,open=true,powered=true]: copper_door[facing=east,half=upper,hinge=left,open=true,powered=false] + copper_door[facing=east,half=upper,hinge=right,open=true,powered=true]: copper_door[facing=east,half=upper,hinge=right,open=true,powered=false] + copper_door[facing=north,half=lower,hinge=left,open=false,powered=true]: copper_door[facing=north,half=lower,hinge=left,open=false,powered=false] + copper_door[facing=north,half=lower,hinge=right,open=false,powered=true]: copper_door[facing=north,half=lower,hinge=right,open=false,powered=false] + copper_door[facing=north,half=upper,hinge=left,open=false,powered=true]: copper_door[facing=north,half=upper,hinge=left,open=false,powered=false] + copper_door[facing=north,half=upper,hinge=right,open=false,powered=true]: copper_door[facing=north,half=upper,hinge=right,open=false,powered=false] + copper_door[facing=north,half=lower,hinge=left,open=true,powered=true]: copper_door[facing=north,half=lower,hinge=left,open=true,powered=false] + copper_door[facing=north,half=lower,hinge=right,open=true,powered=true]: copper_door[facing=north,half=lower,hinge=right,open=true,powered=false] + copper_door[facing=north,half=upper,hinge=left,open=true,powered=true]: copper_door[facing=north,half=upper,hinge=left,open=true,powered=false] + copper_door[facing=north,half=upper,hinge=right,open=true,powered=true]: copper_door[facing=north,half=upper,hinge=right,open=true,powered=false] + copper_door[facing=south,half=lower,hinge=left,open=false,powered=true]: copper_door[facing=south,half=lower,hinge=left,open=false,powered=false] + copper_door[facing=south,half=lower,hinge=right,open=false,powered=true]: copper_door[facing=south,half=lower,hinge=right,open=false,powered=false] + copper_door[facing=south,half=upper,hinge=left,open=false,powered=true]: copper_door[facing=south,half=upper,hinge=left,open=false,powered=false] + copper_door[facing=south,half=upper,hinge=right,open=false,powered=true]: copper_door[facing=south,half=upper,hinge=right,open=false,powered=false] + copper_door[facing=south,half=lower,hinge=left,open=true,powered=true]: copper_door[facing=south,half=lower,hinge=left,open=true,powered=false] + copper_door[facing=south,half=lower,hinge=right,open=true,powered=true]: copper_door[facing=south,half=lower,hinge=right,open=true,powered=false] + copper_door[facing=south,half=upper,hinge=left,open=true,powered=true]: copper_door[facing=south,half=upper,hinge=left,open=true,powered=false] + copper_door[facing=south,half=upper,hinge=right,open=true,powered=true]: copper_door[facing=south,half=upper,hinge=right,open=true,powered=false] + copper_door[facing=west,half=lower,hinge=left,open=false,powered=true]: copper_door[facing=west,half=lower,hinge=left,open=false,powered=false] + copper_door[facing=west,half=lower,hinge=right,open=false,powered=true]: copper_door[facing=west,half=lower,hinge=right,open=false,powered=false] + copper_door[facing=west,half=upper,hinge=left,open=false,powered=true]: copper_door[facing=west,half=upper,hinge=left,open=false,powered=false] + copper_door[facing=west,half=upper,hinge=right,open=false,powered=true]: copper_door[facing=west,half=upper,hinge=right,open=false,powered=false] + copper_door[facing=west,half=lower,hinge=left,open=true,powered=true]: copper_door[facing=west,half=lower,hinge=left,open=true,powered=false] + copper_door[facing=west,half=lower,hinge=right,open=true,powered=true]: copper_door[facing=west,half=lower,hinge=right,open=true,powered=false] + copper_door[facing=west,half=upper,hinge=left,open=true,powered=true]: copper_door[facing=west,half=upper,hinge=left,open=true,powered=false] + copper_door[facing=west,half=upper,hinge=right,open=true,powered=true]: copper_door[facing=west,half=upper,hinge=right,open=true,powered=false] + exposed_copper_door[facing=east,half=lower,hinge=left,open=false,powered=true]: exposed_copper_door[facing=east,half=lower,hinge=left,open=false,powered=false] + exposed_copper_door[facing=east,half=lower,hinge=right,open=false,powered=true]: exposed_copper_door[facing=east,half=lower,hinge=right,open=false,powered=false] + exposed_copper_door[facing=east,half=upper,hinge=left,open=false,powered=true]: exposed_copper_door[facing=east,half=upper,hinge=left,open=false,powered=false] + exposed_copper_door[facing=east,half=upper,hinge=right,open=false,powered=true]: exposed_copper_door[facing=east,half=upper,hinge=right,open=false,powered=false] + exposed_copper_door[facing=east,half=lower,hinge=left,open=true,powered=true]: exposed_copper_door[facing=east,half=lower,hinge=left,open=true,powered=false] + exposed_copper_door[facing=east,half=lower,hinge=right,open=true,powered=true]: exposed_copper_door[facing=east,half=lower,hinge=right,open=true,powered=false] + exposed_copper_door[facing=east,half=upper,hinge=left,open=true,powered=true]: exposed_copper_door[facing=east,half=upper,hinge=left,open=true,powered=false] + exposed_copper_door[facing=east,half=upper,hinge=right,open=true,powered=true]: exposed_copper_door[facing=east,half=upper,hinge=right,open=true,powered=false] + exposed_copper_door[facing=north,half=lower,hinge=left,open=false,powered=true]: exposed_copper_door[facing=north,half=lower,hinge=left,open=false,powered=false] + exposed_copper_door[facing=north,half=lower,hinge=right,open=false,powered=true]: exposed_copper_door[facing=north,half=lower,hinge=right,open=false,powered=false] + exposed_copper_door[facing=north,half=upper,hinge=left,open=false,powered=true]: exposed_copper_door[facing=north,half=upper,hinge=left,open=false,powered=false] + exposed_copper_door[facing=north,half=upper,hinge=right,open=false,powered=true]: exposed_copper_door[facing=north,half=upper,hinge=right,open=false,powered=false] + exposed_copper_door[facing=north,half=lower,hinge=left,open=true,powered=true]: exposed_copper_door[facing=north,half=lower,hinge=left,open=true,powered=false] + exposed_copper_door[facing=north,half=lower,hinge=right,open=true,powered=true]: exposed_copper_door[facing=north,half=lower,hinge=right,open=true,powered=false] + exposed_copper_door[facing=north,half=upper,hinge=left,open=true,powered=true]: exposed_copper_door[facing=north,half=upper,hinge=left,open=true,powered=false] + exposed_copper_door[facing=north,half=upper,hinge=right,open=true,powered=true]: exposed_copper_door[facing=north,half=upper,hinge=right,open=true,powered=false] + exposed_copper_door[facing=south,half=lower,hinge=left,open=false,powered=true]: exposed_copper_door[facing=south,half=lower,hinge=left,open=false,powered=false] + exposed_copper_door[facing=south,half=lower,hinge=right,open=false,powered=true]: exposed_copper_door[facing=south,half=lower,hinge=right,open=false,powered=false] + exposed_copper_door[facing=south,half=upper,hinge=left,open=false,powered=true]: exposed_copper_door[facing=south,half=upper,hinge=left,open=false,powered=false] + exposed_copper_door[facing=south,half=upper,hinge=right,open=false,powered=true]: exposed_copper_door[facing=south,half=upper,hinge=right,open=false,powered=false] + exposed_copper_door[facing=south,half=lower,hinge=left,open=true,powered=true]: exposed_copper_door[facing=south,half=lower,hinge=left,open=true,powered=false] + exposed_copper_door[facing=south,half=lower,hinge=right,open=true,powered=true]: exposed_copper_door[facing=south,half=lower,hinge=right,open=true,powered=false] + exposed_copper_door[facing=south,half=upper,hinge=left,open=true,powered=true]: exposed_copper_door[facing=south,half=upper,hinge=left,open=true,powered=false] + exposed_copper_door[facing=south,half=upper,hinge=right,open=true,powered=true]: exposed_copper_door[facing=south,half=upper,hinge=right,open=true,powered=false] + exposed_copper_door[facing=west,half=lower,hinge=left,open=false,powered=true]: exposed_copper_door[facing=west,half=lower,hinge=left,open=false,powered=false] + exposed_copper_door[facing=west,half=lower,hinge=right,open=false,powered=true]: exposed_copper_door[facing=west,half=lower,hinge=right,open=false,powered=false] + exposed_copper_door[facing=west,half=upper,hinge=left,open=false,powered=true]: exposed_copper_door[facing=west,half=upper,hinge=left,open=false,powered=false] + exposed_copper_door[facing=west,half=upper,hinge=right,open=false,powered=true]: exposed_copper_door[facing=west,half=upper,hinge=right,open=false,powered=false] + exposed_copper_door[facing=west,half=lower,hinge=left,open=true,powered=true]: exposed_copper_door[facing=west,half=lower,hinge=left,open=true,powered=false] + exposed_copper_door[facing=west,half=lower,hinge=right,open=true,powered=true]: exposed_copper_door[facing=west,half=lower,hinge=right,open=true,powered=false] + exposed_copper_door[facing=west,half=upper,hinge=left,open=true,powered=true]: exposed_copper_door[facing=west,half=upper,hinge=left,open=true,powered=false] + exposed_copper_door[facing=west,half=upper,hinge=right,open=true,powered=true]: exposed_copper_door[facing=west,half=upper,hinge=right,open=true,powered=false] + weathered_copper_door[facing=east,half=lower,hinge=left,open=false,powered=true]: weathered_copper_door[facing=east,half=lower,hinge=left,open=false,powered=false] + weathered_copper_door[facing=east,half=lower,hinge=right,open=false,powered=true]: weathered_copper_door[facing=east,half=lower,hinge=right,open=false,powered=false] + weathered_copper_door[facing=east,half=upper,hinge=left,open=false,powered=true]: weathered_copper_door[facing=east,half=upper,hinge=left,open=false,powered=false] + weathered_copper_door[facing=east,half=upper,hinge=right,open=false,powered=true]: weathered_copper_door[facing=east,half=upper,hinge=right,open=false,powered=false] + weathered_copper_door[facing=east,half=lower,hinge=left,open=true,powered=true]: weathered_copper_door[facing=east,half=lower,hinge=left,open=true,powered=false] + weathered_copper_door[facing=east,half=lower,hinge=right,open=true,powered=true]: weathered_copper_door[facing=east,half=lower,hinge=right,open=true,powered=false] + weathered_copper_door[facing=east,half=upper,hinge=left,open=true,powered=true]: weathered_copper_door[facing=east,half=upper,hinge=left,open=true,powered=false] + weathered_copper_door[facing=east,half=upper,hinge=right,open=true,powered=true]: weathered_copper_door[facing=east,half=upper,hinge=right,open=true,powered=false] + weathered_copper_door[facing=north,half=lower,hinge=left,open=false,powered=true]: weathered_copper_door[facing=north,half=lower,hinge=left,open=false,powered=false] + weathered_copper_door[facing=north,half=lower,hinge=right,open=false,powered=true]: weathered_copper_door[facing=north,half=lower,hinge=right,open=false,powered=false] + weathered_copper_door[facing=north,half=upper,hinge=left,open=false,powered=true]: weathered_copper_door[facing=north,half=upper,hinge=left,open=false,powered=false] + weathered_copper_door[facing=north,half=upper,hinge=right,open=false,powered=true]: weathered_copper_door[facing=north,half=upper,hinge=right,open=false,powered=false] + weathered_copper_door[facing=north,half=lower,hinge=left,open=true,powered=true]: weathered_copper_door[facing=north,half=lower,hinge=left,open=true,powered=false] + weathered_copper_door[facing=north,half=lower,hinge=right,open=true,powered=true]: weathered_copper_door[facing=north,half=lower,hinge=right,open=true,powered=false] + weathered_copper_door[facing=north,half=upper,hinge=left,open=true,powered=true]: weathered_copper_door[facing=north,half=upper,hinge=left,open=true,powered=false] + weathered_copper_door[facing=north,half=upper,hinge=right,open=true,powered=true]: weathered_copper_door[facing=north,half=upper,hinge=right,open=true,powered=false] + weathered_copper_door[facing=south,half=lower,hinge=left,open=false,powered=true]: weathered_copper_door[facing=south,half=lower,hinge=left,open=false,powered=false] + weathered_copper_door[facing=south,half=lower,hinge=right,open=false,powered=true]: weathered_copper_door[facing=south,half=lower,hinge=right,open=false,powered=false] + weathered_copper_door[facing=south,half=upper,hinge=left,open=false,powered=true]: weathered_copper_door[facing=south,half=upper,hinge=left,open=false,powered=false] + weathered_copper_door[facing=south,half=upper,hinge=right,open=false,powered=true]: weathered_copper_door[facing=south,half=upper,hinge=right,open=false,powered=false] + weathered_copper_door[facing=south,half=lower,hinge=left,open=true,powered=true]: weathered_copper_door[facing=south,half=lower,hinge=left,open=true,powered=false] + weathered_copper_door[facing=south,half=lower,hinge=right,open=true,powered=true]: weathered_copper_door[facing=south,half=lower,hinge=right,open=true,powered=false] + weathered_copper_door[facing=south,half=upper,hinge=left,open=true,powered=true]: weathered_copper_door[facing=south,half=upper,hinge=left,open=true,powered=false] + weathered_copper_door[facing=south,half=upper,hinge=right,open=true,powered=true]: weathered_copper_door[facing=south,half=upper,hinge=right,open=true,powered=false] + weathered_copper_door[facing=west,half=lower,hinge=left,open=false,powered=true]: weathered_copper_door[facing=west,half=lower,hinge=left,open=false,powered=false] + weathered_copper_door[facing=west,half=lower,hinge=right,open=false,powered=true]: weathered_copper_door[facing=west,half=lower,hinge=right,open=false,powered=false] + weathered_copper_door[facing=west,half=upper,hinge=left,open=false,powered=true]: weathered_copper_door[facing=west,half=upper,hinge=left,open=false,powered=false] + weathered_copper_door[facing=west,half=upper,hinge=right,open=false,powered=true]: weathered_copper_door[facing=west,half=upper,hinge=right,open=false,powered=false] + weathered_copper_door[facing=west,half=lower,hinge=left,open=true,powered=true]: weathered_copper_door[facing=west,half=lower,hinge=left,open=true,powered=false] + weathered_copper_door[facing=west,half=lower,hinge=right,open=true,powered=true]: weathered_copper_door[facing=west,half=lower,hinge=right,open=true,powered=false] + weathered_copper_door[facing=west,half=upper,hinge=left,open=true,powered=true]: weathered_copper_door[facing=west,half=upper,hinge=left,open=true,powered=false] + weathered_copper_door[facing=west,half=upper,hinge=right,open=true,powered=true]: weathered_copper_door[facing=west,half=upper,hinge=right,open=true,powered=false] + oxidized_copper_door[facing=east,half=lower,hinge=left,open=false,powered=true]: oxidized_copper_door[facing=east,half=lower,hinge=left,open=false,powered=false] + oxidized_copper_door[facing=east,half=lower,hinge=right,open=false,powered=true]: oxidized_copper_door[facing=east,half=lower,hinge=right,open=false,powered=false] + oxidized_copper_door[facing=east,half=upper,hinge=left,open=false,powered=true]: oxidized_copper_door[facing=east,half=upper,hinge=left,open=false,powered=false] + oxidized_copper_door[facing=east,half=upper,hinge=right,open=false,powered=true]: oxidized_copper_door[facing=east,half=upper,hinge=right,open=false,powered=false] + oxidized_copper_door[facing=east,half=lower,hinge=left,open=true,powered=true]: oxidized_copper_door[facing=east,half=lower,hinge=left,open=true,powered=false] + oxidized_copper_door[facing=east,half=lower,hinge=right,open=true,powered=true]: oxidized_copper_door[facing=east,half=lower,hinge=right,open=true,powered=false] + oxidized_copper_door[facing=east,half=upper,hinge=left,open=true,powered=true]: oxidized_copper_door[facing=east,half=upper,hinge=left,open=true,powered=false] + oxidized_copper_door[facing=east,half=upper,hinge=right,open=true,powered=true]: oxidized_copper_door[facing=east,half=upper,hinge=right,open=true,powered=false] + oxidized_copper_door[facing=north,half=lower,hinge=left,open=false,powered=true]: oxidized_copper_door[facing=north,half=lower,hinge=left,open=false,powered=false] + oxidized_copper_door[facing=north,half=lower,hinge=right,open=false,powered=true]: oxidized_copper_door[facing=north,half=lower,hinge=right,open=false,powered=false] + oxidized_copper_door[facing=north,half=upper,hinge=left,open=false,powered=true]: oxidized_copper_door[facing=north,half=upper,hinge=left,open=false,powered=false] + oxidized_copper_door[facing=north,half=upper,hinge=right,open=false,powered=true]: oxidized_copper_door[facing=north,half=upper,hinge=right,open=false,powered=false] + oxidized_copper_door[facing=north,half=lower,hinge=left,open=true,powered=true]: oxidized_copper_door[facing=north,half=lower,hinge=left,open=true,powered=false] + oxidized_copper_door[facing=north,half=lower,hinge=right,open=true,powered=true]: oxidized_copper_door[facing=north,half=lower,hinge=right,open=true,powered=false] + oxidized_copper_door[facing=north,half=upper,hinge=left,open=true,powered=true]: oxidized_copper_door[facing=north,half=upper,hinge=left,open=true,powered=false] + oxidized_copper_door[facing=north,half=upper,hinge=right,open=true,powered=true]: oxidized_copper_door[facing=north,half=upper,hinge=right,open=true,powered=false] + oxidized_copper_door[facing=south,half=lower,hinge=left,open=false,powered=true]: oxidized_copper_door[facing=south,half=lower,hinge=left,open=false,powered=false] + oxidized_copper_door[facing=south,half=lower,hinge=right,open=false,powered=true]: oxidized_copper_door[facing=south,half=lower,hinge=right,open=false,powered=false] + oxidized_copper_door[facing=south,half=upper,hinge=left,open=false,powered=true]: oxidized_copper_door[facing=south,half=upper,hinge=left,open=false,powered=false] + oxidized_copper_door[facing=south,half=upper,hinge=right,open=false,powered=true]: oxidized_copper_door[facing=south,half=upper,hinge=right,open=false,powered=false] + oxidized_copper_door[facing=south,half=lower,hinge=left,open=true,powered=true]: oxidized_copper_door[facing=south,half=lower,hinge=left,open=true,powered=false] + oxidized_copper_door[facing=south,half=lower,hinge=right,open=true,powered=true]: oxidized_copper_door[facing=south,half=lower,hinge=right,open=true,powered=false] + oxidized_copper_door[facing=south,half=upper,hinge=left,open=true,powered=true]: oxidized_copper_door[facing=south,half=upper,hinge=left,open=true,powered=false] + oxidized_copper_door[facing=south,half=upper,hinge=right,open=true,powered=true]: oxidized_copper_door[facing=south,half=upper,hinge=right,open=true,powered=false] + oxidized_copper_door[facing=west,half=lower,hinge=left,open=false,powered=true]: oxidized_copper_door[facing=west,half=lower,hinge=left,open=false,powered=false] + oxidized_copper_door[facing=west,half=lower,hinge=right,open=false,powered=true]: oxidized_copper_door[facing=west,half=lower,hinge=right,open=false,powered=false] + oxidized_copper_door[facing=west,half=upper,hinge=left,open=false,powered=true]: oxidized_copper_door[facing=west,half=upper,hinge=left,open=false,powered=false] + oxidized_copper_door[facing=west,half=upper,hinge=right,open=false,powered=true]: oxidized_copper_door[facing=west,half=upper,hinge=right,open=false,powered=false] + oxidized_copper_door[facing=west,half=lower,hinge=left,open=true,powered=true]: oxidized_copper_door[facing=west,half=lower,hinge=left,open=true,powered=false] + oxidized_copper_door[facing=west,half=lower,hinge=right,open=true,powered=true]: oxidized_copper_door[facing=west,half=lower,hinge=right,open=true,powered=false] + oxidized_copper_door[facing=west,half=upper,hinge=left,open=true,powered=true]: oxidized_copper_door[facing=west,half=upper,hinge=left,open=true,powered=false] + oxidized_copper_door[facing=west,half=upper,hinge=right,open=true,powered=true]: oxidized_copper_door[facing=west,half=upper,hinge=right,open=true,powered=false] + waxed_copper_door[facing=east,half=lower,hinge=left,open=false,powered=true]: waxed_copper_door[facing=east,half=lower,hinge=left,open=false,powered=false] + waxed_copper_door[facing=east,half=lower,hinge=right,open=false,powered=true]: waxed_copper_door[facing=east,half=lower,hinge=right,open=false,powered=false] + waxed_copper_door[facing=east,half=upper,hinge=left,open=false,powered=true]: waxed_copper_door[facing=east,half=upper,hinge=left,open=false,powered=false] + waxed_copper_door[facing=east,half=upper,hinge=right,open=false,powered=true]: waxed_copper_door[facing=east,half=upper,hinge=right,open=false,powered=false] + waxed_copper_door[facing=east,half=lower,hinge=left,open=true,powered=true]: waxed_copper_door[facing=east,half=lower,hinge=left,open=true,powered=false] + waxed_copper_door[facing=east,half=lower,hinge=right,open=true,powered=true]: waxed_copper_door[facing=east,half=lower,hinge=right,open=true,powered=false] + waxed_copper_door[facing=east,half=upper,hinge=left,open=true,powered=true]: waxed_copper_door[facing=east,half=upper,hinge=left,open=true,powered=false] + waxed_copper_door[facing=east,half=upper,hinge=right,open=true,powered=true]: waxed_copper_door[facing=east,half=upper,hinge=right,open=true,powered=false] + waxed_copper_door[facing=north,half=lower,hinge=left,open=false,powered=true]: waxed_copper_door[facing=north,half=lower,hinge=left,open=false,powered=false] + waxed_copper_door[facing=north,half=lower,hinge=right,open=false,powered=true]: waxed_copper_door[facing=north,half=lower,hinge=right,open=false,powered=false] + waxed_copper_door[facing=north,half=upper,hinge=left,open=false,powered=true]: waxed_copper_door[facing=north,half=upper,hinge=left,open=false,powered=false] + waxed_copper_door[facing=north,half=upper,hinge=right,open=false,powered=true]: waxed_copper_door[facing=north,half=upper,hinge=right,open=false,powered=false] + waxed_copper_door[facing=north,half=lower,hinge=left,open=true,powered=true]: waxed_copper_door[facing=north,half=lower,hinge=left,open=true,powered=false] + waxed_copper_door[facing=north,half=lower,hinge=right,open=true,powered=true]: waxed_copper_door[facing=north,half=lower,hinge=right,open=true,powered=false] + waxed_copper_door[facing=north,half=upper,hinge=left,open=true,powered=true]: waxed_copper_door[facing=north,half=upper,hinge=left,open=true,powered=false] + waxed_copper_door[facing=north,half=upper,hinge=right,open=true,powered=true]: waxed_copper_door[facing=north,half=upper,hinge=right,open=true,powered=false] + waxed_copper_door[facing=south,half=lower,hinge=left,open=false,powered=true]: waxed_copper_door[facing=south,half=lower,hinge=left,open=false,powered=false] + waxed_copper_door[facing=south,half=lower,hinge=right,open=false,powered=true]: waxed_copper_door[facing=south,half=lower,hinge=right,open=false,powered=false] + waxed_copper_door[facing=south,half=upper,hinge=left,open=false,powered=true]: waxed_copper_door[facing=south,half=upper,hinge=left,open=false,powered=false] + waxed_copper_door[facing=south,half=upper,hinge=right,open=false,powered=true]: waxed_copper_door[facing=south,half=upper,hinge=right,open=false,powered=false] + waxed_copper_door[facing=south,half=lower,hinge=left,open=true,powered=true]: waxed_copper_door[facing=south,half=lower,hinge=left,open=true,powered=false] + waxed_copper_door[facing=south,half=lower,hinge=right,open=true,powered=true]: waxed_copper_door[facing=south,half=lower,hinge=right,open=true,powered=false] + waxed_copper_door[facing=south,half=upper,hinge=left,open=true,powered=true]: waxed_copper_door[facing=south,half=upper,hinge=left,open=true,powered=false] + waxed_copper_door[facing=south,half=upper,hinge=right,open=true,powered=true]: waxed_copper_door[facing=south,half=upper,hinge=right,open=true,powered=false] + waxed_copper_door[facing=west,half=lower,hinge=left,open=false,powered=true]: waxed_copper_door[facing=west,half=lower,hinge=left,open=false,powered=false] + waxed_copper_door[facing=west,half=lower,hinge=right,open=false,powered=true]: waxed_copper_door[facing=west,half=lower,hinge=right,open=false,powered=false] + waxed_copper_door[facing=west,half=upper,hinge=left,open=false,powered=true]: waxed_copper_door[facing=west,half=upper,hinge=left,open=false,powered=false] + waxed_copper_door[facing=west,half=upper,hinge=right,open=false,powered=true]: waxed_copper_door[facing=west,half=upper,hinge=right,open=false,powered=false] + waxed_copper_door[facing=west,half=lower,hinge=left,open=true,powered=true]: waxed_copper_door[facing=west,half=lower,hinge=left,open=true,powered=false] + waxed_copper_door[facing=west,half=lower,hinge=right,open=true,powered=true]: waxed_copper_door[facing=west,half=lower,hinge=right,open=true,powered=false] + waxed_copper_door[facing=west,half=upper,hinge=left,open=true,powered=true]: waxed_copper_door[facing=west,half=upper,hinge=left,open=true,powered=false] + waxed_copper_door[facing=west,half=upper,hinge=right,open=true,powered=true]: waxed_copper_door[facing=west,half=upper,hinge=right,open=true,powered=false] + waxed_exposed_copper_door[facing=east,half=lower,hinge=left,open=false,powered=true]: waxed_exposed_copper_door[facing=east,half=lower,hinge=left,open=false,powered=false] + waxed_exposed_copper_door[facing=east,half=lower,hinge=right,open=false,powered=true]: waxed_exposed_copper_door[facing=east,half=lower,hinge=right,open=false,powered=false] + waxed_exposed_copper_door[facing=east,half=upper,hinge=left,open=false,powered=true]: waxed_exposed_copper_door[facing=east,half=upper,hinge=left,open=false,powered=false] + waxed_exposed_copper_door[facing=east,half=upper,hinge=right,open=false,powered=true]: waxed_exposed_copper_door[facing=east,half=upper,hinge=right,open=false,powered=false] + waxed_exposed_copper_door[facing=east,half=lower,hinge=left,open=true,powered=true]: waxed_exposed_copper_door[facing=east,half=lower,hinge=left,open=true,powered=false] + waxed_exposed_copper_door[facing=east,half=lower,hinge=right,open=true,powered=true]: waxed_exposed_copper_door[facing=east,half=lower,hinge=right,open=true,powered=false] + waxed_exposed_copper_door[facing=east,half=upper,hinge=left,open=true,powered=true]: waxed_exposed_copper_door[facing=east,half=upper,hinge=left,open=true,powered=false] + waxed_exposed_copper_door[facing=east,half=upper,hinge=right,open=true,powered=true]: waxed_exposed_copper_door[facing=east,half=upper,hinge=right,open=true,powered=false] + waxed_exposed_copper_door[facing=north,half=lower,hinge=left,open=false,powered=true]: waxed_exposed_copper_door[facing=north,half=lower,hinge=left,open=false,powered=false] + waxed_exposed_copper_door[facing=north,half=lower,hinge=right,open=false,powered=true]: waxed_exposed_copper_door[facing=north,half=lower,hinge=right,open=false,powered=false] + waxed_exposed_copper_door[facing=north,half=upper,hinge=left,open=false,powered=true]: waxed_exposed_copper_door[facing=north,half=upper,hinge=left,open=false,powered=false] + waxed_exposed_copper_door[facing=north,half=upper,hinge=right,open=false,powered=true]: waxed_exposed_copper_door[facing=north,half=upper,hinge=right,open=false,powered=false] + waxed_exposed_copper_door[facing=north,half=lower,hinge=left,open=true,powered=true]: waxed_exposed_copper_door[facing=north,half=lower,hinge=left,open=true,powered=false] + waxed_exposed_copper_door[facing=north,half=lower,hinge=right,open=true,powered=true]: waxed_exposed_copper_door[facing=north,half=lower,hinge=right,open=true,powered=false] + waxed_exposed_copper_door[facing=north,half=upper,hinge=left,open=true,powered=true]: waxed_exposed_copper_door[facing=north,half=upper,hinge=left,open=true,powered=false] + waxed_exposed_copper_door[facing=north,half=upper,hinge=right,open=true,powered=true]: waxed_exposed_copper_door[facing=north,half=upper,hinge=right,open=true,powered=false] + waxed_exposed_copper_door[facing=south,half=lower,hinge=left,open=false,powered=true]: waxed_exposed_copper_door[facing=south,half=lower,hinge=left,open=false,powered=false] + waxed_exposed_copper_door[facing=south,half=lower,hinge=right,open=false,powered=true]: waxed_exposed_copper_door[facing=south,half=lower,hinge=right,open=false,powered=false] + waxed_exposed_copper_door[facing=south,half=upper,hinge=left,open=false,powered=true]: waxed_exposed_copper_door[facing=south,half=upper,hinge=left,open=false,powered=false] + waxed_exposed_copper_door[facing=south,half=upper,hinge=right,open=false,powered=true]: waxed_exposed_copper_door[facing=south,half=upper,hinge=right,open=false,powered=false] + waxed_exposed_copper_door[facing=south,half=lower,hinge=left,open=true,powered=true]: waxed_exposed_copper_door[facing=south,half=lower,hinge=left,open=true,powered=false] + waxed_exposed_copper_door[facing=south,half=lower,hinge=right,open=true,powered=true]: waxed_exposed_copper_door[facing=south,half=lower,hinge=right,open=true,powered=false] + waxed_exposed_copper_door[facing=south,half=upper,hinge=left,open=true,powered=true]: waxed_exposed_copper_door[facing=south,half=upper,hinge=left,open=true,powered=false] + waxed_exposed_copper_door[facing=south,half=upper,hinge=right,open=true,powered=true]: waxed_exposed_copper_door[facing=south,half=upper,hinge=right,open=true,powered=false] + waxed_exposed_copper_door[facing=west,half=lower,hinge=left,open=false,powered=true]: waxed_exposed_copper_door[facing=west,half=lower,hinge=left,open=false,powered=false] + waxed_exposed_copper_door[facing=west,half=lower,hinge=right,open=false,powered=true]: waxed_exposed_copper_door[facing=west,half=lower,hinge=right,open=false,powered=false] + waxed_exposed_copper_door[facing=west,half=upper,hinge=left,open=false,powered=true]: waxed_exposed_copper_door[facing=west,half=upper,hinge=left,open=false,powered=false] + waxed_exposed_copper_door[facing=west,half=upper,hinge=right,open=false,powered=true]: waxed_exposed_copper_door[facing=west,half=upper,hinge=right,open=false,powered=false] + waxed_exposed_copper_door[facing=west,half=lower,hinge=left,open=true,powered=true]: waxed_exposed_copper_door[facing=west,half=lower,hinge=left,open=true,powered=false] + waxed_exposed_copper_door[facing=west,half=lower,hinge=right,open=true,powered=true]: waxed_exposed_copper_door[facing=west,half=lower,hinge=right,open=true,powered=false] + waxed_exposed_copper_door[facing=west,half=upper,hinge=left,open=true,powered=true]: waxed_exposed_copper_door[facing=west,half=upper,hinge=left,open=true,powered=false] + waxed_exposed_copper_door[facing=west,half=upper,hinge=right,open=true,powered=true]: waxed_exposed_copper_door[facing=west,half=upper,hinge=right,open=true,powered=false] + waxed_weathered_copper_door[facing=east,half=lower,hinge=left,open=false,powered=true]: waxed_weathered_copper_door[facing=east,half=lower,hinge=left,open=false,powered=false] + waxed_weathered_copper_door[facing=east,half=lower,hinge=right,open=false,powered=true]: waxed_weathered_copper_door[facing=east,half=lower,hinge=right,open=false,powered=false] + waxed_weathered_copper_door[facing=east,half=upper,hinge=left,open=false,powered=true]: waxed_weathered_copper_door[facing=east,half=upper,hinge=left,open=false,powered=false] + waxed_weathered_copper_door[facing=east,half=upper,hinge=right,open=false,powered=true]: waxed_weathered_copper_door[facing=east,half=upper,hinge=right,open=false,powered=false] + waxed_weathered_copper_door[facing=east,half=lower,hinge=left,open=true,powered=true]: waxed_weathered_copper_door[facing=east,half=lower,hinge=left,open=true,powered=false] + waxed_weathered_copper_door[facing=east,half=lower,hinge=right,open=true,powered=true]: waxed_weathered_copper_door[facing=east,half=lower,hinge=right,open=true,powered=false] + waxed_weathered_copper_door[facing=east,half=upper,hinge=left,open=true,powered=true]: waxed_weathered_copper_door[facing=east,half=upper,hinge=left,open=true,powered=false] + waxed_weathered_copper_door[facing=east,half=upper,hinge=right,open=true,powered=true]: waxed_weathered_copper_door[facing=east,half=upper,hinge=right,open=true,powered=false] + waxed_weathered_copper_door[facing=north,half=lower,hinge=left,open=false,powered=true]: waxed_weathered_copper_door[facing=north,half=lower,hinge=left,open=false,powered=false] + waxed_weathered_copper_door[facing=north,half=lower,hinge=right,open=false,powered=true]: waxed_weathered_copper_door[facing=north,half=lower,hinge=right,open=false,powered=false] + waxed_weathered_copper_door[facing=north,half=upper,hinge=left,open=false,powered=true]: waxed_weathered_copper_door[facing=north,half=upper,hinge=left,open=false,powered=false] + waxed_weathered_copper_door[facing=north,half=upper,hinge=right,open=false,powered=true]: waxed_weathered_copper_door[facing=north,half=upper,hinge=right,open=false,powered=false] + waxed_weathered_copper_door[facing=north,half=lower,hinge=left,open=true,powered=true]: waxed_weathered_copper_door[facing=north,half=lower,hinge=left,open=true,powered=false] + waxed_weathered_copper_door[facing=north,half=lower,hinge=right,open=true,powered=true]: waxed_weathered_copper_door[facing=north,half=lower,hinge=right,open=true,powered=false] + waxed_weathered_copper_door[facing=north,half=upper,hinge=left,open=true,powered=true]: waxed_weathered_copper_door[facing=north,half=upper,hinge=left,open=true,powered=false] + waxed_weathered_copper_door[facing=north,half=upper,hinge=right,open=true,powered=true]: waxed_weathered_copper_door[facing=north,half=upper,hinge=right,open=true,powered=false] + waxed_weathered_copper_door[facing=south,half=lower,hinge=left,open=false,powered=true]: waxed_weathered_copper_door[facing=south,half=lower,hinge=left,open=false,powered=false] + waxed_weathered_copper_door[facing=south,half=lower,hinge=right,open=false,powered=true]: waxed_weathered_copper_door[facing=south,half=lower,hinge=right,open=false,powered=false] + waxed_weathered_copper_door[facing=south,half=upper,hinge=left,open=false,powered=true]: waxed_weathered_copper_door[facing=south,half=upper,hinge=left,open=false,powered=false] + waxed_weathered_copper_door[facing=south,half=upper,hinge=right,open=false,powered=true]: waxed_weathered_copper_door[facing=south,half=upper,hinge=right,open=false,powered=false] + waxed_weathered_copper_door[facing=south,half=lower,hinge=left,open=true,powered=true]: waxed_weathered_copper_door[facing=south,half=lower,hinge=left,open=true,powered=false] + waxed_weathered_copper_door[facing=south,half=lower,hinge=right,open=true,powered=true]: waxed_weathered_copper_door[facing=south,half=lower,hinge=right,open=true,powered=false] + waxed_weathered_copper_door[facing=south,half=upper,hinge=left,open=true,powered=true]: waxed_weathered_copper_door[facing=south,half=upper,hinge=left,open=true,powered=false] + waxed_weathered_copper_door[facing=south,half=upper,hinge=right,open=true,powered=true]: waxed_weathered_copper_door[facing=south,half=upper,hinge=right,open=true,powered=false] + waxed_weathered_copper_door[facing=west,half=lower,hinge=left,open=false,powered=true]: waxed_weathered_copper_door[facing=west,half=lower,hinge=left,open=false,powered=false] + waxed_weathered_copper_door[facing=west,half=lower,hinge=right,open=false,powered=true]: waxed_weathered_copper_door[facing=west,half=lower,hinge=right,open=false,powered=false] + waxed_weathered_copper_door[facing=west,half=upper,hinge=left,open=false,powered=true]: waxed_weathered_copper_door[facing=west,half=upper,hinge=left,open=false,powered=false] + waxed_weathered_copper_door[facing=west,half=upper,hinge=right,open=false,powered=true]: waxed_weathered_copper_door[facing=west,half=upper,hinge=right,open=false,powered=false] + waxed_weathered_copper_door[facing=west,half=lower,hinge=left,open=true,powered=true]: waxed_weathered_copper_door[facing=west,half=lower,hinge=left,open=true,powered=false] + waxed_weathered_copper_door[facing=west,half=lower,hinge=right,open=true,powered=true]: waxed_weathered_copper_door[facing=west,half=lower,hinge=right,open=true,powered=false] + waxed_weathered_copper_door[facing=west,half=upper,hinge=left,open=true,powered=true]: waxed_weathered_copper_door[facing=west,half=upper,hinge=left,open=true,powered=false] + waxed_weathered_copper_door[facing=west,half=upper,hinge=right,open=true,powered=true]: waxed_weathered_copper_door[facing=west,half=upper,hinge=right,open=true,powered=false] + waxed_oxidized_copper_door[facing=east,half=lower,hinge=left,open=false,powered=true]: waxed_oxidized_copper_door[facing=east,half=lower,hinge=left,open=false,powered=false] + waxed_oxidized_copper_door[facing=east,half=lower,hinge=right,open=false,powered=true]: waxed_oxidized_copper_door[facing=east,half=lower,hinge=right,open=false,powered=false] + waxed_oxidized_copper_door[facing=east,half=upper,hinge=left,open=false,powered=true]: waxed_oxidized_copper_door[facing=east,half=upper,hinge=left,open=false,powered=false] + waxed_oxidized_copper_door[facing=east,half=upper,hinge=right,open=false,powered=true]: waxed_oxidized_copper_door[facing=east,half=upper,hinge=right,open=false,powered=false] + waxed_oxidized_copper_door[facing=east,half=lower,hinge=left,open=true,powered=true]: waxed_oxidized_copper_door[facing=east,half=lower,hinge=left,open=true,powered=false] + waxed_oxidized_copper_door[facing=east,half=lower,hinge=right,open=true,powered=true]: waxed_oxidized_copper_door[facing=east,half=lower,hinge=right,open=true,powered=false] + waxed_oxidized_copper_door[facing=east,half=upper,hinge=left,open=true,powered=true]: waxed_oxidized_copper_door[facing=east,half=upper,hinge=left,open=true,powered=false] + waxed_oxidized_copper_door[facing=east,half=upper,hinge=right,open=true,powered=true]: waxed_oxidized_copper_door[facing=east,half=upper,hinge=right,open=true,powered=false] + waxed_oxidized_copper_door[facing=north,half=lower,hinge=left,open=false,powered=true]: waxed_oxidized_copper_door[facing=north,half=lower,hinge=left,open=false,powered=false] + waxed_oxidized_copper_door[facing=north,half=lower,hinge=right,open=false,powered=true]: waxed_oxidized_copper_door[facing=north,half=lower,hinge=right,open=false,powered=false] + waxed_oxidized_copper_door[facing=north,half=upper,hinge=left,open=false,powered=true]: waxed_oxidized_copper_door[facing=north,half=upper,hinge=left,open=false,powered=false] + waxed_oxidized_copper_door[facing=north,half=upper,hinge=right,open=false,powered=true]: waxed_oxidized_copper_door[facing=north,half=upper,hinge=right,open=false,powered=false] + waxed_oxidized_copper_door[facing=north,half=lower,hinge=left,open=true,powered=true]: waxed_oxidized_copper_door[facing=north,half=lower,hinge=left,open=true,powered=false] + waxed_oxidized_copper_door[facing=north,half=lower,hinge=right,open=true,powered=true]: waxed_oxidized_copper_door[facing=north,half=lower,hinge=right,open=true,powered=false] + waxed_oxidized_copper_door[facing=north,half=upper,hinge=left,open=true,powered=true]: waxed_oxidized_copper_door[facing=north,half=upper,hinge=left,open=true,powered=false] + waxed_oxidized_copper_door[facing=north,half=upper,hinge=right,open=true,powered=true]: waxed_oxidized_copper_door[facing=north,half=upper,hinge=right,open=true,powered=false] + waxed_oxidized_copper_door[facing=south,half=lower,hinge=left,open=false,powered=true]: waxed_oxidized_copper_door[facing=south,half=lower,hinge=left,open=false,powered=false] + waxed_oxidized_copper_door[facing=south,half=lower,hinge=right,open=false,powered=true]: waxed_oxidized_copper_door[facing=south,half=lower,hinge=right,open=false,powered=false] + waxed_oxidized_copper_door[facing=south,half=upper,hinge=left,open=false,powered=true]: waxed_oxidized_copper_door[facing=south,half=upper,hinge=left,open=false,powered=false] + waxed_oxidized_copper_door[facing=south,half=upper,hinge=right,open=false,powered=true]: waxed_oxidized_copper_door[facing=south,half=upper,hinge=right,open=false,powered=false] + waxed_oxidized_copper_door[facing=south,half=lower,hinge=left,open=true,powered=true]: waxed_oxidized_copper_door[facing=south,half=lower,hinge=left,open=true,powered=false] + waxed_oxidized_copper_door[facing=south,half=lower,hinge=right,open=true,powered=true]: waxed_oxidized_copper_door[facing=south,half=lower,hinge=right,open=true,powered=false] + waxed_oxidized_copper_door[facing=south,half=upper,hinge=left,open=true,powered=true]: waxed_oxidized_copper_door[facing=south,half=upper,hinge=left,open=true,powered=false] + waxed_oxidized_copper_door[facing=south,half=upper,hinge=right,open=true,powered=true]: waxed_oxidized_copper_door[facing=south,half=upper,hinge=right,open=true,powered=false] + waxed_oxidized_copper_door[facing=west,half=lower,hinge=left,open=false,powered=true]: waxed_oxidized_copper_door[facing=west,half=lower,hinge=left,open=false,powered=false] + waxed_oxidized_copper_door[facing=west,half=lower,hinge=right,open=false,powered=true]: waxed_oxidized_copper_door[facing=west,half=lower,hinge=right,open=false,powered=false] + waxed_oxidized_copper_door[facing=west,half=upper,hinge=left,open=false,powered=true]: waxed_oxidized_copper_door[facing=west,half=upper,hinge=left,open=false,powered=false] + waxed_oxidized_copper_door[facing=west,half=upper,hinge=right,open=false,powered=true]: waxed_oxidized_copper_door[facing=west,half=upper,hinge=right,open=false,powered=false] + waxed_oxidized_copper_door[facing=west,half=lower,hinge=left,open=true,powered=true]: waxed_oxidized_copper_door[facing=west,half=lower,hinge=left,open=true,powered=false] + waxed_oxidized_copper_door[facing=west,half=lower,hinge=right,open=true,powered=true]: waxed_oxidized_copper_door[facing=west,half=lower,hinge=right,open=true,powered=false] + waxed_oxidized_copper_door[facing=west,half=upper,hinge=left,open=true,powered=true]: waxed_oxidized_copper_door[facing=west,half=upper,hinge=left,open=true,powered=false] + waxed_oxidized_copper_door[facing=west,half=upper,hinge=right,open=true,powered=true]: waxed_oxidized_copper_door[facing=west,half=upper,hinge=right,open=true,powered=false] $$>=1.21.4#door: - minecraft:pale_oak_door[facing=east,half=lower,hinge=left,open=false,powered=true]: minecraft:pale_oak_door[facing=east,half=lower,hinge=left,open=false,powered=false] - minecraft:pale_oak_door[facing=east,half=lower,hinge=right,open=false,powered=true]: minecraft:pale_oak_door[facing=east,half=lower,hinge=right,open=false,powered=false] - minecraft:pale_oak_door[facing=east,half=upper,hinge=left,open=false,powered=true]: minecraft:pale_oak_door[facing=east,half=upper,hinge=left,open=false,powered=false] - minecraft:pale_oak_door[facing=east,half=upper,hinge=right,open=false,powered=true]: minecraft:pale_oak_door[facing=east,half=upper,hinge=right,open=false,powered=false] - minecraft:pale_oak_door[facing=east,half=lower,hinge=left,open=true,powered=true]: minecraft:pale_oak_door[facing=east,half=lower,hinge=left,open=true,powered=false] - minecraft:pale_oak_door[facing=east,half=lower,hinge=right,open=true,powered=true]: minecraft:pale_oak_door[facing=east,half=lower,hinge=right,open=true,powered=false] - minecraft:pale_oak_door[facing=east,half=upper,hinge=left,open=true,powered=true]: minecraft:pale_oak_door[facing=east,half=upper,hinge=left,open=true,powered=false] - minecraft:pale_oak_door[facing=east,half=upper,hinge=right,open=true,powered=true]: minecraft:pale_oak_door[facing=east,half=upper,hinge=right,open=true,powered=false] - minecraft:pale_oak_door[facing=north,half=lower,hinge=left,open=false,powered=true]: minecraft:pale_oak_door[facing=north,half=lower,hinge=left,open=false,powered=false] - minecraft:pale_oak_door[facing=north,half=lower,hinge=right,open=false,powered=true]: minecraft:pale_oak_door[facing=north,half=lower,hinge=right,open=false,powered=false] - minecraft:pale_oak_door[facing=north,half=upper,hinge=left,open=false,powered=true]: minecraft:pale_oak_door[facing=north,half=upper,hinge=left,open=false,powered=false] - minecraft:pale_oak_door[facing=north,half=upper,hinge=right,open=false,powered=true]: minecraft:pale_oak_door[facing=north,half=upper,hinge=right,open=false,powered=false] - minecraft:pale_oak_door[facing=north,half=lower,hinge=left,open=true,powered=true]: minecraft:pale_oak_door[facing=north,half=lower,hinge=left,open=true,powered=false] - minecraft:pale_oak_door[facing=north,half=lower,hinge=right,open=true,powered=true]: minecraft:pale_oak_door[facing=north,half=lower,hinge=right,open=true,powered=false] - minecraft:pale_oak_door[facing=north,half=upper,hinge=left,open=true,powered=true]: minecraft:pale_oak_door[facing=north,half=upper,hinge=left,open=true,powered=false] - minecraft:pale_oak_door[facing=north,half=upper,hinge=right,open=true,powered=true]: minecraft:pale_oak_door[facing=north,half=upper,hinge=right,open=true,powered=false] - minecraft:pale_oak_door[facing=south,half=lower,hinge=left,open=false,powered=true]: minecraft:pale_oak_door[facing=south,half=lower,hinge=left,open=false,powered=false] - minecraft:pale_oak_door[facing=south,half=lower,hinge=right,open=false,powered=true]: minecraft:pale_oak_door[facing=south,half=lower,hinge=right,open=false,powered=false] - minecraft:pale_oak_door[facing=south,half=upper,hinge=left,open=false,powered=true]: minecraft:pale_oak_door[facing=south,half=upper,hinge=left,open=false,powered=false] - minecraft:pale_oak_door[facing=south,half=upper,hinge=right,open=false,powered=true]: minecraft:pale_oak_door[facing=south,half=upper,hinge=right,open=false,powered=false] - minecraft:pale_oak_door[facing=south,half=lower,hinge=left,open=true,powered=true]: minecraft:pale_oak_door[facing=south,half=lower,hinge=left,open=true,powered=false] - minecraft:pale_oak_door[facing=south,half=lower,hinge=right,open=true,powered=true]: minecraft:pale_oak_door[facing=south,half=lower,hinge=right,open=true,powered=false] - minecraft:pale_oak_door[facing=south,half=upper,hinge=left,open=true,powered=true]: minecraft:pale_oak_door[facing=south,half=upper,hinge=left,open=true,powered=false] - minecraft:pale_oak_door[facing=south,half=upper,hinge=right,open=true,powered=true]: minecraft:pale_oak_door[facing=south,half=upper,hinge=right,open=true,powered=false] - minecraft:pale_oak_door[facing=west,half=lower,hinge=left,open=false,powered=true]: minecraft:pale_oak_door[facing=west,half=lower,hinge=left,open=false,powered=false] - minecraft:pale_oak_door[facing=west,half=lower,hinge=right,open=false,powered=true]: minecraft:pale_oak_door[facing=west,half=lower,hinge=right,open=false,powered=false] - minecraft:pale_oak_door[facing=west,half=upper,hinge=left,open=false,powered=true]: minecraft:pale_oak_door[facing=west,half=upper,hinge=left,open=false,powered=false] - minecraft:pale_oak_door[facing=west,half=upper,hinge=right,open=false,powered=true]: minecraft:pale_oak_door[facing=west,half=upper,hinge=right,open=false,powered=false] - minecraft:pale_oak_door[facing=west,half=lower,hinge=left,open=true,powered=true]: minecraft:pale_oak_door[facing=west,half=lower,hinge=left,open=true,powered=false] - minecraft:pale_oak_door[facing=west,half=lower,hinge=right,open=true,powered=true]: minecraft:pale_oak_door[facing=west,half=lower,hinge=right,open=true,powered=false] - minecraft:pale_oak_door[facing=west,half=upper,hinge=left,open=true,powered=true]: minecraft:pale_oak_door[facing=west,half=upper,hinge=left,open=true,powered=false] - minecraft:pale_oak_door[facing=west,half=upper,hinge=right,open=true,powered=true]: minecraft:pale_oak_door[facing=west,half=upper,hinge=right,open=true,powered=false] + pale_oak_door[facing=east,half=lower,hinge=left,open=false,powered=true]: pale_oak_door[facing=east,half=lower,hinge=left,open=false,powered=false] + pale_oak_door[facing=east,half=lower,hinge=right,open=false,powered=true]: pale_oak_door[facing=east,half=lower,hinge=right,open=false,powered=false] + pale_oak_door[facing=east,half=upper,hinge=left,open=false,powered=true]: pale_oak_door[facing=east,half=upper,hinge=left,open=false,powered=false] + pale_oak_door[facing=east,half=upper,hinge=right,open=false,powered=true]: pale_oak_door[facing=east,half=upper,hinge=right,open=false,powered=false] + pale_oak_door[facing=east,half=lower,hinge=left,open=true,powered=true]: pale_oak_door[facing=east,half=lower,hinge=left,open=true,powered=false] + pale_oak_door[facing=east,half=lower,hinge=right,open=true,powered=true]: pale_oak_door[facing=east,half=lower,hinge=right,open=true,powered=false] + pale_oak_door[facing=east,half=upper,hinge=left,open=true,powered=true]: pale_oak_door[facing=east,half=upper,hinge=left,open=true,powered=false] + pale_oak_door[facing=east,half=upper,hinge=right,open=true,powered=true]: pale_oak_door[facing=east,half=upper,hinge=right,open=true,powered=false] + pale_oak_door[facing=north,half=lower,hinge=left,open=false,powered=true]: pale_oak_door[facing=north,half=lower,hinge=left,open=false,powered=false] + pale_oak_door[facing=north,half=lower,hinge=right,open=false,powered=true]: pale_oak_door[facing=north,half=lower,hinge=right,open=false,powered=false] + pale_oak_door[facing=north,half=upper,hinge=left,open=false,powered=true]: pale_oak_door[facing=north,half=upper,hinge=left,open=false,powered=false] + pale_oak_door[facing=north,half=upper,hinge=right,open=false,powered=true]: pale_oak_door[facing=north,half=upper,hinge=right,open=false,powered=false] + pale_oak_door[facing=north,half=lower,hinge=left,open=true,powered=true]: pale_oak_door[facing=north,half=lower,hinge=left,open=true,powered=false] + pale_oak_door[facing=north,half=lower,hinge=right,open=true,powered=true]: pale_oak_door[facing=north,half=lower,hinge=right,open=true,powered=false] + pale_oak_door[facing=north,half=upper,hinge=left,open=true,powered=true]: pale_oak_door[facing=north,half=upper,hinge=left,open=true,powered=false] + pale_oak_door[facing=north,half=upper,hinge=right,open=true,powered=true]: pale_oak_door[facing=north,half=upper,hinge=right,open=true,powered=false] + pale_oak_door[facing=south,half=lower,hinge=left,open=false,powered=true]: pale_oak_door[facing=south,half=lower,hinge=left,open=false,powered=false] + pale_oak_door[facing=south,half=lower,hinge=right,open=false,powered=true]: pale_oak_door[facing=south,half=lower,hinge=right,open=false,powered=false] + pale_oak_door[facing=south,half=upper,hinge=left,open=false,powered=true]: pale_oak_door[facing=south,half=upper,hinge=left,open=false,powered=false] + pale_oak_door[facing=south,half=upper,hinge=right,open=false,powered=true]: pale_oak_door[facing=south,half=upper,hinge=right,open=false,powered=false] + pale_oak_door[facing=south,half=lower,hinge=left,open=true,powered=true]: pale_oak_door[facing=south,half=lower,hinge=left,open=true,powered=false] + pale_oak_door[facing=south,half=lower,hinge=right,open=true,powered=true]: pale_oak_door[facing=south,half=lower,hinge=right,open=true,powered=false] + pale_oak_door[facing=south,half=upper,hinge=left,open=true,powered=true]: pale_oak_door[facing=south,half=upper,hinge=left,open=true,powered=false] + pale_oak_door[facing=south,half=upper,hinge=right,open=true,powered=true]: pale_oak_door[facing=south,half=upper,hinge=right,open=true,powered=false] + pale_oak_door[facing=west,half=lower,hinge=left,open=false,powered=true]: pale_oak_door[facing=west,half=lower,hinge=left,open=false,powered=false] + pale_oak_door[facing=west,half=lower,hinge=right,open=false,powered=true]: pale_oak_door[facing=west,half=lower,hinge=right,open=false,powered=false] + pale_oak_door[facing=west,half=upper,hinge=left,open=false,powered=true]: pale_oak_door[facing=west,half=upper,hinge=left,open=false,powered=false] + pale_oak_door[facing=west,half=upper,hinge=right,open=false,powered=true]: pale_oak_door[facing=west,half=upper,hinge=right,open=false,powered=false] + pale_oak_door[facing=west,half=lower,hinge=left,open=true,powered=true]: pale_oak_door[facing=west,half=lower,hinge=left,open=true,powered=false] + pale_oak_door[facing=west,half=lower,hinge=right,open=true,powered=true]: pale_oak_door[facing=west,half=lower,hinge=right,open=true,powered=false] + pale_oak_door[facing=west,half=upper,hinge=left,open=true,powered=true]: pale_oak_door[facing=west,half=upper,hinge=left,open=true,powered=false] + pale_oak_door[facing=west,half=upper,hinge=right,open=true,powered=true]: pale_oak_door[facing=west,half=upper,hinge=right,open=true,powered=false] #### Fence Gate #### - minecraft:oak_fence_gate[facing=east,in_wall=false,open=false,powered=true]: minecraft:oak_fence_gate[facing=east,in_wall=false,open=false,powered=false] - minecraft:oak_fence_gate[facing=east,in_wall=false,open=true,powered=true]: minecraft:oak_fence_gate[facing=east,in_wall=false,open=true,powered=false] - minecraft:oak_fence_gate[facing=east,in_wall=true,open=false,powered=true]: minecraft:oak_fence_gate[facing=east,in_wall=true,open=false,powered=false] - minecraft:oak_fence_gate[facing=east,in_wall=true,open=true,powered=true]: minecraft:oak_fence_gate[facing=east,in_wall=true,open=true,powered=false] - minecraft:oak_fence_gate[facing=south,in_wall=false,open=false,powered=true]: minecraft:oak_fence_gate[facing=south,in_wall=false,open=false,powered=false] - minecraft:oak_fence_gate[facing=south,in_wall=false,open=true,powered=true]: minecraft:oak_fence_gate[facing=south,in_wall=false,open=true,powered=false] - minecraft:oak_fence_gate[facing=south,in_wall=true,open=false,powered=true]: minecraft:oak_fence_gate[facing=south,in_wall=true,open=false,powered=false] - minecraft:oak_fence_gate[facing=south,in_wall=true,open=true,powered=true]: minecraft:oak_fence_gate[facing=south,in_wall=true,open=true,powered=false] - minecraft:oak_fence_gate[facing=west,in_wall=false,open=false,powered=true]: minecraft:oak_fence_gate[facing=west,in_wall=false,open=false,powered=false] - minecraft:oak_fence_gate[facing=west,in_wall=false,open=true,powered=true]: minecraft:oak_fence_gate[facing=west,in_wall=false,open=true,powered=false] - minecraft:oak_fence_gate[facing=west,in_wall=true,open=false,powered=true]: minecraft:oak_fence_gate[facing=west,in_wall=true,open=false,powered=false] - minecraft:oak_fence_gate[facing=west,in_wall=true,open=true,powered=true]: minecraft:oak_fence_gate[facing=west,in_wall=true,open=true,powered=false] - minecraft:oak_fence_gate[facing=north,in_wall=false,open=false,powered=true]: minecraft:oak_fence_gate[facing=north,in_wall=false,open=false,powered=false] - minecraft:oak_fence_gate[facing=north,in_wall=false,open=true,powered=true]: minecraft:oak_fence_gate[facing=north,in_wall=false,open=true,powered=false] - minecraft:oak_fence_gate[facing=north,in_wall=true,open=false,powered=true]: minecraft:oak_fence_gate[facing=north,in_wall=true,open=false,powered=false] - minecraft:oak_fence_gate[facing=north,in_wall=true,open=true,powered=true]: minecraft:oak_fence_gate[facing=north,in_wall=true,open=true,powered=false] - minecraft:spruce_fence_gate[facing=east,in_wall=false,open=false,powered=true]: minecraft:spruce_fence_gate[facing=east,in_wall=false,open=false,powered=false] - minecraft:spruce_fence_gate[facing=east,in_wall=false,open=true,powered=true]: minecraft:spruce_fence_gate[facing=east,in_wall=false,open=true,powered=false] - minecraft:spruce_fence_gate[facing=east,in_wall=true,open=false,powered=true]: minecraft:spruce_fence_gate[facing=east,in_wall=true,open=false,powered=false] - minecraft:spruce_fence_gate[facing=east,in_wall=true,open=true,powered=true]: minecraft:spruce_fence_gate[facing=east,in_wall=true,open=true,powered=false] - minecraft:spruce_fence_gate[facing=south,in_wall=false,open=false,powered=true]: minecraft:spruce_fence_gate[facing=south,in_wall=false,open=false,powered=false] - minecraft:spruce_fence_gate[facing=south,in_wall=false,open=true,powered=true]: minecraft:spruce_fence_gate[facing=south,in_wall=false,open=true,powered=false] - minecraft:spruce_fence_gate[facing=south,in_wall=true,open=false,powered=true]: minecraft:spruce_fence_gate[facing=south,in_wall=true,open=false,powered=false] - minecraft:spruce_fence_gate[facing=south,in_wall=true,open=true,powered=true]: minecraft:spruce_fence_gate[facing=south,in_wall=true,open=true,powered=false] - minecraft:spruce_fence_gate[facing=west,in_wall=false,open=false,powered=true]: minecraft:spruce_fence_gate[facing=west,in_wall=false,open=false,powered=false] - minecraft:spruce_fence_gate[facing=west,in_wall=false,open=true,powered=true]: minecraft:spruce_fence_gate[facing=west,in_wall=false,open=true,powered=false] - minecraft:spruce_fence_gate[facing=west,in_wall=true,open=false,powered=true]: minecraft:spruce_fence_gate[facing=west,in_wall=true,open=false,powered=false] - minecraft:spruce_fence_gate[facing=west,in_wall=true,open=true,powered=true]: minecraft:spruce_fence_gate[facing=west,in_wall=true,open=true,powered=false] - minecraft:spruce_fence_gate[facing=north,in_wall=false,open=false,powered=true]: minecraft:spruce_fence_gate[facing=north,in_wall=false,open=false,powered=false] - minecraft:spruce_fence_gate[facing=north,in_wall=false,open=true,powered=true]: minecraft:spruce_fence_gate[facing=north,in_wall=false,open=true,powered=false] - minecraft:spruce_fence_gate[facing=north,in_wall=true,open=false,powered=true]: minecraft:spruce_fence_gate[facing=north,in_wall=true,open=false,powered=false] - minecraft:spruce_fence_gate[facing=north,in_wall=true,open=true,powered=true]: minecraft:spruce_fence_gate[facing=north,in_wall=true,open=true,powered=false] - minecraft:birch_fence_gate[facing=east,in_wall=false,open=false,powered=true]: minecraft:birch_fence_gate[facing=east,in_wall=false,open=false,powered=false] - minecraft:birch_fence_gate[facing=east,in_wall=false,open=true,powered=true]: minecraft:birch_fence_gate[facing=east,in_wall=false,open=true,powered=false] - minecraft:birch_fence_gate[facing=east,in_wall=true,open=false,powered=true]: minecraft:birch_fence_gate[facing=east,in_wall=true,open=false,powered=false] - minecraft:birch_fence_gate[facing=east,in_wall=true,open=true,powered=true]: minecraft:birch_fence_gate[facing=east,in_wall=true,open=true,powered=false] - minecraft:birch_fence_gate[facing=south,in_wall=false,open=false,powered=true]: minecraft:birch_fence_gate[facing=south,in_wall=false,open=false,powered=false] - minecraft:birch_fence_gate[facing=south,in_wall=false,open=true,powered=true]: minecraft:birch_fence_gate[facing=south,in_wall=false,open=true,powered=false] - minecraft:birch_fence_gate[facing=south,in_wall=true,open=false,powered=true]: minecraft:birch_fence_gate[facing=south,in_wall=true,open=false,powered=false] - minecraft:birch_fence_gate[facing=south,in_wall=true,open=true,powered=true]: minecraft:birch_fence_gate[facing=south,in_wall=true,open=true,powered=false] - minecraft:birch_fence_gate[facing=west,in_wall=false,open=false,powered=true]: minecraft:birch_fence_gate[facing=west,in_wall=false,open=false,powered=false] - minecraft:birch_fence_gate[facing=west,in_wall=false,open=true,powered=true]: minecraft:birch_fence_gate[facing=west,in_wall=false,open=true,powered=false] - minecraft:birch_fence_gate[facing=west,in_wall=true,open=false,powered=true]: minecraft:birch_fence_gate[facing=west,in_wall=true,open=false,powered=false] - minecraft:birch_fence_gate[facing=west,in_wall=true,open=true,powered=true]: minecraft:birch_fence_gate[facing=west,in_wall=true,open=true,powered=false] - minecraft:birch_fence_gate[facing=north,in_wall=false,open=false,powered=true]: minecraft:birch_fence_gate[facing=north,in_wall=false,open=false,powered=false] - minecraft:birch_fence_gate[facing=north,in_wall=false,open=true,powered=true]: minecraft:birch_fence_gate[facing=north,in_wall=false,open=true,powered=false] - minecraft:birch_fence_gate[facing=north,in_wall=true,open=false,powered=true]: minecraft:birch_fence_gate[facing=north,in_wall=true,open=false,powered=false] - minecraft:birch_fence_gate[facing=north,in_wall=true,open=true,powered=true]: minecraft:birch_fence_gate[facing=north,in_wall=true,open=true,powered=false] - minecraft:jungle_fence_gate[facing=east,in_wall=false,open=false,powered=true]: minecraft:jungle_fence_gate[facing=east,in_wall=false,open=false,powered=false] - minecraft:jungle_fence_gate[facing=east,in_wall=false,open=true,powered=true]: minecraft:jungle_fence_gate[facing=east,in_wall=false,open=true,powered=false] - minecraft:jungle_fence_gate[facing=east,in_wall=true,open=false,powered=true]: minecraft:jungle_fence_gate[facing=east,in_wall=true,open=false,powered=false] - minecraft:jungle_fence_gate[facing=east,in_wall=true,open=true,powered=true]: minecraft:jungle_fence_gate[facing=east,in_wall=true,open=true,powered=false] - minecraft:jungle_fence_gate[facing=south,in_wall=false,open=false,powered=true]: minecraft:jungle_fence_gate[facing=south,in_wall=false,open=false,powered=false] - minecraft:jungle_fence_gate[facing=south,in_wall=false,open=true,powered=true]: minecraft:jungle_fence_gate[facing=south,in_wall=false,open=true,powered=false] - minecraft:jungle_fence_gate[facing=south,in_wall=true,open=false,powered=true]: minecraft:jungle_fence_gate[facing=south,in_wall=true,open=false,powered=false] - minecraft:jungle_fence_gate[facing=south,in_wall=true,open=true,powered=true]: minecraft:jungle_fence_gate[facing=south,in_wall=true,open=true,powered=false] - minecraft:jungle_fence_gate[facing=west,in_wall=false,open=false,powered=true]: minecraft:jungle_fence_gate[facing=west,in_wall=false,open=false,powered=false] - minecraft:jungle_fence_gate[facing=west,in_wall=false,open=true,powered=true]: minecraft:jungle_fence_gate[facing=west,in_wall=false,open=true,powered=false] - minecraft:jungle_fence_gate[facing=west,in_wall=true,open=false,powered=true]: minecraft:jungle_fence_gate[facing=west,in_wall=true,open=false,powered=false] - minecraft:jungle_fence_gate[facing=west,in_wall=true,open=true,powered=true]: minecraft:jungle_fence_gate[facing=west,in_wall=true,open=true,powered=false] - minecraft:jungle_fence_gate[facing=north,in_wall=false,open=false,powered=true]: minecraft:jungle_fence_gate[facing=north,in_wall=false,open=false,powered=false] - minecraft:jungle_fence_gate[facing=north,in_wall=false,open=true,powered=true]: minecraft:jungle_fence_gate[facing=north,in_wall=false,open=true,powered=false] - minecraft:jungle_fence_gate[facing=north,in_wall=true,open=false,powered=true]: minecraft:jungle_fence_gate[facing=north,in_wall=true,open=false,powered=false] - minecraft:jungle_fence_gate[facing=north,in_wall=true,open=true,powered=true]: minecraft:jungle_fence_gate[facing=north,in_wall=true,open=true,powered=false] - minecraft:acacia_fence_gate[facing=east,in_wall=false,open=false,powered=true]: minecraft:acacia_fence_gate[facing=east,in_wall=false,open=false,powered=false] - minecraft:acacia_fence_gate[facing=east,in_wall=false,open=true,powered=true]: minecraft:acacia_fence_gate[facing=east,in_wall=false,open=true,powered=false] - minecraft:acacia_fence_gate[facing=east,in_wall=true,open=false,powered=true]: minecraft:acacia_fence_gate[facing=east,in_wall=true,open=false,powered=false] - minecraft:acacia_fence_gate[facing=east,in_wall=true,open=true,powered=true]: minecraft:acacia_fence_gate[facing=east,in_wall=true,open=true,powered=false] - minecraft:acacia_fence_gate[facing=south,in_wall=false,open=false,powered=true]: minecraft:acacia_fence_gate[facing=south,in_wall=false,open=false,powered=false] - minecraft:acacia_fence_gate[facing=south,in_wall=false,open=true,powered=true]: minecraft:acacia_fence_gate[facing=south,in_wall=false,open=true,powered=false] - minecraft:acacia_fence_gate[facing=south,in_wall=true,open=false,powered=true]: minecraft:acacia_fence_gate[facing=south,in_wall=true,open=false,powered=false] - minecraft:acacia_fence_gate[facing=south,in_wall=true,open=true,powered=true]: minecraft:acacia_fence_gate[facing=south,in_wall=true,open=true,powered=false] - minecraft:acacia_fence_gate[facing=west,in_wall=false,open=false,powered=true]: minecraft:acacia_fence_gate[facing=west,in_wall=false,open=false,powered=false] - minecraft:acacia_fence_gate[facing=west,in_wall=false,open=true,powered=true]: minecraft:acacia_fence_gate[facing=west,in_wall=false,open=true,powered=false] - minecraft:acacia_fence_gate[facing=west,in_wall=true,open=false,powered=true]: minecraft:acacia_fence_gate[facing=west,in_wall=true,open=false,powered=false] - minecraft:acacia_fence_gate[facing=west,in_wall=true,open=true,powered=true]: minecraft:acacia_fence_gate[facing=west,in_wall=true,open=true,powered=false] - minecraft:acacia_fence_gate[facing=north,in_wall=false,open=false,powered=true]: minecraft:acacia_fence_gate[facing=north,in_wall=false,open=false,powered=false] - minecraft:acacia_fence_gate[facing=north,in_wall=false,open=true,powered=true]: minecraft:acacia_fence_gate[facing=north,in_wall=false,open=true,powered=false] - minecraft:acacia_fence_gate[facing=north,in_wall=true,open=false,powered=true]: minecraft:acacia_fence_gate[facing=north,in_wall=true,open=false,powered=false] - minecraft:acacia_fence_gate[facing=north,in_wall=true,open=true,powered=true]: minecraft:acacia_fence_gate[facing=north,in_wall=true,open=true,powered=false] - minecraft:dark_oak_fence_gate[facing=east,in_wall=false,open=false,powered=true]: minecraft:dark_oak_fence_gate[facing=east,in_wall=false,open=false,powered=false] - minecraft:dark_oak_fence_gate[facing=east,in_wall=false,open=true,powered=true]: minecraft:dark_oak_fence_gate[facing=east,in_wall=false,open=true,powered=false] - minecraft:dark_oak_fence_gate[facing=east,in_wall=true,open=false,powered=true]: minecraft:dark_oak_fence_gate[facing=east,in_wall=true,open=false,powered=false] - minecraft:dark_oak_fence_gate[facing=east,in_wall=true,open=true,powered=true]: minecraft:dark_oak_fence_gate[facing=east,in_wall=true,open=true,powered=false] - minecraft:dark_oak_fence_gate[facing=south,in_wall=false,open=false,powered=true]: minecraft:dark_oak_fence_gate[facing=south,in_wall=false,open=false,powered=false] - minecraft:dark_oak_fence_gate[facing=south,in_wall=false,open=true,powered=true]: minecraft:dark_oak_fence_gate[facing=south,in_wall=false,open=true,powered=false] - minecraft:dark_oak_fence_gate[facing=south,in_wall=true,open=false,powered=true]: minecraft:dark_oak_fence_gate[facing=south,in_wall=true,open=false,powered=false] - minecraft:dark_oak_fence_gate[facing=south,in_wall=true,open=true,powered=true]: minecraft:dark_oak_fence_gate[facing=south,in_wall=true,open=true,powered=false] - minecraft:dark_oak_fence_gate[facing=west,in_wall=false,open=false,powered=true]: minecraft:dark_oak_fence_gate[facing=west,in_wall=false,open=false,powered=false] - minecraft:dark_oak_fence_gate[facing=west,in_wall=false,open=true,powered=true]: minecraft:dark_oak_fence_gate[facing=west,in_wall=false,open=true,powered=false] - minecraft:dark_oak_fence_gate[facing=west,in_wall=true,open=false,powered=true]: minecraft:dark_oak_fence_gate[facing=west,in_wall=true,open=false,powered=false] - minecraft:dark_oak_fence_gate[facing=west,in_wall=true,open=true,powered=true]: minecraft:dark_oak_fence_gate[facing=west,in_wall=true,open=true,powered=false] - minecraft:dark_oak_fence_gate[facing=north,in_wall=false,open=false,powered=true]: minecraft:dark_oak_fence_gate[facing=north,in_wall=false,open=false,powered=false] - minecraft:dark_oak_fence_gate[facing=north,in_wall=false,open=true,powered=true]: minecraft:dark_oak_fence_gate[facing=north,in_wall=false,open=true,powered=false] - minecraft:dark_oak_fence_gate[facing=north,in_wall=true,open=false,powered=true]: minecraft:dark_oak_fence_gate[facing=north,in_wall=true,open=false,powered=false] - minecraft:dark_oak_fence_gate[facing=north,in_wall=true,open=true,powered=true]: minecraft:dark_oak_fence_gate[facing=north,in_wall=true,open=true,powered=false] - minecraft:mangrove_fence_gate[facing=east,in_wall=false,open=false,powered=true]: minecraft:mangrove_fence_gate[facing=east,in_wall=false,open=false,powered=false] - minecraft:mangrove_fence_gate[facing=east,in_wall=false,open=true,powered=true]: minecraft:mangrove_fence_gate[facing=east,in_wall=false,open=true,powered=false] - minecraft:mangrove_fence_gate[facing=east,in_wall=true,open=false,powered=true]: minecraft:mangrove_fence_gate[facing=east,in_wall=true,open=false,powered=false] - minecraft:mangrove_fence_gate[facing=east,in_wall=true,open=true,powered=true]: minecraft:mangrove_fence_gate[facing=east,in_wall=true,open=true,powered=false] - minecraft:mangrove_fence_gate[facing=south,in_wall=false,open=false,powered=true]: minecraft:mangrove_fence_gate[facing=south,in_wall=false,open=false,powered=false] - minecraft:mangrove_fence_gate[facing=south,in_wall=false,open=true,powered=true]: minecraft:mangrove_fence_gate[facing=south,in_wall=false,open=true,powered=false] - minecraft:mangrove_fence_gate[facing=south,in_wall=true,open=false,powered=true]: minecraft:mangrove_fence_gate[facing=south,in_wall=true,open=false,powered=false] - minecraft:mangrove_fence_gate[facing=south,in_wall=true,open=true,powered=true]: minecraft:mangrove_fence_gate[facing=south,in_wall=true,open=true,powered=false] - minecraft:mangrove_fence_gate[facing=west,in_wall=false,open=false,powered=true]: minecraft:mangrove_fence_gate[facing=west,in_wall=false,open=false,powered=false] - minecraft:mangrove_fence_gate[facing=west,in_wall=false,open=true,powered=true]: minecraft:mangrove_fence_gate[facing=west,in_wall=false,open=true,powered=false] - minecraft:mangrove_fence_gate[facing=west,in_wall=true,open=false,powered=true]: minecraft:mangrove_fence_gate[facing=west,in_wall=true,open=false,powered=false] - minecraft:mangrove_fence_gate[facing=west,in_wall=true,open=true,powered=true]: minecraft:mangrove_fence_gate[facing=west,in_wall=true,open=true,powered=false] - minecraft:mangrove_fence_gate[facing=north,in_wall=false,open=false,powered=true]: minecraft:mangrove_fence_gate[facing=north,in_wall=false,open=false,powered=false] - minecraft:mangrove_fence_gate[facing=north,in_wall=false,open=true,powered=true]: minecraft:mangrove_fence_gate[facing=north,in_wall=false,open=true,powered=false] - minecraft:mangrove_fence_gate[facing=north,in_wall=true,open=false,powered=true]: minecraft:mangrove_fence_gate[facing=north,in_wall=true,open=false,powered=false] - minecraft:mangrove_fence_gate[facing=north,in_wall=true,open=true,powered=true]: minecraft:mangrove_fence_gate[facing=north,in_wall=true,open=true,powered=false] - minecraft:cherry_fence_gate[facing=east,in_wall=false,open=false,powered=true]: minecraft:cherry_fence_gate[facing=east,in_wall=false,open=false,powered=false] - minecraft:cherry_fence_gate[facing=east,in_wall=false,open=true,powered=true]: minecraft:cherry_fence_gate[facing=east,in_wall=false,open=true,powered=false] - minecraft:cherry_fence_gate[facing=east,in_wall=true,open=false,powered=true]: minecraft:cherry_fence_gate[facing=east,in_wall=true,open=false,powered=false] - minecraft:cherry_fence_gate[facing=east,in_wall=true,open=true,powered=true]: minecraft:cherry_fence_gate[facing=east,in_wall=true,open=true,powered=false] - minecraft:cherry_fence_gate[facing=south,in_wall=false,open=false,powered=true]: minecraft:cherry_fence_gate[facing=south,in_wall=false,open=false,powered=false] - minecraft:cherry_fence_gate[facing=south,in_wall=false,open=true,powered=true]: minecraft:cherry_fence_gate[facing=south,in_wall=false,open=true,powered=false] - minecraft:cherry_fence_gate[facing=south,in_wall=true,open=false,powered=true]: minecraft:cherry_fence_gate[facing=south,in_wall=true,open=false,powered=false] - minecraft:cherry_fence_gate[facing=south,in_wall=true,open=true,powered=true]: minecraft:cherry_fence_gate[facing=south,in_wall=true,open=true,powered=false] - minecraft:cherry_fence_gate[facing=west,in_wall=false,open=false,powered=true]: minecraft:cherry_fence_gate[facing=west,in_wall=false,open=false,powered=false] - minecraft:cherry_fence_gate[facing=west,in_wall=false,open=true,powered=true]: minecraft:cherry_fence_gate[facing=west,in_wall=false,open=true,powered=false] - minecraft:cherry_fence_gate[facing=west,in_wall=true,open=false,powered=true]: minecraft:cherry_fence_gate[facing=west,in_wall=true,open=false,powered=false] - minecraft:cherry_fence_gate[facing=west,in_wall=true,open=true,powered=true]: minecraft:cherry_fence_gate[facing=west,in_wall=true,open=true,powered=false] - minecraft:cherry_fence_gate[facing=north,in_wall=false,open=false,powered=true]: minecraft:cherry_fence_gate[facing=north,in_wall=false,open=false,powered=false] - minecraft:cherry_fence_gate[facing=north,in_wall=false,open=true,powered=true]: minecraft:cherry_fence_gate[facing=north,in_wall=false,open=true,powered=false] - minecraft:cherry_fence_gate[facing=north,in_wall=true,open=false,powered=true]: minecraft:cherry_fence_gate[facing=north,in_wall=true,open=false,powered=false] - minecraft:cherry_fence_gate[facing=north,in_wall=true,open=true,powered=true]: minecraft:cherry_fence_gate[facing=north,in_wall=true,open=true,powered=false] - minecraft:bamboo_fence_gate[facing=east,in_wall=false,open=false,powered=true]: minecraft:bamboo_fence_gate[facing=east,in_wall=false,open=false,powered=false] - minecraft:bamboo_fence_gate[facing=east,in_wall=false,open=true,powered=true]: minecraft:bamboo_fence_gate[facing=east,in_wall=false,open=true,powered=false] - minecraft:bamboo_fence_gate[facing=east,in_wall=true,open=false,powered=true]: minecraft:bamboo_fence_gate[facing=east,in_wall=true,open=false,powered=false] - minecraft:bamboo_fence_gate[facing=east,in_wall=true,open=true,powered=true]: minecraft:bamboo_fence_gate[facing=east,in_wall=true,open=true,powered=false] - minecraft:bamboo_fence_gate[facing=south,in_wall=false,open=false,powered=true]: minecraft:bamboo_fence_gate[facing=south,in_wall=false,open=false,powered=false] - minecraft:bamboo_fence_gate[facing=south,in_wall=false,open=true,powered=true]: minecraft:bamboo_fence_gate[facing=south,in_wall=false,open=true,powered=false] - minecraft:bamboo_fence_gate[facing=south,in_wall=true,open=false,powered=true]: minecraft:bamboo_fence_gate[facing=south,in_wall=true,open=false,powered=false] - minecraft:bamboo_fence_gate[facing=south,in_wall=true,open=true,powered=true]: minecraft:bamboo_fence_gate[facing=south,in_wall=true,open=true,powered=false] - minecraft:bamboo_fence_gate[facing=west,in_wall=false,open=false,powered=true]: minecraft:bamboo_fence_gate[facing=west,in_wall=false,open=false,powered=false] - minecraft:bamboo_fence_gate[facing=west,in_wall=false,open=true,powered=true]: minecraft:bamboo_fence_gate[facing=west,in_wall=false,open=true,powered=false] - minecraft:bamboo_fence_gate[facing=west,in_wall=true,open=false,powered=true]: minecraft:bamboo_fence_gate[facing=west,in_wall=true,open=false,powered=false] - minecraft:bamboo_fence_gate[facing=west,in_wall=true,open=true,powered=true]: minecraft:bamboo_fence_gate[facing=west,in_wall=true,open=true,powered=false] - minecraft:bamboo_fence_gate[facing=north,in_wall=false,open=false,powered=true]: minecraft:bamboo_fence_gate[facing=north,in_wall=false,open=false,powered=false] - minecraft:bamboo_fence_gate[facing=north,in_wall=false,open=true,powered=true]: minecraft:bamboo_fence_gate[facing=north,in_wall=false,open=true,powered=false] - minecraft:bamboo_fence_gate[facing=north,in_wall=true,open=false,powered=true]: minecraft:bamboo_fence_gate[facing=north,in_wall=true,open=false,powered=false] - minecraft:bamboo_fence_gate[facing=north,in_wall=true,open=true,powered=true]: minecraft:bamboo_fence_gate[facing=north,in_wall=true,open=true,powered=false] - minecraft:crimson_fence_gate[facing=east,in_wall=false,open=false,powered=true]: minecraft:crimson_fence_gate[facing=east,in_wall=false,open=false,powered=false] - minecraft:crimson_fence_gate[facing=east,in_wall=false,open=true,powered=true]: minecraft:crimson_fence_gate[facing=east,in_wall=false,open=true,powered=false] - minecraft:crimson_fence_gate[facing=east,in_wall=true,open=false,powered=true]: minecraft:crimson_fence_gate[facing=east,in_wall=true,open=false,powered=false] - minecraft:crimson_fence_gate[facing=east,in_wall=true,open=true,powered=true]: minecraft:crimson_fence_gate[facing=east,in_wall=true,open=true,powered=false] - minecraft:crimson_fence_gate[facing=south,in_wall=false,open=false,powered=true]: minecraft:crimson_fence_gate[facing=south,in_wall=false,open=false,powered=false] - minecraft:crimson_fence_gate[facing=south,in_wall=false,open=true,powered=true]: minecraft:crimson_fence_gate[facing=south,in_wall=false,open=true,powered=false] - minecraft:crimson_fence_gate[facing=south,in_wall=true,open=false,powered=true]: minecraft:crimson_fence_gate[facing=south,in_wall=true,open=false,powered=false] - minecraft:crimson_fence_gate[facing=south,in_wall=true,open=true,powered=true]: minecraft:crimson_fence_gate[facing=south,in_wall=true,open=true,powered=false] - minecraft:crimson_fence_gate[facing=west,in_wall=false,open=false,powered=true]: minecraft:crimson_fence_gate[facing=west,in_wall=false,open=false,powered=false] - minecraft:crimson_fence_gate[facing=west,in_wall=false,open=true,powered=true]: minecraft:crimson_fence_gate[facing=west,in_wall=false,open=true,powered=false] - minecraft:crimson_fence_gate[facing=west,in_wall=true,open=false,powered=true]: minecraft:crimson_fence_gate[facing=west,in_wall=true,open=false,powered=false] - minecraft:crimson_fence_gate[facing=west,in_wall=true,open=true,powered=true]: minecraft:crimson_fence_gate[facing=west,in_wall=true,open=true,powered=false] - minecraft:crimson_fence_gate[facing=north,in_wall=false,open=false,powered=true]: minecraft:crimson_fence_gate[facing=north,in_wall=false,open=false,powered=false] - minecraft:crimson_fence_gate[facing=north,in_wall=false,open=true,powered=true]: minecraft:crimson_fence_gate[facing=north,in_wall=false,open=true,powered=false] - minecraft:crimson_fence_gate[facing=north,in_wall=true,open=false,powered=true]: minecraft:crimson_fence_gate[facing=north,in_wall=true,open=false,powered=false] - minecraft:crimson_fence_gate[facing=north,in_wall=true,open=true,powered=true]: minecraft:crimson_fence_gate[facing=north,in_wall=true,open=true,powered=false] - minecraft:warped_fence_gate[facing=east,in_wall=false,open=false,powered=true]: minecraft:warped_fence_gate[facing=east,in_wall=false,open=false,powered=false] - minecraft:warped_fence_gate[facing=east,in_wall=false,open=true,powered=true]: minecraft:warped_fence_gate[facing=east,in_wall=false,open=true,powered=false] - minecraft:warped_fence_gate[facing=east,in_wall=true,open=false,powered=true]: minecraft:warped_fence_gate[facing=east,in_wall=true,open=false,powered=false] - minecraft:warped_fence_gate[facing=east,in_wall=true,open=true,powered=true]: minecraft:warped_fence_gate[facing=east,in_wall=true,open=true,powered=false] - minecraft:warped_fence_gate[facing=south,in_wall=false,open=false,powered=true]: minecraft:warped_fence_gate[facing=south,in_wall=false,open=false,powered=false] - minecraft:warped_fence_gate[facing=south,in_wall=false,open=true,powered=true]: minecraft:warped_fence_gate[facing=south,in_wall=false,open=true,powered=false] - minecraft:warped_fence_gate[facing=south,in_wall=true,open=false,powered=true]: minecraft:warped_fence_gate[facing=south,in_wall=true,open=false,powered=false] - minecraft:warped_fence_gate[facing=south,in_wall=true,open=true,powered=true]: minecraft:warped_fence_gate[facing=south,in_wall=true,open=true,powered=false] - minecraft:warped_fence_gate[facing=west,in_wall=false,open=false,powered=true]: minecraft:warped_fence_gate[facing=west,in_wall=false,open=false,powered=false] - minecraft:warped_fence_gate[facing=west,in_wall=false,open=true,powered=true]: minecraft:warped_fence_gate[facing=west,in_wall=false,open=true,powered=false] - minecraft:warped_fence_gate[facing=west,in_wall=true,open=false,powered=true]: minecraft:warped_fence_gate[facing=west,in_wall=true,open=false,powered=false] - minecraft:warped_fence_gate[facing=west,in_wall=true,open=true,powered=true]: minecraft:warped_fence_gate[facing=west,in_wall=true,open=true,powered=false] - minecraft:warped_fence_gate[facing=north,in_wall=false,open=false,powered=true]: minecraft:warped_fence_gate[facing=north,in_wall=false,open=false,powered=false] - minecraft:warped_fence_gate[facing=north,in_wall=false,open=true,powered=true]: minecraft:warped_fence_gate[facing=north,in_wall=false,open=true,powered=false] - minecraft:warped_fence_gate[facing=north,in_wall=true,open=false,powered=true]: minecraft:warped_fence_gate[facing=north,in_wall=true,open=false,powered=false] - minecraft:warped_fence_gate[facing=north,in_wall=true,open=true,powered=true]: minecraft:warped_fence_gate[facing=north,in_wall=true,open=true,powered=false] + oak_fence_gate[facing=east,in_wall=false,open=false,powered=true]: oak_fence_gate[facing=east,in_wall=false,open=false,powered=false] + oak_fence_gate[facing=east,in_wall=false,open=true,powered=true]: oak_fence_gate[facing=east,in_wall=false,open=true,powered=false] + oak_fence_gate[facing=east,in_wall=true,open=false,powered=true]: oak_fence_gate[facing=east,in_wall=true,open=false,powered=false] + oak_fence_gate[facing=east,in_wall=true,open=true,powered=true]: oak_fence_gate[facing=east,in_wall=true,open=true,powered=false] + oak_fence_gate[facing=south,in_wall=false,open=false,powered=true]: oak_fence_gate[facing=south,in_wall=false,open=false,powered=false] + oak_fence_gate[facing=south,in_wall=false,open=true,powered=true]: oak_fence_gate[facing=south,in_wall=false,open=true,powered=false] + oak_fence_gate[facing=south,in_wall=true,open=false,powered=true]: oak_fence_gate[facing=south,in_wall=true,open=false,powered=false] + oak_fence_gate[facing=south,in_wall=true,open=true,powered=true]: oak_fence_gate[facing=south,in_wall=true,open=true,powered=false] + oak_fence_gate[facing=west,in_wall=false,open=false,powered=true]: oak_fence_gate[facing=west,in_wall=false,open=false,powered=false] + oak_fence_gate[facing=west,in_wall=false,open=true,powered=true]: oak_fence_gate[facing=west,in_wall=false,open=true,powered=false] + oak_fence_gate[facing=west,in_wall=true,open=false,powered=true]: oak_fence_gate[facing=west,in_wall=true,open=false,powered=false] + oak_fence_gate[facing=west,in_wall=true,open=true,powered=true]: oak_fence_gate[facing=west,in_wall=true,open=true,powered=false] + oak_fence_gate[facing=north,in_wall=false,open=false,powered=true]: oak_fence_gate[facing=north,in_wall=false,open=false,powered=false] + oak_fence_gate[facing=north,in_wall=false,open=true,powered=true]: oak_fence_gate[facing=north,in_wall=false,open=true,powered=false] + oak_fence_gate[facing=north,in_wall=true,open=false,powered=true]: oak_fence_gate[facing=north,in_wall=true,open=false,powered=false] + oak_fence_gate[facing=north,in_wall=true,open=true,powered=true]: oak_fence_gate[facing=north,in_wall=true,open=true,powered=false] + spruce_fence_gate[facing=east,in_wall=false,open=false,powered=true]: spruce_fence_gate[facing=east,in_wall=false,open=false,powered=false] + spruce_fence_gate[facing=east,in_wall=false,open=true,powered=true]: spruce_fence_gate[facing=east,in_wall=false,open=true,powered=false] + spruce_fence_gate[facing=east,in_wall=true,open=false,powered=true]: spruce_fence_gate[facing=east,in_wall=true,open=false,powered=false] + spruce_fence_gate[facing=east,in_wall=true,open=true,powered=true]: spruce_fence_gate[facing=east,in_wall=true,open=true,powered=false] + spruce_fence_gate[facing=south,in_wall=false,open=false,powered=true]: spruce_fence_gate[facing=south,in_wall=false,open=false,powered=false] + spruce_fence_gate[facing=south,in_wall=false,open=true,powered=true]: spruce_fence_gate[facing=south,in_wall=false,open=true,powered=false] + spruce_fence_gate[facing=south,in_wall=true,open=false,powered=true]: spruce_fence_gate[facing=south,in_wall=true,open=false,powered=false] + spruce_fence_gate[facing=south,in_wall=true,open=true,powered=true]: spruce_fence_gate[facing=south,in_wall=true,open=true,powered=false] + spruce_fence_gate[facing=west,in_wall=false,open=false,powered=true]: spruce_fence_gate[facing=west,in_wall=false,open=false,powered=false] + spruce_fence_gate[facing=west,in_wall=false,open=true,powered=true]: spruce_fence_gate[facing=west,in_wall=false,open=true,powered=false] + spruce_fence_gate[facing=west,in_wall=true,open=false,powered=true]: spruce_fence_gate[facing=west,in_wall=true,open=false,powered=false] + spruce_fence_gate[facing=west,in_wall=true,open=true,powered=true]: spruce_fence_gate[facing=west,in_wall=true,open=true,powered=false] + spruce_fence_gate[facing=north,in_wall=false,open=false,powered=true]: spruce_fence_gate[facing=north,in_wall=false,open=false,powered=false] + spruce_fence_gate[facing=north,in_wall=false,open=true,powered=true]: spruce_fence_gate[facing=north,in_wall=false,open=true,powered=false] + spruce_fence_gate[facing=north,in_wall=true,open=false,powered=true]: spruce_fence_gate[facing=north,in_wall=true,open=false,powered=false] + spruce_fence_gate[facing=north,in_wall=true,open=true,powered=true]: spruce_fence_gate[facing=north,in_wall=true,open=true,powered=false] + birch_fence_gate[facing=east,in_wall=false,open=false,powered=true]: birch_fence_gate[facing=east,in_wall=false,open=false,powered=false] + birch_fence_gate[facing=east,in_wall=false,open=true,powered=true]: birch_fence_gate[facing=east,in_wall=false,open=true,powered=false] + birch_fence_gate[facing=east,in_wall=true,open=false,powered=true]: birch_fence_gate[facing=east,in_wall=true,open=false,powered=false] + birch_fence_gate[facing=east,in_wall=true,open=true,powered=true]: birch_fence_gate[facing=east,in_wall=true,open=true,powered=false] + birch_fence_gate[facing=south,in_wall=false,open=false,powered=true]: birch_fence_gate[facing=south,in_wall=false,open=false,powered=false] + birch_fence_gate[facing=south,in_wall=false,open=true,powered=true]: birch_fence_gate[facing=south,in_wall=false,open=true,powered=false] + birch_fence_gate[facing=south,in_wall=true,open=false,powered=true]: birch_fence_gate[facing=south,in_wall=true,open=false,powered=false] + birch_fence_gate[facing=south,in_wall=true,open=true,powered=true]: birch_fence_gate[facing=south,in_wall=true,open=true,powered=false] + birch_fence_gate[facing=west,in_wall=false,open=false,powered=true]: birch_fence_gate[facing=west,in_wall=false,open=false,powered=false] + birch_fence_gate[facing=west,in_wall=false,open=true,powered=true]: birch_fence_gate[facing=west,in_wall=false,open=true,powered=false] + birch_fence_gate[facing=west,in_wall=true,open=false,powered=true]: birch_fence_gate[facing=west,in_wall=true,open=false,powered=false] + birch_fence_gate[facing=west,in_wall=true,open=true,powered=true]: birch_fence_gate[facing=west,in_wall=true,open=true,powered=false] + birch_fence_gate[facing=north,in_wall=false,open=false,powered=true]: birch_fence_gate[facing=north,in_wall=false,open=false,powered=false] + birch_fence_gate[facing=north,in_wall=false,open=true,powered=true]: birch_fence_gate[facing=north,in_wall=false,open=true,powered=false] + birch_fence_gate[facing=north,in_wall=true,open=false,powered=true]: birch_fence_gate[facing=north,in_wall=true,open=false,powered=false] + birch_fence_gate[facing=north,in_wall=true,open=true,powered=true]: birch_fence_gate[facing=north,in_wall=true,open=true,powered=false] + jungle_fence_gate[facing=east,in_wall=false,open=false,powered=true]: jungle_fence_gate[facing=east,in_wall=false,open=false,powered=false] + jungle_fence_gate[facing=east,in_wall=false,open=true,powered=true]: jungle_fence_gate[facing=east,in_wall=false,open=true,powered=false] + jungle_fence_gate[facing=east,in_wall=true,open=false,powered=true]: jungle_fence_gate[facing=east,in_wall=true,open=false,powered=false] + jungle_fence_gate[facing=east,in_wall=true,open=true,powered=true]: jungle_fence_gate[facing=east,in_wall=true,open=true,powered=false] + jungle_fence_gate[facing=south,in_wall=false,open=false,powered=true]: jungle_fence_gate[facing=south,in_wall=false,open=false,powered=false] + jungle_fence_gate[facing=south,in_wall=false,open=true,powered=true]: jungle_fence_gate[facing=south,in_wall=false,open=true,powered=false] + jungle_fence_gate[facing=south,in_wall=true,open=false,powered=true]: jungle_fence_gate[facing=south,in_wall=true,open=false,powered=false] + jungle_fence_gate[facing=south,in_wall=true,open=true,powered=true]: jungle_fence_gate[facing=south,in_wall=true,open=true,powered=false] + jungle_fence_gate[facing=west,in_wall=false,open=false,powered=true]: jungle_fence_gate[facing=west,in_wall=false,open=false,powered=false] + jungle_fence_gate[facing=west,in_wall=false,open=true,powered=true]: jungle_fence_gate[facing=west,in_wall=false,open=true,powered=false] + jungle_fence_gate[facing=west,in_wall=true,open=false,powered=true]: jungle_fence_gate[facing=west,in_wall=true,open=false,powered=false] + jungle_fence_gate[facing=west,in_wall=true,open=true,powered=true]: jungle_fence_gate[facing=west,in_wall=true,open=true,powered=false] + jungle_fence_gate[facing=north,in_wall=false,open=false,powered=true]: jungle_fence_gate[facing=north,in_wall=false,open=false,powered=false] + jungle_fence_gate[facing=north,in_wall=false,open=true,powered=true]: jungle_fence_gate[facing=north,in_wall=false,open=true,powered=false] + jungle_fence_gate[facing=north,in_wall=true,open=false,powered=true]: jungle_fence_gate[facing=north,in_wall=true,open=false,powered=false] + jungle_fence_gate[facing=north,in_wall=true,open=true,powered=true]: jungle_fence_gate[facing=north,in_wall=true,open=true,powered=false] + acacia_fence_gate[facing=east,in_wall=false,open=false,powered=true]: acacia_fence_gate[facing=east,in_wall=false,open=false,powered=false] + acacia_fence_gate[facing=east,in_wall=false,open=true,powered=true]: acacia_fence_gate[facing=east,in_wall=false,open=true,powered=false] + acacia_fence_gate[facing=east,in_wall=true,open=false,powered=true]: acacia_fence_gate[facing=east,in_wall=true,open=false,powered=false] + acacia_fence_gate[facing=east,in_wall=true,open=true,powered=true]: acacia_fence_gate[facing=east,in_wall=true,open=true,powered=false] + acacia_fence_gate[facing=south,in_wall=false,open=false,powered=true]: acacia_fence_gate[facing=south,in_wall=false,open=false,powered=false] + acacia_fence_gate[facing=south,in_wall=false,open=true,powered=true]: acacia_fence_gate[facing=south,in_wall=false,open=true,powered=false] + acacia_fence_gate[facing=south,in_wall=true,open=false,powered=true]: acacia_fence_gate[facing=south,in_wall=true,open=false,powered=false] + acacia_fence_gate[facing=south,in_wall=true,open=true,powered=true]: acacia_fence_gate[facing=south,in_wall=true,open=true,powered=false] + acacia_fence_gate[facing=west,in_wall=false,open=false,powered=true]: acacia_fence_gate[facing=west,in_wall=false,open=false,powered=false] + acacia_fence_gate[facing=west,in_wall=false,open=true,powered=true]: acacia_fence_gate[facing=west,in_wall=false,open=true,powered=false] + acacia_fence_gate[facing=west,in_wall=true,open=false,powered=true]: acacia_fence_gate[facing=west,in_wall=true,open=false,powered=false] + acacia_fence_gate[facing=west,in_wall=true,open=true,powered=true]: acacia_fence_gate[facing=west,in_wall=true,open=true,powered=false] + acacia_fence_gate[facing=north,in_wall=false,open=false,powered=true]: acacia_fence_gate[facing=north,in_wall=false,open=false,powered=false] + acacia_fence_gate[facing=north,in_wall=false,open=true,powered=true]: acacia_fence_gate[facing=north,in_wall=false,open=true,powered=false] + acacia_fence_gate[facing=north,in_wall=true,open=false,powered=true]: acacia_fence_gate[facing=north,in_wall=true,open=false,powered=false] + acacia_fence_gate[facing=north,in_wall=true,open=true,powered=true]: acacia_fence_gate[facing=north,in_wall=true,open=true,powered=false] + dark_oak_fence_gate[facing=east,in_wall=false,open=false,powered=true]: dark_oak_fence_gate[facing=east,in_wall=false,open=false,powered=false] + dark_oak_fence_gate[facing=east,in_wall=false,open=true,powered=true]: dark_oak_fence_gate[facing=east,in_wall=false,open=true,powered=false] + dark_oak_fence_gate[facing=east,in_wall=true,open=false,powered=true]: dark_oak_fence_gate[facing=east,in_wall=true,open=false,powered=false] + dark_oak_fence_gate[facing=east,in_wall=true,open=true,powered=true]: dark_oak_fence_gate[facing=east,in_wall=true,open=true,powered=false] + dark_oak_fence_gate[facing=south,in_wall=false,open=false,powered=true]: dark_oak_fence_gate[facing=south,in_wall=false,open=false,powered=false] + dark_oak_fence_gate[facing=south,in_wall=false,open=true,powered=true]: dark_oak_fence_gate[facing=south,in_wall=false,open=true,powered=false] + dark_oak_fence_gate[facing=south,in_wall=true,open=false,powered=true]: dark_oak_fence_gate[facing=south,in_wall=true,open=false,powered=false] + dark_oak_fence_gate[facing=south,in_wall=true,open=true,powered=true]: dark_oak_fence_gate[facing=south,in_wall=true,open=true,powered=false] + dark_oak_fence_gate[facing=west,in_wall=false,open=false,powered=true]: dark_oak_fence_gate[facing=west,in_wall=false,open=false,powered=false] + dark_oak_fence_gate[facing=west,in_wall=false,open=true,powered=true]: dark_oak_fence_gate[facing=west,in_wall=false,open=true,powered=false] + dark_oak_fence_gate[facing=west,in_wall=true,open=false,powered=true]: dark_oak_fence_gate[facing=west,in_wall=true,open=false,powered=false] + dark_oak_fence_gate[facing=west,in_wall=true,open=true,powered=true]: dark_oak_fence_gate[facing=west,in_wall=true,open=true,powered=false] + dark_oak_fence_gate[facing=north,in_wall=false,open=false,powered=true]: dark_oak_fence_gate[facing=north,in_wall=false,open=false,powered=false] + dark_oak_fence_gate[facing=north,in_wall=false,open=true,powered=true]: dark_oak_fence_gate[facing=north,in_wall=false,open=true,powered=false] + dark_oak_fence_gate[facing=north,in_wall=true,open=false,powered=true]: dark_oak_fence_gate[facing=north,in_wall=true,open=false,powered=false] + dark_oak_fence_gate[facing=north,in_wall=true,open=true,powered=true]: dark_oak_fence_gate[facing=north,in_wall=true,open=true,powered=false] + mangrove_fence_gate[facing=east,in_wall=false,open=false,powered=true]: mangrove_fence_gate[facing=east,in_wall=false,open=false,powered=false] + mangrove_fence_gate[facing=east,in_wall=false,open=true,powered=true]: mangrove_fence_gate[facing=east,in_wall=false,open=true,powered=false] + mangrove_fence_gate[facing=east,in_wall=true,open=false,powered=true]: mangrove_fence_gate[facing=east,in_wall=true,open=false,powered=false] + mangrove_fence_gate[facing=east,in_wall=true,open=true,powered=true]: mangrove_fence_gate[facing=east,in_wall=true,open=true,powered=false] + mangrove_fence_gate[facing=south,in_wall=false,open=false,powered=true]: mangrove_fence_gate[facing=south,in_wall=false,open=false,powered=false] + mangrove_fence_gate[facing=south,in_wall=false,open=true,powered=true]: mangrove_fence_gate[facing=south,in_wall=false,open=true,powered=false] + mangrove_fence_gate[facing=south,in_wall=true,open=false,powered=true]: mangrove_fence_gate[facing=south,in_wall=true,open=false,powered=false] + mangrove_fence_gate[facing=south,in_wall=true,open=true,powered=true]: mangrove_fence_gate[facing=south,in_wall=true,open=true,powered=false] + mangrove_fence_gate[facing=west,in_wall=false,open=false,powered=true]: mangrove_fence_gate[facing=west,in_wall=false,open=false,powered=false] + mangrove_fence_gate[facing=west,in_wall=false,open=true,powered=true]: mangrove_fence_gate[facing=west,in_wall=false,open=true,powered=false] + mangrove_fence_gate[facing=west,in_wall=true,open=false,powered=true]: mangrove_fence_gate[facing=west,in_wall=true,open=false,powered=false] + mangrove_fence_gate[facing=west,in_wall=true,open=true,powered=true]: mangrove_fence_gate[facing=west,in_wall=true,open=true,powered=false] + mangrove_fence_gate[facing=north,in_wall=false,open=false,powered=true]: mangrove_fence_gate[facing=north,in_wall=false,open=false,powered=false] + mangrove_fence_gate[facing=north,in_wall=false,open=true,powered=true]: mangrove_fence_gate[facing=north,in_wall=false,open=true,powered=false] + mangrove_fence_gate[facing=north,in_wall=true,open=false,powered=true]: mangrove_fence_gate[facing=north,in_wall=true,open=false,powered=false] + mangrove_fence_gate[facing=north,in_wall=true,open=true,powered=true]: mangrove_fence_gate[facing=north,in_wall=true,open=true,powered=false] + cherry_fence_gate[facing=east,in_wall=false,open=false,powered=true]: cherry_fence_gate[facing=east,in_wall=false,open=false,powered=false] + cherry_fence_gate[facing=east,in_wall=false,open=true,powered=true]: cherry_fence_gate[facing=east,in_wall=false,open=true,powered=false] + cherry_fence_gate[facing=east,in_wall=true,open=false,powered=true]: cherry_fence_gate[facing=east,in_wall=true,open=false,powered=false] + cherry_fence_gate[facing=east,in_wall=true,open=true,powered=true]: cherry_fence_gate[facing=east,in_wall=true,open=true,powered=false] + cherry_fence_gate[facing=south,in_wall=false,open=false,powered=true]: cherry_fence_gate[facing=south,in_wall=false,open=false,powered=false] + cherry_fence_gate[facing=south,in_wall=false,open=true,powered=true]: cherry_fence_gate[facing=south,in_wall=false,open=true,powered=false] + cherry_fence_gate[facing=south,in_wall=true,open=false,powered=true]: cherry_fence_gate[facing=south,in_wall=true,open=false,powered=false] + cherry_fence_gate[facing=south,in_wall=true,open=true,powered=true]: cherry_fence_gate[facing=south,in_wall=true,open=true,powered=false] + cherry_fence_gate[facing=west,in_wall=false,open=false,powered=true]: cherry_fence_gate[facing=west,in_wall=false,open=false,powered=false] + cherry_fence_gate[facing=west,in_wall=false,open=true,powered=true]: cherry_fence_gate[facing=west,in_wall=false,open=true,powered=false] + cherry_fence_gate[facing=west,in_wall=true,open=false,powered=true]: cherry_fence_gate[facing=west,in_wall=true,open=false,powered=false] + cherry_fence_gate[facing=west,in_wall=true,open=true,powered=true]: cherry_fence_gate[facing=west,in_wall=true,open=true,powered=false] + cherry_fence_gate[facing=north,in_wall=false,open=false,powered=true]: cherry_fence_gate[facing=north,in_wall=false,open=false,powered=false] + cherry_fence_gate[facing=north,in_wall=false,open=true,powered=true]: cherry_fence_gate[facing=north,in_wall=false,open=true,powered=false] + cherry_fence_gate[facing=north,in_wall=true,open=false,powered=true]: cherry_fence_gate[facing=north,in_wall=true,open=false,powered=false] + cherry_fence_gate[facing=north,in_wall=true,open=true,powered=true]: cherry_fence_gate[facing=north,in_wall=true,open=true,powered=false] + bamboo_fence_gate[facing=east,in_wall=false,open=false,powered=true]: bamboo_fence_gate[facing=east,in_wall=false,open=false,powered=false] + bamboo_fence_gate[facing=east,in_wall=false,open=true,powered=true]: bamboo_fence_gate[facing=east,in_wall=false,open=true,powered=false] + bamboo_fence_gate[facing=east,in_wall=true,open=false,powered=true]: bamboo_fence_gate[facing=east,in_wall=true,open=false,powered=false] + bamboo_fence_gate[facing=east,in_wall=true,open=true,powered=true]: bamboo_fence_gate[facing=east,in_wall=true,open=true,powered=false] + bamboo_fence_gate[facing=south,in_wall=false,open=false,powered=true]: bamboo_fence_gate[facing=south,in_wall=false,open=false,powered=false] + bamboo_fence_gate[facing=south,in_wall=false,open=true,powered=true]: bamboo_fence_gate[facing=south,in_wall=false,open=true,powered=false] + bamboo_fence_gate[facing=south,in_wall=true,open=false,powered=true]: bamboo_fence_gate[facing=south,in_wall=true,open=false,powered=false] + bamboo_fence_gate[facing=south,in_wall=true,open=true,powered=true]: bamboo_fence_gate[facing=south,in_wall=true,open=true,powered=false] + bamboo_fence_gate[facing=west,in_wall=false,open=false,powered=true]: bamboo_fence_gate[facing=west,in_wall=false,open=false,powered=false] + bamboo_fence_gate[facing=west,in_wall=false,open=true,powered=true]: bamboo_fence_gate[facing=west,in_wall=false,open=true,powered=false] + bamboo_fence_gate[facing=west,in_wall=true,open=false,powered=true]: bamboo_fence_gate[facing=west,in_wall=true,open=false,powered=false] + bamboo_fence_gate[facing=west,in_wall=true,open=true,powered=true]: bamboo_fence_gate[facing=west,in_wall=true,open=true,powered=false] + bamboo_fence_gate[facing=north,in_wall=false,open=false,powered=true]: bamboo_fence_gate[facing=north,in_wall=false,open=false,powered=false] + bamboo_fence_gate[facing=north,in_wall=false,open=true,powered=true]: bamboo_fence_gate[facing=north,in_wall=false,open=true,powered=false] + bamboo_fence_gate[facing=north,in_wall=true,open=false,powered=true]: bamboo_fence_gate[facing=north,in_wall=true,open=false,powered=false] + bamboo_fence_gate[facing=north,in_wall=true,open=true,powered=true]: bamboo_fence_gate[facing=north,in_wall=true,open=true,powered=false] + crimson_fence_gate[facing=east,in_wall=false,open=false,powered=true]: crimson_fence_gate[facing=east,in_wall=false,open=false,powered=false] + crimson_fence_gate[facing=east,in_wall=false,open=true,powered=true]: crimson_fence_gate[facing=east,in_wall=false,open=true,powered=false] + crimson_fence_gate[facing=east,in_wall=true,open=false,powered=true]: crimson_fence_gate[facing=east,in_wall=true,open=false,powered=false] + crimson_fence_gate[facing=east,in_wall=true,open=true,powered=true]: crimson_fence_gate[facing=east,in_wall=true,open=true,powered=false] + crimson_fence_gate[facing=south,in_wall=false,open=false,powered=true]: crimson_fence_gate[facing=south,in_wall=false,open=false,powered=false] + crimson_fence_gate[facing=south,in_wall=false,open=true,powered=true]: crimson_fence_gate[facing=south,in_wall=false,open=true,powered=false] + crimson_fence_gate[facing=south,in_wall=true,open=false,powered=true]: crimson_fence_gate[facing=south,in_wall=true,open=false,powered=false] + crimson_fence_gate[facing=south,in_wall=true,open=true,powered=true]: crimson_fence_gate[facing=south,in_wall=true,open=true,powered=false] + crimson_fence_gate[facing=west,in_wall=false,open=false,powered=true]: crimson_fence_gate[facing=west,in_wall=false,open=false,powered=false] + crimson_fence_gate[facing=west,in_wall=false,open=true,powered=true]: crimson_fence_gate[facing=west,in_wall=false,open=true,powered=false] + crimson_fence_gate[facing=west,in_wall=true,open=false,powered=true]: crimson_fence_gate[facing=west,in_wall=true,open=false,powered=false] + crimson_fence_gate[facing=west,in_wall=true,open=true,powered=true]: crimson_fence_gate[facing=west,in_wall=true,open=true,powered=false] + crimson_fence_gate[facing=north,in_wall=false,open=false,powered=true]: crimson_fence_gate[facing=north,in_wall=false,open=false,powered=false] + crimson_fence_gate[facing=north,in_wall=false,open=true,powered=true]: crimson_fence_gate[facing=north,in_wall=false,open=true,powered=false] + crimson_fence_gate[facing=north,in_wall=true,open=false,powered=true]: crimson_fence_gate[facing=north,in_wall=true,open=false,powered=false] + crimson_fence_gate[facing=north,in_wall=true,open=true,powered=true]: crimson_fence_gate[facing=north,in_wall=true,open=true,powered=false] + warped_fence_gate[facing=east,in_wall=false,open=false,powered=true]: warped_fence_gate[facing=east,in_wall=false,open=false,powered=false] + warped_fence_gate[facing=east,in_wall=false,open=true,powered=true]: warped_fence_gate[facing=east,in_wall=false,open=true,powered=false] + warped_fence_gate[facing=east,in_wall=true,open=false,powered=true]: warped_fence_gate[facing=east,in_wall=true,open=false,powered=false] + warped_fence_gate[facing=east,in_wall=true,open=true,powered=true]: warped_fence_gate[facing=east,in_wall=true,open=true,powered=false] + warped_fence_gate[facing=south,in_wall=false,open=false,powered=true]: warped_fence_gate[facing=south,in_wall=false,open=false,powered=false] + warped_fence_gate[facing=south,in_wall=false,open=true,powered=true]: warped_fence_gate[facing=south,in_wall=false,open=true,powered=false] + warped_fence_gate[facing=south,in_wall=true,open=false,powered=true]: warped_fence_gate[facing=south,in_wall=true,open=false,powered=false] + warped_fence_gate[facing=south,in_wall=true,open=true,powered=true]: warped_fence_gate[facing=south,in_wall=true,open=true,powered=false] + warped_fence_gate[facing=west,in_wall=false,open=false,powered=true]: warped_fence_gate[facing=west,in_wall=false,open=false,powered=false] + warped_fence_gate[facing=west,in_wall=false,open=true,powered=true]: warped_fence_gate[facing=west,in_wall=false,open=true,powered=false] + warped_fence_gate[facing=west,in_wall=true,open=false,powered=true]: warped_fence_gate[facing=west,in_wall=true,open=false,powered=false] + warped_fence_gate[facing=west,in_wall=true,open=true,powered=true]: warped_fence_gate[facing=west,in_wall=true,open=true,powered=false] + warped_fence_gate[facing=north,in_wall=false,open=false,powered=true]: warped_fence_gate[facing=north,in_wall=false,open=false,powered=false] + warped_fence_gate[facing=north,in_wall=false,open=true,powered=true]: warped_fence_gate[facing=north,in_wall=false,open=true,powered=false] + warped_fence_gate[facing=north,in_wall=true,open=false,powered=true]: warped_fence_gate[facing=north,in_wall=true,open=false,powered=false] + warped_fence_gate[facing=north,in_wall=true,open=true,powered=true]: warped_fence_gate[facing=north,in_wall=true,open=true,powered=false] $$>=1.21.4#fence_gate: - minecraft:pale_oak_fence_gate[facing=east,in_wall=false,open=false,powered=true]: minecraft:pale_oak_fence_gate[facing=east,in_wall=false,open=false,powered=false] - minecraft:pale_oak_fence_gate[facing=east,in_wall=false,open=true,powered=true]: minecraft:pale_oak_fence_gate[facing=east,in_wall=false,open=true,powered=false] - minecraft:pale_oak_fence_gate[facing=east,in_wall=true,open=false,powered=true]: minecraft:pale_oak_fence_gate[facing=east,in_wall=true,open=false,powered=false] - minecraft:pale_oak_fence_gate[facing=east,in_wall=true,open=true,powered=true]: minecraft:pale_oak_fence_gate[facing=east,in_wall=true,open=true,powered=false] - minecraft:pale_oak_fence_gate[facing=south,in_wall=false,open=false,powered=true]: minecraft:pale_oak_fence_gate[facing=south,in_wall=false,open=false,powered=false] - minecraft:pale_oak_fence_gate[facing=south,in_wall=false,open=true,powered=true]: minecraft:pale_oak_fence_gate[facing=south,in_wall=false,open=true,powered=false] - minecraft:pale_oak_fence_gate[facing=south,in_wall=true,open=false,powered=true]: minecraft:pale_oak_fence_gate[facing=south,in_wall=true,open=false,powered=false] - minecraft:pale_oak_fence_gate[facing=south,in_wall=true,open=true,powered=true]: minecraft:pale_oak_fence_gate[facing=south,in_wall=true,open=true,powered=false] - minecraft:pale_oak_fence_gate[facing=west,in_wall=false,open=false,powered=true]: minecraft:pale_oak_fence_gate[facing=west,in_wall=false,open=false,powered=false] - minecraft:pale_oak_fence_gate[facing=west,in_wall=false,open=true,powered=true]: minecraft:pale_oak_fence_gate[facing=west,in_wall=false,open=true,powered=false] - minecraft:pale_oak_fence_gate[facing=west,in_wall=true,open=false,powered=true]: minecraft:pale_oak_fence_gate[facing=west,in_wall=true,open=false,powered=false] - minecraft:pale_oak_fence_gate[facing=west,in_wall=true,open=true,powered=true]: minecraft:pale_oak_fence_gate[facing=west,in_wall=true,open=true,powered=false] - minecraft:pale_oak_fence_gate[facing=north,in_wall=false,open=false,powered=true]: minecraft:pale_oak_fence_gate[facing=north,in_wall=false,open=false,powered=false] - minecraft:pale_oak_fence_gate[facing=north,in_wall=false,open=true,powered=true]: minecraft:pale_oak_fence_gate[facing=north,in_wall=false,open=true,powered=false] - minecraft:pale_oak_fence_gate[facing=north,in_wall=true,open=false,powered=true]: minecraft:pale_oak_fence_gate[facing=north,in_wall=true,open=false,powered=false] - minecraft:pale_oak_fence_gate[facing=north,in_wall=true,open=true,powered=true]: minecraft:pale_oak_fence_gate[facing=north,in_wall=true,open=true,powered=false] + pale_oak_fence_gate[facing=east,in_wall=false,open=false,powered=true]: pale_oak_fence_gate[facing=east,in_wall=false,open=false,powered=false] + pale_oak_fence_gate[facing=east,in_wall=false,open=true,powered=true]: pale_oak_fence_gate[facing=east,in_wall=false,open=true,powered=false] + pale_oak_fence_gate[facing=east,in_wall=true,open=false,powered=true]: pale_oak_fence_gate[facing=east,in_wall=true,open=false,powered=false] + pale_oak_fence_gate[facing=east,in_wall=true,open=true,powered=true]: pale_oak_fence_gate[facing=east,in_wall=true,open=true,powered=false] + pale_oak_fence_gate[facing=south,in_wall=false,open=false,powered=true]: pale_oak_fence_gate[facing=south,in_wall=false,open=false,powered=false] + pale_oak_fence_gate[facing=south,in_wall=false,open=true,powered=true]: pale_oak_fence_gate[facing=south,in_wall=false,open=true,powered=false] + pale_oak_fence_gate[facing=south,in_wall=true,open=false,powered=true]: pale_oak_fence_gate[facing=south,in_wall=true,open=false,powered=false] + pale_oak_fence_gate[facing=south,in_wall=true,open=true,powered=true]: pale_oak_fence_gate[facing=south,in_wall=true,open=true,powered=false] + pale_oak_fence_gate[facing=west,in_wall=false,open=false,powered=true]: pale_oak_fence_gate[facing=west,in_wall=false,open=false,powered=false] + pale_oak_fence_gate[facing=west,in_wall=false,open=true,powered=true]: pale_oak_fence_gate[facing=west,in_wall=false,open=true,powered=false] + pale_oak_fence_gate[facing=west,in_wall=true,open=false,powered=true]: pale_oak_fence_gate[facing=west,in_wall=true,open=false,powered=false] + pale_oak_fence_gate[facing=west,in_wall=true,open=true,powered=true]: pale_oak_fence_gate[facing=west,in_wall=true,open=true,powered=false] + pale_oak_fence_gate[facing=north,in_wall=false,open=false,powered=true]: pale_oak_fence_gate[facing=north,in_wall=false,open=false,powered=false] + pale_oak_fence_gate[facing=north,in_wall=false,open=true,powered=true]: pale_oak_fence_gate[facing=north,in_wall=false,open=true,powered=false] + pale_oak_fence_gate[facing=north,in_wall=true,open=false,powered=true]: pale_oak_fence_gate[facing=north,in_wall=true,open=false,powered=false] + pale_oak_fence_gate[facing=north,in_wall=true,open=true,powered=true]: pale_oak_fence_gate[facing=north,in_wall=true,open=true,powered=false] #### Slab #### - minecraft:petrified_oak_slab[type=bottom,waterlogged=false]: minecraft:oak_slab[type=bottom,waterlogged=false] - minecraft:petrified_oak_slab[type=top,waterlogged=false]: minecraft:oak_slab[type=top,waterlogged=false] - minecraft:petrified_oak_slab[type=double,waterlogged=false]: minecraft:oak_slab[type=double,waterlogged=false] - minecraft:petrified_oak_slab[type=bottom,waterlogged=true]: minecraft:oak_slab[type=bottom,waterlogged=true] - minecraft:petrified_oak_slab[type=top,waterlogged=true]: minecraft:oak_slab[type=top,waterlogged=true] - minecraft:petrified_oak_slab[type=double,waterlogged=true]: minecraft:oak_slab[type=double,waterlogged=true] - minecraft:cut_copper_slab[type=bottom,waterlogged=false]: minecraft:waxed_cut_copper_slab[type=bottom,waterlogged=false] - minecraft:cut_copper_slab[type=top,waterlogged=false]: minecraft:waxed_cut_copper_slab[type=top,waterlogged=false] - minecraft:cut_copper_slab[type=double,waterlogged=false]: minecraft:waxed_cut_copper_slab[type=double,waterlogged=false] - minecraft:cut_copper_slab[type=bottom,waterlogged=true]: minecraft:waxed_cut_copper_slab[type=bottom,waterlogged=true] - minecraft:cut_copper_slab[type=top,waterlogged=true]: minecraft:waxed_cut_copper_slab[type=top,waterlogged=true] - minecraft:cut_copper_slab[type=double,waterlogged=true]: minecraft:waxed_cut_copper_slab[type=double,waterlogged=true] - minecraft:exposed_cut_copper_slab[type=bottom,waterlogged=false]: minecraft:waxed_exposed_cut_copper_slab[type=bottom,waterlogged=false] - minecraft:exposed_cut_copper_slab[type=top,waterlogged=false]: minecraft:waxed_exposed_cut_copper_slab[type=top,waterlogged=false] - minecraft:exposed_cut_copper_slab[type=double,waterlogged=false]: minecraft:waxed_exposed_cut_copper_slab[type=double,waterlogged=false] - minecraft:exposed_cut_copper_slab[type=bottom,waterlogged=true]: minecraft:waxed_exposed_cut_copper_slab[type=bottom,waterlogged=true] - minecraft:exposed_cut_copper_slab[type=top,waterlogged=true]: minecraft:waxed_exposed_cut_copper_slab[type=top,waterlogged=true] - minecraft:exposed_cut_copper_slab[type=double,waterlogged=true]: minecraft:waxed_exposed_cut_copper_slab[type=double,waterlogged=true] - minecraft:weathered_cut_copper_slab[type=bottom,waterlogged=false]: minecraft:waxed_weathered_cut_copper_slab[type=bottom,waterlogged=false] - minecraft:weathered_cut_copper_slab[type=top,waterlogged=false]: minecraft:waxed_weathered_cut_copper_slab[type=top,waterlogged=false] - minecraft:weathered_cut_copper_slab[type=double,waterlogged=false]: minecraft:waxed_weathered_cut_copper_slab[type=double,waterlogged=false] - minecraft:weathered_cut_copper_slab[type=bottom,waterlogged=true]: minecraft:waxed_weathered_cut_copper_slab[type=bottom,waterlogged=true] - minecraft:weathered_cut_copper_slab[type=top,waterlogged=true]: minecraft:waxed_weathered_cut_copper_slab[type=top,waterlogged=true] - minecraft:weathered_cut_copper_slab[type=double,waterlogged=true]: minecraft:waxed_weathered_cut_copper_slab[type=double,waterlogged=true] - minecraft:oxidized_cut_copper_slab[type=bottom,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_slab[type=bottom,waterlogged=false] - minecraft:oxidized_cut_copper_slab[type=top,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_slab[type=top,waterlogged=false] - minecraft:oxidized_cut_copper_slab[type=double,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_slab[type=double,waterlogged=false] - minecraft:oxidized_cut_copper_slab[type=bottom,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_slab[type=bottom,waterlogged=true] - minecraft:oxidized_cut_copper_slab[type=top,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_slab[type=top,waterlogged=true] - minecraft:oxidized_cut_copper_slab[type=double,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_slab[type=double,waterlogged=true] + petrified_oak_slab[type=bottom,waterlogged=false]: oak_slab[type=bottom,waterlogged=false] + petrified_oak_slab[type=top,waterlogged=false]: oak_slab[type=top,waterlogged=false] + petrified_oak_slab[type=double,waterlogged=false]: oak_slab[type=double,waterlogged=false] + petrified_oak_slab[type=bottom,waterlogged=true]: oak_slab[type=bottom,waterlogged=true] + petrified_oak_slab[type=top,waterlogged=true]: oak_slab[type=top,waterlogged=true] + petrified_oak_slab[type=double,waterlogged=true]: oak_slab[type=double,waterlogged=true] + cut_copper_slab[type=bottom,waterlogged=false]: waxed_cut_copper_slab[type=bottom,waterlogged=false] + cut_copper_slab[type=top,waterlogged=false]: waxed_cut_copper_slab[type=top,waterlogged=false] + cut_copper_slab[type=double,waterlogged=false]: waxed_cut_copper_slab[type=double,waterlogged=false] + cut_copper_slab[type=bottom,waterlogged=true]: waxed_cut_copper_slab[type=bottom,waterlogged=true] + cut_copper_slab[type=top,waterlogged=true]: waxed_cut_copper_slab[type=top,waterlogged=true] + cut_copper_slab[type=double,waterlogged=true]: waxed_cut_copper_slab[type=double,waterlogged=true] + exposed_cut_copper_slab[type=bottom,waterlogged=false]: waxed_exposed_cut_copper_slab[type=bottom,waterlogged=false] + exposed_cut_copper_slab[type=top,waterlogged=false]: waxed_exposed_cut_copper_slab[type=top,waterlogged=false] + exposed_cut_copper_slab[type=double,waterlogged=false]: waxed_exposed_cut_copper_slab[type=double,waterlogged=false] + exposed_cut_copper_slab[type=bottom,waterlogged=true]: waxed_exposed_cut_copper_slab[type=bottom,waterlogged=true] + exposed_cut_copper_slab[type=top,waterlogged=true]: waxed_exposed_cut_copper_slab[type=top,waterlogged=true] + exposed_cut_copper_slab[type=double,waterlogged=true]: waxed_exposed_cut_copper_slab[type=double,waterlogged=true] + weathered_cut_copper_slab[type=bottom,waterlogged=false]: waxed_weathered_cut_copper_slab[type=bottom,waterlogged=false] + weathered_cut_copper_slab[type=top,waterlogged=false]: waxed_weathered_cut_copper_slab[type=top,waterlogged=false] + weathered_cut_copper_slab[type=double,waterlogged=false]: waxed_weathered_cut_copper_slab[type=double,waterlogged=false] + weathered_cut_copper_slab[type=bottom,waterlogged=true]: waxed_weathered_cut_copper_slab[type=bottom,waterlogged=true] + weathered_cut_copper_slab[type=top,waterlogged=true]: waxed_weathered_cut_copper_slab[type=top,waterlogged=true] + weathered_cut_copper_slab[type=double,waterlogged=true]: waxed_weathered_cut_copper_slab[type=double,waterlogged=true] + oxidized_cut_copper_slab[type=bottom,waterlogged=false]: waxed_oxidized_cut_copper_slab[type=bottom,waterlogged=false] + oxidized_cut_copper_slab[type=top,waterlogged=false]: waxed_oxidized_cut_copper_slab[type=top,waterlogged=false] + oxidized_cut_copper_slab[type=double,waterlogged=false]: waxed_oxidized_cut_copper_slab[type=double,waterlogged=false] + oxidized_cut_copper_slab[type=bottom,waterlogged=true]: waxed_oxidized_cut_copper_slab[type=bottom,waterlogged=true] + oxidized_cut_copper_slab[type=top,waterlogged=true]: waxed_oxidized_cut_copper_slab[type=top,waterlogged=true] + oxidized_cut_copper_slab[type=double,waterlogged=true]: waxed_oxidized_cut_copper_slab[type=double,waterlogged=true] #### Stairs #### - minecraft:cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=false] - minecraft:cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=true] - minecraft:cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false] - minecraft:cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true] - minecraft:cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false] - minecraft:cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true] - minecraft:cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false] - minecraft:cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true] - minecraft:cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false] - minecraft:cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true] - minecraft:cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=false] - minecraft:cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=true] - minecraft:cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=false] - minecraft:cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=true] - minecraft:cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=false] - minecraft:cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=true] - minecraft:cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=false] - minecraft:cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=true] - minecraft:cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=false] - minecraft:cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=true] - minecraft:cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=false] - minecraft:cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=true] - minecraft:cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false] - minecraft:cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true] - minecraft:cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false] - minecraft:cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true] - minecraft:cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false] - minecraft:cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true] - minecraft:cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false] - minecraft:cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true] - minecraft:cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=false] - minecraft:cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=true] - minecraft:cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=false] - minecraft:cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=true] - minecraft:cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=false] - minecraft:cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=true] - minecraft:cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=false] - minecraft:cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=true] - minecraft:cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=false] - minecraft:cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=true] - minecraft:cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=false] - minecraft:cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=true] - minecraft:cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false] - minecraft:cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true] - minecraft:cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false] - minecraft:cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true] - minecraft:cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false] - minecraft:cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true] - minecraft:cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false] - minecraft:cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true] - minecraft:cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=false] - minecraft:cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=true] - minecraft:cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=false] - minecraft:cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=true] - minecraft:cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=false] - minecraft:cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=true] - minecraft:cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=false] - minecraft:cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=true] - minecraft:cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=false] - minecraft:cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=true] - minecraft:cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=false] - minecraft:cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=true] - minecraft:cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false] - minecraft:cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true] - minecraft:cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false] - minecraft:cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true] - minecraft:cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false] - minecraft:cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true] - minecraft:cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false] - minecraft:cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true] - minecraft:cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=false] - minecraft:cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=true] - minecraft:cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=false] - minecraft:cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=true] - minecraft:cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=false] - minecraft:cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=true] - minecraft:cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=false] - minecraft:cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=true] - minecraft:cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]: minecraft:waxed_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=false] - minecraft:cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]: minecraft:waxed_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=true] - minecraft:exposed_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]: minecraft:waxed_exposed_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=false] - minecraft:exposed_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]: minecraft:waxed_exposed_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=true] - minecraft:weathered_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]: minecraft:waxed_weathered_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=false] - minecraft:weathered_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]: minecraft:waxed_weathered_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=true] - minecraft:oxidized_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]: minecraft:waxed_oxidized_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=false] - minecraft:oxidized_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]: minecraft:waxed_oxidized_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=true] + cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]: waxed_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=false] + cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]: waxed_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=true] + cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]: waxed_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false] + cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]: waxed_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true] + cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]: waxed_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false] + cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]: waxed_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true] + cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]: waxed_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false] + cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]: waxed_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true] + cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]: waxed_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false] + cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]: waxed_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true] + cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=false]: waxed_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=false] + cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=true]: waxed_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=true] + cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]: waxed_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=false] + cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]: waxed_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=true] + cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]: waxed_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=false] + cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]: waxed_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=true] + cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]: waxed_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=false] + cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]: waxed_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=true] + cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]: waxed_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=false] + cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]: waxed_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=true] + cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]: waxed_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=false] + cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]: waxed_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=true] + cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]: waxed_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false] + cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]: waxed_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true] + cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]: waxed_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false] + cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]: waxed_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true] + cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]: waxed_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false] + cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]: waxed_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true] + cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]: waxed_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false] + cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]: waxed_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true] + cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=false]: waxed_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=false] + cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=true]: waxed_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=true] + cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]: waxed_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=false] + cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]: waxed_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=true] + cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]: waxed_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=false] + cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]: waxed_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=true] + cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]: waxed_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=false] + cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]: waxed_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=true] + cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]: waxed_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=false] + cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]: waxed_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=true] + cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]: waxed_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=false] + cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]: waxed_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=true] + cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]: waxed_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false] + cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]: waxed_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true] + cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]: waxed_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false] + cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]: waxed_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true] + cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]: waxed_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false] + cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]: waxed_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true] + cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]: waxed_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false] + cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]: waxed_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true] + cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=false]: waxed_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=false] + cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=true]: waxed_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=true] + cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]: waxed_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=false] + cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]: waxed_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=true] + cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]: waxed_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=false] + cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]: waxed_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=true] + cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]: waxed_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=false] + cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]: waxed_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=true] + cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]: waxed_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=false] + cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]: waxed_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=true] + cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]: waxed_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=false] + cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]: waxed_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=true] + cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]: waxed_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false] + cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]: waxed_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true] + cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]: waxed_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false] + cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]: waxed_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true] + cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]: waxed_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false] + cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]: waxed_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true] + cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]: waxed_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false] + cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]: waxed_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true] + cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=false]: waxed_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=false] + cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=true]: waxed_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=true] + cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]: waxed_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=false] + cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]: waxed_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=true] + cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]: waxed_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=false] + cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]: waxed_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=true] + cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]: waxed_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=false] + cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]: waxed_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=true] + cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]: waxed_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=false] + cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]: waxed_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=true] + exposed_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=false] + exposed_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=true] + exposed_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false] + exposed_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true] + exposed_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false] + exposed_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true] + exposed_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false] + exposed_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true] + exposed_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false] + exposed_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true] + exposed_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=false] + exposed_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=true] + exposed_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=false] + exposed_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=true] + exposed_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=false] + exposed_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=true] + exposed_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=false] + exposed_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=true] + exposed_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=false] + exposed_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=true] + exposed_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=false] + exposed_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=true] + exposed_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false] + exposed_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true] + exposed_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false] + exposed_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true] + exposed_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false] + exposed_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true] + exposed_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false] + exposed_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true] + exposed_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=false] + exposed_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=true] + exposed_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=false] + exposed_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=true] + exposed_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=false] + exposed_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=true] + exposed_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=false] + exposed_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=true] + exposed_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=false] + exposed_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=true] + exposed_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=false] + exposed_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=true] + exposed_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false] + exposed_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true] + exposed_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false] + exposed_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true] + exposed_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false] + exposed_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true] + exposed_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false] + exposed_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true] + exposed_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=false] + exposed_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=true] + exposed_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=false] + exposed_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=true] + exposed_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=false] + exposed_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=true] + exposed_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=false] + exposed_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=true] + exposed_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=false] + exposed_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=true] + exposed_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=false] + exposed_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=true] + exposed_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false] + exposed_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true] + exposed_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false] + exposed_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true] + exposed_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false] + exposed_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true] + exposed_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false] + exposed_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true] + exposed_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=false] + exposed_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=true] + exposed_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=false] + exposed_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=true] + exposed_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=false] + exposed_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=true] + exposed_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=false] + exposed_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=true] + exposed_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]: waxed_exposed_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=false] + exposed_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]: waxed_exposed_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=true] + weathered_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=false] + weathered_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=true] + weathered_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false] + weathered_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true] + weathered_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false] + weathered_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true] + weathered_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false] + weathered_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true] + weathered_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false] + weathered_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true] + weathered_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=false] + weathered_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=true] + weathered_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=false] + weathered_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=true] + weathered_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=false] + weathered_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=true] + weathered_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=false] + weathered_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=true] + weathered_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=false] + weathered_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=true] + weathered_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=false] + weathered_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=true] + weathered_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false] + weathered_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true] + weathered_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false] + weathered_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true] + weathered_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false] + weathered_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true] + weathered_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false] + weathered_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true] + weathered_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=false] + weathered_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=true] + weathered_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=false] + weathered_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=true] + weathered_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=false] + weathered_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=true] + weathered_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=false] + weathered_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=true] + weathered_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=false] + weathered_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=true] + weathered_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=false] + weathered_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=true] + weathered_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false] + weathered_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true] + weathered_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false] + weathered_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true] + weathered_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false] + weathered_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true] + weathered_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false] + weathered_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true] + weathered_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=false] + weathered_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=true] + weathered_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=false] + weathered_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=true] + weathered_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=false] + weathered_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=true] + weathered_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=false] + weathered_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=true] + weathered_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=false] + weathered_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=true] + weathered_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=false] + weathered_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=true] + weathered_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false] + weathered_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true] + weathered_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false] + weathered_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true] + weathered_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false] + weathered_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true] + weathered_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false] + weathered_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true] + weathered_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=false] + weathered_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=true] + weathered_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=false] + weathered_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=true] + weathered_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=false] + weathered_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=true] + weathered_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=false] + weathered_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=true] + weathered_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]: waxed_weathered_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=false] + weathered_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]: waxed_weathered_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=true] + oxidized_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=false] + oxidized_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=east,half=bottom,shape=straight,waterlogged=true] + oxidized_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false] + oxidized_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true] + oxidized_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false] + oxidized_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true] + oxidized_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false] + oxidized_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true] + oxidized_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false] + oxidized_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true] + oxidized_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=false] + oxidized_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=east,half=top,shape=straight,waterlogged=true] + oxidized_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=false] + oxidized_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=east,half=top,shape=inner_left,waterlogged=true] + oxidized_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=false] + oxidized_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=east,half=top,shape=inner_right,waterlogged=true] + oxidized_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=false] + oxidized_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=east,half=top,shape=outer_left,waterlogged=true] + oxidized_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=false] + oxidized_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=east,half=top,shape=outer_right,waterlogged=true] + oxidized_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=false] + oxidized_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=south,half=bottom,shape=straight,waterlogged=true] + oxidized_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false] + oxidized_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true] + oxidized_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false] + oxidized_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true] + oxidized_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false] + oxidized_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true] + oxidized_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false] + oxidized_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true] + oxidized_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=false] + oxidized_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=south,half=top,shape=straight,waterlogged=true] + oxidized_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=false] + oxidized_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=south,half=top,shape=inner_left,waterlogged=true] + oxidized_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=false] + oxidized_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=south,half=top,shape=inner_right,waterlogged=true] + oxidized_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=false] + oxidized_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=south,half=top,shape=outer_left,waterlogged=true] + oxidized_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=false] + oxidized_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=south,half=top,shape=outer_right,waterlogged=true] + oxidized_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=false] + oxidized_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=west,half=bottom,shape=straight,waterlogged=true] + oxidized_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false] + oxidized_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true] + oxidized_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false] + oxidized_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true] + oxidized_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false] + oxidized_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true] + oxidized_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false] + oxidized_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true] + oxidized_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=false] + oxidized_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=west,half=top,shape=straight,waterlogged=true] + oxidized_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=false] + oxidized_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=west,half=top,shape=inner_left,waterlogged=true] + oxidized_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=false] + oxidized_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=west,half=top,shape=inner_right,waterlogged=true] + oxidized_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=false] + oxidized_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=west,half=top,shape=outer_left,waterlogged=true] + oxidized_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=false] + oxidized_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=west,half=top,shape=outer_right,waterlogged=true] + oxidized_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=false] + oxidized_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=true] + oxidized_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false] + oxidized_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true] + oxidized_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false] + oxidized_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true] + oxidized_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false] + oxidized_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true] + oxidized_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false] + oxidized_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true] + oxidized_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=false] + oxidized_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=north,half=top,shape=straight,waterlogged=true] + oxidized_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=false] + oxidized_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=north,half=top,shape=inner_left,waterlogged=true] + oxidized_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=false] + oxidized_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=north,half=top,shape=inner_right,waterlogged=true] + oxidized_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=false] + oxidized_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=north,half=top,shape=outer_left,waterlogged=true] + oxidized_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]: waxed_oxidized_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=false] + oxidized_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]: waxed_oxidized_cut_copper_stairs[facing=north,half=top,shape=outer_right,waterlogged=true] #### Grate #### # Suitable for making glass because it is completely transparent $$>=1.20.3#grate: - minecraft:copper_grate[waterlogged=false]: minecraft:waxed_copper_grate[waterlogged=false] - minecraft:copper_grate[waterlogged=true]: minecraft:waxed_copper_grate[waterlogged=true] - minecraft:weathered_copper_grate[waterlogged=false]: minecraft:waxed_weathered_copper_grate[waterlogged=false] - minecraft:weathered_copper_grate[waterlogged=true]: minecraft:waxed_weathered_copper_grate[waterlogged=true] - minecraft:exposed_copper_grate[waterlogged=false]: minecraft:waxed_exposed_copper_grate[waterlogged=false] - minecraft:exposed_copper_grate[waterlogged=true]: minecraft:waxed_exposed_copper_grate[waterlogged=true] - minecraft:oxidized_copper_grate[waterlogged=false]: minecraft:waxed_oxidized_copper_grate[waterlogged=false] - minecraft:oxidized_copper_grate[waterlogged=true]: minecraft:waxed_oxidized_copper_grate[waterlogged=true] + copper_grate[waterlogged=false]: waxed_copper_grate[waterlogged=false] + copper_grate[waterlogged=true]: waxed_copper_grate[waterlogged=true] + weathered_copper_grate[waterlogged=false]: waxed_weathered_copper_grate[waterlogged=false] + weathered_copper_grate[waterlogged=true]: waxed_weathered_copper_grate[waterlogged=true] + exposed_copper_grate[waterlogged=false]: waxed_exposed_copper_grate[waterlogged=false] + exposed_copper_grate[waterlogged=true]: waxed_exposed_copper_grate[waterlogged=true] + oxidized_copper_grate[waterlogged=false]: waxed_oxidized_copper_grate[waterlogged=false] + oxidized_copper_grate[waterlogged=true]: waxed_oxidized_copper_grate[waterlogged=true] #### Pressure Plate #### # Triggered pressure plates appear identical, even though they output different signal strengths. - minecraft:light_weighted_pressure_plate[power=2]: minecraft:light_weighted_pressure_plate[power=1] - minecraft:light_weighted_pressure_plate[power=3]: minecraft:light_weighted_pressure_plate[power=1] - minecraft:light_weighted_pressure_plate[power=4]: minecraft:light_weighted_pressure_plate[power=1] - minecraft:light_weighted_pressure_plate[power=5]: minecraft:light_weighted_pressure_plate[power=1] - minecraft:light_weighted_pressure_plate[power=6]: minecraft:light_weighted_pressure_plate[power=1] - minecraft:light_weighted_pressure_plate[power=7]: minecraft:light_weighted_pressure_plate[power=1] - minecraft:light_weighted_pressure_plate[power=8]: minecraft:light_weighted_pressure_plate[power=1] - minecraft:light_weighted_pressure_plate[power=9]: minecraft:light_weighted_pressure_plate[power=1] - minecraft:light_weighted_pressure_plate[power=10]: minecraft:light_weighted_pressure_plate[power=1] - minecraft:light_weighted_pressure_plate[power=11]: minecraft:light_weighted_pressure_plate[power=1] - minecraft:light_weighted_pressure_plate[power=12]: minecraft:light_weighted_pressure_plate[power=1] - minecraft:light_weighted_pressure_plate[power=13]: minecraft:light_weighted_pressure_plate[power=1] - minecraft:light_weighted_pressure_plate[power=14]: minecraft:light_weighted_pressure_plate[power=1] - minecraft:light_weighted_pressure_plate[power=15]: minecraft:light_weighted_pressure_plate[power=1] - minecraft:heavy_weighted_pressure_plate[power=2]: minecraft:heavy_weighted_pressure_plate[power=1] - minecraft:heavy_weighted_pressure_plate[power=3]: minecraft:heavy_weighted_pressure_plate[power=1] - minecraft:heavy_weighted_pressure_plate[power=4]: minecraft:heavy_weighted_pressure_plate[power=1] - minecraft:heavy_weighted_pressure_plate[power=5]: minecraft:heavy_weighted_pressure_plate[power=1] - minecraft:heavy_weighted_pressure_plate[power=6]: minecraft:heavy_weighted_pressure_plate[power=1] - minecraft:heavy_weighted_pressure_plate[power=7]: minecraft:heavy_weighted_pressure_plate[power=1] - minecraft:heavy_weighted_pressure_plate[power=8]: minecraft:heavy_weighted_pressure_plate[power=1] - minecraft:heavy_weighted_pressure_plate[power=9]: minecraft:heavy_weighted_pressure_plate[power=1] - minecraft:heavy_weighted_pressure_plate[power=10]: minecraft:heavy_weighted_pressure_plate[power=1] - minecraft:heavy_weighted_pressure_plate[power=11]: minecraft:heavy_weighted_pressure_plate[power=1] - minecraft:heavy_weighted_pressure_plate[power=12]: minecraft:heavy_weighted_pressure_plate[power=1] - minecraft:heavy_weighted_pressure_plate[power=13]: minecraft:heavy_weighted_pressure_plate[power=1] - minecraft:heavy_weighted_pressure_plate[power=14]: minecraft:heavy_weighted_pressure_plate[power=1] - minecraft:heavy_weighted_pressure_plate[power=15]: minecraft:heavy_weighted_pressure_plate[power=1] + light_weighted_pressure_plate[power=2]: light_weighted_pressure_plate[power=1] + light_weighted_pressure_plate[power=3]: light_weighted_pressure_plate[power=1] + light_weighted_pressure_plate[power=4]: light_weighted_pressure_plate[power=1] + light_weighted_pressure_plate[power=5]: light_weighted_pressure_plate[power=1] + light_weighted_pressure_plate[power=6]: light_weighted_pressure_plate[power=1] + light_weighted_pressure_plate[power=7]: light_weighted_pressure_plate[power=1] + light_weighted_pressure_plate[power=8]: light_weighted_pressure_plate[power=1] + light_weighted_pressure_plate[power=9]: light_weighted_pressure_plate[power=1] + light_weighted_pressure_plate[power=10]: light_weighted_pressure_plate[power=1] + light_weighted_pressure_plate[power=11]: light_weighted_pressure_plate[power=1] + light_weighted_pressure_plate[power=12]: light_weighted_pressure_plate[power=1] + light_weighted_pressure_plate[power=13]: light_weighted_pressure_plate[power=1] + light_weighted_pressure_plate[power=14]: light_weighted_pressure_plate[power=1] + light_weighted_pressure_plate[power=15]: light_weighted_pressure_plate[power=1] + heavy_weighted_pressure_plate[power=2]: heavy_weighted_pressure_plate[power=1] + heavy_weighted_pressure_plate[power=3]: heavy_weighted_pressure_plate[power=1] + heavy_weighted_pressure_plate[power=4]: heavy_weighted_pressure_plate[power=1] + heavy_weighted_pressure_plate[power=5]: heavy_weighted_pressure_plate[power=1] + heavy_weighted_pressure_plate[power=6]: heavy_weighted_pressure_plate[power=1] + heavy_weighted_pressure_plate[power=7]: heavy_weighted_pressure_plate[power=1] + heavy_weighted_pressure_plate[power=8]: heavy_weighted_pressure_plate[power=1] + heavy_weighted_pressure_plate[power=9]: heavy_weighted_pressure_plate[power=1] + heavy_weighted_pressure_plate[power=10]: heavy_weighted_pressure_plate[power=1] + heavy_weighted_pressure_plate[power=11]: heavy_weighted_pressure_plate[power=1] + heavy_weighted_pressure_plate[power=12]: heavy_weighted_pressure_plate[power=1] + heavy_weighted_pressure_plate[power=13]: heavy_weighted_pressure_plate[power=1] + heavy_weighted_pressure_plate[power=14]: heavy_weighted_pressure_plate[power=1] + heavy_weighted_pressure_plate[power=15]: heavy_weighted_pressure_plate[power=1] #### Corals #### # Coral blocks are ideal for creating water blocks or wall-mounted blocks. But you have to sacrifice its dry appearance. - # minecraft:dead_brain_coral[waterlogged=false]: minecraft:brain_coral[waterlogged=false] - # minecraft:dead_brain_coral[waterlogged=true]: minecraft:brain_coral[waterlogged=true] - # minecraft:dead_brain_coral_fan[waterlogged=false]: minecraft:brain_coral_fan[waterlogged=false] - # minecraft:dead_brain_coral_fan[waterlogged=true]: minecraft:brain_coral_fan[waterlogged=true] - # minecraft:dead_brain_coral_wall_fan[waterlogged=false,facing=east]: minecraft:brain_coral_wall_fan[waterlogged=false,facing=east] - # minecraft:dead_brain_coral_wall_fan[waterlogged=false,facing=north]: minecraft:brain_coral_wall_fan[waterlogged=false,facing=north] - # minecraft:dead_brain_coral_wall_fan[waterlogged=false,facing=south]: minecraft:brain_coral_wall_fan[waterlogged=false,facing=south] - # minecraft:dead_brain_coral_wall_fan[waterlogged=false,facing=west]: minecraft:brain_coral_wall_fan[waterlogged=false,facing=west] - # minecraft:dead_brain_coral_wall_fan[waterlogged=true,facing=east]: minecraft:brain_coral_wall_fan[waterlogged=true,facing=east] - # minecraft:dead_brain_coral_wall_fan[waterlogged=true,facing=north]: minecraft:brain_coral_wall_fan[waterlogged=true,facing=north] - # minecraft:dead_brain_coral_wall_fan[waterlogged=true,facing=south]: minecraft:brain_coral_wall_fan[waterlogged=true,facing=south] - # minecraft:dead_brain_coral_wall_fan[waterlogged=true,facing=west]: minecraft:brain_coral_wall_fan[waterlogged=true,facing=west] - # minecraft:dead_bubble_coral[waterlogged=false]: minecraft:bubble_coral[waterlogged=false] - # minecraft:dead_bubble_coral[waterlogged=true]: minecraft:bubble_coral[waterlogged=true] - # minecraft:dead_bubble_coral_fan[waterlogged=false]: minecraft:bubble_coral_fan[waterlogged=false] - # minecraft:dead_bubble_coral_fan[waterlogged=true]: minecraft:bubble_coral_fan[waterlogged=true] - # minecraft:dead_bubble_coral_wall_fan[waterlogged=false,facing=east]: minecraft:bubble_coral_wall_fan[waterlogged=false,facing=east] - # minecraft:dead_bubble_coral_wall_fan[waterlogged=false,facing=north]: minecraft:bubble_coral_wall_fan[waterlogged=false,facing=north] - # minecraft:dead_bubble_coral_wall_fan[waterlogged=false,facing=south]: minecraft:bubble_coral_wall_fan[waterlogged=false,facing=south] - # minecraft:dead_bubble_coral_wall_fan[waterlogged=false,facing=west]: minecraft:bubble_coral_wall_fan[waterlogged=false,facing=west] - # minecraft:dead_bubble_coral_wall_fan[waterlogged=true,facing=east]: minecraft:bubble_coral_wall_fan[waterlogged=true,facing=east] - # minecraft:dead_bubble_coral_wall_fan[waterlogged=true,facing=north]: minecraft:bubble_coral_wall_fan[waterlogged=true,facing=north] - # minecraft:dead_bubble_coral_wall_fan[waterlogged=true,facing=south]: minecraft:bubble_coral_wall_fan[waterlogged=true,facing=south] - # minecraft:dead_bubble_coral_wall_fan[waterlogged=true,facing=west]: minecraft:bubble_coral_wall_fan[waterlogged=true,facing=west] - # minecraft:dead_fire_coral[waterlogged=false]: minecraft:fire_coral[waterlogged=false] - # minecraft:dead_fire_coral[waterlogged=true]: minecraft:fire_coral[waterlogged=true] - # minecraft:dead_fire_coral_fan[waterlogged=false]: minecraft:fire_coral_fan[waterlogged=false] - # minecraft:dead_fire_coral_fan[waterlogged=true]: minecraft:fire_coral_fan[waterlogged=true] - # minecraft:dead_fire_coral_wall_fan[waterlogged=false,facing=east]: minecraft:fire_coral_wall_fan[waterlogged=false,facing=east] - # minecraft:dead_fire_coral_wall_fan[waterlogged=false,facing=north]: minecraft:fire_coral_wall_fan[waterlogged=false,facing=north] - # minecraft:dead_fire_coral_wall_fan[waterlogged=false,facing=south]: minecraft:fire_coral_wall_fan[waterlogged=false,facing=south] - # minecraft:dead_fire_coral_wall_fan[waterlogged=false,facing=west]: minecraft:fire_coral_wall_fan[waterlogged=false,facing=west] - # minecraft:dead_fire_coral_wall_fan[waterlogged=true,facing=east]: minecraft:fire_coral_wall_fan[waterlogged=true,facing=east] - # minecraft:dead_fire_coral_wall_fan[waterlogged=true,facing=north]: minecraft:fire_coral_wall_fan[waterlogged=true,facing=north] - # minecraft:dead_fire_coral_wall_fan[waterlogged=true,facing=south]: minecraft:fire_coral_wall_fan[waterlogged=true,facing=south] - # minecraft:dead_fire_coral_wall_fan[waterlogged=true,facing=west]: minecraft:fire_coral_wall_fan[waterlogged=true,facing=west] - # minecraft:dead_horn_coral[waterlogged=false]: minecraft:horn_coral[waterlogged=false] - # minecraft:dead_horn_coral[waterlogged=true]: minecraft:horn_coral[waterlogged=true] - # minecraft:dead_horn_coral_fan[waterlogged=false]: minecraft:horn_coral_fan[waterlogged=false] - # minecraft:dead_horn_coral_fan[waterlogged=true]: minecraft:horn_coral_fan[waterlogged=true] - # minecraft:dead_horn_coral_wall_fan[waterlogged=false,facing=east]: minecraft:horn_coral_wall_fan[waterlogged=false,facing=east] - # minecraft:dead_horn_coral_wall_fan[waterlogged=false,facing=north]: minecraft:horn_coral_wall_fan[waterlogged=false,facing=north] - # minecraft:dead_horn_coral_wall_fan[waterlogged=false,facing=south]: minecraft:horn_coral_wall_fan[waterlogged=false,facing=south] - # minecraft:dead_horn_coral_wall_fan[waterlogged=false,facing=west]: minecraft:horn_coral_wall_fan[waterlogged=false,facing=west] - # minecraft:dead_horn_coral_wall_fan[waterlogged=true,facing=east]: minecraft:horn_coral_wall_fan[waterlogged=true,facing=east] - # minecraft:dead_horn_coral_wall_fan[waterlogged=true,facing=north]: minecraft:horn_coral_wall_fan[waterlogged=true,facing=north] - # minecraft:dead_horn_coral_wall_fan[waterlogged=true,facing=south]: minecraft:horn_coral_wall_fan[waterlogged=true,facing=south] - # minecraft:dead_horn_coral_wall_fan[waterlogged=true,facing=west]: minecraft:horn_coral_wall_fan[waterlogged=true,facing=west] - # minecraft:dead_tube_coral[waterlogged=false]: minecraft:tube_coral[waterlogged=false] - # minecraft:dead_tube_coral[waterlogged=true]: minecraft:tube_coral[waterlogged=true] - # minecraft:dead_tube_coral_fan[waterlogged=false]: minecraft:tube_coral_fan[waterlogged=false] - # minecraft:dead_tube_coral_fan[waterlogged=true]: minecraft:tube_coral_fan[waterlogged=true] - # minecraft:dead_tube_coral_wall_fan[waterlogged=false,facing=east]: minecraft:tube_coral_wall_fan[waterlogged=false,facing=east] - # minecraft:dead_tube_coral_wall_fan[waterlogged=false,facing=north]: minecraft:tube_coral_wall_fan[waterlogged=false,facing=north] - # minecraft:dead_tube_coral_wall_fan[waterlogged=false,facing=south]: minecraft:tube_coral_wall_fan[waterlogged=false,facing=south] - # minecraft:dead_tube_coral_wall_fan[waterlogged=false,facing=west]: minecraft:tube_coral_wall_fan[waterlogged=false,facing=west] - # minecraft:dead_tube_coral_wall_fan[waterlogged=true,facing=east]: minecraft:tube_coral_wall_fan[waterlogged=true,facing=east] - # minecraft:dead_tube_coral_wall_fan[waterlogged=true,facing=north]: minecraft:tube_coral_wall_fan[waterlogged=true,facing=north] - # minecraft:dead_tube_coral_wall_fan[waterlogged=true,facing=south]: minecraft:tube_coral_wall_fan[waterlogged=true,facing=south] - # minecraft:dead_tube_coral_wall_fan[waterlogged=true,facing=west]: minecraft:tube_coral_wall_fan[waterlogged=true,facing=west] + # dead_brain_coral[waterlogged=false]: brain_coral[waterlogged=false] + # dead_brain_coral[waterlogged=true]: brain_coral[waterlogged=true] + # dead_brain_coral_fan[waterlogged=false]: brain_coral_fan[waterlogged=false] + # dead_brain_coral_fan[waterlogged=true]: brain_coral_fan[waterlogged=true] + # dead_brain_coral_wall_fan[waterlogged=false,facing=east]: brain_coral_wall_fan[waterlogged=false,facing=east] + # dead_brain_coral_wall_fan[waterlogged=false,facing=north]: brain_coral_wall_fan[waterlogged=false,facing=north] + # dead_brain_coral_wall_fan[waterlogged=false,facing=south]: brain_coral_wall_fan[waterlogged=false,facing=south] + # dead_brain_coral_wall_fan[waterlogged=false,facing=west]: brain_coral_wall_fan[waterlogged=false,facing=west] + # dead_brain_coral_wall_fan[waterlogged=true,facing=east]: brain_coral_wall_fan[waterlogged=true,facing=east] + # dead_brain_coral_wall_fan[waterlogged=true,facing=north]: brain_coral_wall_fan[waterlogged=true,facing=north] + # dead_brain_coral_wall_fan[waterlogged=true,facing=south]: brain_coral_wall_fan[waterlogged=true,facing=south] + # dead_brain_coral_wall_fan[waterlogged=true,facing=west]: brain_coral_wall_fan[waterlogged=true,facing=west] + # dead_bubble_coral[waterlogged=false]: bubble_coral[waterlogged=false] + # dead_bubble_coral[waterlogged=true]: bubble_coral[waterlogged=true] + # dead_bubble_coral_fan[waterlogged=false]: bubble_coral_fan[waterlogged=false] + # dead_bubble_coral_fan[waterlogged=true]: bubble_coral_fan[waterlogged=true] + # dead_bubble_coral_wall_fan[waterlogged=false,facing=east]: bubble_coral_wall_fan[waterlogged=false,facing=east] + # dead_bubble_coral_wall_fan[waterlogged=false,facing=north]: bubble_coral_wall_fan[waterlogged=false,facing=north] + # dead_bubble_coral_wall_fan[waterlogged=false,facing=south]: bubble_coral_wall_fan[waterlogged=false,facing=south] + # dead_bubble_coral_wall_fan[waterlogged=false,facing=west]: bubble_coral_wall_fan[waterlogged=false,facing=west] + # dead_bubble_coral_wall_fan[waterlogged=true,facing=east]: bubble_coral_wall_fan[waterlogged=true,facing=east] + # dead_bubble_coral_wall_fan[waterlogged=true,facing=north]: bubble_coral_wall_fan[waterlogged=true,facing=north] + # dead_bubble_coral_wall_fan[waterlogged=true,facing=south]: bubble_coral_wall_fan[waterlogged=true,facing=south] + # dead_bubble_coral_wall_fan[waterlogged=true,facing=west]: bubble_coral_wall_fan[waterlogged=true,facing=west] + # dead_fire_coral[waterlogged=false]: fire_coral[waterlogged=false] + # dead_fire_coral[waterlogged=true]: fire_coral[waterlogged=true] + # dead_fire_coral_fan[waterlogged=false]: fire_coral_fan[waterlogged=false] + # dead_fire_coral_fan[waterlogged=true]: fire_coral_fan[waterlogged=true] + # dead_fire_coral_wall_fan[waterlogged=false,facing=east]: fire_coral_wall_fan[waterlogged=false,facing=east] + # dead_fire_coral_wall_fan[waterlogged=false,facing=north]: fire_coral_wall_fan[waterlogged=false,facing=north] + # dead_fire_coral_wall_fan[waterlogged=false,facing=south]: fire_coral_wall_fan[waterlogged=false,facing=south] + # dead_fire_coral_wall_fan[waterlogged=false,facing=west]: fire_coral_wall_fan[waterlogged=false,facing=west] + # dead_fire_coral_wall_fan[waterlogged=true,facing=east]: fire_coral_wall_fan[waterlogged=true,facing=east] + # dead_fire_coral_wall_fan[waterlogged=true,facing=north]: fire_coral_wall_fan[waterlogged=true,facing=north] + # dead_fire_coral_wall_fan[waterlogged=true,facing=south]: fire_coral_wall_fan[waterlogged=true,facing=south] + # dead_fire_coral_wall_fan[waterlogged=true,facing=west]: fire_coral_wall_fan[waterlogged=true,facing=west] + # dead_horn_coral[waterlogged=false]: horn_coral[waterlogged=false] + # dead_horn_coral[waterlogged=true]: horn_coral[waterlogged=true] + # dead_horn_coral_fan[waterlogged=false]: horn_coral_fan[waterlogged=false] + # dead_horn_coral_fan[waterlogged=true]: horn_coral_fan[waterlogged=true] + # dead_horn_coral_wall_fan[waterlogged=false,facing=east]: horn_coral_wall_fan[waterlogged=false,facing=east] + # dead_horn_coral_wall_fan[waterlogged=false,facing=north]: horn_coral_wall_fan[waterlogged=false,facing=north] + # dead_horn_coral_wall_fan[waterlogged=false,facing=south]: horn_coral_wall_fan[waterlogged=false,facing=south] + # dead_horn_coral_wall_fan[waterlogged=false,facing=west]: horn_coral_wall_fan[waterlogged=false,facing=west] + # dead_horn_coral_wall_fan[waterlogged=true,facing=east]: horn_coral_wall_fan[waterlogged=true,facing=east] + # dead_horn_coral_wall_fan[waterlogged=true,facing=north]: horn_coral_wall_fan[waterlogged=true,facing=north] + # dead_horn_coral_wall_fan[waterlogged=true,facing=south]: horn_coral_wall_fan[waterlogged=true,facing=south] + # dead_horn_coral_wall_fan[waterlogged=true,facing=west]: horn_coral_wall_fan[waterlogged=true,facing=west] + # dead_tube_coral[waterlogged=false]: tube_coral[waterlogged=false] + # dead_tube_coral[waterlogged=true]: tube_coral[waterlogged=true] + # dead_tube_coral_fan[waterlogged=false]: tube_coral_fan[waterlogged=false] + # dead_tube_coral_fan[waterlogged=true]: tube_coral_fan[waterlogged=true] + # dead_tube_coral_wall_fan[waterlogged=false,facing=east]: tube_coral_wall_fan[waterlogged=false,facing=east] + # dead_tube_coral_wall_fan[waterlogged=false,facing=north]: tube_coral_wall_fan[waterlogged=false,facing=north] + # dead_tube_coral_wall_fan[waterlogged=false,facing=south]: tube_coral_wall_fan[waterlogged=false,facing=south] + # dead_tube_coral_wall_fan[waterlogged=false,facing=west]: tube_coral_wall_fan[waterlogged=false,facing=west] + # dead_tube_coral_wall_fan[waterlogged=true,facing=east]: tube_coral_wall_fan[waterlogged=true,facing=east] + # dead_tube_coral_wall_fan[waterlogged=true,facing=north]: tube_coral_wall_fan[waterlogged=true,facing=north] + # dead_tube_coral_wall_fan[waterlogged=true,facing=south]: tube_coral_wall_fan[waterlogged=true,facing=south] + # dead_tube_coral_wall_fan[waterlogged=true,facing=west]: tube_coral_wall_fan[waterlogged=true,facing=west] #### Chorus Plant #### # Chorus Plant does support transparent textures, but man... its hitbox is super weird. You're probably better off using leaves. - # minecraft:chorus_plant[down=false,east=false,north=false,south=false,up=false,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=false,north=false,south=false,up=false,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=true,north=false,south=false,up=false,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=true,north=false,south=false,up=false,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=false,north=true,south=false,up=false,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=false,north=true,south=false,up=false,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=true,north=true,south=false,up=false,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=true,north=true,south=false,up=false,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=false,north=false,south=true,up=false,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=false,north=false,south=true,up=false,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=true,north=false,south=true,up=false,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=true,north=false,south=true,up=false,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=false,north=true,south=true,up=false,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=false,north=true,south=true,up=false,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=true,north=true,south=true,up=false,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=false,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=false,north=false,south=false,up=true,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=false,north=false,south=false,up=true,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=true,north=false,south=false,up=true,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=true,north=false,south=false,up=true,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=false,north=true,south=false,up=true,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=false,north=true,south=false,up=true,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=true,north=true,south=false,up=true,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=true,north=true,south=false,up=true,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=false,north=false,south=true,up=true,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=false,north=false,south=true,up=true,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=true,north=false,south=true,up=true,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=true,north=false,south=true,up=true,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=false,north=true,south=true,up=true,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=false,north=true,south=true,up=true,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=true,north=true,south=true,up=true,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=false]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=false,north=false,south=false,up=false,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=false,north=false,south=false,up=false,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=true,north=false,south=false,up=false,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=true,north=false,south=false,up=false,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=false,north=true,south=false,up=false,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=false,north=true,south=false,up=false,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=true,north=true,south=false,up=false,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=true,north=true,south=false,up=false,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=false,north=false,south=true,up=false,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=false,north=false,south=true,up=false,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=true,north=false,south=true,up=false,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=true,north=false,south=true,up=false,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=false,north=true,south=true,up=false,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=false,north=true,south=true,up=false,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=true,north=true,south=true,up=false,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=false,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=false,north=false,south=false,up=true,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=false,north=false,south=false,up=true,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=true,north=false,south=false,up=true,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=true,north=false,south=false,up=true,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=false,north=true,south=false,up=true,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=false,north=true,south=false,up=true,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=true,north=true,south=false,up=true,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=true,north=true,south=false,up=true,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=false,north=false,south=true,up=true,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=false,north=false,south=true,up=true,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=true,north=false,south=true,up=true,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=true,north=false,south=true,up=true,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=false,north=true,south=true,up=true,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=true,east=false,north=true,south=true,up=true,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] - # minecraft:chorus_plant[down=false,east=true,north=true,south=true,up=true,west=true]: minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] \ No newline at end of file + # chorus_plant[down=true,east=true,north=true,south=true,up=true,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=true,north=true,south=true,up=false,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=true,north=true,south=true,up=false,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=true,north=true,south=false,up=true,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=true,north=true,south=false,up=true,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=true,north=true,south=false,up=false,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=true,north=true,south=false,up=false,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=true,north=false,south=true,up=true,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=true,north=false,south=true,up=true,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=true,north=false,south=true,up=false,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=true,north=false,south=true,up=false,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=true,north=false,south=false,up=true,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=true,north=false,south=false,up=true,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=true,north=false,south=false,up=false,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=true,north=false,south=false,up=false,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=false,north=true,south=true,up=true,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=false,north=true,south=true,up=true,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=false,north=true,south=true,up=false,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=false,north=true,south=true,up=false,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=false,north=true,south=false,up=true,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=false,north=true,south=false,up=true,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=false,north=true,south=false,up=false,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=false,north=true,south=false,up=false,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=false,north=false,south=true,up=true,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=false,north=false,south=true,up=true,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=false,north=false,south=true,up=false,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=false,north=false,south=true,up=false,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=false,north=false,south=false,up=true,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=false,north=false,south=false,up=true,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=false,north=false,south=false,up=false,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=true,east=false,north=false,south=false,up=false,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=true,north=true,south=true,up=true,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=true,north=true,south=true,up=true,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=true,north=true,south=true,up=false,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=true,north=true,south=true,up=false,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=true,north=true,south=false,up=true,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=true,north=true,south=false,up=true,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=true,north=true,south=false,up=false,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=true,north=true,south=false,up=false,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=true,north=false,south=true,up=true,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=true,north=false,south=true,up=true,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=true,north=false,south=true,up=false,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=true,north=false,south=true,up=false,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=true,north=false,south=false,up=true,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=true,north=false,south=false,up=true,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=true,north=false,south=false,up=false,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=true,north=false,south=false,up=false,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=false,north=true,south=true,up=true,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=false,north=true,south=true,up=true,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=false,north=true,south=true,up=false,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=false,north=true,south=true,up=false,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=false,north=true,south=false,up=true,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=false,north=true,south=false,up=true,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=false,north=true,south=false,up=false,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=false,north=true,south=false,up=false,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=false,north=false,south=true,up=true,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=false,north=false,south=true,up=true,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=false,north=false,south=true,up=false,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=false,north=false,south=true,up=false,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=false,north=false,south=false,up=true,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=false,north=false,south=false,up=true,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=false,north=false,south=false,up=false,west=true]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] + # chorus_plant[down=false,east=false,north=false,south=false,up=false,west=false]: chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true] \ No newline at end of file diff --git a/common-files/src/main/resources/resources/internal/configuration/i18n.yml b/common-files/src/main/resources/resources/internal/configuration/translations.yml similarity index 99% rename from common-files/src/main/resources/resources/internal/configuration/i18n.yml rename to common-files/src/main/resources/resources/internal/configuration/translations.yml index febd3d010..6912f3f26 100644 --- a/common-files/src/main/resources/resources/internal/configuration/i18n.yml +++ b/common-files/src/main/resources/resources/internal/configuration/translations.yml @@ -1,4 +1,4 @@ -i18n: +translations: en: internal.next_page: Next Page internal.previous_page: Previous Page diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/blasting.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/blasting.png index de9284244..df8692eb1 100644 Binary files a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/blasting.png and b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/blasting.png differ diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/brewing_recipe.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/brewing_recipe.png index 3942cd518..080841bb4 100644 Binary files a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/brewing_recipe.png and b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/brewing_recipe.png differ diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/campfire.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/campfire.png index d5ab49192..2d00b20c0 100644 Binary files a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/campfire.png and b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/campfire.png differ diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/category.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/category.png index 39f8c1260..9cc4bb3ee 100644 Binary files a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/category.png and b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/category.png differ diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/cooking_recipe.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/cooking_recipe.png index f762e055e..faca7a278 100644 Binary files a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/cooking_recipe.png and b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/cooking_recipe.png differ diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/crafting_recipe.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/crafting_recipe.png index 1c2641cfa..892ba6059 100644 Binary files a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/crafting_recipe.png and b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/crafting_recipe.png differ diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/item_browser.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/item_browser.png index 421545181..27c53ba5c 100644 Binary files a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/item_browser.png and b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/item_browser.png differ diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/no_recipe.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/no_recipe.png index 63febd3d8..4284695e4 100644 Binary files a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/no_recipe.png and b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/no_recipe.png differ diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/smelting.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/smelting.png index 8015e9a3e..6ae611953 100644 Binary files a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/smelting.png and b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/smelting.png differ diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/smithing_transform_recipe.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/smithing_transform_recipe.png index 31b6ea3e5..ff35a158f 100644 Binary files a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/smithing_transform_recipe.png and b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/smithing_transform_recipe.png differ diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/smoking.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/smoking.png index cfb5c5cc6..924d28d14 100644 Binary files a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/smoking.png and b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/smoking.png differ diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/stonecutting_recipe.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/stonecutting_recipe.png index 9cceec838..a0add24b9 100644 Binary files a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/stonecutting_recipe.png and b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/gui/custom/stonecutting_recipe.png differ diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/offset/space_split.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/offset/space_split.png index 3ca3f1d84..6dbab57dd 100644 Binary files a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/offset/space_split.png and b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/font/offset/space_split.png differ diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/cooking_info.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/cooking_info.png index f6344e8e8..ce6a7872e 100644 Binary files a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/cooking_info.png and b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/cooking_info.png differ diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/cooking_info.png.mcmeta b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/cooking_info.png.mcmeta index 0a7194257..b995b819c 100644 --- a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/cooking_info.png.mcmeta +++ b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/cooking_info.png.mcmeta @@ -1,6 +1 @@ -{ - "animation": { - "interpolate": false, - "frametime": 5 - } -} +{"animation":{"interpolate":false,"frametime":5}} \ No newline at end of file diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/exit.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/exit.png index 25c6f603d..951eb4ca9 100644 Binary files a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/exit.png and b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/exit.png differ diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/get_item.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/get_item.png index eb25e613e..0843cf32b 100644 Binary files a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/get_item.png and b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/get_item.png differ diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/next_page_0.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/next_page_0.png index 793e3a742..a6d45a377 100644 Binary files a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/next_page_0.png and b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/next_page_0.png differ diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/next_page_1.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/next_page_1.png index 79dd272a7..817f8d569 100644 Binary files a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/next_page_1.png and b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/next_page_1.png differ diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/previous_page_0.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/previous_page_0.png index 9f4b14745..8629c2563 100644 Binary files a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/previous_page_0.png and b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/previous_page_0.png differ diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/previous_page_1.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/previous_page_1.png index dfe5aca29..e02d945e2 100644 Binary files a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/previous_page_1.png and b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/previous_page_1.png differ diff --git a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/return.png b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/return.png index 8ab378e91..b29810b5c 100644 Binary files a/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/return.png and b/common-files/src/main/resources/resources/internal/resourcepack/assets/minecraft/textures/item/custom/gui/return.png differ diff --git a/common-files/src/main/resources/translations/de.yml b/common-files/src/main/resources/translations/de.yml index b3e57e754..5ce8d8ef8 100644 --- a/common-files/src/main/resources/translations/de.yml +++ b/common-files/src/main/resources/translations/de.yml @@ -145,7 +145,7 @@ warning.config.recipe.brewing.missing_container: "Problem in Datei Problem in Datei gefunden - Beim Brewing-Recipe '' fehlt das erforderliche 'ingredient'-Argument." warning.config.recipe.result.post_processor.missing_type: "Problem in Datei gefunden - Beim Recipe '' fehlt das erforderliche 'type'-Argument für Result-Post-Processors." warning.config.recipe.result.post_processor.invalid_type: "Problem in Datei gefunden - Das Recipe '' verwendet einen ungültigen Result-Post-Processor-Typ ''." -warning.config.i18n.unknown_locale: "Problem in Datei gefunden - Unbekannte Locale ''." +warning.config.translation.unknown_locale: "Problem in Datei gefunden - Unbekannte Locale ''." warning.config.template.duplicate: "Problem in Datei gefunden - Doppeltes Template ''. Bitte prüfe, ob dieselbe Konfiguration in anderen Dateien vorhanden ist." warning.config.template.invalid: "Problem in Datei gefunden - Die Config '' verwendet ein ungültiges Template ''." warning.config.template.argument.self_increase_int.invalid_range: "Problem in Datei gefunden - Das Template '' verwendet ein 'from' '', das größer ist als 'to' '' im 'self_increase_int'-Argument." diff --git a/common-files/src/main/resources/translations/en.yml b/common-files/src/main/resources/translations/en.yml index e7a1325d6..13f426037 100644 --- a/common-files/src/main/resources/translations/en.yml +++ b/common-files/src/main/resources/translations/en.yml @@ -54,8 +54,8 @@ command.search_usage.not_found: "No usage found for this item" command.search_recipe.no_item: "Please hold an item before running this command" command.search_usage.no_item: "Please hold an item before running this command" command.totem_animation.failure.not_totem: "Item '' is not minecraft:totem_of_undying" -commands.totem_animation.success.single: "Played totem animation to " -commands.totem_animation.success.multiple: "Played totem animation to players" +command.totem_animation.success.single: "Played totem animation to " +command.totem_animation.success.multiple: "Played totem animation to players" command.resource.enable.success: "Enabled resource . Run /ce reload all to apply changes" command.resource.enable.failure.unknown: "Unknown resource " command.resource.disable.success: "Disabled resource . Run /ce reload all to apply changes" @@ -65,6 +65,9 @@ command.upload.failure.not_supported: "Current hosting method '' doe command.upload.on_progress: "Started uploading progress. Check the console for more information." command.send_resource_pack.success.single: "Sent resource pack to ." command.send_resource_pack.success.multiple: "Send resource packs to players." +command.locale.set.failure: "Invalid locale format: " +command.locale.set.success: "Updated selected locale to for " +command.locale.unset.success: "Cleared selected locale for " warning.network.resource_pack.unverified_uuid: "Player is attempting to request a resource pack using a UUID () that is not authenticated by the server." warning.config.pack.duplicated_files: "Duplicated files Found. Please resolve them through config.yml 'resource-pack.duplicated-files-handler' section." warning.config.yaml.duplicated_key: "Issue found in file - Found duplicated key '' at line , this might cause unexpected results." @@ -158,7 +161,7 @@ warning.config.recipe.brewing.missing_container: "Issue found in file Issue found in file - The brewing recipe '' is missing the required 'ingredient' argument." warning.config.recipe.result.post_processor.missing_type: "Issue found in file - The recipe '' is missing the required 'type' argument for result post processors." warning.config.recipe.result.post_processor.invalid_type: "Issue found in file - The recipe '' is using an invalid result post processor type ''." -warning.config.i18n.unknown_locale: "Issue found in file - Unknown locale ''." +warning.config.translation.unknown_locale: "Issue found in file - Unknown locale ''." warning.config.template.duplicate: "Issue found in file - Duplicated template ''. Please check if there is the same configuration in other files." warning.config.template.invalid: "Issue found in file - The config '' is using an invalid template ''." warning.config.template.argument.self_increase_int.invalid_range: "Issue found in file - The template '' is using a 'from' '' larger than 'to' '' in 'self_increase_int' argument." @@ -184,6 +187,10 @@ warning.config.item.settings.invulnerable.invalid_damage_source: "Issue warning.config.item.settings.equipment.missing_asset_id: "Issue found in file - The item '' is missing the required 'asset-id' argument for 'equipment' settings." warning.config.item.settings.equipment.invalid_asset_id: "Issue found in file - The item '' is using an invalid 'asset-id' argument for 'equipment' settings. This might be because you haven't created this equipment configuration or misspelled the asset-id." warning.config.item.settings.projectile.missing_item: "Issue found in file - The item '' is missing the required 'item' argument for 'projectile' settings." +warning.config.item.settings.craft_remainder.missing_type: "Issue found in file - The item '' is missing the required 'type' argument for 'craft-remainder'." +warning.config.item.settings.craft_remainder.invalid_type: "Issue found in file - The item '' is using an invalid craft-remainder type ''." +warning.config.item.settings.craft_remainder.fixed.missing_item: "Issue found in file - The item '' is missing the required 'item' argument for fixed 'craft-remainder'." +warning.config.item.settings.craft_remainder.recipe_based.missing_terms: "Issue found in file - The item '' is missing the required 'terms' argument for recipe based 'craft-remainder'." warning.config.item.data.attribute_modifiers.missing_type: "Issue found in file - The item '' is missing the required 'type' argument for 'attribute-modifiers' data." warning.config.item.data.attribute_modifiers.missing_amount: "Issue found in file - The item '' is missing the required 'amount' argument for 'attribute-modifiers' data." warning.config.item.data.attribute_modifiers.missing_operation: "Issue found in file - The item '' is missing the required 'operation' argument for 'attribute-modifiers' data." @@ -258,6 +265,8 @@ warning.config.item.model.special.chest.invalid_openness: "Issue found i 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.copper_golem_statue.missing_pose: "Issue found in file - The item '' is missing the required 'pose' argument for special model 'minecraft:copper_golem_statue'." +warning.config.item.model.special.copper_golem_statue.missing_texture: "Issue found in file - The item '' is missing the required 'texture' argument for special model 'minecraft:copper_golem_statue'." warning.config.item.updater.missing_type: "Issue found in file - The item '' is missing the required 'type' argument for item updater." warning.config.item.updater.invalid_type: "Issue found in file - The item '' is using an invalid 'type' argument '' for item updater." warning.config.item.updater.transmute.missing_material: "Issue found in file - The item '' is missing the required 'material' argument for 'transmute' item updater." @@ -283,9 +292,9 @@ warning.config.block.state.invalid_auto_state: "Issue found in file Issue found in file - The visual state group '' has reached its maximum capacity of '' slots and cannot allocate a state for block ''." warning.config.block.state.unavailable_vanilla: "Issue found in file - The block '' is using an unavailable vanilla block state ''. Please free that state in block-state-mappings." warning.config.block.state.invalid_vanilla_id: "Issue found in file - The block '' is using a vanilla block state '' that exceeds the available slot range '0~'." -warning.config.block.state.invalid_id: "Issue found in file - The block state ID range () used by block '' is outside the valid range of 0 to . Please add more server-side blocks in 'config.yml' if the current slots are exhausted." +warning.config.block.state.invalid_id: "Issue found in file - The block state ID range () used by block '' is outside the valid range of 0 to . Please add more server-side blocks in 'config.yml' or select any available id." warning.config.block.state.id.conflict: "Issue found in file - The block '' failed to bind real block state '' for '' as the state has been occupied by ''." -warning.config.block.state.id.exhausted: "Issue found in file - Cannot allocate enough real block state for block ''. Please add more server-side blocks in 'config.yml' and restart if the current slots are exhausted." +warning.config.block.state.id.exhausted: "Issue found in file - Cannot allocate enough real block state for block ''. Please add more server-side blocks in 'config.yml' and restart server or run '/ce debug clean-cache' to release unused slots if the current slots are exhausted." warning.config.block.state.model.missing_path: "Issue found in file - The block '' is missing the required 'path' option for 'model'." warning.config.block.state.model.invalid_path: "Issue found in file - The block '' has a 'path' argument '' that contains illegal characters. Please read https://minecraft.wiki/w/Resource_location#Legal_characters." warning.config.block.state.model.conflict: "Issue found in file - The block '' is trying to bind model '' to block state '' which has already been bound to model ''" @@ -460,6 +469,13 @@ warning.config.function.set_variable.missing_value: "Issue found in file warning.config.function.toast.missing_toast: "Issue found in file - The config '' is missing the required 'toast' argument for 'toast' function." warning.config.function.toast.missing_icon: "Issue found in file - The config '' is missing the required 'icon' argument for 'toast' function." warning.config.function.toast.invalid_advancement_type: "Issue found in file - The config '' is using an invalid advancement type '' for 'toast' function. Allowed types: []." +warning.config.function.merchant_trade.missing_offers: "Issue found in file - The config '' is missing the required 'offers' argument for 'merchant_trade' function." +warning.config.function.merchant_trade.offer.missing_cost_1: "Issue found in file - The config '' is missing the required 'cost-1' argument for merchant trade offers." +warning.config.function.merchant_trade.offer.missing_result: "Issue found in file - The config '' is missing the required 'result' argument for merchant trade offers." +warning.config.function.when.missing_source: "Issue found in file - The config '' is missing the required 'source' argument for 'when' function." +warning.config.function.if_else.missing_rules: "Issue found in file - The config '' is missing the required 'rules' argument for 'if_else' function." +warning.config.function.update_block_property.missing_properties: "Issue found in file - The config '' is missing the required 'properties' argument for 'update_block_property' function." +warning.config.function.transform_block.missing_block: "Issue found in file - The config '' is missing the required 'block' argument for 'transform_block' function." warning.config.selector.missing_type: "Issue found in file - The config '' is missing the required 'type' argument for selector." warning.config.selector.invalid_type: "Issue found in file - The config '' is using an invalid selector type ''." warning.config.selector.invalid_target: "Issue found in file - The config '' is using an invalid selector target ''." @@ -472,6 +488,7 @@ warning.config.resource_pack.generation.missing_item_model: "Item 'Block state '' is missing model file: ''" warning.config.resource_pack.generation.missing_parent_model: "Model '' cannot find parent model: ''" warning.config.resource_pack.generation.missing_equipment_texture: "Equipment '' is missing texture ''" +warning.config.resource_pack.generation.missing_sound: "Sound event '' is missing ogg file ''" warning.config.resource_pack.generation.texture_not_in_atlas: "Texture '' is not listed in the atlas. You need to add the texture path to the atlas or enable 'fix-atlas' option in config.yml." warning.config.resource_pack.invalid_overlay_format: "Issue found in config.yml at 'resource-pack.overlay-format' - Invalid overlay format ''. Overlay format must contain the placeholder '{version}'." warning.config.equipment.duplicate: "Issue found in file - Duplicated equipment ''. Please check if there is the same configuration in other files." diff --git a/common-files/src/main/resources/translations/es.yml b/common-files/src/main/resources/translations/es.yml index 13b0fe348..0a262c0f3 100644 --- a/common-files/src/main/resources/translations/es.yml +++ b/common-files/src/main/resources/translations/es.yml @@ -98,7 +98,7 @@ warning.config.recipe.smithing_transform.post_processor.missing_type: "P warning.config.recipe.smithing_transform.post_processor.invalid_type: "Problema encontrado en el archivo - La receta de transformación de herrería '' está usando un tipo de postprocesador inválido ''." warning.config.recipe.smithing_transform.post_processor.keep_component.missing_components: "Problema encontrado en el archivo - La receta de transformación de herrería '' carece del argumento requerido 'components' para el postprocesador 'keep_components'." warning.config.recipe.smithing_transform.post_processor.keep_component.missing_tags: "Problema encontrado en el archivo - La receta de transformación de herrería '' carece del argumento requerido 'tags' para el postprocesador 'keep_tags'." -warning.config.i18n.unknown_locale: "Problema encontrado en el archivo - Configuración regional desconocida ''." +warning.config.translation.unknown_locale: "Problema encontrado en el archivo - Configuración regional desconocida ''." warning.config.template.duplicate: "Problema encontrado en el archivo - Plantilla duplicada ''. Verifica si hay la misma configuración en otros archivos." warning.config.template.argument.self_increase_int.invalid_range: "Problema encontrado en el archivo - La plantilla '' está usando un valor 'from' '' mayor que el valor 'to' '' en el argumento 'self_increase_int'." warning.config.template.argument.list.invalid_type: "Problema encontrado en el archivo - La plantilla '' está usando un argumento 'list' que espera una 'List' como argumento, pero el argumento de entrada es de tipo ''." diff --git a/common-files/src/main/resources/translations/ru_ru.yml b/common-files/src/main/resources/translations/ru_ru.yml index 5ae93dfe1..af586317c 100644 --- a/common-files/src/main/resources/translations/ru_ru.yml +++ b/common-files/src/main/resources/translations/ru_ru.yml @@ -134,7 +134,7 @@ warning.config.recipe.smithing_transform.post_processor.missing_type: " warning.config.recipe.smithing_transform.post_processor.invalid_type: "Проблема найдена в файле - Рецепт трансформации кузнечного дела '' использует недопустимый тип постпроцессора ''." warning.config.recipe.smithing_transform.post_processor.keep_component.missing_components: "Проблема найдена в файле - В рецепте трансформации кузнечного дела '' отсутствует необходимый аргумент 'components' для постпроцессоров 'keep_components'." warning.config.recipe.smithing_transform.post_processor.keep_component.missing_tags: "Проблема найдена в файле - В рецепте трансформации кузнечного дела '' отсутствует необходимый аргумент 'tags' для постпроцессоров 'keep_tags'." -warning.config.i18n.unknown_locale: "Проблема найдена в файле - Неизвестный locale ''." +warning.config.translation.unknown_locale: "Проблема найдена в файле - Неизвестный locale ''." warning.config.template.duplicate: "Проблема найдена в файле - Дублированный шаблон ''. Проверьте, есть ли такая же конфигурация в других файлах." warning.config.template.invalid: "Проблема найдена в файле - Конфигурация '' использует недействительный шаблон ''." warning.config.template.argument.self_increase_int.invalid_range: "Проблема найдена в файле - Шаблон '' использует 'from' '' больше, чем 'to' '' в 'self_increase_int' аргументе." diff --git a/common-files/src/main/resources/translations/tr.yml b/common-files/src/main/resources/translations/tr.yml index 8507154a8..94a56309f 100644 --- a/common-files/src/main/resources/translations/tr.yml +++ b/common-files/src/main/resources/translations/tr.yml @@ -97,7 +97,7 @@ warning.config.recipe.smithing_transform.post_processor.missing_type: "< warning.config.recipe.smithing_transform.post_processor.invalid_type: " dosyasında sorun bulundu - '' demircilik dönüşüm tarifi geçersiz bir işlem sonrası işleyici türü '' kullanıyor." warning.config.recipe.smithing_transform.post_processor.keep_component.missing_components: " dosyasında sorun bulundu - '' demircilik dönüşüm tarifi, 'keep_components' işlem sonrası işleyicisi için gerekli 'components' argümanı eksik." warning.config.recipe.smithing_transform.post_processor.keep_component.missing_tags: " dosyasında sorun bulundu - '' demircilik dönüşüm tarifi, 'keep_tags' işlem sonrası işleyicisi için gerekli 'tags' argümanı eksik." -warning.config.i18n.unknown_locale: " dosyasında sorun bulundu - Bilinmeyen yerel ayar ''." +warning.config.translation.unknown_locale: " dosyasında sorun bulundu - Bilinmeyen yerel ayar ''." warning.config.template.duplicate: " dosyasında sorun bulundu - Yinelenen şablon ''. Diğer dosyalarda aynı yapılandırmanın olup olmadığını kontrol edin." warning.config.template.argument.self_increase_int.invalid_range: " dosyasında sorun bulundu - '' şablonu, 'self_increase_int' argümanında 'to' '' değerinden daha büyük bir 'from' '' değeri kullanıyor." warning.config.template.argument.list.invalid_type: " dosyasında sorun bulundu - '' şablonu, argüman olarak bir 'List' bekleyen bir 'list' argümanı kullanıyor, ancak giriş argümanı bir '' türünde." diff --git a/common-files/src/main/resources/translations/zh_cn.yml b/common-files/src/main/resources/translations/zh_cn.yml index 4298f19fa..95a857b0e 100644 --- a/common-files/src/main/resources/translations/zh_cn.yml +++ b/common-files/src/main/resources/translations/zh_cn.yml @@ -54,8 +54,8 @@ command.search_usage.not_found: "找不到此物品的用途" command.search_recipe.no_item: "请手持物品后再执行此命令" command.search_usage.no_item: "请手持物品后再执行此命令" command.totem_animation.failure.not_totem: "'' 不是 totem_of_undying 类型" -commands.totem_animation.success.single: "已将图腾动画播放给" -commands.totem_animation.success.multiple: "已将图腾动画播放给名玩家" +command.totem_animation.success.single: "已将图腾动画播放给" +command.totem_animation.success.multiple: "已将图腾动画播放给名玩家" command.resource.enable.success: "已启用 . 执行 /ce reload all 以应用更改" command.resource.enable.failure.unknown: "未知资源 " command.resource.disable.success: "已禁用 . 执行 /ce reload all 以应用更改" @@ -105,17 +105,17 @@ warning.config.condition.match_entity.missing_id: "在文件 发 warning.config.condition.match_item.missing_id: "在文件 发现问题 - 配置项 '' 缺少 'match_item' 条件所需的 'id' 参数" warning.config.condition.table_bonus.missing_enchantment: "在文件 发现问题 - 配置项 '' 缺少 'table_bonus' 条件所需的 'enchantment' 参数" warning.config.condition.table_bonus.missing_chances: "在文件 发现问题 - 配置项 '' 缺少 'table_bonus' 条件所需的 'chances' 参数" -warning.config.condition.permission.missing_permission: "在文件 中发现问题 - 配置项 '' 缺少 'permission' 条件必需的 'permission' 参数" -warning.config.condition.string_equals.missing_value1: "在文件 中发现问题 - 配置项 '' 缺少 'string_equals' 条件必需的 'value1' 参数" -warning.config.condition.string_equals.missing_value2: "在文件 中发现问题 - 配置项 '' 缺少 'string_equals' 条件必需的 'value2' 参数" -warning.config.condition.string_contains.missing_value1: "在文件 中发现问题 - 配置项 '' 缺少 'string_contains' 条件必需的 'value1' 参数" -warning.config.condition.string_contains.missing_value2: "在文件 中发现问题 - 配置项 '' 缺少 'string_contains' 条件必需的 'value2' 参数" -warning.config.condition.string_regex.missing_value: "在文件 中发现问题 - 配置项 '' 缺少 'string_regex' 条件必需的 'value' 参数" -warning.config.condition.string_regex.missing_regex: "在文件 中发现问题 - 配置项 '' 缺少 'string_regex' 条件必需的 'regex' 参数" -warning.config.condition.expression.missing_expression: "在文件 中发现问题 - 配置项 '' 缺少 'expression' 条件必需的 'expression' 参数" +warning.config.condition.permission.missing_permission: "在文件 发现问题 - 配置项 '' 缺少 'permission' 条件必需的 'permission' 参数" +warning.config.condition.string_equals.missing_value1: "在文件 发现问题 - 配置项 '' 缺少 'string_equals' 条件必需的 'value1' 参数" +warning.config.condition.string_equals.missing_value2: "在文件 发现问题 - 配置项 '' 缺少 'string_equals' 条件必需的 'value2' 参数" +warning.config.condition.string_contains.missing_value1: "在文件 发现问题 - 配置项 '' 缺少 'string_contains' 条件必需的 'value1' 参数" +warning.config.condition.string_contains.missing_value2: "在文件 发现问题 - 配置项 '' 缺少 'string_contains' 条件必需的 'value2' 参数" +warning.config.condition.string_regex.missing_value: "在文件 发现问题 - 配置项 '' 缺少 'string_regex' 条件必需的 'value' 参数" +warning.config.condition.string_regex.missing_regex: "在文件 发现问题 - 配置项 '' 缺少 'string_regex' 条件必需的 'regex' 参数" +warning.config.condition.expression.missing_expression: "在文件 发现问题 - 配置项 '' 缺少 'expression' 条件必需的 'expression' 参数" warning.config.condition.is_null.missing_argument: "在文件 发现问题 - 配置项 '' 缺少 'is_null' 条件的必需的 'argument' 参数" warning.config.condition.hand.missing_hand: "在文件 发现问题 - 配置项 '' 缺少 'hand' 条件必需的 'hand' 参数" -warning.config.condition.hand.invalid_hand: "在文件 发现问题 - 配置项 '' 使用了无效的 'hand' 参数 ''('hand' 条件)。允许的手部类型: []" +warning.config.condition.hand.invalid_hand: "在文件 发现问题 - 配置项 '' 使用了无效的 'hand' 参数 '' ('hand' 条件). 允许的手部类型: []" warning.config.condition.on_cooldown.missing_id: "在文件 发现问题 - 配置项 '' 缺少 'on_cooldown' 条件必需的 'id' 参数" warning.config.structure.not_section: "在文件 发现问题 - 配置项 '' 应为配置段落 但实际类型为 ''" warning.config.image.duplicate: "在文件 发现问题 - 重复的图片配置 '' 请检查其他文件中是否存在相同配置" @@ -127,9 +127,11 @@ warning.config.image.invalid_font_chars: "在文件 发现问题 warning.config.image.invalid_grid_size: "在文件 发现问题 - 图片 '' 使用了无效的网格尺寸 ''. 正确的格式 '3,5'" warning.config.image.missing_char: "在文件 发现问题 - 图片 '' 缺少必需的 'char' 参数" warning.config.image.codepoint.conflict: "在文件 发现问题 - 图片 '' 在字体 中使用的字符 '()' 已被其他图片 '' 占用" +warning.config.image.codepoint.exhausted: "在文件 发现问题 - 无法为图片 '' 分配码位, 字体 '' 的可用码位已耗尽" warning.config.image.invalid_codepoint_grid: "在文件 发现问题 - 图片 '' 的 'chars' 码位网格无效" warning.config.image.invalid_char: "在文件 发现问题 - 图片 '' 的 'char' 参数包含组合字符可能导致图片分裂" warning.config.image.invalid_hex_value: "在文件 发现问题 - 图片 '' 使用的 Unicode 字符 '' 不是有效的十六进制值" +warning.config.image.invalid_unicode_string: "在文件 发现问题 - 图片 '' 使用的 Unicode 字符串 '' 格式不正确" warning.config.recipe.duplicate: "在文件 发现问题 - 重复的配方 '' 请检查其他文件中是否存在相同配置" warning.config.recipe.missing_type: "在文件 发现问题 - 配方 '' 缺少必需的 'type' 参数" warning.config.recipe.invalid_type: "在文件 发现问题 - 配方 '' 使用了无效的配方类型 ''" @@ -156,7 +158,7 @@ warning.config.recipe.brewing.missing_container: "在文件 发 warning.config.recipe.brewing.missing_ingredient: "在文件 发现问题 - 酿造配方 '' 缺少必需的 'ingredient' 参数" warning.config.recipe.result.post_processor.missing_type: "在文件 发现问题 - 配方 '' 缺少结果后处理器必需的 'type' 参数" warning.config.recipe.result.post_processor.invalid_type: "在文件 发现问题 - 配方 '' 使用了无效结果后处理器类型 ''" -warning.config.i18n.unknown_locale: "在文件 发现问题 - 未知的语言环境 ''" +warning.config.translation.unknown_locale: "在文件 发现问题 - 未知的语言环境 ''" warning.config.template.duplicate: "在文件 发现问题 - 重复的模板 '' 请检查其他文件中是否存在相同配置" warning.config.template.invalid: "在文件 发现问题 - 配置 '' 使用了无效的模板 ''" warning.config.template.argument.self_increase_int.invalid_range: "在文件 发现问题 - 模板 '' 在 'self_increase_int' 参数中使用了一个起始值 '' 大于终止值 ''" @@ -196,19 +198,21 @@ warning.config.item.invalid_custom_model_data: "在文件 发现 warning.config.item.bad_custom_model_data: "在文件 发现问题 - 物品 '' 使用的自定义模型数据 '' 数值过大 建议使用小于 16,777,216 的值" warning.config.item.item_model.conflict: "在文件 发现问题 - 物品 '' 使用了无效的 'item-model' 选项. 这个 item-model 已经存在对应的原版物品" warning.config.item.custom_model_data.conflict: "在文件 发现问题 - 物品 '' 使用的自定义模型数据 '' 已被物品 '' 占用" +warning.config.item.custom_model_data.exhausted: "在文件 发现问题 - 无法为物品 '' 分配自定义模型数据, 材质 '' 的自定义模型数据已耗尽" warning.config.item.invalid_component: "在文件 发现问题 - 物品 '' 使用了未知的数据组件 ''" warning.config.item.missing_model_id: "在文件 发现问题 - 物品 '' 缺少必需的 'custom-model-data' 或 'item-model' 参数" -warning.config.item.missing_model: "在文件 中发现问题 - 物品 '' 缺少支持 1.21.4+ 资源包必需的 'model' 配置项" +warning.config.item.missing_model: "在文件 发现问题 - 物品 '' 缺少支持 1.21.4+ 资源包必需的 'model' 配置项" warning.config.item.behavior.missing_type: "在文件 发现问题 - 物品 '' 的行为配置缺少必需的 'type' 参数" warning.config.item.behavior.invalid_type: "在文件 发现问题 - 物品 '' 使用了无效的行为类型 ''" warning.config.item.behavior.block.missing_block: "在文件 发现问题 - 物品 '' 的 'block_item' 行为缺少必需的 'block' 参数" +warning.config.item.behavior.wall_block.missing_block: "在文件 发现问题 - 物品 '' 缺少 'wall_block_item' 行为所需的 'block' 参数" warning.config.item.behavior.furniture.missing_furniture: "在文件 发现问题 - 物品 '' 的 'furniture_item' 行为缺少必需的 'furniture' 参数" warning.config.item.behavior.liquid_collision.missing_block: "在文件 发现问题 - 物品 '' 的 'liquid_collision_block_item' 行为缺少必需的 'block' 参数" warning.config.item.behavior.double_high.missing_block: "在文件 发现问题 - 物品 '' 的 'double_high_block_item' 行为缺少必需的 'block' 参数" -warning.config.item.legacy_model.missing_path: "在文件 中发现问题 - 物品 '' 的旧版模型(legacy-model)缺少必需的 'path' 参数" -warning.config.item.legacy_model.overrides.missing_path: "在文件 中发现问题 - 物品 '' 的旧版模型覆写规则(overrides)缺少必需的 'path' 参数" -warning.config.item.legacy_model.overrides.missing_predicate: "在文件 中发现问题 - 物品 '' 的旧版模型覆写规则(overrides)缺少必需的 'predicate' 参数" -warning.config.item.legacy_model.cannot_convert: "在文件 中发现问题 - 无法将物品 '' 自动转换为旧版格式,请手动为此物品创建 'legacy-model' 配置项" +warning.config.item.legacy_model.missing_path: "在文件 发现问题 - 物品 '' 的旧版模型(legacy-model)缺少必需的 'path' 参数" +warning.config.item.legacy_model.overrides.missing_path: "在文件 发现问题 - 物品 '' 的旧版模型覆写规则(overrides)缺少必需的 'path' 参数" +warning.config.item.legacy_model.overrides.missing_predicate: "在文件 发现问题 - 物品 '' 的旧版模型覆写规则(overrides)缺少必需的 'predicate' 参数" +warning.config.item.legacy_model.cannot_convert: "在文件 发现问题 - 无法将物品 '' 自动转换为旧版格式, 请手动为此物品创建 'legacy-model' 配置项" warning.config.item.model.invalid_type: "在文件 发现问题 - 物品 '' 使用了无效的模型类型 ''" warning.config.item.model.tint.missing_type: "在文件 发现问题 - 物品 '' 的染色配置缺少必需的 'type' 参数" warning.config.item.model.tint.invalid_type: "在文件 发现问题 - 物品 '' 使用了无效的染色类型 ''" @@ -254,9 +258,13 @@ warning.config.item.model.special.chest.invalid_openness: "在文件 在文件 发现问题 - 物品 '' 的 'minecraft:shulker_box' 特殊模型缺少必需的 'texture' 参数" warning.config.item.model.special.shulker_box.invalid_openness: "在文件 发现问题 - 物品 '' 的 'minecraft:shulker_box' 特殊模型使用了无效的 'openness' 值 '' 有效范围应为 0~1" warning.config.item.model.special.head.missing_kind: "在文件 发现问题 - 物品 '' 的 'minecraft:head' 特殊模型缺少必需的 'kind' 参数" +warning.config.item.model.special.copper_golem_statue.missing_pose: "在文件 发现问题 - 物品 '' 的 'minecraft:copper_golem_statue' 特殊模型缺少必需的 'pose' 参数" +warning.config.item.model.special.copper_golem_statue.missing_texture: "在文件 发现问题 - 物品 '' 的 'minecraft:copper_golem_statue' 特殊模型缺少必需的 'texture' 参数" warning.config.item.updater.missing_type: "在文件 发现问题 - 物品 '' 缺少物品更新器必需的参数 'type'" warning.config.item.updater.invalid_type: "在文件 发现问题 - 物品 '' 在物品更新器中使用了无效的 'type' 参数值 ''" -warning.config.item.updater.transmute.missing_material: "在文件 发现问题 - 物品 '' 缺少物品转换更新所需的 'material' 参数." +warning.config.item.updater.transmute.missing_material: "在文件 发现问题 - 物品 '' 缺少物品转换更新所需的 'material' 参数" +warning.config.block_state_mapping.invalid_state: "在文件 发现问题 - 配置 '' 使用了无效的方块状态 ''" +warning.config.block_state_mapping.conflict: "在文件 发现问题 - 配置 '' 无法将方块状态 映射到方块状态 , 因为该状态已被映射到 " warning.config.block.duplicate: "在文件 发现问题 - 重复的方块 '' 请检查其他文件中是否存在相同配置" warning.config.block.missing_state: "在文件 发现问题 - 方块 '' 缺少必需的 'state' 参数" warning.config.block.state.property.missing_type: "在文件 发现问题 - 方块 '' 的属性 '' 缺少必需的 'type' 参数" @@ -266,12 +274,20 @@ warning.config.block.state.property.invalid_format: "在文件 warning.config.block.state.missing_state: "在文件 发现问题 - 方块 '' 的 'state' 缺少必需的 'state' 参数" warning.config.block.state.missing_properties: "在文件 发现问题 - 方块 '' 的 'states' 缺少必需的 'properties' 段落" warning.config.block.state.missing_appearances: "在文件 发现问题 - 方块 '' 的 'states' 缺少必需的 'appearances' 段落" +warning.config.block.state.entity_renderer.invalid_type: "在文件 发现问题 - 方块 '' 使用了无效的实体渲染器类型 ''" +warning.config.block.state.entity_renderer.item_display.missing_item: "在文件 发现问题 - 方块 '' 缺少 'item_display' 实体渲染器所需的 'item' 参数" +warning.config.block.state.entity_renderer.text_display.missing_text: "在文件 发现问题 - 方块 '' 缺少 'text_display' 实体渲染器所需的 'text' 参数" +warning.config.block.state.entity_renderer.better_model.missing_model: "在文件 发现问题 - 方块 '' 缺少 'better_model' 实体渲染器所需的 'model' 参数" +warning.config.block.state.entity_renderer.model_engine.missing_model: "在文件 发现问题 - 方块 '' 缺少 'model_engine' 实体渲染器所需的 'model' 参数" warning.config.block.state.variant.invalid_appearance: "在文件 发现问题 - 方块 '' 的变体 '' 使用了不存在的 appearance ''" warning.config.block.state.invalid_vanilla: "在文件 发现问题 - 方块 '' 使用了无效的原版方块状态 ''" +warning.config.block.state.invalid_auto_state: "在文件 发现问题 - 方块 '' 使用了无效的自动状态 ''. 允许的值: []" +warning.config.block.state.auto_state.exhausted: "在文件 发现问题 - 视觉状态组 '' 已达到其最大容量 '' 个槽位, 无法为方块 '' 分配状态" warning.config.block.state.unavailable_vanilla: "在文件 发现问题 - 方块 '' 使用了不可用的原版方块状态 '' 请在 block-state-mappings 中释放该状态" warning.config.block.state.invalid_vanilla_id: "在文件 发现问题 - 方块 '' 使用的原版方块状态 '' 超出可用槽位范围 '0~'" +warning.config.block.state.invalid_id: "在文件 发现问题 - 方块 '' 使用的真实方块状态 '' 超出可用槽位范围 '0~' 如果槽位已用尽 请在 config.yml 中添加更多服务端侧方块或选择任意可用的id" warning.config.block.state.id.conflict: "在文件 发现问题 - 方块 '' 无法为 '' 绑定真实方块状态 '' 因该状态已被 '' 占用" -warning.config.block.state.invalid_id: "在文件 发现问题 - 方块 '' 使用的真实方块状态 '' 超出可用槽位范围 '0~' 如果槽位已用尽 请在 config.yml 中添加更多服务端侧方块" +warning.config.block.state.id.exhausted: "在文件 发现问题 - 无法为方块 '' 分配足够的真实方块状态. 如果当前槽位已用尽, 请在 'config.yml' 中添加更多服务端方块并重启服务器或使用指令'/ce debug clean-cache'释放未使用的方块状态" warning.config.block.state.model.missing_path: "在文件 发现问题 - 方块 '' 的 'model' 缺少必需的 'path' 选项" warning.config.block.state.model.invalid_path: "在文件 发现问题 - 方块 '' 的 'path' 参数 '' 包含非法字符 请参考 https://zh.minecraft.wiki/w/%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4ID#%E5%90%88%E6%B3%95%E5%AD%97%E7%AC%A6" warning.config.block.state.model.conflict: "在文件 发现问题 - 方块 '' 正尝试将模型 '' 绑定到方块状态 '' 上, 但是此状态已绑定了另一个模型 ''" @@ -405,44 +421,52 @@ warning.config.conflict_matcher.all_of.missing_terms: "在 config.yml warning.config.conflict_matcher.any_of.missing_terms: "在 config.yml 的 'resource-pack.duplicated-files-handler' 处发现问题 - 任一匹配器缺少必需的 'terms' 参数" warning.config.conflict_resolution.missing_type: "在 config.yml 的 'resource-pack.duplicated-files-handler' 处发现问题 - 文件冲突处理器的某个解决方案缺少必需的 'type' 参数" warning.config.conflict_resolution.invalid_type: "在 config.yml 的 'resource-pack.duplicated-files-handler' 处发现问题 - 文件冲突处理器的某个解决方案使用了无效类型 ''" -warning.config.event.missing_trigger: "在文件 中发现问题 - 配置项 '' 缺少事件触发器必需的 'on' 参数" -warning.config.event.invalid_trigger: "在文件 中发现问题 - 配置项 '' 使用了无效的事件触发器 ''" +warning.config.event.missing_trigger: "在文件 发现问题 - 配置项 '' 缺少事件触发器必需的 'on' 参数" +warning.config.event.invalid_trigger: "在文件 发现问题 - 配置项 '' 使用了无效的事件触发器 ''" warning.config.event.condition.missing_type: "在文件 - 配置项 '' 的事件条件缺少 'type' 参数" warning.config.event.condition.invalid_type: "在文件 - 配置项 '' 使用了无效的事件条件类型 ''" -warning.config.function.missing_type: "在文件 中发现问题 - 配置项 '' 缺少函数必需的 'type' 参数" -warning.config.function.invalid_type: "在文件 中发现问题 - 配置项 '' 使用了无效的函数类型 ''" -warning.config.function.command.missing_command: "在文件 中发现问题 - 配置项 '' 缺少 'command' 函数必需的 'command' 参数" -warning.config.function.actionbar.missing_actionbar: "在文件 中发现问题 - 配置项 '' 缺少 'actionbar' 函数必需的 'actionbar' 参数" -warning.config.function.message.missing_message: "在文件 中发现问题 - 配置项 '' 缺少 'message' 函数必需的 'message' 参数" -warning.config.function.open_window.missing_gui_type: "在文件 中发现问题 - 配置项 '' 缺少 'open_window' 函数必需的 'gui-type' 参数" -warning.config.function.open_window.invalid_gui_type: "在文件 中发现问题 - 配置项 '' 为 'open_window' 函数使用了无效的 GUI 类型 . 允许的类型: []" -warning.config.function.run.missing_functions: "在文件 中发现问题 - 配置项 '' 缺少 'run' 函数必需的 'functions' 参数" -warning.config.function.place_block.missing_block_state: "在文件 中发现问题 - 配置项 '' 缺少 'place_block' 函数必需的 'block-state' 参数" -warning.config.function.set_food.missing_food: "在文件 中发现问题 - 配置项 '' 缺少 'set_food' 函数必需的 'food' 参数" -warning.config.function.set_saturation.missing_saturation: "在文件 中发现问题 - 配置项 '' 缺少 'set_saturation' 函数必需的 'saturation' 参数" -warning.config.function.play_sound.missing_sound: "在文件 中发现问题 - 配置项 '' 缺少 'play_sound' 函数必需的 'sound' 参数" -warning.config.function.particle.missing_particle: "在文件 中发现问题 - 配置项 '' 缺少 'particle' 函数必需的 'particle' 参数" -warning.config.function.particle.missing_color: "在文件 中发现问题 - 配置项 '' 缺少 'particle' 函数必需的 'color' 参数" -warning.config.function.particle.missing_from: "在文件 中发现问题 - 配置项 '' 缺少 'particle' 函数必需的 'from' 参数" -warning.config.function.particle.missing_to: "在文件 中发现问题 - 配置项 '' 缺少 'particle' 函数必需的 'to' 参数" -warning.config.function.particle.missing_item: "在文件 中发现问题 - 配置项 '' 缺少 'particle' 函数必需的 'item' 参数" -warning.config.function.particle.missing_block_state: "在文件 中发现问题 - 配置项 '' 缺少 'particle' 函数必需的 'block-state' 参数" -warning.config.function.leveler_exp.missing_count: "在文件 中发现问题 - 配置项 '' 缺少 'leveler_exp' 函数必需的 'count' 参数" -warning.config.function.leveler_exp.missing_leveler: "在文件 中发现问题 - 配置项 '' 缺少 'leveler_exp' 函数必需的 'leveler' 参数" -warning.config.function.leveler_exp.missing_plugin: "在文件 中发现问题 - 配置项 '' 缺少 'leveler_exp' 函数必需的 'plugin' 参数" -warning.config.function.remove_potion_effect.missing_potion_effect: "在文件 中发现问题 - 配置项 '' 缺少 'remove_potion_effect' 函数必需的 'potion-effect' 参数" -warning.config.function.potion_effect.missing_potion_effect: "在文件 中发现问题 - 配置项 '' 缺少 'potion_effect' 函数必需的 'potion-effect' 参数" -warning.config.function.set_cooldown.missing_time: "在文件 中发现问题 - 配置项 '' 缺少 'set_cooldown' 函数必需的 'time' 参数" -warning.config.function.set_cooldown.missing_id: "在文件 中发现问题 - 配置项 '' 缺少 'set_cooldown' 函数必需的 'id' 参数" -warning.config.function.remove_cooldown.missing_id: "在文件 中发现问题 - 配置项 '' 缺少 'remove_cooldown' 函数必需的 'id' 参数" -warning.config.function.mythic_mobs_skill.missing_skill: "在文件 中发现问题 - 配置项 '' 缺少 'mythic_mobs_skill' 函数必需的 'skill' 参数" -warning.config.function.spawn_furniture.missing_furniture_id: "在文件 中发现问题 - 配置项 '' 缺少 'spawn_furniture' 函数必需的 'furniture-id' 参数" -warning.config.function.replace_furniture.missing_furniture_id: "在文件 中发现问题 - 配置项 '' 缺少 'replace_furniture' 函数必需的 'furniture-id' 参数" -warning.config.selector.missing_type: "在文件 中发现问题 - 配置项 '' 缺少选择器必需的 'type' 参数" -warning.config.selector.invalid_type: "在文件 中发现问题 - 配置项 '' 使用了无效的选择器类型 ''" -warning.config.selector.invalid_target: "在文件 中发现问题 - 配置项 '' 使用了无效的选择器目标 ''" -warning.config.resource_pack.item_model.already_exist: "无法为 '' 生成物品模型,因为文件 '' 已存在" -warning.config.resource_pack.model.generation.already_exist: "无法生成模型,因为模型文件 '' 已存在" +warning.config.function.missing_type: "在文件 发现问题 - 配置项 '' 缺少函数必需的 'type' 参数" +warning.config.function.invalid_type: "在文件 发现问题 - 配置项 '' 使用了无效的函数类型 ''" +warning.config.function.command.missing_command: "在文件 发现问题 - 配置项 '' 缺少 'command' 函数必需的 'command' 参数" +warning.config.function.actionbar.missing_actionbar: "在文件 发现问题 - 配置项 '' 缺少 'actionbar' 函数必需的 'actionbar' 参数" +warning.config.function.message.missing_message: "在文件 发现问题 - 配置项 '' 缺少 'message' 函数必需的 'message' 参数" +warning.config.function.open_window.missing_gui_type: "在文件 发现问题 - 配置项 '' 缺少 'open_window' 函数必需的 'gui-type' 参数" +warning.config.function.open_window.invalid_gui_type: "在文件 发现问题 - 配置项 '' 为 'open_window' 函数使用了无效的 GUI 类型 . 允许的类型: []" +warning.config.function.run.missing_functions: "在文件 发现问题 - 配置项 '' 缺少 'run' 函数必需的 'functions' 参数" +warning.config.function.place_block.missing_block_state: "在文件 发现问题 - 配置项 '' 缺少 'place_block' 函数必需的 'block-state' 参数" +warning.config.function.set_food.missing_food: "在文件 发现问题 - 配置项 '' 缺少 'set_food' 函数必需的 'food' 参数" +warning.config.function.set_saturation.missing_saturation: "在文件 发现问题 - 配置项 '' 缺少 'set_saturation' 函数必需的 'saturation' 参数" +warning.config.function.play_sound.missing_sound: "在文件 发现问题 - 配置项 '' 缺少 'play_sound' 函数必需的 'sound' 参数" +warning.config.function.particle.missing_particle: "在文件 发现问题 - 配置项 '' 缺少 'particle' 函数必需的 'particle' 参数" +warning.config.function.particle.missing_color: "在文件 发现问题 - 配置项 '' 缺少 'particle' 函数必需的 'color' 参数" +warning.config.function.particle.missing_from: "在文件 发现问题 - 配置项 '' 缺少 'particle' 函数必需的 'from' 参数" +warning.config.function.particle.missing_to: "在文件 发现问题 - 配置项 '' 缺少 'particle' 函数必需的 'to' 参数" +warning.config.function.particle.missing_item: "在文件 发现问题 - 配置项 '' 缺少 'particle' 函数必需的 'item' 参数" +warning.config.function.particle.missing_block_state: "在文件 发现问题 - 配置项 '' 缺少 'particle' 函数必需的 'block-state' 参数" +warning.config.function.leveler_exp.missing_count: "在文件 发现问题 - 配置项 '' 缺少 'leveler_exp' 函数必需的 'count' 参数" +warning.config.function.leveler_exp.missing_leveler: "在文件 发现问题 - 配置项 '' 缺少 'leveler_exp' 函数必需的 'leveler' 参数" +warning.config.function.leveler_exp.missing_plugin: "在文件 发现问题 - 配置项 '' 缺少 'leveler_exp' 函数必需的 'plugin' 参数" +warning.config.function.remove_potion_effect.missing_potion_effect: "在文件 发现问题 - 配置项 '' 缺少 'remove_potion_effect' 函数必需的 'potion-effect' 参数" +warning.config.function.potion_effect.missing_potion_effect: "在文件 发现问题 - 配置项 '' 缺少 'potion_effect' 函数必需的 'potion-effect' 参数" +warning.config.function.set_cooldown.missing_time: "在文件 发现问题 - 配置项 '' 缺少 'set_cooldown' 函数必需的 'time' 参数" +warning.config.function.set_cooldown.missing_id: "在文件 发现问题 - 配置项 '' 缺少 'set_cooldown' 函数必需的 'id' 参数" +warning.config.function.remove_cooldown.missing_id: "在文件 发现问题 - 配置项 '' 缺少 'remove_cooldown' 函数必需的 'id' 参数" +warning.config.function.mythic_mobs_skill.missing_skill: "在文件 发现问题 - 配置项 '' 缺少 'mythic_mobs_skill' 函数必需的 'skill' 参数" +warning.config.function.spawn_furniture.missing_furniture_id: "在文件 发现问题 - 配置项 '' 缺少 'spawn_furniture' 函数必需的 'furniture-id' 参数" +warning.config.function.replace_furniture.missing_furniture_id: "在文件 发现问题 - 配置项 '' 缺少 'replace_furniture' 函数必需的 'furniture-id' 参数" +warning.config.function.teleport.missing_x: "在文件 发现问题 - 配置 '' 缺少 'teleport' 函数所需的 'x' 参数" +warning.config.function.teleport.missing_y: "在文件 发现问题 - 配置 '' 缺少 'teleport' 函数所需的 'y' 参数" +warning.config.function.teleport.missing_z: "在文件 发现问题 - 配置 '' 缺少 'teleport' 函数所需的 'z' 参数" +warning.config.function.set_variable.missing_name: "在文件 发现问题 - 配置 '' 缺少 'set_variable' 函数所需的 'name' 参数" +warning.config.function.set_variable.missing_value: "在文件 发现问题 - 配置 '' 缺少 'set_variable' 函数所需的 'number' 或 'text' 参数" +warning.config.function.toast.missing_toast: "在文件 发现问题 - 配置 '' 缺少 'toast' 函数所需的 'toast' 参数" +warning.config.function.toast.missing_icon: "在文件 发现问题 - 配置 '' 缺少 'toast' 函数所需的 'icon' 参数" +warning.config.function.toast.invalid_advancement_type: "在文件 发现问题 - 配置 '' 为 'toast' 函数使用了无效的进度类型 ''. 允许的类型: []" +warning.config.selector.missing_type: "在文件 发现问题 - 配置项 '' 缺少选择器必需的 'type' 参数" +warning.config.selector.invalid_type: "在文件 发现问题 - 配置项 '' 使用了无效的选择器类型 ''" +warning.config.selector.invalid_target: "在文件 发现问题 - 配置项 '' 使用了无效的选择器目标 ''" +warning.config.resource_pack.item_model.already_exist: "无法为 '' 生成物品模型, 因为文件 '' 已存在" +warning.config.resource_pack.model.generation.already_exist: "无法生成模型, 因为模型文件 '' 已存在" warning.config.resource_pack.generation.malformatted_json: "Json文件 '' 格式错误" warning.config.resource_pack.generation.missing_font_texture: "字体''缺少必要纹理: ''" warning.config.resource_pack.generation.missing_model_texture: "模型''缺少纹理''" @@ -450,9 +474,9 @@ warning.config.resource_pack.generation.missing_item_model: "物品'方块状态''缺少模型文件: ''" warning.config.resource_pack.generation.missing_parent_model: "模型''找不到父级模型文件: ''" warning.config.resource_pack.generation.missing_equipment_texture: "装备 '' 缺少纹理 ''" -warning.config.resource_pack.generation.texture_not_in_atlas: "纹理''不在图集内. 你需要将纹理路径或文件夹前缀添加到图集内,或者启用 config.yml 中的 'fix-atlas' 选项" +warning.config.resource_pack.generation.texture_not_in_atlas: "纹理''不在图集内. 你需要将纹理路径或文件夹前缀添加到图集内, 或者启用 config.yml 中的 'fix-atlas' 选项" warning.config.resource_pack.invalid_overlay_format: "在 config.yml 的 'resource-pack.overlay-format' 处发现问题 - 无效的overlay格式 ''. Overlay格式必须包含占位符 '{version}'" -warning.config.equipment.duplicate: "在文件 发现问题 - 重复的装备配置 ''。请检查其他文件中是否存在相同配置" +warning.config.equipment.duplicate: "在文件 发现问题 - 重复的装备配置 ''. 请检查其他文件中是否存在相同配置" warning.config.equipment.missing_type: "在文件 发现问题 - 装备 '' 缺少必需的 'type' 参数" warning.config.equipment.invalid_type: "在文件 发现问题 - 装备 '' 使用了无效的 'type' 参数" -warning.config.equipment.invalid_sacrificed_armor: "在 config.yml 的 'equipment.sacrificed-vanilla-armor' 处发现问题 - 无效的原版盔甲类型 ''" \ No newline at end of file +warning.config.equipment.invalid_sacrificed_armor: "在 config.yml 的 'equipment.sacrificed-vanilla-armor' 处发现问题 - 无效的原版盔甲类型 ''" diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 9efbbf559..9ad35c52d 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -21,7 +21,7 @@ dependencies { implementation("net.momirealms:sparrow-nbt-codec:${rootProject.properties["sparrow_nbt_version"]}") implementation("net.momirealms:sparrow-nbt-legacy-codec:${rootProject.properties["sparrow_nbt_version"]}") // S3 - implementation("net.momirealms:craft-engine-s3:0.7") + implementation("net.momirealms:craft-engine-s3:0.8") // Util compileOnly("net.momirealms:sparrow-util:${rootProject.properties["sparrow_util_version"]}") // Adventure diff --git a/core/src/main/java/net/momirealms/craftengine/core/advancement/network/Advancement.java b/core/src/main/java/net/momirealms/craftengine/core/advancement/network/Advancement.java index c58194ae9..a3d8dd0ed 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/advancement/network/Advancement.java +++ b/core/src/main/java/net/momirealms/craftengine/core/advancement/network/Advancement.java @@ -1,6 +1,7 @@ package net.momirealms.craftengine.core.advancement.network; -import net.momirealms.craftengine.core.entity.player.Player; +import net.kyori.adventure.text.Component; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.VersionHelper; @@ -8,10 +9,11 @@ import org.jetbrains.annotations.ApiStatus; import java.util.Map; import java.util.Optional; +import java.util.function.Function; -public class Advancement { +public class Advancement { private final Optional parent; - private final Optional displayInfo; + private final Optional> displayInfo; // 1.20-1.20.1 private final Map criteria; @@ -19,7 +21,7 @@ public class Advancement { private final AdvancementRequirements requirements; private final boolean sendsTelemetryEvent; - public Advancement(Optional parent, Optional displayInfo, AdvancementRequirements requirements, boolean sendsTelemetryEvent) { + public Advancement(Optional parent, Optional> displayInfo, AdvancementRequirements requirements, boolean sendsTelemetryEvent) { this.criteria = null; this.displayInfo = displayInfo; this.parent = parent; @@ -28,7 +30,7 @@ public class Advancement { } @ApiStatus.Obsolete - public Advancement(Optional parent, Optional displayInfo, Map criteria, AdvancementRequirements requirements, boolean sendsTelemetryEvent) { + public Advancement(Optional parent, Optional> displayInfo, Map criteria, AdvancementRequirements requirements, boolean sendsTelemetryEvent) { this.criteria = criteria; this.displayInfo = displayInfo; this.parent = parent; @@ -36,24 +38,24 @@ public class Advancement { this.sendsTelemetryEvent = sendsTelemetryEvent; } - public static Advancement read(FriendlyByteBuf buf) { + public static Advancement read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { Optional parent = buf.readOptional(FriendlyByteBuf::readKey); - Optional displayInfo = buf.readOptional(byteBuf -> AdvancementDisplay.read(buf)); + Optional> displayInfo = buf.readOptional(byteBuf -> AdvancementDisplay.read(buf, reader)); if (VersionHelper.isOrAbove1_20_2()) { AdvancementRequirements requirements = AdvancementRequirements.read(buf); boolean sendsTelemetryEvent = buf.readBoolean(); - return new Advancement(parent, displayInfo, requirements, sendsTelemetryEvent); + return new Advancement<>(parent, displayInfo, requirements, sendsTelemetryEvent); } else { Map criteria = buf.readMap(FriendlyByteBuf::readUtf, (byteBuf -> null)); AdvancementRequirements requirements = AdvancementRequirements.read(buf); boolean sendsTelemetryEvent = buf.readBoolean(); - return new Advancement(parent, displayInfo, criteria, requirements, sendsTelemetryEvent); + return new Advancement<>(parent, displayInfo, criteria, requirements, sendsTelemetryEvent); } } - public void write(FriendlyByteBuf buf) { + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { buf.writeOptional(this.parent, FriendlyByteBuf::writeKey); - buf.writeOptional(this.displayInfo, (byteBuf, info) -> info.write(buf)); + buf.writeOptional(this.displayInfo, (byteBuf, info) -> info.write(buf, writer)); if (!VersionHelper.isOrAbove1_20_2()) { buf.writeMap(this.criteria, FriendlyByteBuf::writeUtf, ((byteBuf, unused) -> {})); } @@ -61,7 +63,11 @@ public class Advancement { buf.writeBoolean(this.sendsTelemetryEvent); } - public void applyClientboundData(Player player) { - this.displayInfo.ifPresent(info -> info.applyClientboundData(player)); + public void applyClientboundData(Function, Item> function) { + this.displayInfo.ifPresent(info -> info.applyClientboundData(function)); + } + + public void replaceNetworkTags(Function function) { + this.displayInfo.ifPresent(info -> info.replaceNetworkTags(function)); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/advancement/network/AdvancementDisplay.java b/core/src/main/java/net/momirealms/craftengine/core/advancement/network/AdvancementDisplay.java index b2e22857d..d09b5f599 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/advancement/network/AdvancementDisplay.java +++ b/core/src/main/java/net/momirealms/craftengine/core/advancement/network/AdvancementDisplay.java @@ -2,26 +2,20 @@ package net.momirealms.craftengine.core.advancement.network; import net.kyori.adventure.text.Component; import net.momirealms.craftengine.core.advancement.AdvancementType; -import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.item.Item; -import net.momirealms.craftengine.core.plugin.CraftEngine; -import net.momirealms.craftengine.core.plugin.config.Config; -import net.momirealms.craftengine.core.plugin.context.NetworkTextReplaceContext; -import net.momirealms.craftengine.core.plugin.text.component.ComponentProvider; -import net.momirealms.craftengine.core.util.AdventureHelper; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import net.momirealms.craftengine.core.util.Key; -import java.util.Map; import java.util.Optional; +import java.util.function.Function; -public class AdvancementDisplay { +public class AdvancementDisplay { public static final int FLAG_BACKGROUND = 0b001; public static final int FLAG_SHOW_TOAST = 0b010; public static final int FLAG_HIDDEN = 0b100; private Component title; private Component description; - private Item icon; + private Item icon; private Optional background; private final AdvancementType type; private final boolean showToast; @@ -31,7 +25,7 @@ public class AdvancementDisplay { public AdvancementDisplay(Component title, Component description, - Item icon, + Item icon, Optional background, AdvancementType type, boolean showToast, @@ -49,24 +43,19 @@ public class AdvancementDisplay { this.y = y; } - public void applyClientboundData(Player player) { - this.icon = CraftEngine.instance().itemManager().s2c(this.icon, player); - if (Config.interceptAdvancement()) { - Map tokens1 = CraftEngine.instance().fontManager().matchTags(AdventureHelper.componentToJson(this.title)); - if (!tokens1.isEmpty()) { - this.title = AdventureHelper.replaceText(this.title, tokens1, NetworkTextReplaceContext.of(player)); - } - Map tokens2 = CraftEngine.instance().fontManager().matchTags(AdventureHelper.componentToJson(this.description)); - if (!tokens2.isEmpty()) { - this.description = AdventureHelper.replaceText(this.description, tokens2, NetworkTextReplaceContext.of(player)); - } - } + public void applyClientboundData(Function, Item> function) { + this.icon = function.apply(this.icon); } - public void write(FriendlyByteBuf buf) { + public void replaceNetworkTags(Function function) { + this.title = function.apply(this.title); + this.description = function.apply(this.description); + } + + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { buf.writeComponent(this.title); buf.writeComponent(this.description); - CraftEngine.instance().itemManager().encode(buf, this.icon); + writer.accept(buf, this.icon); buf.writeVarInt(this.type.ordinal()); int flags = 0; if (this.background.isPresent()) { @@ -84,10 +73,10 @@ public class AdvancementDisplay { buf.writeFloat(this.y); } - public static AdvancementDisplay read(FriendlyByteBuf buf) { + public static AdvancementDisplay read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { Component title = buf.readComponent(); Component description = buf.readComponent(); - Item icon = CraftEngine.instance().itemManager().decode(buf); + Item icon = reader.apply(buf); AdvancementType type = AdvancementType.byId(buf.readVarInt()); int flags = buf.readInt(); boolean hasBackground = (flags & 1) != 0; @@ -96,6 +85,6 @@ public class AdvancementDisplay { boolean hidden = (flags & 4) != 0; float x = buf.readFloat(); float y = buf.readFloat(); - return new AdvancementDisplay(title, description, icon, background, type, showToast, hidden, x, y); + return new AdvancementDisplay<>(title, description, icon, background, type, showToast, hidden, x, y); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/advancement/network/AdvancementHolder.java b/core/src/main/java/net/momirealms/craftengine/core/advancement/network/AdvancementHolder.java index 9e4ed5d7e..e33e22955 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/advancement/network/AdvancementHolder.java +++ b/core/src/main/java/net/momirealms/craftengine/core/advancement/network/AdvancementHolder.java @@ -1,23 +1,30 @@ package net.momirealms.craftengine.core.advancement.network; -import net.momirealms.craftengine.core.entity.player.Player; +import net.kyori.adventure.text.Component; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import net.momirealms.craftengine.core.util.Key; -public record AdvancementHolder(Key id, Advancement advancement) { +import java.util.function.Function; - public static AdvancementHolder read(FriendlyByteBuf buf) { +public record AdvancementHolder(Key id, Advancement advancement) { + + public static AdvancementHolder read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { Key key = buf.readKey(); - Advancement ad = Advancement.read(buf); - return new AdvancementHolder(key, ad); + Advancement ad = Advancement.read(buf, reader); + return new AdvancementHolder<>(key, ad); } - public void write(FriendlyByteBuf buf) { + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { buf.writeKey(this.id); - this.advancement.write(buf); + this.advancement.write(buf, writer); } - public void applyClientboundData(Player player) { - this.advancement.applyClientboundData(player); + public void applyClientboundData(Function, Item> function) { + this.advancement.applyClientboundData(function); + } + + public void replaceNetworkTags(Function function) { + this.advancement.replaceNetworkTags(function); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/AbstractBlockManager.java b/core/src/main/java/net/momirealms/craftengine/core/block/AbstractBlockManager.java index 86719197c..fffa626dd 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/AbstractBlockManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/AbstractBlockManager.java @@ -27,7 +27,7 @@ import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.plugin.config.ConfigParser; import net.momirealms.craftengine.core.plugin.config.IdSectionConfigParser; import net.momirealms.craftengine.core.plugin.config.SectionConfigParser; -import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.event.EventFunctions; import net.momirealms.craftengine.core.plugin.context.event.EventTrigger; import net.momirealms.craftengine.core.plugin.context.function.Function; @@ -51,6 +51,7 @@ import java.util.concurrent.CompletionException; import java.util.concurrent.ExecutionException; public abstract class AbstractBlockManager extends AbstractModelGenerator implements BlockManager { + private static final JsonElement EMPTY_VARIANT_MODEL = MiscUtils.init(new JsonObject(), o -> o.addProperty("model", "minecraft:block/empty")); protected final BlockParser blockParser; protected final BlockStateMappingParser blockStateMappingParser; // 根据id获取自定义方块 @@ -86,6 +87,8 @@ public abstract class AbstractBlockManager extends AbstractModelGenerator implem protected final Set tempVisualBlocksInUse = new HashSet<>(); // 声音映射表,和使用了哪些视觉方块有关 protected Map soundReplacements = Map.of(); + // 是否使用了透明方块模型 + protected boolean isTransparentModelInUse = false; protected AbstractBlockManager(CraftEngine plugin, int vanillaBlockStateCount, int customBlockCount) { super(plugin); @@ -128,6 +131,7 @@ public abstract class AbstractBlockManager extends AbstractModelGenerator implem this.byId.clear(); this.blockStateArranger.clear(); this.appearanceToRealState.clear(); + this.isTransparentModelInUse = false; Arrays.fill(this.blockStateMappings, -1); Arrays.fill(this.immutableBlockStates, EmptyBlock.STATE); Arrays.fill(this.autoVisualBlockStateCandidates, null); @@ -144,6 +148,11 @@ public abstract class AbstractBlockManager extends AbstractModelGenerator implem this.clearCache(); } + @Override + public boolean isTransparentModelInUse() { + return this.isTransparentModelInUse; + } + @Override public Map loadedBlocks() { return Collections.unmodifiableMap(this.byId); @@ -237,7 +246,7 @@ public abstract class AbstractBlockManager extends AbstractModelGenerator implem protected abstract CustomBlock createCustomBlock(@NotNull Holder.Reference holder, @NotNull BlockStateVariantProvider variantProvider, - @NotNull Map>> events, + @NotNull Map>> events, @Nullable LootTable lootTable); public class BlockStateMappingParser extends SectionConfigParser { @@ -354,15 +363,17 @@ public abstract class AbstractBlockManager extends AbstractModelGenerator implem } catch (IOException e) { AbstractBlockManager.this.plugin.logger().warn("Error while loading custom block states allocation cache", e); } - for (PendingConfigSection section : this.pendingConfigSections) { - ResourceConfigUtils.runCatching( - section.path(), - section.node(), - () -> parseSection(section.pack(), section.path(), section.node(), section.id(), section.config()), - () -> GsonHelper.get().toJson(section.config()) - ); + if (!this.pendingConfigSections.isEmpty()) { + for (PendingConfigSection section : this.pendingConfigSections) { + ResourceConfigUtils.runCatching( + section.path(), + section.node(), + () -> parseSection(section.pack(), section.path(), section.node(), section.id(), section.config()), + () -> GsonHelper.get().toJson(section.config()) + ); + } + this.pendingConfigSections.clear(); } - this.pendingConfigSections.clear(); } @Override @@ -480,13 +491,24 @@ public abstract class AbstractBlockManager extends AbstractModelGenerator implem } } + ExceptionCollector eCollector1 = new ExceptionCollector<>(); + + Map>> events; + try { + events = EventFunctions.parseEvents(ResourceConfigUtils.get(section, "events", "event")); + } catch (LocalizedResourceConfigException e) { + eCollector1.add(e); + events = Map.of(); + } + LootTable lootTable; + try { + lootTable = LootTable.fromMap(ResourceConfigUtils.getAsMapOrNull(section.get("loot"), "loot")); + } catch (LocalizedResourceConfigException e) { + eCollector1.add(e); + lootTable = null; + } // 创建自定义方块 - AbstractCustomBlock customBlock = (AbstractCustomBlock) createCustomBlock( - holder, - variantProvider, - EventFunctions.parseEvents(ResourceConfigUtils.get(section, "events", "event")), - LootTable.fromMap(ResourceConfigUtils.getAsMapOrNull(section.get("loot"), "loot")) - ); + AbstractCustomBlock customBlock = (AbstractCustomBlock) createCustomBlock(holder, variantProvider, events, lootTable); BlockBehavior blockBehavior = createBlockBehavior(customBlock, MiscUtils.getAsMapList(ResourceConfigUtils.get(section, "behavior", "behaviors"))); Map> appearanceConfigs; @@ -510,16 +532,27 @@ public abstract class AbstractBlockManager extends AbstractModelGenerator implem this.visualBlockStateAllocator.assignFixedBlockState(appearanceName.isEmpty() ? id.asString() : id.asString() + ":" + appearanceName, parsePluginFormattedBlockState(appearanceSection.get("state").toString())) ); } else if (appearanceSection.containsKey("auto-state")) { - String autoStateId = appearanceSection.get("auto-state").toString(); - AutoStateGroup group = AutoStateGroup.byId(autoStateId); + String appearanceName = entry.getKey(); + Object autoState = appearanceSection.get("auto-state"); + String autoStateType; + String autoStateId; + if (autoState instanceof Map map) { + Map config = ResourceConfigUtils.getAsMap(map, "auto-state"); + autoStateType = config.getOrDefault("type", "solid").toString(); + if (map.containsKey("id")) { + autoStateId = autoStateType + "[id=" + map.get("id").toString() + "]"; + } else { + autoStateId = appearanceName.isEmpty() ? id.asString() : id.asString() + "[appearance=" + appearanceName + "]"; + } + } else { + autoStateType = autoState.toString(); + autoStateId = appearanceName.isEmpty() ? id.asString() : id.asString() + "[appearance=" + appearanceName + "]"; + } + AutoStateGroup group = AutoStateGroup.byId(autoStateType); if (group == null) { throw new LocalizedResourceConfigException("warning.config.block.state.invalid_auto_state", autoStateId, EnumUtils.toString(AutoStateGroup.values())); } - String appearanceName = entry.getKey(); - futureVisualStates.put( - appearanceName, - this.visualBlockStateAllocator.requestAutoState(appearanceName.isEmpty() ? id.asString() : id.asString() + ":" + appearanceName, group) - ); + futureVisualStates.put(appearanceName, this.visualBlockStateAllocator.requestAutoState(autoStateId, group)); } else { throw new LocalizedResourceConfigException("warning.config.block.state.missing_state"); } @@ -551,7 +584,15 @@ public abstract class AbstractBlockManager extends AbstractModelGenerator implem AbstractBlockManager.this.plugin.logger().warn("Interrupted while allocating visual block state for block " + id.asString(), e); return; } - this.arrangeModelForStateAndVerify(visualBlockState, ResourceConfigUtils.get(appearanceSection, "model", "models")); + if (ResourceConfigUtils.getAsBoolean(appearanceSection.getOrDefault("transparent", false), "transparent")) { + AbstractBlockManager.this.isTransparentModelInUse = true; + this.arrangeModelForStateAndVerify(visualBlockState, EMPTY_VARIANT_MODEL); + } else { + Object modelConfig = ResourceConfigUtils.get(appearanceSection, "model", "models"); + if (modelConfig != null) { + this.arrangeModelForStateAndVerify(visualBlockState, parseBlockModel(modelConfig)); + } + } BlockStateAppearance blockStateAppearance = new BlockStateAppearance(visualBlockState, parseBlockEntityRender(appearanceSection.get("entity-renderer"))); appearances.put(appearanceName, blockStateAppearance); if (anyAppearance == null) { @@ -562,7 +603,7 @@ public abstract class AbstractBlockManager extends AbstractModelGenerator implem // 至少有一个外观吧 Objects.requireNonNull(anyAppearance, "any appearance should not be null"); - ExceptionCollector exceptionCollector = new ExceptionCollector<>(); + ExceptionCollector eCollector2 = new ExceptionCollector<>(); if (!singleState) { Map variantsSection = ResourceConfigUtils.getAsMapOrNull(stateSection.get("variants"), "variants"); if (variantsSection != null) { @@ -572,7 +613,7 @@ public abstract class AbstractBlockManager extends AbstractModelGenerator implem // 先解析nbt,找到需要修改的方块状态 CompoundTag tag = BlockNbtParser.deserialize(variantProvider, variantNBT); if (tag == null) { - exceptionCollector.add(new LocalizedResourceConfigException("warning.config.block.state.property.invalid_format", variantNBT)); + eCollector2.add(new LocalizedResourceConfigException("warning.config.block.state.property.invalid_format", variantNBT)); continue; } List possibleStates = variantProvider.getPossibleStates(tag); @@ -582,11 +623,11 @@ public abstract class AbstractBlockManager extends AbstractModelGenerator implem possibleState.setSettings(BlockSettings.ofFullCopy(possibleState.settings(), anotherSetting)); } } - String appearanceName = ResourceConfigUtils.getAsString(variantSection.get("appearance")); + String appearanceName = ResourceConfigUtils.getAsStringOrNull(variantSection.get("appearance")); if (appearanceName != null) { BlockStateAppearance appearance = appearances.get(appearanceName); if (appearance == null) { - exceptionCollector.add(new LocalizedResourceConfigException("warning.config.block.state.variant.invalid_appearance", variantNBT, appearanceName)); + eCollector2.add(new LocalizedResourceConfigException("warning.config.block.state.variant.invalid_appearance", variantNBT, appearanceName)); continue; } for (ImmutableBlockState possibleState : possibleStates) { @@ -605,7 +646,7 @@ public abstract class AbstractBlockManager extends AbstractModelGenerator implem // 绑定行为 for (ImmutableBlockState state : states) { if (isEntityBlock) { - state.setBlockEntityType(entityBlockBehavior.blockEntityType()); + state.setBlockEntityType(entityBlockBehavior.blockEntityType(state)); } state.setBehavior(blockBehavior); int internalId = state.customBlockState().registryId(); @@ -645,8 +686,11 @@ public abstract class AbstractBlockManager extends AbstractModelGenerator implem AbstractBlockManager.this.byId.put(customBlock.id(), customBlock); // 抛出次要警告 - exceptionCollector.throwIfPresent(); + eCollector2.throwIfPresent(); }, () -> GsonHelper.get().toJson(section))); + + // 抛出次要警告 + eCollector1.throwIfPresent(); }, () -> GsonHelper.get().toJson(section))); } @@ -668,37 +712,33 @@ public abstract class AbstractBlockManager extends AbstractModelGenerator implem return properties; } - private void arrangeModelForStateAndVerify(BlockStateWrapper blockStateWrapper, Object modelOrModels) { - // 如果没有配置models - if (modelOrModels == null) { - return; - } - // 获取variants + @Nullable + private JsonElement parseBlockModel(Object modelOrModels) { + if (modelOrModels == null) return null; List variants; if (modelOrModels instanceof String model) { - JsonObject json = new JsonObject(); - json.addProperty("model", model); - variants = Collections.singletonList(json); + variants = Collections.singletonList(MiscUtils.init(new JsonObject(), j -> j.addProperty("model", model))); } else { variants = ResourceConfigUtils.parseConfigAsList(modelOrModels, this::parseAppearanceModelSectionAsJson); - if (variants.isEmpty()) { - return; - } } + return variants.isEmpty() ? null : GsonHelper.combine(variants); + } + + private void arrangeModelForStateAndVerify(BlockStateWrapper blockStateWrapper, JsonElement variant) { + if (variant == null) return; // 拆分方块id与属性 String blockState = blockStateWrapper.getAsString(); int firstIndex = blockState.indexOf('['); Key blockId = firstIndex == -1 ? Key.of(blockState) : Key.of(blockState.substring(0, firstIndex)); String propertyNBT = firstIndex == -1 ? "" : blockState.substring(firstIndex + 1, blockState.lastIndexOf(']')); - // 结合variants - JsonElement combinedVariant = GsonHelper.combine(variants); + Map overrideMap = AbstractBlockManager.this.blockStateOverrides.computeIfAbsent(blockId, k -> new HashMap<>()); JsonElement previous = overrideMap.get(propertyNBT); - if (previous != null && !previous.equals(combinedVariant)) { - throw new LocalizedResourceConfigException("warning.config.block.state.model.conflict", GsonHelper.get().toJson(combinedVariant), blockState, GsonHelper.get().toJson(previous)); + if (previous != null && !previous.equals(variant)) { + throw new LocalizedResourceConfigException("warning.config.block.state.model.conflict", GsonHelper.get().toJson(variant), blockState, GsonHelper.get().toJson(previous)); } - overrideMap.put(propertyNBT, combinedVariant); - AbstractBlockManager.this.tempVanillaBlockStateModels[blockStateWrapper.registryId()] = combinedVariant; + overrideMap.put(propertyNBT, variant); + AbstractBlockManager.this.tempVanillaBlockStateModels[blockStateWrapper.registryId()] = variant; } private JsonObject parseAppearanceModelSectionAsJson(Map section) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/AbstractCustomBlock.java b/core/src/main/java/net/momirealms/craftengine/core/block/AbstractCustomBlock.java index 01e818042..60a360a1c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/AbstractCustomBlock.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/AbstractCustomBlock.java @@ -5,7 +5,7 @@ import net.momirealms.craftengine.core.block.properties.Property; import net.momirealms.craftengine.core.item.context.BlockPlaceContext; import net.momirealms.craftengine.core.loot.LootTable; import net.momirealms.craftengine.core.plugin.CraftEngine; -import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.event.EventTrigger; import net.momirealms.craftengine.core.plugin.context.function.Function; import net.momirealms.craftengine.core.registry.Holder; @@ -24,7 +24,7 @@ public abstract class AbstractCustomBlock implements CustomBlock { protected final BlockStateVariantProvider variantProvider; protected final BiFunction placementFunction; protected final ImmutableBlockState defaultState; - protected final Map>> events; + protected final Map>> events; @Nullable protected final LootTable lootTable; protected BlockBehavior behavior = EmptyBlockBehavior.INSTANCE; @@ -32,7 +32,7 @@ public abstract class AbstractCustomBlock implements CustomBlock { protected AbstractCustomBlock( @NotNull Holder.Reference holder, @NotNull BlockStateVariantProvider variantProvider, - @NotNull Map>> events, + @NotNull Map>> events, @Nullable LootTable lootTable ) { this.id = holder.key().location(); @@ -72,8 +72,8 @@ public abstract class AbstractCustomBlock implements CustomBlock { } @Override - public void execute(PlayerOptionalContext context, EventTrigger trigger) { - for (Function function : Optional.ofNullable(this.events.get(trigger)).orElse(Collections.emptyList())) { + public void execute(Context context, EventTrigger trigger) { + for (Function function : Optional.ofNullable(this.events.get(trigger)).orElse(Collections.emptyList())) { function.run(context); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/AutoStateGroup.java b/core/src/main/java/net/momirealms/craftengine/core/block/AutoStateGroup.java index f917f72b4..333d43669 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/AutoStateGroup.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/AutoStateGroup.java @@ -9,20 +9,40 @@ import java.util.*; import java.util.function.Predicate; public enum AutoStateGroup { + NON_TINTABLE_LEAVES(List.of("no_tint_leaves", "leaves_no_tint", "non_tintable_leaves"), + Set.of(BlockKeys.SPRUCE_LEAVES, BlockKeys.CHERRY_LEAVES, BlockKeys.PALE_OAK_LEAVES, BlockKeys.AZALEA_LEAVES, BlockKeys.FLOWERING_AZALEA_LEAVES), + (w) -> !(boolean) w.getProperty("waterlogged") + ), + WATERLOGGED_NON_TINTABLE_LEAVES( + List.of("waterlogged_no_tint_leaves", "waterlogged_leaves_no_tint", "waterlogged_non_tintable_leaves"), + Set.of(BlockKeys.SPRUCE_LEAVES, BlockKeys.CHERRY_LEAVES, BlockKeys.PALE_OAK_LEAVES, BlockKeys.AZALEA_LEAVES, BlockKeys.FLOWERING_AZALEA_LEAVES), + (w) -> w.getProperty("waterlogged") + ), + TINTABLE_LEAVES("tintable_leaves", + Set.of(BlockKeys.OAK_LEAVES, BlockKeys.BIRCH_LEAVES, BlockKeys.JUNGLE_LEAVES, BlockKeys.ACACIA_LEAVES, BlockKeys.DARK_OAK_LEAVES, BlockKeys.MANGROVE_LEAVES), + (w) -> !(boolean) w.getProperty("waterlogged") + ), + WATERLOGGED_TINTABLE_LEAVES( + "waterlogged_tintable_leaves", + Set.of(BlockKeys.OAK_LEAVES, BlockKeys.BIRCH_LEAVES, BlockKeys.JUNGLE_LEAVES, BlockKeys.ACACIA_LEAVES, BlockKeys.DARK_OAK_LEAVES, BlockKeys.MANGROVE_LEAVES), + (w) -> w.getProperty("waterlogged") + ), LEAVES("leaves", - Set.of(BlockKeys.OAK_LEAVES, BlockKeys.SPRUCE_LEAVES, BlockKeys.BIRCH_LEAVES, BlockKeys.JUNGLE_LEAVES, BlockKeys.ACACIA_LEAVES, BlockKeys.DARK_OAK_LEAVES, BlockKeys.MANGROVE_LEAVES, BlockKeys.CHERRY_LEAVES, BlockKeys.PALE_OAK_LEAVES, BlockKeys.AZALEA_LEAVES, BlockKeys.FLOWERING_AZALEA_LEAVES), + Set.of(BlockKeys.OAK_LEAVES, BlockKeys.BIRCH_LEAVES, BlockKeys.JUNGLE_LEAVES, BlockKeys.ACACIA_LEAVES, BlockKeys.DARK_OAK_LEAVES, BlockKeys.MANGROVE_LEAVES, + BlockKeys.SPRUCE_LEAVES, BlockKeys.CHERRY_LEAVES, BlockKeys.PALE_OAK_LEAVES, BlockKeys.AZALEA_LEAVES, BlockKeys.FLOWERING_AZALEA_LEAVES), (w) -> !(boolean) w.getProperty("waterlogged") ), WATERLOGGED_LEAVES( "waterlogged_leaves", - Set.of(BlockKeys.OAK_LEAVES, BlockKeys.SPRUCE_LEAVES, BlockKeys.BIRCH_LEAVES, BlockKeys.JUNGLE_LEAVES, BlockKeys.ACACIA_LEAVES, BlockKeys.DARK_OAK_LEAVES, BlockKeys.MANGROVE_LEAVES, BlockKeys.CHERRY_LEAVES, BlockKeys.PALE_OAK_LEAVES, BlockKeys.AZALEA_LEAVES, BlockKeys.FLOWERING_AZALEA_LEAVES), + Set.of(BlockKeys.OAK_LEAVES, BlockKeys.BIRCH_LEAVES, BlockKeys.JUNGLE_LEAVES, BlockKeys.ACACIA_LEAVES, BlockKeys.DARK_OAK_LEAVES, BlockKeys.MANGROVE_LEAVES, + BlockKeys.SPRUCE_LEAVES, BlockKeys.CHERRY_LEAVES, BlockKeys.PALE_OAK_LEAVES, BlockKeys.AZALEA_LEAVES, BlockKeys.FLOWERING_AZALEA_LEAVES), (w) -> w.getProperty("waterlogged") ), LOWER_TRIPWIRE("lower_tripwire", Set.of(BlockKeys.TRIPWIRE), (w) -> w.getProperty("attached")), HIGHER_TRIPWIRE("higher_tripwire", Set.of(BlockKeys.TRIPWIRE), (w) -> !(boolean) w.getProperty("attached")), NOTE_BLOCK("note_block", Set.of(BlockKeys.NOTE_BLOCK), (w) -> true), - BROWN_MUSHROOM("brown_mushroom", Set.of(BlockKeys.BROWN_MUSHROOM_BLOCK), (w) -> true), - RED_MUSHROOM("red_mushroom", Set.of(BlockKeys.RED_MUSHROOM_BLOCK), (w) -> true), + BROWN_MUSHROOM("brown_mushroom_block", Set.of(BlockKeys.BROWN_MUSHROOM_BLOCK), (w) -> true), + RED_MUSHROOM("red_mushroom_block", Set.of(BlockKeys.RED_MUSHROOM_BLOCK), (w) -> true), MUSHROOM_STEM("mushroom_stem", Set.of(BlockKeys.MUSHROOM_STEM), (w) -> true), TRIPWIRE("tripwire", Set.of(BlockKeys.TRIPWIRE), (w) -> true), SUGAR_CANE("sugar_cane", Set.of(BlockKeys.SUGAR_CANE), (w) -> true), @@ -32,12 +52,18 @@ public enum AutoStateGroup { SOLID("solid", Set.of(BlockKeys.BROWN_MUSHROOM_BLOCK, BlockKeys.RED_MUSHROOM_BLOCK, BlockKeys.MUSHROOM_STEM, BlockKeys.NOTE_BLOCK), (w) -> true); private final Set blocks; - private final String id; + private final List id; private final Predicate predicate; private final List candidates = new ArrayList<>(); private int pointer; AutoStateGroup(String id, Set blocks, Predicate predicate) { + this.id = List.of(id); + this.blocks = blocks; + this.predicate = predicate; + } + + AutoStateGroup(List id, Set blocks, Predicate predicate) { this.id = id; this.blocks = blocks; this.predicate = predicate; @@ -80,6 +106,10 @@ public enum AutoStateGroup { } public String id() { + return id.getFirst(); + } + + public List ids() { return id; } @@ -88,10 +118,11 @@ public enum AutoStateGroup { static { for (AutoStateGroup group : AutoStateGroup.values()) { - BY_ID.put(group.id(), group); - BY_ID.put(group.id().toUpperCase(Locale.ROOT), group); - for (Key key : group.blocks) { - BY_BLOCKS.computeIfAbsent(key, k -> new ArrayList<>(4)).add(group); + for (String id : group.ids()) { + BY_ID.put(id, group); + for (Key key : group.blocks) { + BY_BLOCKS.computeIfAbsent(key, k -> new ArrayList<>(4)).add(group); + } } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/BlockBehavior.java b/core/src/main/java/net/momirealms/craftengine/core/block/BlockBehavior.java index de57acac4..d1aec1f89 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/BlockBehavior.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/BlockBehavior.java @@ -19,7 +19,7 @@ import java.util.concurrent.Callable; public abstract class BlockBehavior { @SuppressWarnings("unchecked") - public Optional getAs(Class tClass) { + public Optional getAs(Class tClass) { if (tClass.isInstance(this)) { return Optional.of((T) this); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/BlockKeys.java b/core/src/main/java/net/momirealms/craftengine/core/block/BlockKeys.java index 94bbf2342..84a6e13f0 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/BlockKeys.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/BlockKeys.java @@ -6,42 +6,113 @@ import java.util.List; public final class BlockKeys { private BlockKeys() {} - + // 特殊 + public static final Key AIR = Key.of("minecraft:air"); + public static final Key SUGAR_CANE = Key.of("minecraft:sugar_cane"); public static final Key NOTE_BLOCK = Key.of("minecraft:note_block"); public static final Key TRIPWIRE = Key.of("minecraft:tripwire"); + public static final Key CACTUS = Key.of("minecraft:cactus"); + public static final Key POWDER_SNOW = Key.of("minecraft:powder_snow"); + // 功能方块 public static final Key CRAFTING_TABLE = Key.of("minecraft:crafting_table"); - public static final Key CARTOGRAPHY_TABLE = Key.of("minecraft:cartography_table"); public static final Key STONECUTTER = Key.of("minecraft:stonecutter"); - public static final Key BELL = Key.of("minecraft:bell"); + public static final Key CARTOGRAPHY_TABLE = Key.of("minecraft:cartography_table"); public static final Key SMITHING_TABLE = Key.of("minecraft:smithing_table"); + public static final Key GRINDSTONE = Key.of("minecraft:grindstone"); public static final Key LOOM = Key.of("minecraft:loom"); - public static final Key BARREL = Key.of("minecraft:barrel"); + public static final Key FURNACE = Key.of("minecraft:furnace"); public static final Key SMOKER = Key.of("minecraft:smoker"); public static final Key BLAST_FURNACE = Key.of("minecraft:blast_furnace"); - public static final Key FURNACE = Key.of("minecraft:furnace"); - public static final Key LEVER = Key.of("minecraft:lever"); + public static final Key CAMPFIRE = Key.of("minecraft:campfire"); + public static final Key SOUL_CAMPFIRE = Key.of("minecraft:soul_campfire"); public static final Key ANVIL = Key.of("minecraft:anvil"); public static final Key CHIPPED_ANVIL = Key.of("minecraft:chipped_anvil"); public static final Key DAMAGED_ANVIL = Key.of("minecraft:damaged_anvil"); - public static final Key GRINDSTONE = Key.of("minecraft:grindstone"); + public static final Key COMPOSTER = Key.of("minecraft:composter"); + public static final Key JUKEBOX = Key.of("minecraft:jukebox"); public static final Key ENCHANTING_TABLE = Key.of("minecraft:enchanting_table"); public static final Key BREWING_STAND = Key.of("minecraft:brewing_stand"); + public static final Key CAULDRON = Key.of("minecraft:cauldron"); + public static final Key LAVA_CAULDRON = Key.of("minecraft:lava_cauldron"); + public static final Key WATER_CAULDRON = Key.of("minecraft:water_cauldron"); + public static final Key BELL = Key.of("minecraft:bell"); public static final Key BEACON = Key.of("minecraft:beacon"); + public static final Key BEE_NEST = Key.of("minecraft:bee_nest"); + public static final Key BEEHIVE = Key.of("minecraft:beehive"); + public static final Key FLOWER_POT = Key.of("minecraft:flower_pot"); + public static final Key DECORATED_POT = Key.of("minecraft:decorated_pot"); + public static final Key CHISELED_BOOKSHELF = Key.of("minecraft:chiseled_bookshelf"); + public static final Key LECTERN = Key.of("minecraft:lectern"); + public static final Key FARMLAND = Key.of("minecraft:farmland"); + public static final Key CHEST = Key.of("minecraft:chest"); - public static final Key CAMPFIRE = Key.of("minecraft:campfire"); - public static final Key SOUL_CAMPFIRE = Key.of("minecraft:soul_campfire"); + public static final Key BARREL = Key.of("minecraft:barrel"); public static final Key ENDER_CHEST = Key.of("minecraft:ender_chest"); public static final Key TRAPPED_CHEST = Key.of("minecraft:trapped_chest"); - public static final Key DAYLIGHT_DETECTOR = Key.of("minecraft:daylight_detector"); - public static final Key LECTERN = Key.of("minecraft:lectern"); + + public static final Key RESPAWN_ANCHOR = Key.of("minecraft:respawn_anchor"); + public static final Key DRAGON_EGG = Key.of("minecraft:dragon_egg"); + public static final Key END_PORTAL_FRAME = Key.of("minecraft:end_portal_frame"); + public static final Key VAULT = Key.of("minecraft:vault"); + + public static final Key SPAWNER = Key.of("minecraft:spawner"); + public static final Key TRIAL_SPAWNER = Key.of("minecraft:trial_spawner"); + // 红石方块 + public static final Key REDSTONE_WIRE = Key.of("minecraft:redstone_wire"); + public static final Key REDSTONE_TORCH = Key.of("minecraft:redstone_torch"); + public static final Key REDSTONE_BLOCK = Key.of("minecraft:redstone_block"); public static final Key REPEATER = Key.of("minecraft:repeater"); public static final Key COMPARATOR = Key.of("minecraft:comparator"); - public static final Key DRAGON_EGG = Key.of("minecraft:dragon_egg"); - public static final Key HOPPER = Key.of("minecraft:hopper"); + public static final Key TARGET = Key.of("minecraft:target"); + public static final Key LEVER = Key.of("minecraft:lever"); + public static final Key SCULK_SENSOR = Key.of("minecraft:sculk_sensor"); + public static final Key CALIBRATED_SCULK_SENSOR = Key.of("minecraft:calibrated_sculk_sensor"); + public static final Key TRIPWIRE_HOOK = Key.of("minecraft:tripwire_hook"); + public static final Key DAYLIGHT_DETECTOR = Key.of("minecraft:daylight_detector"); + public static final Key LIGHTNING_ROD = Key.of("minecraft:lightning_rod"); public static final Key DISPENSER = Key.of("minecraft:dispenser"); public static final Key DROPPER = Key.of("minecraft:dropper"); public static final Key CRAFTER = Key.of("minecraft:crafter"); + public static final Key HOPPER = Key.of("minecraft:hopper"); + public static final Key OBSERVER = Key.of("minecraft:observer"); + public static final Key DETECTOR_RAIL = Key.of("minecraft:detector_rail"); + public static final Key TNT = Key.of("minecraft:tnt"); + public static final Key REDSTONE_ORE = Key.of("minecraft:redstone_ore"); + public static final Key DEEPSLATE_REDSTONE_ORE = Key.of("minecraft:deepslate_redstone_ore"); + // 按钮 + public static final Key OAK_BUTTON = Key.of("minecraft:oak_button"); + public static final Key SPRUCE_BUTTON = Key.of("minecraft:spruce_button"); + public static final Key BIRCH_BUTTON = Key.of("minecraft:birch_button"); + public static final Key JUNGLE_BUTTON = Key.of("minecraft:jungle_button"); + public static final Key ACACIA_BUTTON = Key.of("minecraft:acacia_button"); + public static final Key DARK_OAK_BUTTON = Key.of("minecraft:dark_oak_button"); + public static final Key MANGROVE_BUTTON = Key.of("minecraft:mangrove_button"); + public static final Key CHERRY_BUTTON = Key.of("minecraft:cherry_button"); + public static final Key PALE_OAK_BUTTON = Key.of("minecraft:pale_oak_button"); + public static final Key BAMBOO_BUTTON = Key.of("minecraft:bamboo_button"); + public static final Key CRIMSON_BUTTON = Key.of("minecraft:crimson_button"); + public static final Key WARPED_BUTTON = Key.of("minecraft:warped_button"); + public static final Key STONE_BUTTON = Key.of("minecraft:stone_button"); + public static final Key POLISHED_BLACKSTONE_BUTTON = Key.of("minecraft:polished_blackstone_button"); + // 压力板 + public static final Key OAK_PRESSURE_PLATE = Key.of("minecraft:oak_pressure_plate"); + public static final Key SPRUCE_PRESSURE_PLATE = Key.of("minecraft:spruce_pressure_plate"); + public static final Key BIRCH_PRESSURE_PLATE = Key.of("minecraft:birch_pressure_plate"); + public static final Key JUNGLE_PRESSURE_PLATE = Key.of("minecraft:jungle_pressure_plate"); + public static final Key ACACIA_PRESSURE_PLATE = Key.of("minecraft:acacia_pressure_plate"); + public static final Key DARK_OAK_PRESSURE_PLATE = Key.of("minecraft:dark_oak_pressure_plate"); + public static final Key MANGROVE_PRESSURE_PLATE = Key.of("minecraft:mangrove_pressure_plate"); + public static final Key CHERRY_PRESSURE_PLATE = Key.of("minecraft:cherry_pressure_plate"); + public static final Key PALE_OAK_PRESSURE_PLATE = Key.of("minecraft:pale_oak_pressure_plate"); + public static final Key BAMBOO_PRESSURE_PLATE = Key.of("minecraft:bamboo_pressure_plate"); + public static final Key CRIMSON_PRESSURE_PLATE = Key.of("minecraft:crimson_pressure_plate"); + public static final Key WARPED_PRESSURE_PLATE = Key.of("minecraft:warped_pressure_plate"); + public static final Key STONE_PRESSURE_PLATE = Key.of("minecraft:stone_pressure_plate"); + public static final Key POLISHED_BLACKSTONE_PRESSURE_PLATE = Key.of("minecraft:polished_blackstone_pressure_plate"); + public static final Key LIGHT_WEIGHTED_PRESSURE_PLATE = Key.of("minecraft:light_weighted_pressure_plate"); + public static final Key HEAVY_WEIGHTED_PRESSURE_PLATE = Key.of("minecraft:heavy_weighted_pressure_plate"); + // 管理员用品 public static final Key COMMAND_BLOCK = Key.of("minecraft:command_block"); public static final Key CHAIN_COMMAND_BLOCK = Key.of("minecraft:chain_command_block"); public static final Key REPEATING_COMMAND_BLOCK = Key.of("minecraft:repeating_command_block"); @@ -50,113 +121,16 @@ public final class BlockKeys { public static final Key TEST_INSTANCE_BLOCK = Key.of("minecraft:test_instance_block"); public static final Key TEST_BLOCK = Key.of("minecraft:test_block"); public static final Key LIGHT = Key.of("minecraft:light"); - public static final Key DECORATED_POT = Key.of("minecraft:decorated_pot"); - public static final Key FLOWER_POT = Key.of("minecraft:flower_pot"); - public static final Key CHISELED_BOOKSHELF = Key.of("minecraft:chiseled_bookshelf"); - public static final Key REDSTONE_ORE = Key.of("minecraft:redstone_ore"); - public static final Key DEEPSLATE_REDSTONE_ORE = Key.of("minecraft:deepslate_redstone_ore"); - public static final Key BEE_NEST = Key.of("minecraft:bee_nest"); - public static final Key BEEHIVE = Key.of("minecraft:beehive"); - public static final Key POWDER_SNOW = Key.of("minecraft:powder_snow"); - public static final Key COMPOSTER = Key.of("minecraft:composter"); - public static final Key CAULDRON = Key.of("minecraft:cauldron"); - public static final Key WATER_CAULDRON = Key.of("minecraft:water_cauldron"); - public static final Key LAVA_CAULDRON = Key.of("minecraft:lava_cauldron"); - public static final Key RESPAWN_ANCHOR = Key.of("minecraft:respawn_anchor"); - public static final Key LODESTONE = Key.of("minecraft:lodestone"); - - public static final Key CAKE = Key.of("minecraft:cake"); - public static final Key CANDLE_CAKE = Key.of("minecraft:candle_cake"); - public static final Key WHITE_CANDLE_CAKE = Key.of("minecraft:white_candle_cake"); - public static final Key ORANGE_CANDLE_CAKE = Key.of("minecraft:orange_candle_cake"); - public static final Key MAGENTA_CANDLE_CAKE = Key.of("minecraft:magenta_candle_cake"); - public static final Key LIGHT_BLUE_CANDLE_CAKE = Key.of("minecraft:light_blue_candle_cake"); - public static final Key YELLOW_CANDLE_CAKE = Key.of("minecraft:yellow_candle_cake"); - public static final Key LIME_CANDLE_CAKE = Key.of("minecraft:lime_candle_cake"); - public static final Key PINK_CANDLE_CAKE = Key.of("minecraft:pink_candle_cake"); - public static final Key GRAY_CANDLE_CAKE = Key.of("minecraft:gray_candle_cake"); - public static final Key LIGHT_GRAY_CANDLE_CAKE = Key.of("minecraft:light_gray_candle_cake"); - public static final Key CYAN_CANDLE_CAKE = Key.of("minecraft:cyan_candle_cake"); - public static final Key PURPLE_CANDLE_CAKE = Key.of("minecraft:purple_candle_cake"); - public static final Key BLUE_CANDLE_CAKE = Key.of("minecraft:blue_candle_cake"); - public static final Key BROWN_CANDLE_CAKE = Key.of("minecraft:brown_candle_cake"); - public static final Key GREEN_CANDLE_CAKE = Key.of("minecraft:green_candle_cake"); - public static final Key RED_CANDLE_CAKE = Key.of("minecraft:red_candle_cake"); - public static final Key BLACK_CANDLE_CAKE = Key.of("minecraft:black_candle_cake"); - - public static final Key WHITE_BED = Key.of("minecraft:white_bed"); - public static final Key ORANGE_BED = Key.of("minecraft:orange_bed"); - public static final Key MAGENTA_BED = Key.of("minecraft:magenta_bed"); - public static final Key LIGHT_BLUE_BED = Key.of("minecraft:light_blue_bed"); - public static final Key YELLOW_BED = Key.of("minecraft:yellow_bed"); - public static final Key LIME_BED = Key.of("minecraft:lime_bed"); - public static final Key PINK_BED = Key.of("minecraft:pink_bed"); - public static final Key GRAY_BED = Key.of("minecraft:gray_bed"); - public static final Key LIGHT_GRAY_BED = Key.of("minecraft:light_gray_bed"); - public static final Key CYAN_BED = Key.of("minecraft:cyan_bed"); - public static final Key PURPLE_BED = Key.of("minecraft:purple_bed"); - public static final Key BLUE_BED = Key.of("minecraft:blue_bed"); - public static final Key BROWN_BED = Key.of("minecraft:brown_bed"); - public static final Key GREEN_BED = Key.of("minecraft:green_bed"); - public static final Key RED_BED = Key.of("minecraft:red_bed"); - public static final Key BLACK_BED = Key.of("minecraft:black_bed"); - - public static final Key SHULKER_BOX = Key.of("minecraft:shulker_box"); - public static final Key WHITE_SHULKER_BOX = Key.of("minecraft:white_shulker_box"); - public static final Key ORANGE_SHULKER_BOX = Key.of("minecraft:orange_shulker_box"); - public static final Key MAGENTA_SHULKER_BOX = Key.of("minecraft:magenta_shulker_box"); - public static final Key LIGHT_BLUE_SHULKER_BOX = Key.of("minecraft:light_blue_shulker_box"); - public static final Key YELLOW_SHULKER_BOX = Key.of("minecraft:yellow_shulker_box"); - public static final Key LIME_SHULKER_BOX = Key.of("minecraft:lime_shulker_box"); - public static final Key PINK_SHULKER_BOX = Key.of("minecraft:pink_shulker_box"); - public static final Key GRAY_SHULKER_BOX = Key.of("minecraft:gray_shulker_box"); - public static final Key LIGHT_GRAY_SHULKER_BOX = Key.of("minecraft:light_gray_shulker_box"); - public static final Key CYAN_SHULKER_BOX = Key.of("minecraft:cyan_shulker_box"); - public static final Key PURPLE_SHULKER_BOX = Key.of("minecraft:purple_shulker_box"); - public static final Key BLUE_SHULKER_BOX = Key.of("minecraft:blue_shulker_box"); - public static final Key BROWN_SHULKER_BOX = Key.of("minecraft:brown_shulker_box"); - public static final Key GREEN_SHULKER_BOX = Key.of("minecraft:green_shulker_box"); - public static final Key RED_SHULKER_BOX = Key.of("minecraft:red_shulker_box"); - public static final Key BLACK_SHULKER_BOX = Key.of("minecraft:black_shulker_box"); - - public static final Key OAK_BUTTON = Key.of("minecraft:oak_button"); - public static final Key SPRUCE_BUTTON = Key.of("minecraft:spruce_button"); - public static final Key BIRCH_BUTTON = Key.of("minecraft:birch_button"); - public static final Key JUNGLE_BUTTON = Key.of("minecraft:jungle_button"); - public static final Key ACACIA_BUTTON = Key.of("minecraft:acacia_button"); - public static final Key CHERRY_BUTTON = Key.of("minecraft:cherry_button"); - public static final Key DARK_OAK_BUTTON = Key.of("minecraft:dark_oak_button"); - public static final Key PALE_OAK_BUTTON = Key.of("minecraft:pale_oak_button"); - public static final Key MANGROVE_BUTTON = Key.of("minecraft:mangrove_button"); - public static final Key BAMBOO_BUTTON = Key.of("minecraft:bamboo_button"); - public static final Key CRIMSON_BUTTON = Key.of("minecraft:crimson_button"); - public static final Key WARPED_BUTTON = Key.of("minecraft:warped_button"); - public static final Key STONE_BUTTON = Key.of("minecraft:stone_button"); - public static final Key POLISHED_BLACKSTONE_BUTTON = Key.of("minecraft:polished_blackstone_button"); - - public static final Key OAK_TRAPDOOR = Key.of("minecraft:oak_trapdoor"); - public static final Key SPRUCE_TRAPDOOR = Key.of("minecraft:spruce_trapdoor"); - public static final Key BIRCH_TRAPDOOR = Key.of("minecraft:birch_trapdoor"); - public static final Key JUNGLE_TRAPDOOR = Key.of("minecraft:jungle_trapdoor"); - public static final Key ACACIA_TRAPDOOR = Key.of("minecraft:acacia_trapdoor"); - public static final Key CHERRY_TRAPDOOR = Key.of("minecraft:cherry_trapdoor"); - public static final Key DARK_OAK_TRAPDOOR = Key.of("minecraft:dark_oak_trapdoor"); - public static final Key PALE_OAK_TRAPDOOR = Key.of("minecraft:pale_oak_trapdoor"); - public static final Key MANGROVE_TRAPDOOR = Key.of("minecraft:mangrove_trapdoor"); - public static final Key BAMBOO_TRAPDOOR = Key.of("minecraft:bamboo_trapdoor"); - public static final Key CRIMSON_TRAPDOOR = Key.of("minecraft:crimson_trapdoor"); - public static final Key WARPED_TRAPDOOR = Key.of("minecraft:warped_trapdoor"); - public static final Key IRON_TRAPDOOR = Key.of("minecraft:iron_trapdoor"); - + // 门 public static final Key OAK_DOOR = Key.of("minecraft:oak_door"); public static final Key SPRUCE_DOOR = Key.of("minecraft:spruce_door"); public static final Key BIRCH_DOOR = Key.of("minecraft:birch_door"); public static final Key JUNGLE_DOOR = Key.of("minecraft:jungle_door"); public static final Key ACACIA_DOOR = Key.of("minecraft:acacia_door"); - public static final Key CHERRY_DOOR = Key.of("minecraft:cherry_door"); public static final Key DARK_OAK_DOOR = Key.of("minecraft:dark_oak_door"); - public static final Key PALE_OAK_DOOR = Key.of("minecraft:pale_oak_door"); public static final Key MANGROVE_DOOR = Key.of("minecraft:mangrove_door"); + public static final Key CHERRY_DOOR = Key.of("minecraft:cherry_door"); + public static final Key PALE_OAK_DOOR = Key.of("minecraft:pale_oak_door"); public static final Key BAMBOO_DOOR = Key.of("minecraft:bamboo_door"); public static final Key CRIMSON_DOOR = Key.of("minecraft:crimson_door"); public static final Key WARPED_DOOR = Key.of("minecraft:warped_door"); @@ -164,88 +138,172 @@ public final class BlockKeys { public static final Key COPPER_DOOR = Key.of("minecraft:copper_door"); public static final Key EXPOSED_COPPER_DOOR = Key.of("minecraft:exposed_copper_door"); - public static final Key OXIDIZED_COPPER_DOOR = Key.of("minecraft:oxidized_copper_door"); public static final Key WEATHERED_COPPER_DOOR = Key.of("minecraft:weathered_copper_door"); + public static final Key OXIDIZED_COPPER_DOOR = Key.of("minecraft:oxidized_copper_door"); public static final Key WAXED_COPPER_DOOR = Key.of("minecraft:waxed_copper_door"); public static final Key WAXED_EXPOSED_COPPER_DOOR = Key.of("minecraft:waxed_exposed_copper_door"); - public static final Key WAXED_OXIDIZED_COPPER_DOOR = Key.of("minecraft:waxed_oxidized_copper_door"); public static final Key WAXED_WEATHERED_COPPER_DOOR = Key.of("minecraft:waxed_weathered_copper_door"); + public static final Key WAXED_OXIDIZED_COPPER_DOOR = Key.of("minecraft:waxed_oxidized_copper_door"); + // 活板门 + public static final Key OAK_TRAPDOOR = Key.of("minecraft:oak_trapdoor"); + public static final Key SPRUCE_TRAPDOOR = Key.of("minecraft:spruce_trapdoor"); + public static final Key BIRCH_TRAPDOOR = Key.of("minecraft:birch_trapdoor"); + public static final Key JUNGLE_TRAPDOOR = Key.of("minecraft:jungle_trapdoor"); + public static final Key ACACIA_TRAPDOOR = Key.of("minecraft:acacia_trapdoor"); + public static final Key DARK_OAK_TRAPDOOR = Key.of("minecraft:dark_oak_trapdoor"); + public static final Key MANGROVE_TRAPDOOR = Key.of("minecraft:mangrove_trapdoor"); + public static final Key CHERRY_TRAPDOOR = Key.of("minecraft:cherry_trapdoor"); + public static final Key PALE_OAK_TRAPDOOR = Key.of("minecraft:pale_oak_trapdoor"); + public static final Key BAMBOO_TRAPDOOR = Key.of("minecraft:bamboo_trapdoor"); + public static final Key CRIMSON_TRAPDOOR = Key.of("minecraft:crimson_trapdoor"); + public static final Key WARPED_TRAPDOOR = Key.of("minecraft:warped_trapdoor"); + public static final Key IRON_TRAPDOOR = Key.of("minecraft:iron_trapdoor"); public static final Key COPPER_TRAPDOOR = Key.of("minecraft:copper_trapdoor"); public static final Key EXPOSED_COPPER_TRAPDOOR = Key.of("minecraft:exposed_copper_trapdoor"); - public static final Key OXIDIZED_COPPER_TRAPDOOR = Key.of("minecraft:oxidized_copper_trapdoor"); public static final Key WEATHERED_COPPER_TRAPDOOR = Key.of("minecraft:weathered_copper_trapdoor"); + public static final Key OXIDIZED_COPPER_TRAPDOOR = Key.of("minecraft:oxidized_copper_trapdoor"); public static final Key WAXED_COPPER_TRAPDOOR = Key.of("minecraft:waxed_copper_trapdoor"); public static final Key WAXED_EXPOSED_COPPER_TRAPDOOR = Key.of("minecraft:waxed_exposed_copper_trapdoor"); - public static final Key WAXED_OXIDIZED_COPPER_TRAPDOOR = Key.of("minecraft:waxed_oxidized_copper_trapdoor"); public static final Key WAXED_WEATHERED_COPPER_TRAPDOOR = Key.of("minecraft:waxed_weathered_copper_trapdoor"); - + public static final Key WAXED_OXIDIZED_COPPER_TRAPDOOR = Key.of("minecraft:waxed_oxidized_copper_trapdoor"); + // 栅栏门 public static final Key OAK_FENCE_GATE = Key.of("minecraft:oak_fence_gate"); public static final Key SPRUCE_FENCE_GATE = Key.of("minecraft:spruce_fence_gate"); public static final Key BIRCH_FENCE_GATE = Key.of("minecraft:birch_fence_gate"); public static final Key JUNGLE_FENCE_GATE = Key.of("minecraft:jungle_fence_gate"); public static final Key ACACIA_FENCE_GATE = Key.of("minecraft:acacia_fence_gate"); - public static final Key CHERRY_FENCE_GATE = Key.of("minecraft:cherry_fence_gate"); public static final Key DARK_OAK_FENCE_GATE = Key.of("minecraft:dark_oak_fence_gate"); - public static final Key PALE_OAK_FENCE_GATE = Key.of("minecraft:pale_oak_fence_gate"); public static final Key MANGROVE_FENCE_GATE = Key.of("minecraft:mangrove_fence_gate"); + public static final Key CHERRY_FENCE_GATE = Key.of("minecraft:cherry_fence_gate"); + public static final Key PALE_OAK_FENCE_GATE = Key.of("minecraft:pale_oak_fence_gate"); public static final Key BAMBOO_FENCE_GATE = Key.of("minecraft:bamboo_fence_gate"); public static final Key CRIMSON_FENCE_GATE = Key.of("minecraft:crimson_fence_gate"); public static final Key WARPED_FENCE_GATE = Key.of("minecraft:warped_fence_gate"); - + // 床 + public static final Key WHITE_BED = Key.of("minecraft:white_bed"); + public static final Key LIGHT_GRAY_BED = Key.of("minecraft:light_gray_bed"); + public static final Key GRAY_BED = Key.of("minecraft:gray_bed"); + public static final Key BLACK_BED = Key.of("minecraft:black_bed"); + public static final Key BROWN_BED = Key.of("minecraft:brown_bed"); + public static final Key RED_BED = Key.of("minecraft:red_bed"); + public static final Key ORANGE_BED = Key.of("minecraft:orange_bed"); + public static final Key YELLOW_BED = Key.of("minecraft:yellow_bed"); + public static final Key LIME_BED = Key.of("minecraft:lime_bed"); + public static final Key GREEN_BED = Key.of("minecraft:green_bed"); + public static final Key CYAN_BED = Key.of("minecraft:cyan_bed"); + public static final Key LIGHT_BLUE_BED = Key.of("minecraft:light_blue_bed"); + public static final Key BLUE_BED = Key.of("minecraft:blue_bed"); + public static final Key PURPLE_BED = Key.of("minecraft:purple_bed"); + public static final Key MAGENTA_BED = Key.of("minecraft:magenta_bed"); + public static final Key PINK_BED = Key.of("minecraft:pink_bed"); + // 蜡烛 + public static final Key CANDLE = Key.of("minecraft:candle"); + public static final Key WHITE_CANDLE = Key.of("minecraft:white_candle"); + public static final Key LIGHT_GRAY_CANDLE = Key.of("minecraft:light_gray_candle"); + public static final Key GRAY_CANDLE = Key.of("minecraft:gray_candle"); + public static final Key BLACK_CANDLE = Key.of("minecraft:black_candle"); + public static final Key BROWN_CANDLE = Key.of("minecraft:brown_candle"); + public static final Key RED_CANDLE = Key.of("minecraft:red_candle"); + public static final Key ORANGE_CANDLE = Key.of("minecraft:orange_candle"); + public static final Key YELLOW_CANDLE = Key.of("minecraft:yellow_candle"); + public static final Key LIME_CANDLE = Key.of("minecraft:lime_candle"); + public static final Key GREEN_CANDLE = Key.of("minecraft:green_candle"); + public static final Key CYAN_CANDLE = Key.of("minecraft:cyan_candle"); + public static final Key LIGHT_BLUE_CANDLE = Key.of("minecraft:light_blue_candle"); + public static final Key BLUE_CANDLE = Key.of("minecraft:blue_candle"); + public static final Key PURPLE_CANDLE = Key.of("minecraft:purple_candle"); + public static final Key MAGENTA_CANDLE = Key.of("minecraft:magenta_candle"); + public static final Key PINK_CANDLE = Key.of("minecraft:pink_candle"); + // 蛋糕 + public static final Key CAKE = Key.of("minecraft:cake"); + public static final Key CANDLE_CAKE = Key.of("minecraft:candle_cake"); + public static final Key WHITE_CANDLE_CAKE = Key.of("minecraft:white_candle_cake"); + public static final Key LIGHT_GRAY_CANDLE_CAKE = Key.of("minecraft:light_gray_candle_cake"); + public static final Key GRAY_CANDLE_CAKE = Key.of("minecraft:gray_candle_cake"); + public static final Key BLACK_CANDLE_CAKE = Key.of("minecraft:black_candle_cake"); + public static final Key BROWN_CANDLE_CAKE = Key.of("minecraft:brown_candle_cake"); + public static final Key RED_CANDLE_CAKE = Key.of("minecraft:red_candle_cake"); + public static final Key ORANGE_CANDLE_CAKE = Key.of("minecraft:orange_candle_cake"); + public static final Key YELLOW_CANDLE_CAKE = Key.of("minecraft:yellow_candle_cake"); + public static final Key LIME_CANDLE_CAKE = Key.of("minecraft:lime_candle_cake"); + public static final Key GREEN_CANDLE_CAKE = Key.of("minecraft:green_candle_cake"); + public static final Key CYAN_CANDLE_CAKE = Key.of("minecraft:cyan_candle_cake"); + public static final Key LIGHT_BLUE_CANDLE_CAKE = Key.of("minecraft:light_blue_candle_cake"); + public static final Key BLUE_CANDLE_CAKE = Key.of("minecraft:blue_candle_cake"); + public static final Key PURPLE_CANDLE_CAKE = Key.of("minecraft:purple_candle_cake"); + public static final Key MAGENTA_CANDLE_CAKE = Key.of("minecraft:magenta_candle_cake"); + public static final Key PINK_CANDLE_CAKE = Key.of("minecraft:pink_candle_cake"); + // 潜影盒 + public static final Key SHULKER_BOX = Key.of("minecraft:shulker_box"); + public static final Key WHITE_SHULKER_BOX = Key.of("minecraft:white_shulker_box"); + public static final Key LIGHT_GRAY_SHULKER_BOX = Key.of("minecraft:light_gray_shulker_box"); + public static final Key GRAY_SHULKER_BOX = Key.of("minecraft:gray_shulker_box"); + public static final Key BLACK_SHULKER_BOX = Key.of("minecraft:black_shulker_box"); + public static final Key BROWN_SHULKER_BOX = Key.of("minecraft:brown_shulker_box"); + public static final Key RED_SHULKER_BOX = Key.of("minecraft:red_shulker_box"); + public static final Key ORANGE_SHULKER_BOX = Key.of("minecraft:orange_shulker_box"); + public static final Key YELLOW_SHULKER_BOX = Key.of("minecraft:yellow_shulker_box"); + public static final Key LIME_SHULKER_BOX = Key.of("minecraft:lime_shulker_box"); + public static final Key GREEN_SHULKER_BOX = Key.of("minecraft:green_shulker_box"); + public static final Key CYAN_SHULKER_BOX = Key.of("minecraft:cyan_shulker_box"); + public static final Key LIGHT_BLUE_SHULKER_BOX = Key.of("minecraft:light_blue_shulker_box"); + public static final Key BLUE_SHULKER_BOX = Key.of("minecraft:blue_shulker_box"); + public static final Key PURPLE_SHULKER_BOX = Key.of("minecraft:purple_shulker_box"); + public static final Key MAGENTA_SHULKER_BOX = Key.of("minecraft:magenta_shulker_box"); + public static final Key PINK_SHULKER_BOX = Key.of("minecraft:pink_shulker_box"); + // 告示牌 public static final Key OAK_SIGN = Key.of("minecraft:oak_sign"); public static final Key SPRUCE_SIGN = Key.of("minecraft:spruce_sign"); - public static final Key ACACIA_SIGN = Key.of("minecraft:acacia_sign"); public static final Key BIRCH_SIGN = Key.of("minecraft:birch_sign"); - public static final Key CHERRY_SIGN = Key.of("minecraft:cherry_sign"); public static final Key JUNGLE_SIGN = Key.of("minecraft:jungle_sign"); + public static final Key ACACIA_SIGN = Key.of("minecraft:acacia_sign"); public static final Key DARK_OAK_SIGN = Key.of("minecraft:dark_oak_sign"); - public static final Key PALE_OAK_SIGN = Key.of("minecraft:pale_oak_sign"); public static final Key MANGROVE_SIGN = Key.of("minecraft:mangrove_sign"); + public static final Key CHERRY_SIGN = Key.of("minecraft:cherry_sign"); + public static final Key PALE_OAK_SIGN = Key.of("minecraft:pale_oak_sign"); public static final Key BAMBOO_SIGN = Key.of("minecraft:bamboo_sign"); - public static final Key WARPED_SIGN = Key.of("minecraft:warped_sign"); public static final Key CRIMSON_SIGN = Key.of("minecraft:crimson_sign"); - + public static final Key WARPED_SIGN = Key.of("minecraft:warped_sign"); + // 靠墙告示牌 public static final Key OAK_WALL_SIGN = Key.of("minecraft:oak_wall_sign"); public static final Key SPRUCE_WALL_SIGN = Key.of("minecraft:spruce_wall_sign"); public static final Key BIRCH_WALL_SIGN = Key.of("minecraft:birch_wall_sign"); - public static final Key ACACIA_WALL_SIGN = Key.of("minecraft:acacia_wall_sign"); - public static final Key CHERRY_WALL_SIGN = Key.of("minecraft:cherry_wall_sign"); public static final Key JUNGLE_WALL_SIGN = Key.of("minecraft:jungle_wall_sign"); + public static final Key ACACIA_WALL_SIGN = Key.of("minecraft:acacia_wall_sign"); public static final Key DARK_OAK_WALL_SIGN = Key.of("minecraft:dark_oak_wall_sign"); - public static final Key PALE_OAK_WALL_SIGN = Key.of("minecraft:pale_oak_wall_sign"); public static final Key MANGROVE_WALL_SIGN = Key.of("minecraft:mangrove_wall_sign"); + public static final Key CHERRY_WALL_SIGN = Key.of("minecraft:cherry_wall_sign"); + public static final Key PALE_OAK_WALL_SIGN = Key.of("minecraft:pale_oak_wall_sign"); public static final Key BAMBOO_WALL_SIGN = Key.of("minecraft:bamboo_wall_sign"); public static final Key CRIMSON_WALL_SIGN = Key.of("minecraft:crimson_wall_sign"); public static final Key WARPED_WALL_SIGN = Key.of("minecraft:warped_wall_sign"); - + // 悬挂式告示牌 public static final Key OAK_HANGING_SIGN = Key.of("minecraft:oak_hanging_sign"); public static final Key SPRUCE_HANGING_SIGN = Key.of("minecraft:spruce_hanging_sign"); public static final Key BIRCH_HANGING_SIGN = Key.of("minecraft:birch_hanging_sign"); - public static final Key ACACIA_HANGING_SIGN = Key.of("minecraft:acacia_hanging_sign"); - public static final Key CHERRY_HANGING_SIGN = Key.of("minecraft:cherry_hanging_sign"); public static final Key JUNGLE_HANGING_SIGN = Key.of("minecraft:jungle_hanging_sign"); + public static final Key ACACIA_HANGING_SIGN = Key.of("minecraft:acacia_hanging_sign"); public static final Key DARK_OAK_HANGING_SIGN = Key.of("minecraft:dark_oak_hanging_sign"); + public static final Key MANGROVE_HANGING_SIGN = Key.of("minecraft:mangrove_hanging_sign"); + public static final Key CHERRY_HANGING_SIGN = Key.of("minecraft:cherry_hanging_sign"); public static final Key PALE_OAK_HANGING_SIGN = Key.of("minecraft:pale_oak_hanging_sign"); + public static final Key BAMBOO_HANGING_SIGN = Key.of("minecraft:bamboo_hanging_sign"); public static final Key CRIMSON_HANGING_SIGN = Key.of("minecraft:crimson_hanging_sign"); public static final Key WARPED_HANGING_SIGN = Key.of("minecraft:warped_hanging_sign"); - public static final Key MANGROVE_HANGING_SIGN = Key.of("minecraft:mangrove_hanging_sign"); - public static final Key BAMBOO_HANGING_SIGN = Key.of("minecraft:bamboo_hanging_sign"); - + // 靠墙悬挂式告示牌 public static final Key OAK_WALL_HANGING_SIGN = Key.of("minecraft:oak_wall_hanging_sign"); public static final Key SPRUCE_WALL_HANGING_SIGN = Key.of("minecraft:spruce_wall_hanging_sign"); public static final Key BIRCH_WALL_HANGING_SIGN = Key.of("minecraft:birch_wall_hanging_sign"); - public static final Key ACACIA_WALL_HANGING_SIGN = Key.of("minecraft:acacia_wall_hanging_sign"); - public static final Key CHERRY_WALL_HANGING_SIGN = Key.of("minecraft:cherry_wall_hanging_sign"); public static final Key JUNGLE_WALL_HANGING_SIGN = Key.of("minecraft:jungle_wall_hanging_sign"); + public static final Key ACACIA_WALL_HANGING_SIGN = Key.of("minecraft:acacia_wall_hanging_sign"); public static final Key DARK_OAK_WALL_HANGING_SIGN = Key.of("minecraft:dark_oak_wall_hanging_sign"); - public static final Key PALE_OAK_WALL_HANGING_SIGN = Key.of("minecraft:pale_oak_wall_hanging_sign"); public static final Key MANGROVE_WALL_HANGING_SIGN = Key.of("minecraft:mangrove_wall_hanging_sign"); + public static final Key CHERRY_WALL_HANGING_SIGN = Key.of("minecraft:cherry_wall_hanging_sign"); + public static final Key PALE_OAK_WALL_HANGING_SIGN = Key.of("minecraft:pale_oak_wall_hanging_sign"); + public static final Key BAMBOO_WALL_HANGING_SIGN = Key.of("minecraft:bamboo_wall_hanging_sign"); public static final Key CRIMSON_WALL_HANGING_SIGN = Key.of("minecraft:crimson_wall_hanging_sign"); public static final Key WARPED_WALL_HANGING_SIGN = Key.of("minecraft:warped_wall_hanging_sign"); - public static final Key BAMBOO_WALL_HANGING_SIGN = Key.of("minecraft:bamboo_wall_hanging_sign"); - - public static final Key CACTUS = Key.of("minecraft:cactus"); public static final Key BROWN_MUSHROOM_BLOCK = Key.of("minecraft:brown_mushroom_block"); public static final Key RED_MUSHROOM_BLOCK = Key.of("minecraft:red_mushroom_block"); @@ -272,6 +330,23 @@ public final class BlockKeys { public static final Key CHERRY_SAPLING = Key.of("minecraft:cherry_sapling"); public static final Key PALE_OAK_SAPLING = Key.of("minecraft:pale_oak_sapling"); + public static final Key[] BUTTONS = new Key[]{ + OAK_BUTTON, SPRUCE_BUTTON, BIRCH_BUTTON, JUNGLE_BUTTON, ACACIA_BUTTON, DARK_OAK_BUTTON, MANGROVE_BUTTON, CHERRY_BUTTON, + PALE_OAK_BUTTON, BAMBOO_BUTTON, CRIMSON_BUTTON, WARPED_BUTTON, STONE_BUTTON, POLISHED_BLACKSTONE_BUTTON + }; + + public static final Key[] PRESSURE_PLATES = new Key[]{ + OAK_PRESSURE_PLATE, SPRUCE_PRESSURE_PLATE, BIRCH_PRESSURE_PLATE, JUNGLE_PRESSURE_PLATE, ACACIA_PRESSURE_PLATE, + DARK_OAK_PRESSURE_PLATE, MANGROVE_PRESSURE_PLATE, CHERRY_PRESSURE_PLATE, PALE_OAK_PRESSURE_PLATE, BAMBOO_PRESSURE_PLATE, + CRIMSON_PRESSURE_PLATE, WARPED_PRESSURE_PLATE, STONE_PRESSURE_PLATE, POLISHED_BLACKSTONE_PRESSURE_PLATE, + LIGHT_WEIGHTED_PRESSURE_PLATE, HEAVY_WEIGHTED_PRESSURE_PLATE + }; + + public static final Key[] REDSTONE_CONNECTION = new Key[] { + REDSTONE_WIRE, REDSTONE_TORCH, REDSTONE_BLOCK, REPEATER, COMPARATOR, TARGET, LEVER, SCULK_SENSOR, CALIBRATED_SCULK_SENSOR, + TRIPWIRE_HOOK, LECTERN, DAYLIGHT_DETECTOR, LIGHTNING_ROD, TRAPPED_CHEST, JUKEBOX, OBSERVER, DETECTOR_RAIL + }; + public static final List WOODEN_TRAPDOORS = List.of(OAK_TRAPDOOR, SPRUCE_TRAPDOOR, BIRCH_TRAPDOOR, ACACIA_TRAPDOOR, PALE_OAK_TRAPDOOR, DARK_OAK_TRAPDOOR, MANGROVE_TRAPDOOR, JUNGLE_TRAPDOOR); public static final List CHERRY_TRAPDOORS = List.of(CHERRY_TRAPDOOR); diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/BlockManager.java b/core/src/main/java/net/momirealms/craftengine/core/block/BlockManager.java index 1246a2bae..0e67ca2e4 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/BlockManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/BlockManager.java @@ -24,6 +24,8 @@ public interface BlockManager extends Manageable, ModelGenerator { Map modBlockStates(); + boolean isTransparentModelInUse(); + Map loadedBlocks(); @Deprecated(forRemoval = true) diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/BlockStateWrapper.java b/core/src/main/java/net/momirealms/craftengine/core/block/BlockStateWrapper.java index d8c97482b..4b86c95c3 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/BlockStateWrapper.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/BlockStateWrapper.java @@ -4,6 +4,7 @@ import net.momirealms.craftengine.core.util.Key; import net.momirealms.sparrow.nbt.*; import org.jetbrains.annotations.NotNull; +import java.util.Collection; import java.util.Map; public interface BlockStateWrapper extends Comparable { @@ -18,10 +19,14 @@ public interface BlockStateWrapper extends Comparable { boolean hasProperty(String propertyName); + Collection getPropertyNames(); + BlockStateWrapper withProperty(String propertyName, String propertyValue); String getAsString(); + boolean isCustom(); + @Override default int compareTo(@NotNull BlockStateWrapper o) { return Integer.compare(registryId(), o.registryId()); diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/BlockTagKeys.java b/core/src/main/java/net/momirealms/craftengine/core/block/BlockTagKeys.java new file mode 100644 index 000000000..d3dc04af8 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/block/BlockTagKeys.java @@ -0,0 +1,9 @@ +package net.momirealms.craftengine.core.block; + +import net.momirealms.craftengine.core.util.Key; + +public final class BlockTagKeys { + private BlockTagKeys() {} + + public static final Key DIRT = Key.of("minecraft:dirt"); +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/CustomBlock.java b/core/src/main/java/net/momirealms/craftengine/core/block/CustomBlock.java index 83932728d..daa2ade2f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/CustomBlock.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/CustomBlock.java @@ -3,7 +3,7 @@ package net.momirealms.craftengine.core.block; import net.momirealms.craftengine.core.block.properties.Property; import net.momirealms.craftengine.core.item.context.BlockPlaceContext; import net.momirealms.craftengine.core.loot.LootTable; -import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.event.EventTrigger; import net.momirealms.craftengine.core.util.Key; import net.momirealms.sparrow.nbt.CompoundTag; @@ -20,7 +20,7 @@ public interface CustomBlock { @Nullable LootTable lootTable(); - void execute(PlayerOptionalContext context, EventTrigger trigger); + void execute(Context context, EventTrigger trigger); @NotNull BlockStateVariantProvider variantProvider(); diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/CustomBlockStateWrapper.java b/core/src/main/java/net/momirealms/craftengine/core/block/CustomBlockStateWrapper.java new file mode 100644 index 000000000..3fad0021f --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/block/CustomBlockStateWrapper.java @@ -0,0 +1,6 @@ +package net.momirealms.craftengine.core.block; + +public interface CustomBlockStateWrapper { + + BlockStateWrapper visualBlockState(); +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/behavior/EntityBlockBehavior.java b/core/src/main/java/net/momirealms/craftengine/core/block/behavior/EntityBlockBehavior.java index 2eb34bae7..67c2c1e50 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/behavior/EntityBlockBehavior.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/behavior/EntityBlockBehavior.java @@ -7,12 +7,15 @@ import net.momirealms.craftengine.core.block.entity.tick.BlockEntityTicker; import net.momirealms.craftengine.core.world.BlockPos; import net.momirealms.craftengine.core.world.CEWorld; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.Nullable; @ApiStatus.Experimental public interface EntityBlockBehavior { - BlockEntityType blockEntityType(); + @Nullable + BlockEntityType blockEntityType(ImmutableBlockState state); + @Nullable BlockEntity createBlockEntity(BlockPos pos, ImmutableBlockState state); default BlockEntityTicker createSyncBlockEntityTicker(CEWorld level, ImmutableBlockState state, BlockEntityType blockEntityType) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/entity/BlockEntityType.java b/core/src/main/java/net/momirealms/craftengine/core/block/entity/BlockEntityType.java index 4291b6de5..ab69e48bc 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/entity/BlockEntityType.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/entity/BlockEntityType.java @@ -2,5 +2,5 @@ package net.momirealms.craftengine.core.block.entity; import net.momirealms.craftengine.core.util.Key; -public record BlockEntityType(Key id, BlockEntity.Factory factory) { +public record BlockEntityType(Key id) { } diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/entity/BlockEntityTypeKeys.java b/core/src/main/java/net/momirealms/craftengine/core/block/entity/BlockEntityTypeKeys.java index 720da9e20..d7ca645e6 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/entity/BlockEntityTypeKeys.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/entity/BlockEntityTypeKeys.java @@ -9,4 +9,5 @@ public final class BlockEntityTypeKeys { public static final Key SIMPLE_STORAGE = Key.of("craftengine:simple_storage"); public static final Key SIMPLE_PARTICLE = Key.of("craftengine:simple_particle"); public static final Key WALL_TORCH_PARTICLE = Key.of("craftengine:wall_torch_particle"); + public static final Key SEAT = Key.of("craftengine:seat"); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/entity/BlockEntityTypes.java b/core/src/main/java/net/momirealms/craftengine/core/block/entity/BlockEntityTypes.java index d3d0c0941..c4b725b06 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/entity/BlockEntityTypes.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/entity/BlockEntityTypes.java @@ -6,10 +6,10 @@ import net.momirealms.craftengine.core.registry.WritableRegistry; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceKey; -public class BlockEntityTypes { +public abstract class BlockEntityTypes { - public static BlockEntityType register(Key id, BlockEntity.Factory factory) { - BlockEntityType type = new BlockEntityType<>(id, factory); + public static BlockEntityType register(Key id) { + BlockEntityType type = new BlockEntityType<>(id); ((WritableRegistry>) BuiltInRegistries.BLOCK_ENTITY_TYPE) .register(ResourceKey.create(Registries.BLOCK_ENTITY_TYPE.location(), id), type); return type; diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/entity/render/element/BlockEntityElementConfigs.java b/core/src/main/java/net/momirealms/craftengine/core/block/entity/render/element/BlockEntityElementConfigs.java index 77841caa8..910c56f56 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/entity/render/element/BlockEntityElementConfigs.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/entity/render/element/BlockEntityElementConfigs.java @@ -10,7 +10,7 @@ import net.momirealms.craftengine.core.util.ResourceKey; import java.util.Map; import java.util.Optional; -public class BlockEntityElementConfigs { +public abstract class BlockEntityElementConfigs { public static final Key ITEM_DISPLAY = Key.of("craftengine:item_display"); public static final Key TEXT_DISPLAY = Key.of("craftengine:text_display"); diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/properties/type/DoorHinge.java b/core/src/main/java/net/momirealms/craftengine/core/block/properties/type/DoorHinge.java index 16ef73e49..582710716 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/properties/type/DoorHinge.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/properties/type/DoorHinge.java @@ -1,5 +1,6 @@ package net.momirealms.craftengine.core.block.properties.type; public enum DoorHinge { - LEFT, RIGHT + LEFT, + RIGHT } diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/properties/type/DoubleBlockHalf.java b/core/src/main/java/net/momirealms/craftengine/core/block/properties/type/DoubleBlockHalf.java index 1823e76dd..1f224faed 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/properties/type/DoubleBlockHalf.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/properties/type/DoubleBlockHalf.java @@ -1,5 +1,6 @@ package net.momirealms.craftengine.core.block.properties.type; public enum DoubleBlockHalf { - UPPER, LOWER + LOWER, + UPPER } diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/properties/type/SingleBlockHalf.java b/core/src/main/java/net/momirealms/craftengine/core/block/properties/type/SingleBlockHalf.java index 04cee6405..0eee299c2 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/properties/type/SingleBlockHalf.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/properties/type/SingleBlockHalf.java @@ -1,5 +1,6 @@ package net.momirealms.craftengine.core.block.properties.type; public enum SingleBlockHalf { - TOP, BOTTOM + BOTTOM, + TOP } diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/Entity.java b/core/src/main/java/net/momirealms/craftengine/core/entity/Entity.java index ba2a81d73..5c52db4e2 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/Entity.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/Entity.java @@ -48,4 +48,6 @@ public interface Entity { } void setEntityData(EntityData data, T value, boolean force); + + void remove(); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/EntityTypeKeys.java b/core/src/main/java/net/momirealms/craftengine/core/entity/EntityTypeKeys.java index c4829722a..3640da16b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/EntityTypeKeys.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/EntityTypeKeys.java @@ -19,6 +19,7 @@ public class EntityTypeKeys { public static final Key AXOLOTL = Key.of("minecraft:axolotl"); public static final Key CHICKEN = Key.of("minecraft:chicken"); public static final Key SNIFFER = Key.of("minecraft:sniffer"); + public static final Key DOLPHIN = Key.of("minecraft:dolphin"); public static final Key ARMADILLO = Key.of("minecraft:armadillo"); public static final Key COD = Key.of("minecraft:cod"); public static final Key SALMON = Key.of("minecraft:salmon"); @@ -81,4 +82,5 @@ public class EntityTypeKeys { public static final Key FURNACE_MINECART = Key.of("minecraft:furnace_minecart"); public static final Key HOPPER_MINECART = Key.of("minecraft:hopper_minecart"); public static final Key COMMAND_BLOCK_MINECART = Key.of("minecraft:command_block_minecart"); + public static final Key SPAWNER_MINECART = Key.of("minecraft:spawner_minecart"); } \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/EquipmentSlot.java b/core/src/main/java/net/momirealms/craftengine/core/entity/EquipmentSlot.java index 55c343103..b0d53d96c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/EquipmentSlot.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/EquipmentSlot.java @@ -1,12 +1,12 @@ package net.momirealms.craftengine.core.entity; public enum EquipmentSlot { - HEAD, - CHEST, - LEGS, - FEET, - BODY, MAIN_HAND, OFF_HAND, + FEET, + LEGS, + CHEST, + HEAD, + BODY, SADDLE } diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/ItemDisplayContext.java b/core/src/main/java/net/momirealms/craftengine/core/entity/ItemDisplayContext.java index adbead883..239488019 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/ItemDisplayContext.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/ItemDisplayContext.java @@ -9,7 +9,8 @@ public enum ItemDisplayContext { HEAD(5), GUI(6), GROUND(7), - FIXED(8); + FIXED(8), + ON_SHELF(9); private final byte id; diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/ItemEntity.java b/core/src/main/java/net/momirealms/craftengine/core/entity/ItemEntity.java new file mode 100644 index 000000000..77483b9c1 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/ItemEntity.java @@ -0,0 +1,8 @@ +package net.momirealms.craftengine.core.entity; + +import net.momirealms.craftengine.core.item.Item; + +public interface ItemEntity { + + Item getItem(); +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/AbstractCustomFurniture.java b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/AbstractCustomFurniture.java index be342f973..3f4d4bae4 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/AbstractCustomFurniture.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/AbstractCustomFurniture.java @@ -1,7 +1,7 @@ package net.momirealms.craftengine.core.entity.furniture; import net.momirealms.craftengine.core.loot.LootTable; -import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.event.EventTrigger; import net.momirealms.craftengine.core.plugin.context.function.Function; import net.momirealms.craftengine.core.util.Key; @@ -17,7 +17,7 @@ public abstract class AbstractCustomFurniture implements CustomFurniture { private final Key id; private final FurnitureSettings settings; private final Map placements; - private final Map>> events; + private final Map>> events; @Nullable private final LootTable lootTable; @@ -26,7 +26,7 @@ public abstract class AbstractCustomFurniture implements CustomFurniture { protected AbstractCustomFurniture(@NotNull Key id, @NotNull FurnitureSettings settings, @NotNull Map placements, - @NotNull Map>> events, + @NotNull Map>> events, @Nullable LootTable lootTable) { this.id = id; this.settings = settings; @@ -37,8 +37,8 @@ public abstract class AbstractCustomFurniture implements CustomFurniture { } @Override - public void execute(PlayerOptionalContext context, EventTrigger trigger) { - for (Function function : Optional.ofNullable(this.events.get(trigger)).orElse(Collections.emptyList())) { + public void execute(Context context, EventTrigger trigger) { + for (Function function : Optional.ofNullable(this.events.get(trigger)).orElse(Collections.emptyList())) { function.run(context); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/AbstractFurnitureElement.java b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/AbstractFurnitureElement.java index 3b4863b0f..9e470cb6d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/AbstractFurnitureElement.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/AbstractFurnitureElement.java @@ -15,6 +15,8 @@ public abstract class AbstractFurnitureElement implements FurnitureElement { private final Vector3f position; private final Quaternionf rotation; private final boolean applyDyedColor; + private final float shadowRadius; + private final float shadowStrength; public AbstractFurnitureElement(Key item, Billboard billboard, @@ -23,6 +25,8 @@ public abstract class AbstractFurnitureElement implements FurnitureElement { Vector3f translation, Vector3f position, Quaternionf rotation, + float shadowRadius, + float shadowStrength, boolean applyDyedColor) { this.billboard = billboard; this.transform = transform; @@ -32,6 +36,18 @@ public abstract class AbstractFurnitureElement implements FurnitureElement { this.rotation = rotation; this.position = position; this.applyDyedColor = applyDyedColor; + this.shadowRadius = shadowRadius; + this.shadowStrength = shadowStrength; + } + + @Override + public float shadowRadius() { + return shadowRadius; + } + + @Override + public float shadowStrength() { + return shadowStrength; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/AbstractFurnitureManager.java b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/AbstractFurnitureManager.java index 8a2a4ad05..ab16f7a96 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/AbstractFurnitureManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/AbstractFurnitureManager.java @@ -70,7 +70,7 @@ public abstract class AbstractFurnitureManager implements FurnitureManager { this.byId.clear(); } - protected abstract HitBox defaultHitBox(); + protected abstract HitBoxConfig defaultHitBox(); protected abstract FurnitureElement.Builder furnitureElementBuilder(); @@ -137,6 +137,8 @@ public abstract class AbstractFurnitureManager implements FurnitureManager { .position(ResourceConfigUtils.getAsVector3f(element.getOrDefault("position", "0"), "position")) .translation(ResourceConfigUtils.getAsVector3f(element.getOrDefault("translation", "0"), "translation")) .rotation(ResourceConfigUtils.getAsQuaternionf(element.getOrDefault("rotation", "0"), "rotation")) + .shadowRadius(ResourceConfigUtils.getAsFloat(element.getOrDefault("shadow-radius", 0f), "shadow-radius")) + .shadowStrength(ResourceConfigUtils.getAsFloat(element.getOrDefault("shadow-strength", 1f), "shadow-strength")) .build(); elements.add(furnitureElement); } @@ -152,7 +154,7 @@ public abstract class AbstractFurnitureManager implements FurnitureManager { } // add hitboxes - List hitboxes = ResourceConfigUtils.parseConfigAsList(placementArguments.get("hitboxes"), HitBoxTypes::fromMap); + List hitboxes = ResourceConfigUtils.parseConfigAsList(placementArguments.get("hitboxes"), HitBoxTypes::fromMap); if (hitboxes.isEmpty() && externalModel.isEmpty()) { hitboxes = List.of(defaultHitBox()); } @@ -163,7 +165,7 @@ public abstract class AbstractFurnitureManager implements FurnitureManager { placements.put(anchorType, new CustomFurniture.Placement( anchorType, elements.toArray(new FurnitureElement[0]), - hitboxes.toArray(new HitBox[0]), + hitboxes.toArray(new HitBoxConfig[0]), ResourceConfigUtils.getOrDefault(ruleSection.get("rotation"), o -> RotationRule.valueOf(o.toString().toUpperCase(Locale.ENGLISH)), RotationRule.ANY), ResourceConfigUtils.getOrDefault(ruleSection.get("alignment"), o -> AlignmentRule.valueOf(o.toString().toUpperCase(Locale.ENGLISH)), AlignmentRule.CENTER), externalModel, @@ -173,7 +175,7 @@ public abstract class AbstractFurnitureManager implements FurnitureManager { placements.put(anchorType, new CustomFurniture.Placement( anchorType, elements.toArray(new FurnitureElement[0]), - hitboxes.toArray(new HitBox[0]), + hitboxes.toArray(new HitBoxConfig[0]), RotationRule.ANY, AlignmentRule.CENTER, externalModel, diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/AbstractHitBox.java b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/AbstractHitBoxConfig.java similarity index 71% rename from core/src/main/java/net/momirealms/craftengine/core/entity/furniture/AbstractHitBox.java rename to core/src/main/java/net/momirealms/craftengine/core/entity/furniture/AbstractHitBoxConfig.java index 11be803c9..d7f8e3021 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/AbstractHitBox.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/AbstractHitBoxConfig.java @@ -1,15 +1,16 @@ package net.momirealms.craftengine.core.entity.furniture; +import net.momirealms.craftengine.core.entity.seat.SeatConfig; import org.joml.Vector3f; -public abstract class AbstractHitBox implements HitBox { - protected final Seat[] seats; +public abstract class AbstractHitBoxConfig implements HitBoxConfig { + protected final SeatConfig[] seats; protected final Vector3f position; protected final boolean canUseItemOn; protected final boolean blocksBuilding; protected final boolean canBeHitByProjectile; - public AbstractHitBox(Seat[] seats, Vector3f position, boolean canUseItemOn, boolean blocksBuilding, boolean canBeHitByProjectile) { + public AbstractHitBoxConfig(SeatConfig[] seats, Vector3f position, boolean canUseItemOn, boolean blocksBuilding, boolean canBeHitByProjectile) { this.seats = seats; this.position = position; this.canUseItemOn = canUseItemOn; @@ -18,7 +19,7 @@ public abstract class AbstractHitBox implements HitBox { } @Override - public Seat[] seats() { + public SeatConfig[] seats() { return this.seats; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/CustomFurniture.java b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/CustomFurniture.java index 294e58dda..19afdf32f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/CustomFurniture.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/CustomFurniture.java @@ -1,7 +1,7 @@ package net.momirealms.craftengine.core.entity.furniture; import net.momirealms.craftengine.core.loot.LootTable; -import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.event.EventTrigger; import net.momirealms.craftengine.core.plugin.context.function.Function; import net.momirealms.craftengine.core.util.Key; @@ -15,7 +15,7 @@ import java.util.Optional; // TODO 家具的设计存在问题。家具也应该存在不同的状态,而不是根据放置规则直接决定状态类型 public interface CustomFurniture { - void execute(PlayerOptionalContext context, EventTrigger trigger); + void execute(Context context, EventTrigger trigger); Key id(); @@ -44,14 +44,14 @@ public interface CustomFurniture { Builder lootTable(LootTable lootTable); - Builder events(Map>> events); + Builder events(Map>> events); CustomFurniture build(); } record Placement(AnchorType anchorType, FurnitureElement[] elements, - HitBox[] hitBoxes, + HitBoxConfig[] hitBoxConfigs, RotationRule rotationRule, AlignmentRule alignmentRule, Optional externalModel, diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/Furniture.java b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/Furniture.java index 691092619..e5a2bcd59 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/Furniture.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/Furniture.java @@ -1,12 +1,10 @@ package net.momirealms.craftengine.core.entity.furniture; -import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.world.WorldPosition; import org.jetbrains.annotations.NotNull; -import org.joml.Vector3f; +import org.jetbrains.annotations.Nullable; -import java.util.Optional; import java.util.UUID; public interface Furniture { @@ -18,32 +16,30 @@ public interface Furniture { void destroy(); + void destroyColliders(); + void destroySeats(); - Optional findFirstAvailableSeat(int targetEntityId); - - boolean removeOccupiedSeat(Vector3f seat); - - default boolean removeOccupiedSeat(Seat seat) { - return this.removeOccupiedSeat(seat.offset()); - } - - boolean tryOccupySeat(Seat seat); - UUID uuid(); int baseEntityId(); - @NotNull AnchorType anchorType(); + @Nullable + HitBox hitBoxByEntityId(int id); - @NotNull Key id(); + @Nullable HitBoxPart hitBoxPartByEntityId(int id); - @NotNull CustomFurniture config(); + @NotNull + AnchorType anchorType(); + + @NotNull + Key id(); + + @NotNull + CustomFurniture config(); boolean hasExternalModel(); - void spawnSeatEntityForPlayer(Player player, Seat seat); - FurnitureExtraData extraData(); void setExtraData(FurnitureExtraData extraData); diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/FurnitureElement.java b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/FurnitureElement.java index e610ec044..785b24c68 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/FurnitureElement.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/FurnitureElement.java @@ -18,6 +18,10 @@ public interface FurnitureElement { ItemDisplayContext transform(); + float shadowRadius(); + + float shadowStrength(); + boolean applyDyedColor(); Vector3f scale(); @@ -46,6 +50,10 @@ public interface FurnitureElement { Builder applyDyedColor(boolean applyDyedColor); + Builder shadowStrength(float shadowStrength); + + Builder shadowRadius(float shadowRadius); + FurnitureElement build(); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/FurnitureManager.java b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/FurnitureManager.java index 68cf5fa05..e57baec7d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/FurnitureManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/FurnitureManager.java @@ -15,8 +15,6 @@ import java.util.Optional; public interface FurnitureManager extends Manageable { Key FURNITURE_KEY = Key.of("craftengine:furniture_id"); Key FURNITURE_EXTRA_DATA_KEY = Key.of("craftengine:furniture_extra_data"); - Key FURNITURE_SEAT_BASE_ENTITY_KEY = Key.of("craftengine:seat_to_base_entity"); - Key FURNITURE_SEAT_VECTOR_3F_KEY = Key.of("craftengine:seat_vector"); Key FURNITURE_COLLISION = Key.of("craftengine:collision"); String FURNITURE_ADMIN_NODE = "craftengine.furniture.admin"; diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/HitBox.java b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/HitBox.java index cd145a799..961ea7420 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/HitBox.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/HitBox.java @@ -1,33 +1,19 @@ package net.momirealms.craftengine.core.entity.furniture; -import net.momirealms.craftengine.core.util.Key; -import net.momirealms.craftengine.core.world.WorldPosition; -import net.momirealms.craftengine.core.world.collision.AABB; -import org.joml.Quaternionf; -import org.joml.Vector3f; +import net.momirealms.craftengine.core.entity.seat.Seat; +import net.momirealms.craftengine.core.entity.seat.SeatOwner; +import net.momirealms.craftengine.core.world.EntityHitResult; +import net.momirealms.craftengine.core.world.Vec3d; -import java.util.function.BiConsumer; -import java.util.function.Consumer; -import java.util.function.Supplier; +import java.util.Optional; -public interface HitBox { +public interface HitBox extends SeatOwner { - Key type(); + Seat[] seats(); - void initPacketsAndColliders(int[] entityId, WorldPosition position, Quaternionf conjugated, - BiConsumer packets, Consumer collider, BiConsumer aabb); + Optional clip(Vec3d min, Vec3d max); - void initShapeForPlacement(double x, double y, double z, float yaw, Quaternionf conjugated, Consumer aabbs); + HitBoxPart[] parts(); - int[] acquireEntityIds(Supplier entityIdSupplier); - - Seat[] seats(); - - Vector3f position(); - - boolean blocksBuilding(); - - boolean canBeHitByProjectile(); - - boolean canUseItemOn(); + HitBoxConfig config(); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/HitBoxConfig.java b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/HitBoxConfig.java new file mode 100644 index 000000000..fdc574861 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/HitBoxConfig.java @@ -0,0 +1,34 @@ +package net.momirealms.craftengine.core.entity.furniture; + +import net.momirealms.craftengine.core.entity.seat.SeatConfig; +import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.world.WorldPosition; +import net.momirealms.craftengine.core.world.collision.AABB; +import org.joml.Quaternionf; +import org.joml.Vector3f; + +import java.util.function.BiConsumer; +import java.util.function.Consumer; +import java.util.function.Supplier; + +public interface HitBoxConfig { + + Key type(); + + void initPacketsAndColliders(int[] entityId, WorldPosition position, Quaternionf conjugated, + BiConsumer packets, Consumer collider, Consumer aabb); + + void initShapeForPlacement(double x, double y, double z, float yaw, Quaternionf conjugated, Consumer aabbs); + + int[] acquireEntityIds(Supplier entityIdSupplier); + + SeatConfig[] seats(); + + Vector3f position(); + + boolean blocksBuilding(); + + boolean canBeHitByProjectile(); + + boolean canUseItemOn(); +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/HitBoxConfigFactory.java b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/HitBoxConfigFactory.java new file mode 100644 index 000000000..32fb5f355 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/HitBoxConfigFactory.java @@ -0,0 +1,8 @@ +package net.momirealms.craftengine.core.entity.furniture; + +import java.util.Map; + +public interface HitBoxConfigFactory { + + HitBoxConfig create(Map arguments); +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/HitBoxFactory.java b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/HitBoxFactory.java deleted file mode 100644 index 6b85ae871..000000000 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/HitBoxFactory.java +++ /dev/null @@ -1,23 +0,0 @@ -package net.momirealms.craftengine.core.entity.furniture; - -import net.momirealms.craftengine.core.util.ResourceConfigUtils; - -import java.util.List; -import java.util.Map; - -public interface HitBoxFactory { - - HitBox create(Map arguments); - - @SuppressWarnings("unchecked") - static Seat[] getSeats(Map arguments) { - List seats = (List) arguments.getOrDefault("seats", List.of()); - return seats.stream() - .map(arg -> { - String[] split = arg.split(" "); - if (split.length == 1) return new Seat(ResourceConfigUtils.getAsVector3f(split[0], "seats"), 0, false); - return new Seat(ResourceConfigUtils.getAsVector3f(split[0], "seats"), Float.parseFloat(split[1]), true); - }) - .toArray(Seat[]::new); - } -} diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/HitBoxPart.java b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/HitBoxPart.java new file mode 100644 index 000000000..cfa336889 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/HitBoxPart.java @@ -0,0 +1,7 @@ +package net.momirealms.craftengine.core.entity.furniture; + +import net.momirealms.craftengine.core.world.Vec3d; +import net.momirealms.craftengine.core.world.collision.AABB; + +public record HitBoxPart(int entityId, AABB aabb, Vec3d pos) { +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/HitBoxTypes.java b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/HitBoxTypes.java index 2b9a15d99..c005ee619 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/HitBoxTypes.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/HitBoxTypes.java @@ -16,14 +16,14 @@ public class HitBoxTypes { public static final Key HAPPY_GHAST = Key.of("minecraft:happy_ghast"); public static final Key CUSTOM = Key.of("minecraft:custom"); - public static void register(Key key, HitBoxFactory factory) { - ((WritableRegistry) BuiltInRegistries.HITBOX_FACTORY) + public static void register(Key key, HitBoxConfigFactory factory) { + ((WritableRegistry) BuiltInRegistries.HITBOX_FACTORY) .register(ResourceKey.create(Registries.HITBOX_FACTORY.location(), key), factory); } - public static HitBox fromMap(Map arguments) { + public static HitBoxConfig fromMap(Map arguments) { Key type = Optional.ofNullable(arguments.get("type")).map(String::valueOf).map(Key::of).orElse(HitBoxTypes.INTERACTION); - HitBoxFactory factory = BuiltInRegistries.HITBOX_FACTORY.getValue(type); + HitBoxConfigFactory factory = BuiltInRegistries.HITBOX_FACTORY.getValue(type); if (factory == null) { throw new LocalizedResourceConfigException("warning.config.furniture.hitbox.invalid_type", type.toString()); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/Seat.java b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/Seat.java deleted file mode 100644 index 885333703..000000000 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/Seat.java +++ /dev/null @@ -1,23 +0,0 @@ -package net.momirealms.craftengine.core.entity.furniture; - -import org.joml.Vector3f; - -import java.util.Objects; - -public record Seat(Vector3f offset, float yaw, boolean limitPlayerRotation) { - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof Seat seat)) return false; - return Float.compare(yaw, seat.yaw) == 0 && Objects.equals(offset, seat.offset) && limitPlayerRotation == seat.limitPlayerRotation; - } - - @Override - public int hashCode() { - int result = Objects.hashCode(offset); - result = 31 * result + Float.hashCode(yaw); - result = 31 * result + Boolean.hashCode(limitPlayerRotation); - return result; - } -} diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/player/Player.java b/core/src/main/java/net/momirealms/craftengine/core/entity/player/Player.java index f0da08202..82ad30715 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/player/Player.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/player/Player.java @@ -14,6 +14,9 @@ import net.momirealms.craftengine.core.world.Position; import net.momirealms.craftengine.core.world.Vec3d; import net.momirealms.craftengine.core.world.WorldPosition; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Locale; public abstract class Player extends AbstractEntity implements NetWorkUser { private static final Key TYPE = Key.of("minecraft:player"); @@ -170,5 +173,15 @@ public abstract class Player extends AbstractEntity implements NetWorkUser { public abstract void teleport(WorldPosition worldPosition); - public abstract void damage(double amount, Key damageType); + public abstract void damage(double amount, Key damageType, @Nullable Object causeEntity); + + public abstract Locale locale(); + + public abstract Locale selectedLocale(); + + public abstract void setSelectedLocale(@Nullable Locale locale); + + @Override + public void remove() { + } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/seat/Seat.java b/core/src/main/java/net/momirealms/craftengine/core/entity/seat/Seat.java new file mode 100644 index 000000000..a2aeca7b6 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/seat/Seat.java @@ -0,0 +1,17 @@ +package net.momirealms.craftengine.core.entity.seat; + +import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.world.WorldPosition; + +public interface Seat { + + O owner(); + + SeatConfig config(); + + boolean isOccupied(); + + void destroy(); + + boolean spawnSeat(Player player, WorldPosition source); +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/seat/SeatConfig.java b/core/src/main/java/net/momirealms/craftengine/core/entity/seat/SeatConfig.java new file mode 100644 index 000000000..8a27080a2 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/seat/SeatConfig.java @@ -0,0 +1,30 @@ +package net.momirealms.craftengine.core.entity.seat; + +import net.momirealms.craftengine.core.util.MiscUtils; +import net.momirealms.craftengine.core.util.ResourceConfigUtils; +import org.joml.Vector3f; + +import java.util.List; + +public record SeatConfig(Vector3f position, float yRot, boolean limitPlayerRotation) { + + public static SeatConfig[] fromObj(Object config) { + if (config instanceof List) { + List seats = MiscUtils.getAsStringList(config); + return seats.stream() + .map(arg -> { + String[] split = arg.split(" "); + if (split.length == 1) return new SeatConfig(ResourceConfigUtils.getAsVector3f(split[0], "seats"), 0, false); + return new SeatConfig(ResourceConfigUtils.getAsVector3f(split[0], "seats"), Float.parseFloat(split[1]), true); + }) + .toArray(SeatConfig[]::new); + } else if (config != null) { + String arg = config.toString(); + String[] split = arg.split(" "); + if (split.length == 1) return new SeatConfig[] {new SeatConfig(ResourceConfigUtils.getAsVector3f(split[0], "seats"), 0, false)}; + return new SeatConfig[] {new SeatConfig(ResourceConfigUtils.getAsVector3f(split[0], "seats"), Float.parseFloat(split[1]), true)}; + } else { + return new SeatConfig[0]; + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/seat/SeatManager.java b/core/src/main/java/net/momirealms/craftengine/core/entity/seat/SeatManager.java new file mode 100644 index 000000000..a121b11a2 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/seat/SeatManager.java @@ -0,0 +1,9 @@ +package net.momirealms.craftengine.core.entity.seat; + +import net.momirealms.craftengine.core.plugin.Manageable; +import net.momirealms.craftengine.core.util.Key; + +public interface SeatManager extends Manageable { + Key SEAT_KEY = Key.of("craftengine:seat"); + Key SEAT_EXTRA_DATA_KEY = Key.of("craftengine:seat_extra_data"); +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/seat/SeatOwner.java b/core/src/main/java/net/momirealms/craftengine/core/entity/seat/SeatOwner.java new file mode 100644 index 000000000..a341cb117 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/seat/SeatOwner.java @@ -0,0 +1,8 @@ +package net.momirealms.craftengine.core.entity.seat; + +import net.momirealms.sparrow.nbt.CompoundTag; + +public interface SeatOwner { + + void saveCustomData(CompoundTag data); +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/font/AbstractFontManager.java b/core/src/main/java/net/momirealms/craftengine/core/font/AbstractFontManager.java index 639076b6c..640e66d9a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/font/AbstractFontManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/font/AbstractFontManager.java @@ -70,6 +70,7 @@ public abstract class AbstractFontManager implements FontManager { @Override public void load() { this.offsetFont = Optional.ofNullable(plugin.config().settings().getSection("image.offset-characters")) + .filter(section -> section.getBoolean("enable", true)) .map(OffsetFont::new) .orElse(null); this.networkTagMapper = new HashMap<>(1024); @@ -122,6 +123,7 @@ public abstract class AbstractFontManager implements FontManager { this.registerImageTags(); this.registerShiftTags(); this.registerGlobalTags(); + this.registerL10nTags(); this.buildNetworkTagTrie(); this.buildEmojiKeywordsTrie(); this.emojiList = new ArrayList<>(this.emojis.values()); @@ -130,6 +132,14 @@ public abstract class AbstractFontManager implements FontManager { .collect(Collectors.toList()); } + private void registerL10nTags() { + for (String key : this.plugin.translationManager().translationKeys()) { + String l10nTag = l10nTag(key); + this.networkTagMapper.put(l10nTag, ComponentProvider.l10n(key)); + this.networkTagMapper.put("\\" + l10nTag, ComponentProvider.constant(Component.text(l10nTag))); + } + } + private void registerGlobalTags() { for (Map.Entry entry : this.plugin.globalVariableManager().globalVariables().entrySet()) { String globalTag = globalTag(entry.getKey()); @@ -139,6 +149,7 @@ public abstract class AbstractFontManager implements FontManager { } private void registerShiftTags() { + if (this.offsetFont == null) return; for (int i = -256; i <= 256; i++) { String shiftTag = ""; this.networkTagMapper.put(shiftTag, ComponentProvider.constant(this.offsetFont.createOffset(i))); @@ -148,10 +159,14 @@ public abstract class AbstractFontManager implements FontManager { private void registerImageTags() { for (BitmapImage image : this.images.values()) { - String id = image.id().toString(); + Key key = image.id(); + String id = key.toString(); String simpleImageTag = imageTag(id); this.networkTagMapper.put(simpleImageTag, ComponentProvider.constant(image.componentAt(0, 0))); this.networkTagMapper.put("\\" + simpleImageTag, ComponentProvider.constant(Component.text(simpleImageTag))); + String simplerImageTag = imageTag(key.value()); + this.networkTagMapper.put(simplerImageTag, ComponentProvider.constant(image.componentAt(0, 0))); + this.networkTagMapper.put("\\" + simplerImageTag, ComponentProvider.constant(Component.text(simplerImageTag))); for (int i = 0; i < image.rows(); i++) { for (int j = 0; j < image.columns(); j++) { String imageArgs = id + ":" + i + ":" + j; @@ -164,12 +179,12 @@ public abstract class AbstractFontManager implements FontManager { } @Override - public Map matchTags(String json) { + public Map matchTags(String text) { if (this.networkTagTrie == null) { return Collections.emptyMap(); } Map tags = new HashMap<>(); - for (Token token : this.networkTagTrie.tokenize(json)) { + for (Token token : this.networkTagTrie.tokenize(text)) { if (token.isMatch()) { tags.put(token.getFragment(), this.networkTagMapper.get(token.getFragment())); } @@ -354,6 +369,10 @@ public abstract class AbstractFontManager implements FontManager { return ""; } + private static String l10nTag(String text) { + return ""; + } + @Override public boolean isDefaultFontInUse() { return !this.illegalChars.isEmpty(); @@ -401,7 +420,7 @@ public abstract class AbstractFontManager implements FontManager { } public class EmojiParser extends IdSectionConfigParser { - public static final String[] CONFIG_SECTION_NAME = new String[] {"emoji", "emojis"}; + public static final String[] CONFIG_SECTION_NAME = new String[] {"emojis", "emoji"}; @Override public String[] sectionId() { diff --git a/core/src/main/java/net/momirealms/craftengine/core/font/FontManager.java b/core/src/main/java/net/momirealms/craftengine/core/font/FontManager.java index 7cf65807b..0c9e46730 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/font/FontManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/font/FontManager.java @@ -6,10 +6,8 @@ import net.momirealms.craftengine.core.plugin.Manageable; import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.plugin.config.ConfigParser; import net.momirealms.craftengine.core.plugin.text.component.ComponentProvider; -import net.momirealms.craftengine.core.util.AdventureHelper; -import net.momirealms.craftengine.core.util.CharacterUtils; -import net.momirealms.craftengine.core.util.FormatUtils; -import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.*; +import net.momirealms.sparrow.nbt.Tag; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -110,7 +108,11 @@ public interface FontManager extends Manageable { return createOffsets(offset, (raw, font) -> raw); } - Map matchTags(String json); + Map matchTags(String text); + + default Map matchTags(Tag nbt) { + return matchTags(new StringValueOnlyTagVisitor().visit(nbt)); + } void refreshEmojiSuggestions(UUID uuid); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/AbstractCustomItem.java b/core/src/main/java/net/momirealms/craftengine/core/item/AbstractCustomItem.java index 561d4d9f1..e9480ff1b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/AbstractCustomItem.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/AbstractCustomItem.java @@ -3,7 +3,7 @@ package net.momirealms.craftengine.core.item; import net.momirealms.craftengine.core.item.behavior.ItemBehavior; import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; import net.momirealms.craftengine.core.item.updater.ItemUpdateConfig; -import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.event.EventTrigger; import net.momirealms.craftengine.core.plugin.context.function.Function; import net.momirealms.craftengine.core.util.Key; @@ -24,7 +24,7 @@ public abstract class AbstractCustomItem implements CustomItem { protected final ItemDataModifier[] clientBoundModifiers; protected final List behaviors; protected final ItemSettings settings; - protected final Map>> events; + protected final Map>> events; protected final ItemUpdateConfig updater; @SuppressWarnings("unchecked") @@ -33,7 +33,7 @@ public abstract class AbstractCustomItem implements CustomItem { List> modifiers, List> clientBoundModifiers, ItemSettings settings, - Map>> events, + Map>> events, ItemUpdateConfig updater) { this.isVanillaItem = isVanillaItem; this.id = id; @@ -50,8 +50,8 @@ public abstract class AbstractCustomItem implements CustomItem { } @Override - public void execute(PlayerOptionalContext context, EventTrigger trigger) { - for (Function function : Optional.ofNullable(this.events.get(trigger)).orElse(Collections.emptyList())) { + public void execute(Context context, EventTrigger trigger) { + for (Function function : Optional.ofNullable(this.events.get(trigger)).orElse(Collections.emptyList())) { function.run(context); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItem.java b/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItem.java index 5d5799233..94f5fcee3 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItem.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItem.java @@ -3,6 +3,8 @@ package net.momirealms.craftengine.core.item; import com.google.gson.JsonElement; import net.kyori.adventure.text.Component; import net.momirealms.craftengine.core.attribute.AttributeModifier; +import net.momirealms.craftengine.core.entity.EquipmentSlot; +import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.item.behavior.ItemBehavior; import net.momirealms.craftengine.core.item.data.Enchantment; import net.momirealms.craftengine.core.item.data.FireworkExplosion; @@ -17,6 +19,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; +import java.util.Map; import java.util.Optional; public class AbstractItem, I> implements Item { @@ -110,6 +113,17 @@ public class AbstractItem, I> implements Item { return this.factory.maxDamage(this.item); } + @Override + public Item blockState(Map state) { + this.factory.blockState(this.item, state); + return this; + } + + @Override + public Optional> blockState() { + return this.factory.blockState(this.item); + } + @Override public Item dyedColor(Color data) { this.factory.dyedColor(this.item, data); @@ -488,4 +502,9 @@ public class AbstractItem, I> implements Item { public void shrink(int amount) { this.item.shrink(amount); } + + @Override + public void hurtAndBreak(int amount, @Nullable Player player, @Nullable EquipmentSlot slot) { + this.item.hurtAndBreak(amount, player, slot); + } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItemManager.java b/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItemManager.java index 7f95e173a..92d8269f8 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItemManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItemManager.java @@ -24,7 +24,7 @@ import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.plugin.config.ConfigParser; import net.momirealms.craftengine.core.plugin.config.IdSectionConfigParser; -import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.event.EventFunctions; import net.momirealms.craftengine.core.plugin.context.event.EventTrigger; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; @@ -63,6 +63,8 @@ public abstract class AbstractItemManager extends AbstractModelGenerator impl protected final List cachedAllItemSuggestions = new ArrayList<>(); protected final List cachedVanillaItemSuggestions = new ArrayList<>(); protected final List cachedTotemSuggestions = new ArrayList<>(); + // 替代配方材料 + protected final Map> ingredientSubstitutes = new HashMap<>(); protected AbstractItemManager(CraftEngine plugin) { super(plugin); @@ -141,6 +143,7 @@ public abstract class AbstractItemManager extends AbstractModelGenerator impl this.equipments.clear(); this.modernItemModels1_21_4.clear(); this.modernItemModels1_21_2.clear(); + this.ingredientSubstitutes.clear(); } @Override @@ -163,6 +166,15 @@ public abstract class AbstractItemManager extends AbstractModelGenerator impl return Optional.ofNullable(this.customItemsByPath.get(path)); } + @Override + public List getIngredientSubstitutes(Key item) { + if (VANILLA_ITEMS.contains(item)) { + return Optional.ofNullable(this.ingredientSubstitutes.get(item)).orElse(Collections.emptyList()); + } else { + return Collections.emptyList(); + } + } + @Override public ItemUpdateResult updateItem(Item item, Supplier contextSupplier) { Optional> optionalCustomItem = item.getCustomItem(); @@ -196,6 +208,15 @@ public abstract class AbstractItemManager extends AbstractModelGenerator impl for (Key tag : tags) { this.customItemTags.computeIfAbsent(tag, k -> new ArrayList<>()).add(customItem.uniqueId()); } + // ingredient substitutes + List substitutes = customItem.settings().ingredientSubstitutes(); + if (!substitutes.isEmpty()) { + for (Key key : substitutes) { + if (VANILLA_ITEMS.contains(key)) { + AbstractItemManager.this.ingredientSubstitutes.computeIfAbsent(key, k -> new ArrayList<>()).add(customItem.uniqueId()); + } + } + } } return true; } @@ -411,7 +432,7 @@ public abstract class AbstractItemManager extends AbstractModelGenerator impl boolean isVanillaItem = isVanillaItem(id); // 读取服务端侧材质 - Key material = isVanillaItem ? id : Key.from(ResourceConfigUtils.requireNonEmptyStringOrThrow(section.get("material"), "warning.config.item.missing_material").toLowerCase(Locale.ROOT)); + Key material = isVanillaItem ? id : Key.from(ResourceConfigUtils.requireNonEmptyStringOrThrow(section.getOrDefault("material", Config.defaultMaterial()), "warning.config.item.missing_material").toLowerCase(Locale.ROOT)); // 读取客户端侧材质 Key clientBoundMaterial = VersionHelper.PREMIUM && section.containsKey("client-bound-material") ? Key.from(section.get("client-bound-material").toString().toLowerCase(Locale.ROOT)) : material; @@ -498,7 +519,8 @@ public abstract class AbstractItemManager extends AbstractModelGenerator impl CustomItem.Builder itemBuilder = createPlatformItemBuilder(uniqueId, material, clientBoundMaterial); // 模型配置区域,如果这里被配置了,那么用户必须要配置custom-model-data或item-model - Map modelSection = MiscUtils.castToMap(section.get("model"), true); + // model可以是一个string也可以是一个区域 + Object modelSection = section.get("model"); Map legacyModelSection = MiscUtils.castToMap(section.get("legacy-model"), true); boolean hasModelSection = modelSection != null || legacyModelSection != null; @@ -535,7 +557,7 @@ public abstract class AbstractItemManager extends AbstractModelGenerator impl itemBuilder.dataModifier(new IdModifier<>(id)); // 事件 - Map>> eventTriggerListMap; + Map>> eventTriggerListMap; try { eventTriggerListMap = EventFunctions.parseEvents(ResourceConfigUtils.get(section, "events", "event")); } catch (LocalizedResourceConfigException e) { @@ -548,11 +570,11 @@ public abstract class AbstractItemManager extends AbstractModelGenerator impl try { settings = Optional.ofNullable(ResourceConfigUtils.get(section, "settings")) .map(map -> ItemSettings.fromMap(MiscUtils.castToMap(map, true))) - .map(it -> isVanillaItem ? it.canPlaceRelatedVanillaBlock(true) : it) - .orElse(ItemSettings.of().canPlaceRelatedVanillaBlock(isVanillaItem)); + .map(it -> isVanillaItem ? it.disableVanillaBehavior(false) : it) + .orElse(ItemSettings.of().disableVanillaBehavior(!isVanillaItem)); } catch (LocalizedResourceConfigException e) { collector.add(e); - settings = ItemSettings.of().canPlaceRelatedVanillaBlock(isVanillaItem); + settings = ItemSettings.of().disableVanillaBehavior(!isVanillaItem); } // 行为 @@ -599,6 +621,11 @@ public abstract class AbstractItemManager extends AbstractModelGenerator impl AbstractItemManager.this.plugin.itemBrowserManager().addExternalCategoryMember(id, MiscUtils.getAsStringList(section.get("category")).stream().map(Key::of).toList()); } + if (!hasModelSection) { + collector.throwIfPresent(); + return; + } + /* * ======================== * @@ -607,18 +634,8 @@ public abstract class AbstractItemManager extends AbstractModelGenerator impl * ======================== */ - // 原版物品还改模型?自己替换json去 - if (isVanillaItem) { - return; - } - - if (!hasModelSection) { - collector.throwIfPresent(); - return; - } - // 只对自定义物品有这个限制,既没有模型值也没有item-model - if (customModelData == 0 && itemModel == null) { + if (!isVanillaItem && customModelData == 0 && itemModel == null) { collector.addAndThrow(new LocalizedResourceConfigException("warning.config.item.missing_model_id")); } @@ -634,7 +651,7 @@ public abstract class AbstractItemManager extends AbstractModelGenerator impl return; } try { - modernModel = ItemModels.fromMap(modelSection); + modernModel = ItemModels.fromObj(modelSection); for (ModelGeneration generation : modernModel.modelsToGenerate()) { prepareModelGeneration(generation); } @@ -669,41 +686,52 @@ public abstract class AbstractItemManager extends AbstractModelGenerator impl // 自定义物品的model处理 // 这个item-model是否存在,且是原版item-model boolean isVanillaItemModel = itemModel != null && AbstractPackManager.PRESET_ITEMS.containsKey(itemModel); - // 使用了自定义模型值 - if (customModelData != 0) { - // 如果用户主动设置了item-model且为原版物品,则使用item-model为基础模型,否则使用其视觉材质对应的item-model - Key finalBaseModel = isVanillaItemModel ? itemModel : clientBoundMaterial; - // 添加新版item model - if (isModernFormatRequired() && hasModernModel) { - TreeMap map = AbstractItemManager.this.modernOverrides.computeIfAbsent(finalBaseModel, k -> new TreeMap<>()); - map.put(customModelData, new ModernItemModel( - modernModel, - ResourceConfigUtils.getAsBoolean(section.getOrDefault("oversized-in-gui", true), "oversized-in-gui"), - ResourceConfigUtils.getAsBoolean(section.getOrDefault("hand-animation-on-swap", true), "hand-animation-on-swap") - )); + if (!isVanillaItem) { + // 使用了自定义模型值 + if (customModelData != 0) { + // 如果用户主动设置了item-model且为原版物品,则使用item-model为基础模型,否则使用其视觉材质对应的item-model + Key finalBaseModel = isVanillaItemModel ? itemModel : clientBoundMaterial; + // 添加新版item model + if (isModernFormatRequired() && hasModernModel) { + TreeMap map = AbstractItemManager.this.modernOverrides.computeIfAbsent(finalBaseModel, k -> new TreeMap<>()); + map.put(customModelData, new ModernItemModel( + modernModel, + ResourceConfigUtils.getAsBoolean(section.getOrDefault("oversized-in-gui", true), "oversized-in-gui"), + ResourceConfigUtils.getAsBoolean(section.getOrDefault("hand-animation-on-swap", true), "hand-animation-on-swap") + )); + } + // 添加旧版 overrides + if (needsLegacyCompatibility() && hasLegacyModel) { + TreeSet lom = AbstractItemManager.this.legacyOverrides.computeIfAbsent(finalBaseModel, k -> new TreeSet<>()); + lom.addAll(legacyOverridesModels); + } + } else if (isVanillaItemModel) { + collector.addAndThrow(new LocalizedResourceConfigException("warning.config.item.item_model.conflict", itemModel.asString())); } - // 添加旧版 overrides - if (needsLegacyCompatibility() && hasLegacyModel) { - TreeSet lom = AbstractItemManager.this.legacyOverrides.computeIfAbsent(finalBaseModel, k -> new TreeSet<>()); - lom.addAll(legacyOverridesModels); - } - } else if (isVanillaItemModel) { - collector.addAndThrow(new LocalizedResourceConfigException("warning.config.item.item_model.conflict", itemModel.asString())); - } - // 使用了item-model组件,且不是原版物品的 - if (itemModel != null && !isVanillaItemModel) { - if (isModernFormatRequired() && hasModernModel) { - AbstractItemManager.this.modernItemModels1_21_4.put(itemModel, new ModernItemModel( + // 使用了item-model组件,且不是原版物品的 + if (itemModel != null && !isVanillaItemModel) { + if (isModernFormatRequired() && hasModernModel) { + AbstractItemManager.this.modernItemModels1_21_4.put(itemModel, new ModernItemModel( + modernModel, + ResourceConfigUtils.getAsBoolean(section.getOrDefault("oversized-in-gui", true), "oversized-in-gui"), + ResourceConfigUtils.getAsBoolean(section.getOrDefault("hand-animation-on-swap", true), "hand-animation-on-swap") + )); + } + if (needsItemModelCompatibility() && needsLegacyCompatibility() && hasLegacyModel) { + TreeSet lom = AbstractItemManager.this.modernItemModels1_21_2.computeIfAbsent(itemModel, k -> new TreeSet<>()); + lom.addAll(legacyOverridesModels); + } + } + } else { + // 原版物品的item model覆写 + if (isModernFormatRequired()) { + AbstractItemManager.this.modernItemModels1_21_4.put(id, new ModernItemModel( modernModel, ResourceConfigUtils.getAsBoolean(section.getOrDefault("oversized-in-gui", true), "oversized-in-gui"), ResourceConfigUtils.getAsBoolean(section.getOrDefault("hand-animation-on-swap", true), "hand-animation-on-swap") )); } - if (needsItemModelCompatibility() && needsLegacyCompatibility() && hasLegacyModel) { - TreeSet lom = AbstractItemManager.this.modernItemModels1_21_2.computeIfAbsent(itemModel, k -> new TreeSet<>()); - lom.addAll(legacyOverridesModels); - } } // 抛出异常 diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/CustomItem.java b/core/src/main/java/net/momirealms/craftengine/core/item/CustomItem.java index bb7a71ed9..d367cf882 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/CustomItem.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/CustomItem.java @@ -3,7 +3,7 @@ package net.momirealms.craftengine.core.item; import net.momirealms.craftengine.core.item.behavior.ItemBehavior; import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; import net.momirealms.craftengine.core.item.updater.ItemUpdateConfig; -import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.event.EventTrigger; import net.momirealms.craftengine.core.plugin.context.function.Function; import net.momirealms.craftengine.core.util.Key; @@ -44,7 +44,7 @@ public interface CustomItem extends BuildableItem { return settings().tags().contains(tag); } - void execute(PlayerOptionalContext context, EventTrigger trigger); + void execute(Context context, EventTrigger trigger); @NotNull List behaviors(); @@ -74,7 +74,7 @@ public interface CustomItem extends BuildableItem { Builder updater(ItemUpdateConfig updater); - Builder events(Map>> events); + Builder events(Map>> events); CustomItem build(); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/ComponentIds.java b/core/src/main/java/net/momirealms/craftengine/core/item/DataComponentIds.java similarity index 81% rename from core/src/main/java/net/momirealms/craftengine/core/item/ComponentIds.java rename to core/src/main/java/net/momirealms/craftengine/core/item/DataComponentIds.java index 9cfa7771f..123dacc19 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/ComponentIds.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/DataComponentIds.java @@ -1,7 +1,7 @@ package net.momirealms.craftengine.core.item; -public final class ComponentIds { - private ComponentIds() {} +public final class DataComponentIds { + private DataComponentIds() {} public static final String ITEM_NAME = "minecraft:item_name"; public static final String CUSTOM_NAME = "minecraft:custom_name"; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/ComponentKeys.java b/core/src/main/java/net/momirealms/craftengine/core/item/DataComponentKeys.java similarity index 98% rename from core/src/main/java/net/momirealms/craftengine/core/item/ComponentKeys.java rename to core/src/main/java/net/momirealms/craftengine/core/item/DataComponentKeys.java index 6b4e70569..601f3046b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/ComponentKeys.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/DataComponentKeys.java @@ -2,8 +2,8 @@ package net.momirealms.craftengine.core.item; import net.momirealms.craftengine.core.util.Key; -public final class ComponentKeys { - private ComponentKeys() {} +public final class DataComponentKeys { + private DataComponentKeys() {} public static final Key ATTRIBUTE_MODIFIERS = Key.of("minecraft", "attribute_modifiers"); public static final Key BANNER_PATTERN = Key.of("minecraft", "banner_patterns"); diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/DataComponentPredicateKeys.java b/core/src/main/java/net/momirealms/craftengine/core/item/DataComponentPredicateKeys.java new file mode 100644 index 000000000..20c8a25ed --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/item/DataComponentPredicateKeys.java @@ -0,0 +1,22 @@ +package net.momirealms.craftengine.core.item; + +import net.momirealms.craftengine.core.util.Key; + +public final class DataComponentPredicateKeys { + private DataComponentPredicateKeys() {} + + public static final Key DAMAGE = Key.of("minecraft", "damage"); + public static final Key ENCHANTMENTS = Key.of("minecraft", "enchantments"); + public static final Key STORED_ENCHANTMENTS = Key.of("minecraft", "stored_enchantments"); + public static final Key POTIONS = Key.of("minecraft", "potion_contents"); + public static final Key CUSTOM_DATA = Key.of("minecraft", "custom_data"); + public static final Key CONTAINER = Key.of("minecraft", "container"); + public static final Key BUNDLE_CONTENTS = Key.of("minecraft", "bundle_contents"); + public static final Key FIREWORK_EXPLOSION = Key.of("minecraft", "firework_explosion"); + public static final Key FIREWORKS = Key.of("minecraft", "fireworks"); + public static final Key WRITABLE_BOOK = Key.of("minecraft", "writable_book_content"); + public static final Key WRITTEN_BOOK = Key.of("minecraft", "written_book_content"); + public static final Key ATTRIBUTE_MODIFIERS = Key.of("minecraft", "attribute_modifiers"); + public static final Key ARMOR_TRIM = Key.of("minecraft", "trim"); + public static final Key JUKEBOX_PLAYABLE = Key.of("minecraft", "jukebox_playable"); +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/Item.java b/core/src/main/java/net/momirealms/craftengine/core/item/Item.java index 8c48642be..d1e32bc46 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/Item.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/Item.java @@ -3,6 +3,8 @@ package net.momirealms.craftengine.core.item; import com.google.gson.JsonElement; import net.kyori.adventure.text.Component; import net.momirealms.craftengine.core.attribute.AttributeModifier; +import net.momirealms.craftengine.core.entity.EquipmentSlot; +import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.item.behavior.ItemBehavior; import net.momirealms.craftengine.core.item.data.Enchantment; import net.momirealms.craftengine.core.item.data.FireworkExplosion; @@ -18,6 +20,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; +import java.util.Map; import java.util.Optional; /** @@ -76,6 +79,10 @@ public interface Item { int maxDamage(); + Item blockState(Map state); + + Optional> blockState(); + // todo 考虑部分版本的show in tooltip保留 Item dyedColor(Color data); @@ -209,6 +216,8 @@ public interface Item { void shrink(int amount); + void hurtAndBreak(int amount, @Nullable Player player, @Nullable EquipmentSlot slot); + default Item transmuteCopy(Key another) { return transmuteCopy(another, this.count()); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/ItemFactory.java b/core/src/main/java/net/momirealms/craftengine/core/item/ItemFactory.java index b2cac48ba..5125d57c6 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/ItemFactory.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/ItemFactory.java @@ -16,6 +16,7 @@ import net.momirealms.craftengine.core.util.UniqueKey; import net.momirealms.sparrow.nbt.Tag; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.Optional; @@ -216,4 +217,8 @@ public abstract class ItemFactory, I> { protected abstract UniqueKey recipeIngredientID(W item); protected abstract void attributeModifiers(W item, List modifiers); + + protected abstract Optional> blockState(W item); + + protected abstract void blockState(W item, Map state); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/ItemKeys.java b/core/src/main/java/net/momirealms/craftengine/core/item/ItemKeys.java index 33a9ac8c5..4242b8d6a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/ItemKeys.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/ItemKeys.java @@ -43,25 +43,42 @@ public final class ItemKeys { public static final Key LIGHT = Key.of("minecraft:light"); public static final Key GLOWSTONE = Key.of("minecraft:glowstone"); public static final Key SADDLE = Key.of("minecraft:saddle"); - public static final Key HARNESS = Key.of("minecraft:harness"); + public static final Key FIREWORK_STAR = Key.of("minecraft:firework_star"); + public static final Key ENDER_EYE = Key.of("minecraft:ender_eye"); + public static final Key END_CRYSTAL = Key.of("minecraft:end_crystal"); + public static final Key COD = Key.of("minecraft:cod"); + public static final Key SALMON = Key.of("minecraft:salmon"); + public static final Key SUGAR_CANE = Key.of("minecraft:sugar_cane"); public static final Key WHITE_DYE = Key.of("minecraft:white_dye"); + public static final Key LIGHT_GRAY_DYE = Key.of("minecraft:light_gray_dye"); + public static final Key GRAY_DYE = Key.of("minecraft:gray_dye"); + public static final Key BLACK_DYE = Key.of("minecraft:black_dye"); + public static final Key BROWN_DYE = Key.of("minecraft:brown_dye"); + public static final Key RED_DYE = Key.of("minecraft:red_dye"); public static final Key ORANGE_DYE = Key.of("minecraft:orange_dye"); - public static final Key MAGENTA_DYE = Key.of("minecraft:magenta_dye"); - public static final Key LIGHT_BLUE_DYE = Key.of("minecraft:light_blue_dye"); public static final Key YELLOW_DYE = Key.of("minecraft:yellow_dye"); public static final Key LIME_DYE = Key.of("minecraft:lime_dye"); - public static final Key PINK_DYE = Key.of("minecraft:pink_dye"); - public static final Key GRAY_DYE = Key.of("minecraft:gray_dye"); - public static final Key LIGHT_GRAY_DYE = Key.of("minecraft:light_gray_dye"); - public static final Key CYAN_DYE = Key.of("minecraft:cyan_dye"); - public static final Key PURPLE_DYE = Key.of("minecraft:purple_dye"); - public static final Key BLUE_DYE = Key.of("minecraft:blue_dye"); - public static final Key BROWN_DYE = Key.of("minecraft:brown_dye"); public static final Key GREEN_DYE = Key.of("minecraft:green_dye"); - public static final Key RED_DYE = Key.of("minecraft:red_dye"); - public static final Key BLACK_DYE = Key.of("minecraft:black_dye"); - public static final Key FIREWORK_STAR = Key.of("minecraft:firework_star"); + public static final Key CYAN_DYE = Key.of("minecraft:cyan_dye"); + public static final Key LIGHT_BLUE_DYE = Key.of("minecraft:light_blue_dye"); + public static final Key BLUE_DYE = Key.of("minecraft:blue_dye"); + public static final Key PURPLE_DYE = Key.of("minecraft:purple_dye"); + public static final Key MAGENTA_DYE = Key.of("minecraft:magenta_dye"); + public static final Key PINK_DYE = Key.of("minecraft:pink_dye"); + + public static final Key CARROT = Key.of("minecraft:carrot"); + public static final Key POTATO = Key.of("minecraft:potato"); + public static final Key BEETROOT_SEEDS = Key.of("minecraft:beetroot_seeds"); + public static final Key WHEAT_SEEDS = Key.of("minecraft:wheat_seeds"); + public static final Key SWEET_BERRIES = Key.of("minecraft:sweet_berries"); + public static final Key GLOW_BERRIES = Key.of("minecraft:glow_berries"); public static final Key[] AXES = new Key[] {WOODEN_AXE, STONE_AXE, IRON_AXE, GOLDEN_AXE, DIAMOND_AXE, NETHERITE_AXE}; + public static final Key[] WATER_BUCKETS = new Key[] {WATER_BUCKET, COD_BUCKET, SALMON_BUCKET, TROPICAL_FISH_BUCKET, TADPOLE_BUCKET, PUFFERFISH_BUCKET, AXOLOTL_BUCKET}; + + public static final Key[] DYES = new Key[] { + WHITE_DYE, LIGHT_GRAY_DYE, GRAY_DYE, BLACK_DYE, BROWN_DYE, RED_DYE, ORANGE_DYE, YELLOW_DYE, LIME_DYE, + GREEN_DYE, CYAN_DYE, LIGHT_BLUE_DYE, BLUE_DYE, PURPLE_DYE, MAGENTA_DYE, PINK_DYE + }; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/ItemManager.java b/core/src/main/java/net/momirealms/craftengine/core/item/ItemManager.java index e837c541d..f408f7e4c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/ItemManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/ItemManager.java @@ -11,7 +11,6 @@ import net.momirealms.craftengine.core.pack.model.ModernItemModel; import net.momirealms.craftengine.core.pack.model.generation.ModelGenerator; import net.momirealms.craftengine.core.plugin.Manageable; import net.momirealms.craftengine.core.plugin.config.ConfigParser; -import net.momirealms.craftengine.core.util.FriendlyByteBuf; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.UniqueKey; import org.incendo.cloud.suggestion.Suggestion; @@ -110,13 +109,9 @@ public interface ItemManager extends Manageable, ModelGenerator { boolean isVanillaItem(Key item); - Item decode(FriendlyByteBuf byteBuf); + Optional> c2s(Item item); - void encode(FriendlyByteBuf byteBuf, Item item); - - Item s2c(Item item, Player player); - - Item c2s(Item item); + Optional> s2c(Item item, Player player); UniqueIdItem uniqueEmptyItem(); @@ -124,5 +119,7 @@ public interface ItemManager extends Manageable, ModelGenerator { Item build(DatapackRecipeResult result); + List getIngredientSubstitutes(Key item); + ItemUpdateResult updateItem(Item item, Supplier contextSupplier); } \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/ItemSettings.java b/core/src/main/java/net/momirealms/craftengine/core/item/ItemSettings.java index 076316376..96cead759 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/ItemSettings.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/ItemSettings.java @@ -8,6 +8,8 @@ import net.momirealms.craftengine.core.item.equipment.Equipment; import net.momirealms.craftengine.core.item.modifier.EquippableModifier; import net.momirealms.craftengine.core.item.modifier.FoodModifier; import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; +import net.momirealms.craftengine.core.item.recipe.remainder.CraftRemainder; +import net.momirealms.craftengine.core.item.recipe.remainder.CraftRemainders; import net.momirealms.craftengine.core.item.setting.*; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.config.Config; @@ -27,17 +29,18 @@ public class ItemSettings { Repairable repairable = Repairable.UNDEFINED; List anvilRepairItems = List.of(); boolean renameable = true; - boolean canPlaceRelatedVanillaBlock = false; + boolean disableVanillaBehavior = true; ProjectileMeta projectileMeta; Tristate dyeable = Tristate.UNDEFINED; Helmet helmet = null; FoodData foodData = null; Key consumeReplacement = null; - Key craftRemainder = null; + CraftRemainder craftRemainder = null; List invulnerable = List.of(); boolean canEnchant = true; float compostProbability= 0.5f; boolean respectRepairableComponent = false; + List ingredientSubstitutes = List.of(); @Nullable ItemEquipment equipment; @Nullable @@ -91,7 +94,7 @@ public class ItemSettings { newSettings.repairable = settings.repairable; newSettings.anvilRepairItems = settings.anvilRepairItems; newSettings.renameable = settings.renameable; - newSettings.canPlaceRelatedVanillaBlock = settings.canPlaceRelatedVanillaBlock; + newSettings.disableVanillaBehavior = settings.disableVanillaBehavior; newSettings.projectileMeta = settings.projectileMeta; newSettings.dyeable = settings.dyeable; newSettings.helmet = settings.helmet; @@ -104,6 +107,7 @@ public class ItemSettings { newSettings.respectRepairableComponent = settings.respectRepairableComponent; newSettings.dyeColor = settings.dyeColor; newSettings.fireworkColor = settings.fireworkColor; + newSettings.ingredientSubstitutes = settings.ingredientSubstitutes; return newSettings; } @@ -123,8 +127,8 @@ public class ItemSettings { return projectileMeta; } - public boolean canPlaceRelatedVanillaBlock() { - return canPlaceRelatedVanillaBlock; + public boolean disableVanillaBehavior() { + return disableVanillaBehavior; } public Repairable repairable() { @@ -159,6 +163,10 @@ public class ItemSettings { return respectRepairableComponent; } + public List ingredientSubstitutes() { + return ingredientSubstitutes; + } + @Nullable public FoodData foodData() { return foodData; @@ -170,7 +178,7 @@ public class ItemSettings { } @Nullable - public Key craftRemainder() { + public CraftRemainder craftRemainder() { return craftRemainder; } @@ -207,6 +215,11 @@ public class ItemSettings { return this; } + public ItemSettings ingredientSubstitutes(List substitutes) { + this.ingredientSubstitutes = substitutes; + return this; + } + public ItemSettings dyeColor(Color color) { this.dyeColor = color; return this; @@ -222,8 +235,8 @@ public class ItemSettings { return this; } - public ItemSettings craftRemainder(Key key) { - this.craftRemainder = key; + public ItemSettings craftRemainder(CraftRemainder craftRemainder) { + this.craftRemainder = craftRemainder; return this; } @@ -252,8 +265,8 @@ public class ItemSettings { return this; } - public ItemSettings canPlaceRelatedVanillaBlock(boolean canPlaceRelatedVanillaBlock) { - this.canPlaceRelatedVanillaBlock = canPlaceRelatedVanillaBlock; + public ItemSettings disableVanillaBehavior(boolean disableVanillaBehavior) { + this.disableVanillaBehavior = disableVanillaBehavior; return this; } @@ -352,7 +365,11 @@ public class ItemSettings { })); registerFactory("craft-remaining-item", (value -> settings -> { if (value == null) settings.craftRemainder(null); - else settings.craftRemainder(Key.of(value.toString())); + else settings.craftRemainder(CraftRemainders.fromObject(value)); + })); + registerFactory("craft-remainder", (value -> settings -> { + if (value == null) settings.craftRemainder(null); + else settings.craftRemainder(CraftRemainders.fromObject(value)); })); registerFactory("tags", (value -> { List tags = MiscUtils.getAsStringList(value); @@ -397,7 +414,11 @@ public class ItemSettings { })); registerFactory("can-place", (value -> { boolean bool = ResourceConfigUtils.getAsBoolean(value, "can-place"); - return settings -> settings.canPlaceRelatedVanillaBlock(bool); + return settings -> settings.disableVanillaBehavior(!bool); + })); + registerFactory("disable-vanilla-behavior", (value -> { + boolean bool = ResourceConfigUtils.getAsBoolean(value, "disable-vanilla-behavior"); + return settings -> settings.disableVanillaBehavior(bool); })); registerFactory("projectile", (value -> { Map args = MiscUtils.castToMap(value, false); @@ -458,6 +479,7 @@ public class ItemSettings { }).toList(); return settings -> settings.invulnerable(list); })); + registerFactory("ingredient-substitute", (value -> settings -> settings.ingredientSubstitutes(MiscUtils.getAsStringList(value).stream().map(Key::of).toList()))); } private static void registerFactory(String id, ItemSettings.Modifier.Factory factory) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/ItemWrapper.java b/core/src/main/java/net/momirealms/craftengine/core/item/ItemWrapper.java index 896967727..6f40da2dd 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/ItemWrapper.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/ItemWrapper.java @@ -1,5 +1,9 @@ package net.momirealms.craftengine.core.item; +import net.momirealms.craftengine.core.entity.EquipmentSlot; +import net.momirealms.craftengine.core.entity.player.Player; +import org.jetbrains.annotations.Nullable; + public interface ItemWrapper { I getItem(); @@ -13,4 +17,6 @@ public interface ItemWrapper { ItemWrapper copyWithCount(int count); void shrink(int amount); + + void hurtAndBreak(int amount, @Nullable Player player, @Nullable EquipmentSlot slot); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/NetworkItemBuildContext.java b/core/src/main/java/net/momirealms/craftengine/core/item/NetworkItemBuildContext.java new file mode 100644 index 000000000..48e45b0cc --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/item/NetworkItemBuildContext.java @@ -0,0 +1,46 @@ +package net.momirealms.craftengine.core.item; + +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; +import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.plugin.context.ContextHolder; +import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; +import net.momirealms.craftengine.core.plugin.text.minimessage.*; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Map; + +public class NetworkItemBuildContext extends ItemBuildContext { + + public NetworkItemBuildContext(@Nullable Player player, @NotNull ContextHolder contexts) { + super(player, contexts); + } + + @NotNull + public static NetworkItemBuildContext empty() { + return new NetworkItemBuildContext(null, ContextHolder.empty()); + } + + @NotNull + public static NetworkItemBuildContext of(@Nullable Player player, @NotNull ContextHolder contexts) { + return new NetworkItemBuildContext(player, contexts); + } + + @NotNull + public static NetworkItemBuildContext of(@Nullable Player player, @NotNull ContextHolder.Builder builder) { + if (player != null) builder.withParameter(DirectContextParameters.PLAYER, player); + return new NetworkItemBuildContext(player, builder.build()); + } + + @NotNull + public static NetworkItemBuildContext of(@Nullable Player player) { + if (player == null) return new NetworkItemBuildContext(null, ContextHolder.empty()); + return new NetworkItemBuildContext(player, new ContextHolder(Map.of(DirectContextParameters.PLAYER, () -> player))); + } + + @NotNull + protected TagResolver[] getInternalTagResolvers() { + return new TagResolver[]{ShiftTag.INSTANCE, ImageTag.INSTANCE, new I18NTag(this), new L10NTag(this), new NamedArgumentTag(this), + new PlaceholderTag(this), new ExpressionTag(this), new GlobalVariableTag(this)}; + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/equipment/TrimBasedEquipment.java b/core/src/main/java/net/momirealms/craftengine/core/item/equipment/TrimBasedEquipment.java index 6023fd20d..d620d30a0 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/equipment/TrimBasedEquipment.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/equipment/TrimBasedEquipment.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.equipment; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.modifier.HideTooltipModifier; import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; import net.momirealms.craftengine.core.item.modifier.TrimModifier; @@ -42,7 +42,7 @@ public class TrimBasedEquipment extends AbstractEquipment { public List> modifiers() { return List.of( new TrimModifier<>(Key.of(AbstractPackManager.NEW_TRIM_MATERIAL), this.assetId), - new HideTooltipModifier<>(List.of(ComponentKeys.TRIM)) + new HideTooltipModifier<>(List.of(DataComponentKeys.TRIM)) ); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ArgumentsModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ArgumentsModifier.java index b2b636f60..e5a534eba 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ArgumentsModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ArgumentsModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -37,13 +37,13 @@ public class ArgumentsModifier implements ItemDataModifier { @Override public Item apply(Item item, ItemBuildContext context) { if (VersionHelper.isOrAbove1_20_5()) { - CompoundTag customData = (CompoundTag) Optional.ofNullable(item.getSparrowNBTComponent(ComponentKeys.CUSTOM_DATA)).orElseGet(CompoundTag::new); + CompoundTag customData = (CompoundTag) Optional.ofNullable(item.getSparrowNBTComponent(DataComponentKeys.CUSTOM_DATA)).orElseGet(CompoundTag::new); CompoundTag argumentTag = new CompoundTag(); for (Map.Entry entry : this.arguments.entrySet()) { argumentTag.put(entry.getKey(), new StringTag(entry.getValue().get(context))); } customData.put(ARGUMENTS_TAG, argumentTag); - item.setNBTComponent(ComponentKeys.CUSTOM_DATA, customData); + item.setNBTComponent(DataComponentKeys.CUSTOM_DATA, customData); } else { Map processed = new HashMap<>(); for (Map.Entry entry : this.arguments.entrySet()) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/AttributeModifiersModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/AttributeModifiersModifier.java index 63298239f..2c609babf 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/AttributeModifiersModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/AttributeModifiersModifier.java @@ -3,7 +3,7 @@ package net.momirealms.craftengine.core.item.modifier; import net.momirealms.craftengine.core.attribute.AttributeModifier; import net.momirealms.craftengine.core.attribute.Attributes; import net.momirealms.craftengine.core.attribute.Attributes1_21; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -17,6 +17,7 @@ import java.util.*; public class AttributeModifiersModifier implements SimpleNetworkItemDataModifier { public static final Factory FACTORY = new Factory<>(); public static final Map CONVERTOR = new HashMap<>(); + private static final Object[] NBT_PATH = new Object[]{"AttributeModifiers"}; static { if (VersionHelper.isOrAbove1_21_2()) { @@ -114,12 +115,12 @@ public class AttributeModifiersModifier implements SimpleNetworkItemDataModif @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.ATTRIBUTE_MODIFIERS; + return DataComponentKeys.ATTRIBUTE_MODIFIERS; } @Override public @Nullable Object[] nbtPath(Item item, ItemBuildContext context) { - return new Object[]{"AttributeModifiers"}; + return NBT_PATH; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/BlockStateModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/BlockStateModifier.java new file mode 100644 index 000000000..7ca29a9f5 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/BlockStateModifier.java @@ -0,0 +1,83 @@ +package net.momirealms.craftengine.core.item.modifier; + +import net.momirealms.craftengine.core.block.BlockStateWrapper; +import net.momirealms.craftengine.core.block.CustomBlockStateWrapper; +import net.momirealms.craftengine.core.item.DataComponentKeys; +import net.momirealms.craftengine.core.item.Item; +import net.momirealms.craftengine.core.item.ItemBuildContext; +import net.momirealms.craftengine.core.item.ItemDataModifierFactory; +import net.momirealms.craftengine.core.plugin.CraftEngine; +import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.LazyReference; +import org.jetbrains.annotations.Nullable; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; + +public class BlockStateModifier implements SimpleNetworkItemDataModifier { + public static final Factory FACTORY = new Factory<>(); + private static final Object[] NBT_PATH = new Object[]{"BlockStateTag"}; + private final LazyReference> wrapper; + + public BlockStateModifier(LazyReference> wrapper) { + this.wrapper = wrapper; + } + + @Override + public Key type() { + return ItemDataModifiers.BLOCK_STATE; + } + + @Override + public Item apply(Item item, ItemBuildContext context) { + return item.blockState(this.wrapper.get()); + } + + @Override + public @Nullable Object[] nbtPath(Item item, ItemBuildContext context) { + return NBT_PATH; + } + + @Override + public String nbtPathString(Item item, ItemBuildContext context) { + return "BlockStateTag"; + } + + @Override + public Key componentType(Item item, ItemBuildContext context) { + return DataComponentKeys.BLOCK_STATE; + } + + public static class Factory implements ItemDataModifierFactory { + + @Override + public ItemDataModifier create(Object arg) { + if (arg instanceof Map map) { + Map properties = new HashMap<>(); + for (Map.Entry entry : map.entrySet()) { + properties.put(entry.getKey().toString(), entry.getValue().toString()); + } + return new BlockStateModifier<>(LazyReference.lazyReference(() -> properties)); + } else { + String stateString = arg.toString(); + return new BlockStateModifier<>(LazyReference.lazyReference(() -> { + BlockStateWrapper blockState = CraftEngine.instance().blockManager().createBlockState(stateString); + if (blockState instanceof CustomBlockStateWrapper customBlockStateWrapper) { + blockState = customBlockStateWrapper.visualBlockState(); + } + if (blockState != null) { + Map properties = new HashMap<>(4); + for (String property : blockState.getPropertyNames()) { + Object value = blockState.getProperty(property); + properties.put(property, String.valueOf(value).toLowerCase(Locale.ROOT)); + } + return properties; + } + return Collections.emptyMap(); + })); + } + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ComponentsModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ComponentsModifier.java index 7e822a08d..143e4572f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ComponentsModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ComponentsModifier.java @@ -23,7 +23,7 @@ public class ComponentsModifier implements ItemDataModifier { List> pairs = new ArrayList<>(arguments.size()); for (Map.Entry entry : arguments.entrySet()) { Key key = Key.of(entry.getKey()); - if (key.equals(ComponentKeys.CUSTOM_DATA)) { + if (key.equals(DataComponentKeys.CUSTOM_DATA)) { this.customData = (CompoundTag) parseValue(entry.getValue()); } else { pairs.add(new Pair<>(key, parseValue(entry.getValue()))); @@ -58,14 +58,14 @@ public class ComponentsModifier implements ItemDataModifier { item.setNBTComponent(entry.left(), entry.right()); } if (this.customData != null) { - CompoundTag tag = (CompoundTag) item.getTag(ComponentKeys.CUSTOM_DATA); + CompoundTag tag = (CompoundTag) item.getTag(DataComponentKeys.CUSTOM_DATA); if (tag != null) { for (Map.Entry entry : this.customData.entrySet()) { tag.put(entry.getKey(), entry.getValue()); } - item.setComponent(ComponentKeys.CUSTOM_DATA, tag); + item.setComponent(DataComponentKeys.CUSTOM_DATA, tag); } else { - item.setComponent(ComponentKeys.CUSTOM_DATA, this.customData); + item.setComponent(DataComponentKeys.CUSTOM_DATA, this.customData); } } return item; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomModelDataModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomModelDataModifier.java index 9d1c68671..b704eac4a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomModelDataModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomModelDataModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -33,7 +33,7 @@ public class CustomModelDataModifier implements SimpleNetworkItemDataModifier @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.CUSTOM_MODEL_DATA; + return DataComponentKeys.CUSTOM_MODEL_DATA; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomNameModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomNameModifier.java index 26c2ddbd3..0b9b2653a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomNameModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomNameModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -11,6 +11,7 @@ import org.jetbrains.annotations.Nullable; public class CustomNameModifier implements SimpleNetworkItemDataModifier { public static final Factory FACTORY = new Factory<>(); + private static final Object[] NBT_PATH = new Object[]{"display", "Name"}; private final String argument; private final FormattedLine line; @@ -44,12 +45,12 @@ public class CustomNameModifier implements SimpleNetworkItemDataModifier { @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.CUSTOM_NAME; + return DataComponentKeys.CUSTOM_NAME; } @Override public @Nullable Object[] nbtPath(Item item, ItemBuildContext context) { - return new Object[]{"display", "Name"}; + return NBT_PATH; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/DyedColorModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/DyedColorModifier.java index 81e964094..0d84d467f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/DyedColorModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/DyedColorModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -12,6 +12,7 @@ import org.joml.Vector3f; public class DyedColorModifier implements SimpleNetworkItemDataModifier { public static final Factory FACTORY = new Factory<>(); + private static final Object[] NBT_PATH = new Object[]{"display", "color"}; private final Color color; public DyedColorModifier(Color color) { @@ -34,12 +35,12 @@ public class DyedColorModifier implements SimpleNetworkItemDataModifier { @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.DYED_COLOR; + return DataComponentKeys.DYED_COLOR; } @Override public @Nullable Object[] nbtPath(Item item, ItemBuildContext context) { - return new Object[]{"display", "color"}; + return NBT_PATH; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EnchantmentsModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EnchantmentsModifier.java index 8dbb7a591..24c55f3a1 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EnchantmentsModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EnchantmentsModifier.java @@ -12,6 +12,8 @@ import java.util.Map; public class EnchantmentsModifier implements SimpleNetworkItemDataModifier { public static final Factory FACTORY = new Factory<>(); + private static final Object[] STORED_ENCHANTMENTS = new Object[] {"StoredEnchantments"}; + private static final Object[] ENCHANTMENTS = new Object[] {"Enchantments"}; private final List enchantments; public EnchantmentsModifier(List enchantments) { @@ -38,12 +40,12 @@ public class EnchantmentsModifier implements SimpleNetworkItemDataModifier @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return item.vanillaId().equals(ItemKeys.ENCHANTED_BOOK) ? ComponentKeys.STORED_ENCHANTMENTS : ComponentKeys.ENCHANTMENTS; + return item.vanillaId().equals(ItemKeys.ENCHANTED_BOOK) ? DataComponentKeys.STORED_ENCHANTMENTS : DataComponentKeys.ENCHANTMENTS; } @Override public @Nullable Object[] nbtPath(Item item, ItemBuildContext context) { - return item.vanillaId().equals(ItemKeys.ENCHANTED_BOOK) ? new Object[]{"StoredEnchantments"} : new Object[]{"Enchantments"}; + return item.vanillaId().equals(ItemKeys.ENCHANTED_BOOK) ? STORED_ENCHANTMENTS : ENCHANTMENTS; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableAssetIdModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableAssetIdModifier.java index d6cb67ac6..3ceb9c999 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableAssetIdModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableAssetIdModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.setting.EquipmentData; @@ -42,6 +42,6 @@ public class EquippableAssetIdModifier implements SimpleNetworkItemDataModifi @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.EQUIPPABLE; + return DataComponentKeys.EQUIPPABLE; } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableModifier.java index 6570920da..51bb9b8ff 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -35,7 +35,7 @@ public class EquippableModifier implements SimpleNetworkItemDataModifier { @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.EQUIPPABLE; + return DataComponentKeys.EQUIPPABLE; } public static class Factory implements ItemDataModifierFactory { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/FoodModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/FoodModifier.java index 42fcb7f65..0405c2740 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/FoodModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/FoodModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -41,7 +41,7 @@ public class FoodModifier implements SimpleNetworkItemDataModifier { @Override public Item apply(Item item, ItemBuildContext context) { - item.setJavaComponent(ComponentKeys.FOOD, Map.of( + item.setJavaComponent(DataComponentKeys.FOOD, Map.of( "nutrition", this.nutrition, "saturation", this.saturation, "can_always_eat", this.canAlwaysEat @@ -51,7 +51,7 @@ public class FoodModifier implements SimpleNetworkItemDataModifier { @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.FOOD; + return DataComponentKeys.FOOD; } public static class Factory implements ItemDataModifierFactory { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/HideTooltipModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/HideTooltipModifier.java index e2b229923..e63ed942f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/HideTooltipModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/HideTooltipModifier.java @@ -19,34 +19,34 @@ public class HideTooltipModifier implements ItemDataModifier { public static final Factory FACTORY = new Factory<>(); public static final Map TO_LEGACY; public static final List COMPONENTS = List.of( - ComponentKeys.UNBREAKABLE, - ComponentKeys.ENCHANTMENTS, - ComponentKeys.STORED_ENCHANTMENTS, - ComponentKeys.CAN_PLACE_ON, - ComponentKeys.CAN_BREAK, - ComponentKeys.ATTRIBUTE_MODIFIERS, - ComponentKeys.DYED_COLOR, - ComponentKeys.TRIM, - ComponentKeys.JUKEBOX_PLAYABLE + DataComponentKeys.UNBREAKABLE, + DataComponentKeys.ENCHANTMENTS, + DataComponentKeys.STORED_ENCHANTMENTS, + DataComponentKeys.CAN_PLACE_ON, + DataComponentKeys.CAN_BREAK, + DataComponentKeys.ATTRIBUTE_MODIFIERS, + DataComponentKeys.DYED_COLOR, + DataComponentKeys.TRIM, + DataComponentKeys.JUKEBOX_PLAYABLE ); static { ImmutableMap.Builder builder = ImmutableMap.builder(); - builder.put(ComponentKeys.ENCHANTMENTS, 1); - builder.put(ComponentKeys.ATTRIBUTE_MODIFIERS, 2); - builder.put(ComponentKeys.UNBREAKABLE, 4); - builder.put(ComponentKeys.CAN_BREAK, 8); - builder.put(ComponentKeys.CAN_PLACE_ON, 16); - builder.put(ComponentKeys.STORED_ENCHANTMENTS, 32); - builder.put(ComponentKeys.POTION_CONTENTS, 32); - builder.put(ComponentKeys.WRITTEN_BOOK_CONTENT, 32); - builder.put(ComponentKeys.FIREWORKS, 32); - builder.put(ComponentKeys.FIREWORK_EXPLOSION, 32); - builder.put(ComponentKeys.BUNDLE_CONTENTS, 32); - builder.put(ComponentKeys.MAP_ID, 32); - builder.put(ComponentKeys.MAP_COLOR, 32); - builder.put(ComponentKeys.MAP_DECORATIONS, 32); - builder.put(ComponentKeys.DYED_COLOR, 64); - builder.put(ComponentKeys.TRIM, 128); + builder.put(DataComponentKeys.ENCHANTMENTS, 1); + builder.put(DataComponentKeys.ATTRIBUTE_MODIFIERS, 2); + builder.put(DataComponentKeys.UNBREAKABLE, 4); + builder.put(DataComponentKeys.CAN_BREAK, 8); + builder.put(DataComponentKeys.CAN_PLACE_ON, 16); + builder.put(DataComponentKeys.STORED_ENCHANTMENTS, 32); + builder.put(DataComponentKeys.POTION_CONTENTS, 32); + builder.put(DataComponentKeys.WRITTEN_BOOK_CONTENT, 32); + builder.put(DataComponentKeys.FIREWORKS, 32); + builder.put(DataComponentKeys.FIREWORK_EXPLOSION, 32); + builder.put(DataComponentKeys.BUNDLE_CONTENTS, 32); + builder.put(DataComponentKeys.MAP_ID, 32); + builder.put(DataComponentKeys.MAP_COLOR, 32); + builder.put(DataComponentKeys.MAP_DECORATIONS, 32); + builder.put(DataComponentKeys.DYED_COLOR, 64); + builder.put(DataComponentKeys.TRIM, 128); TO_LEGACY = builder.build(); } @@ -98,11 +98,11 @@ public class HideTooltipModifier implements ItemDataModifier { @Override public Item prepareNetworkItem(Item item, ItemBuildContext context, CompoundTag networkData) { if (VersionHelper.isOrAbove1_21_5()) { - Tag previous = item.getSparrowNBTComponent(ComponentKeys.TOOLTIP_DISPLAY); + Tag previous = item.getSparrowNBTComponent(DataComponentKeys.TOOLTIP_DISPLAY); if (previous != null) { - networkData.put(ComponentKeys.TOOLTIP_DISPLAY.asString(), NetworkItemHandler.pack(NetworkItemHandler.Operation.ADD, previous)); + networkData.put(DataComponentKeys.TOOLTIP_DISPLAY.asString(), NetworkItemHandler.pack(NetworkItemHandler.Operation.ADD, previous)); } else { - networkData.put(ComponentKeys.TOOLTIP_DISPLAY.asString(), NetworkItemHandler.pack(NetworkItemHandler.Operation.REMOVE)); + networkData.put(DataComponentKeys.TOOLTIP_DISPLAY.asString(), NetworkItemHandler.pack(NetworkItemHandler.Operation.REMOVE)); } } else if (VersionHelper.isOrAbove1_20_5()) { for (Key component : this.components) { @@ -210,9 +210,9 @@ public class HideTooltipModifier implements ItemDataModifier { @Override public void apply(Item item) { - Map data = MiscUtils.castToMap(item.getJavaComponent(ComponentKeys.TOOLTIP_DISPLAY), true); + Map data = MiscUtils.castToMap(item.getJavaComponent(DataComponentKeys.TOOLTIP_DISPLAY), true); if (data == null) { - item.setJavaComponent(ComponentKeys.TOOLTIP_DISPLAY, Map.of("hidden_components", this.components)); + item.setJavaComponent(DataComponentKeys.TOOLTIP_DISPLAY, Map.of("hidden_components", this.components)); } else { if (data.get("hidden_components") instanceof List list) { List hiddenComponents = list.stream().map(Object::toString).toList(); @@ -222,11 +222,11 @@ public class HideTooltipModifier implements ItemDataModifier { ).distinct().toList(); Map newData = new HashMap<>(data); newData.put("hidden_components", mergedComponents); - item.setJavaComponent(ComponentKeys.TOOLTIP_DISPLAY, newData); + item.setJavaComponent(DataComponentKeys.TOOLTIP_DISPLAY, newData); } else { Map newData = new HashMap<>(data); newData.put("hidden_components", this.components); - item.setJavaComponent(ComponentKeys.TOOLTIP_DISPLAY, newData); + item.setJavaComponent(DataComponentKeys.TOOLTIP_DISPLAY, newData); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/IdModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/IdModifier.java index a262ac971..e662cc975 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/IdModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/IdModifier.java @@ -13,7 +13,7 @@ public class IdModifier implements ItemDataModifier { } public Key identifier() { - return argument; + return this.argument; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemDataModifiers.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemDataModifiers.java index 82eafdef4..055746d59 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemDataModifiers.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemDataModifiers.java @@ -46,6 +46,7 @@ public final class ItemDataModifiers { public static final Key DYNAMIC_LORE = Key.of("craftengine:dynamic-lore"); public static final Key OVERWRITABLE_LORE = Key.of("craftengine:overwritable-lore"); public static final Key MAX_DAMAGE = Key.of("craftengine:max-damage"); + public static final Key BLOCK_STATE = Key.of("craftengine:block-state"); public static void register(Key key, ItemDataModifierFactory factory) { ((WritableRegistry>) BuiltInRegistries.ITEM_DATA_MODIFIER_FACTORY) @@ -77,6 +78,7 @@ public final class ItemDataModifiers { register(ARGUMENTS, ArgumentsModifier.FACTORY); register(OVERWRITABLE_ITEM_NAME, OverwritableItemNameModifier.FACTORY); register(PDC, PDCModifier.FACTORY); + register(BLOCK_STATE, BlockStateModifier.FACTORY); if (VersionHelper.isOrAbove1_20_5()) { register(CUSTOM_NAME, CustomNameModifier.FACTORY); register(ITEM_NAME, ItemNameModifier.FACTORY); diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemModelModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemModelModifier.java index c83be84d6..be7e74d35 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemModelModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemModelModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -31,7 +31,7 @@ public class ItemModelModifier implements SimpleNetworkItemDataModifier { @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.ITEM_MODEL; + return DataComponentKeys.ITEM_MODEL; } public static class Factory implements ItemDataModifierFactory { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemNameModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemNameModifier.java index cc36ef68d..fc4495311 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemNameModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemNameModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -10,6 +10,7 @@ import org.jetbrains.annotations.Nullable; public class ItemNameModifier implements SimpleNetworkItemDataModifier { public static final Factory FACTORY = new Factory<>(); + private static final Object[] NBT_PATH = new Object[]{"display", "Name"}; private final String argument; private final FormattedLine line; @@ -35,12 +36,12 @@ public class ItemNameModifier implements SimpleNetworkItemDataModifier { @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.ITEM_NAME; + return DataComponentKeys.ITEM_NAME; } @Override public @Nullable Object[] nbtPath(Item item, ItemBuildContext context) { - return new Object[]{"display", "Name"}; + return NBT_PATH; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemVersionModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemVersionModifier.java index b3002918e..96b6b0a60 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemVersionModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemVersionModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.util.Key; @@ -29,9 +29,9 @@ public class ItemVersionModifier implements ItemDataModifier { @Override public Item apply(Item item, ItemBuildContext context) { if (VersionHelper.isOrAbove1_20_5()) { - CompoundTag customData = (CompoundTag) Optional.ofNullable(item.getSparrowNBTComponent(ComponentKeys.CUSTOM_DATA)).orElseGet(CompoundTag::new); + CompoundTag customData = (CompoundTag) Optional.ofNullable(item.getSparrowNBTComponent(DataComponentKeys.CUSTOM_DATA)).orElseGet(CompoundTag::new); customData.putInt(VERSION_TAG, this.version); - item.setNBTComponent(ComponentKeys.CUSTOM_DATA, customData); + item.setNBTComponent(DataComponentKeys.CUSTOM_DATA, customData); } else { item.setTag(this.version, VERSION_TAG); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/MaxDamageModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/MaxDamageModifier.java index 842e2892b..35546063f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/MaxDamageModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/MaxDamageModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -30,7 +30,7 @@ public class MaxDamageModifier implements SimpleNetworkItemDataModifier { @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.MAX_DAMAGE; + return DataComponentKeys.MAX_DAMAGE; } public static class Factory implements ItemDataModifierFactory { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/OverwritableItemNameModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/OverwritableItemNameModifier.java index 979e70716..50c20cdb6 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/OverwritableItemNameModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/OverwritableItemNameModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -19,7 +19,7 @@ public class OverwritableItemNameModifier implements SimpleNetworkItemDataMod @Override public Item apply(Item item, ItemBuildContext context) { if (VersionHelper.COMPONENT_RELEASE) { - if (item.hasNonDefaultComponent(ComponentKeys.ITEM_NAME)) { + if (item.hasNonDefaultComponent(DataComponentKeys.ITEM_NAME)) { return item; } } else { @@ -37,7 +37,7 @@ public class OverwritableItemNameModifier implements SimpleNetworkItemDataMod @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.ITEM_NAME; + return DataComponentKeys.ITEM_NAME; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/PDCModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/PDCModifier.java index d5cfdd402..2d1f9c2bf 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/PDCModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/PDCModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -30,9 +30,9 @@ public class PDCModifier implements ItemDataModifier { @Override public Item apply(Item item, ItemBuildContext context) { if (VersionHelper.isOrAbove1_20_5()) { - CompoundTag customData = (CompoundTag) Optional.ofNullable(item.getSparrowNBTComponent(ComponentKeys.CUSTOM_DATA)).orElseGet(CompoundTag::new); + CompoundTag customData = (CompoundTag) Optional.ofNullable(item.getSparrowNBTComponent(DataComponentKeys.CUSTOM_DATA)).orElseGet(CompoundTag::new); customData.put(BUKKIT_PDC, this.data); - item.setNBTComponent(ComponentKeys.CUSTOM_DATA, customData); + item.setNBTComponent(DataComponentKeys.CUSTOM_DATA, customData); } else { item.setTag(this.data, BUKKIT_PDC); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TagsModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TagsModifier.java index 6995c87a2..2dcec8ecd 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TagsModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TagsModifier.java @@ -39,11 +39,11 @@ public class TagsModifier implements ItemDataModifier { @Override public Item prepareNetworkItem(Item item, ItemBuildContext context, CompoundTag networkData) { if (VersionHelper.isOrAbove1_20_5()) { - Tag previous = item.getSparrowNBTComponent(ComponentKeys.CUSTOM_DATA); + Tag previous = item.getSparrowNBTComponent(DataComponentKeys.CUSTOM_DATA); if (previous != null) { - networkData.put(ComponentKeys.CUSTOM_DATA.asString(), NetworkItemHandler.pack(NetworkItemHandler.Operation.ADD, previous)); + networkData.put(DataComponentKeys.CUSTOM_DATA.asString(), NetworkItemHandler.pack(NetworkItemHandler.Operation.ADD, previous)); } else { - networkData.put(ComponentKeys.CUSTOM_DATA.asString(), NetworkItemHandler.pack(NetworkItemHandler.Operation.REMOVE)); + networkData.put(DataComponentKeys.CUSTOM_DATA.asString(), NetworkItemHandler.pack(NetworkItemHandler.Operation.REMOVE)); } } else { for (Map.Entry entry : this.arguments.entrySet()) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TooltipStyleModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TooltipStyleModifier.java index 573c484f5..4f94d8517 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TooltipStyleModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TooltipStyleModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -32,7 +32,7 @@ public class TooltipStyleModifier implements SimpleNetworkItemDataModifier @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.TOOLTIP_STYLE; + return DataComponentKeys.TOOLTIP_STYLE; } public static class Factory implements ItemDataModifierFactory { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TrimModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TrimModifier.java index 82c7a537e..ead1b7d12 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TrimModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TrimModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -14,6 +14,7 @@ import java.util.Map; public class TrimModifier implements SimpleNetworkItemDataModifier { public static final Factory FACTORY = new Factory<>(); + private static final Object[] NBT_PATH = new Object[] {"Trim"}; private final Key material; private final Key pattern; @@ -42,12 +43,12 @@ public class TrimModifier implements SimpleNetworkItemDataModifier { @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.TRIM; + return DataComponentKeys.TRIM; } @Override public @Nullable Object[] nbtPath(Item item, ItemBuildContext context) { - return new Object[]{"Trim"}; + return NBT_PATH; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/UnbreakableModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/UnbreakableModifier.java index e2799c35e..8d8bd20d2 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/UnbreakableModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/UnbreakableModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -10,6 +10,7 @@ import org.jetbrains.annotations.Nullable; public class UnbreakableModifier implements SimpleNetworkItemDataModifier { public static final Factory FACTORY = new Factory<>(); + private static final Object[] NBT_PATH = new Object[]{"Unbreakable"}; private final boolean argument; public UnbreakableModifier(boolean argument) { @@ -33,12 +34,12 @@ public class UnbreakableModifier implements SimpleNetworkItemDataModifier @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.UNBREAKABLE; + return DataComponentKeys.UNBREAKABLE; } @Override public @Nullable Object[] nbtPath(Item item, ItemBuildContext context) { - return new Object[]{"Unbreakable"}; + return NBT_PATH; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/DynamicLoreModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/DynamicLoreModifier.java index 8f60c4cca..8a97d988e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/DynamicLoreModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/DynamicLoreModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier.lore; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -45,7 +45,7 @@ public final class DynamicLoreModifier implements SimpleNetworkItemDataModifi @Override public Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.LORE; + return DataComponentKeys.LORE; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/LoreModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/LoreModifier.java index 63e494b3a..61839b7d8 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/LoreModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/LoreModifier.java @@ -1,7 +1,7 @@ package net.momirealms.craftengine.core.item.modifier.lore; import net.kyori.adventure.text.Component; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -30,7 +30,7 @@ public sealed interface LoreModifier extends SimpleNetworkItemDataModifier @Override @Nullable default Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.LORE; + return DataComponentKeys.LORE; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/OverwritableLoreModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/OverwritableLoreModifier.java index 624eaf279..62a9d966e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/OverwritableLoreModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/OverwritableLoreModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier.lore; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -27,7 +27,7 @@ public final class OverwritableLoreModifier implements SimpleNetworkItemDataM @Override public Item apply(Item item, ItemBuildContext context) { if (VersionHelper.COMPONENT_RELEASE) { - if (item.hasNonDefaultComponent(ComponentKeys.LORE)) { + if (item.hasNonDefaultComponent(DataComponentKeys.LORE)) { return item; } } else { @@ -40,7 +40,7 @@ public final class OverwritableLoreModifier implements SimpleNetworkItemDataM @Override public Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.LORE; + return DataComponentKeys.LORE; } @Override @@ -64,7 +64,7 @@ public final class OverwritableLoreModifier implements SimpleNetworkItemDataM @Override public Item prepareNetworkItem(Item item, ItemBuildContext context, CompoundTag networkData) { if (VersionHelper.COMPONENT_RELEASE) { - if (item.hasNonDefaultComponent(ComponentKeys.LORE)) { + if (item.hasNonDefaultComponent(DataComponentKeys.LORE)) { return item; } } else { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/AbstractRecipeSerializer.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/AbstractRecipeSerializer.java index 43dd6dfc5..1c41c1f38 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/AbstractRecipeSerializer.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/AbstractRecipeSerializer.java @@ -10,7 +10,7 @@ import net.momirealms.craftengine.core.item.recipe.result.PostProcessor; import net.momirealms.craftengine.core.item.recipe.result.PostProcessors; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.context.Condition; -import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.condition.AllOfCondition; import net.momirealms.craftengine.core.plugin.context.event.EventConditions; import net.momirealms.craftengine.core.plugin.context.event.EventFunctions; @@ -31,17 +31,17 @@ public abstract class AbstractRecipeSerializer> implement new VanillaRecipeReader1_20(); @SuppressWarnings("unchecked") - protected Function[] functions(Map arguments) { + protected Function[] functions(Map arguments) { Object functions = ResourceConfigUtils.get(arguments, "functions", "function"); if (functions == null) return null; - List> functionList = ResourceConfigUtils.parseConfigAsList(functions, EventFunctions::fromMap); + List> functionList = ResourceConfigUtils.parseConfigAsList(functions, EventFunctions::fromMap); return functionList.toArray(new Function[0]); } - protected Condition conditions(Map arguments) { + protected Condition conditions(Map arguments) { Object conditions = ResourceConfigUtils.get(arguments, "conditions", "condition"); if (conditions == null) return null; - List> conditionList = ResourceConfigUtils.parseConfigAsList(conditions, EventConditions::fromMap); + List> conditionList = ResourceConfigUtils.parseConfigAsList(conditions, EventConditions::fromMap); if (conditionList.isEmpty()) return null; if (conditionList.size() == 1) return conditionList.getFirst(); return new AllOfCondition<>(conditionList); @@ -144,13 +144,25 @@ public abstract class AbstractRecipeSerializer> implement Set minecraftItemIds = new HashSet<>(); ItemManager itemManager = CraftEngine.instance().itemManager(); for (String item : items) { - if (item.charAt(0) == '#') itemIds.addAll(itemManager.itemIdsByTag(Key.of(item.substring(1)))); - else { + if (item.charAt(0) == '#') { + List uniqueKeys = itemManager.itemIdsByTag(Key.of(item.substring(1))); + itemIds.addAll(uniqueKeys); + for (UniqueKey uniqueKey : uniqueKeys) { + List ingredientSubstitutes = itemManager.getIngredientSubstitutes(uniqueKey.key()); + if (!ingredientSubstitutes.isEmpty()) { + itemIds.addAll(ingredientSubstitutes); + } + } + } else { Key itemId = Key.of(item); if (itemManager.getBuildableItem(itemId).isEmpty()) { throw new LocalizedResourceConfigException("warning.config.recipe.invalid_ingredient", item); } itemIds.add(UniqueKey.create(itemId)); + List ingredientSubstitutes = itemManager.getIngredientSubstitutes(itemId); + if (!ingredientSubstitutes.isEmpty()) { + itemIds.addAll(ingredientSubstitutes); + } } } boolean hasCustomItem = false; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/AbstractedFixedResultRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/AbstractedFixedResultRecipe.java index fa9d8a674..fa72950bc 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/AbstractedFixedResultRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/AbstractedFixedResultRecipe.java @@ -5,7 +5,7 @@ import net.momirealms.craftengine.core.item.recipe.input.RecipeInput; import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult; import net.momirealms.craftengine.core.util.Key; -public abstract class AbstractedFixedResultRecipe extends AbstractRecipe { +public abstract class AbstractedFixedResultRecipe extends AbstractRecipe implements FixedResultRecipe { protected CustomRecipeResult result; public AbstractedFixedResultRecipe(Key id, boolean showNotification, CustomRecipeResult result) { @@ -13,10 +13,7 @@ public abstract class AbstractedFixedResultRecipe extends AbstractRecipe { this.result = result; } - public T result(ItemBuildContext context) { - return this.result.buildItemStack(context); - } - + @Override public CustomRecipeResult result() { return this.result; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/ConditionalRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/ConditionalRecipe.java index fd0a8b649..c03fd240b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/ConditionalRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/ConditionalRecipe.java @@ -1,8 +1,10 @@ package net.momirealms.craftengine.core.item.recipe; -import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.Context; -public interface ConditionalRecipe { +public interface ConditionalRecipe extends Recipe { - boolean canUse(final PlayerOptionalContext context); + boolean canUse(final Context context); + + boolean hasCondition(); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomCraftingTableRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomCraftingTableRecipe.java index 13783dabc..01436f400 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomCraftingTableRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomCraftingTableRecipe.java @@ -1,20 +1,19 @@ package net.momirealms.craftengine.core.item.recipe; -import net.momirealms.craftengine.core.item.Item; -import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.recipe.input.RecipeInput; import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult; import net.momirealms.craftengine.core.plugin.context.Condition; -import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.function.Function; import net.momirealms.craftengine.core.util.Key; import org.jetbrains.annotations.Nullable; -public abstract class CustomCraftingTableRecipe extends AbstractGroupedRecipe implements ConditionalRecipe { +public abstract class CustomCraftingTableRecipe extends AbstractGroupedRecipe + implements ConditionalRecipe, VisualResultRecipe, FunctionalRecipe { protected final CraftingRecipeCategory category; private final CustomRecipeResult visualResult; - private final Function[] craftingFunctions; - private final Condition craftingCondition; + private final Function[] craftingFunctions; + private final Condition craftingCondition; + private final boolean alwaysRebuildResult; protected CustomCraftingTableRecipe(Key id, boolean showNotification, @@ -22,23 +21,34 @@ public abstract class CustomCraftingTableRecipe extends AbstractGroupedRecipe @Nullable CustomRecipeResult visualResult, String group, CraftingRecipeCategory category, - Function[] craftingFunctions, - Condition craftingCondition) { + Function[] craftingFunctions, + Condition craftingCondition, + boolean alwaysRebuildResult) { super(id, showNotification, result, group); this.category = category == null ? CraftingRecipeCategory.MISC : category; this.visualResult = visualResult; this.craftingFunctions = craftingFunctions; this.craftingCondition = craftingCondition; + this.alwaysRebuildResult = alwaysRebuildResult; + } + + public boolean alwaysRebuildOutput() { + return alwaysRebuildResult; } @Override - public boolean canUse(PlayerOptionalContext context) { + public boolean canUse(Context context) { if (this.craftingCondition == null) return true; return this.craftingCondition.test(context); } + @Override + public boolean hasCondition() { + return this.craftingCondition != null; + } + public CraftingRecipeCategory category() { - return category; + return this.category; } @Override @@ -46,31 +56,13 @@ public abstract class CustomCraftingTableRecipe extends AbstractGroupedRecipe return RecipeType.CRAFTING; } + @Override public CustomRecipeResult visualResult() { - return visualResult; + return this.visualResult; } - public boolean hasVisualResult() { - return visualResult != null; - } - - public T assembleVisual(RecipeInput input, ItemBuildContext context) { - if (this.visualResult != null) { - return this.visualResult.buildItemStack(context); - } else { - throw new IllegalStateException("No visual result available"); - } - } - - public Item buildVisualOrActualResult(ItemBuildContext context) { - if (this.visualResult != null) { - return this.visualResult.buildItem(context); - } else { - return super.result.buildItem(context); - } - } - - public Function[] craftingFunctions() { - return craftingFunctions; + @Override + public Function[] functions() { + return this.craftingFunctions; } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomShapedRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomShapedRecipe.java index 75613d5d8..603c80e54 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomShapedRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomShapedRecipe.java @@ -6,7 +6,7 @@ import net.momirealms.craftengine.core.item.recipe.input.CraftingInput; import net.momirealms.craftengine.core.item.recipe.input.RecipeInput; import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult; import net.momirealms.craftengine.core.plugin.context.Condition; -import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.function.Function; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.util.Key; @@ -28,9 +28,10 @@ public class CustomShapedRecipe extends CustomCraftingTableRecipe { String group, CraftingRecipeCategory category, Pattern pattern, - Function[] craftingFunctions, - Condition craftingCondition) { - super(id, showNotification, result, visualResult, group, category, craftingFunctions, craftingCondition); + Function[] craftingFunctions, + Condition craftingCondition, + boolean alwaysRebuildOutput) { + super(id, showNotification, result, visualResult, group, category, craftingFunctions, craftingCondition, alwaysRebuildOutput); this.pattern = pattern; this.parsedPattern = pattern.parse(); } @@ -64,29 +65,45 @@ public class CustomShapedRecipe extends CustomCraftingTableRecipe { public ParsedPattern parse() { String[] shrunk = shrink(pattern); return new ParsedPattern<>(shrunk[0].length(), shrunk.length, - toIngredientList( - shrunk, - ingredients - )); + toIngredientArray(shrunk, ingredients)); } } public static class ParsedPattern { private final int width; private final int height; - private final List>> ingredients; + private final Optional>[] ingredients; + private final Optional>[] mirroredIngredients; private final int ingredientCount; private final boolean symmetrical; - public ParsedPattern(int width, int height, List>> ingredients) { + @SuppressWarnings("unchecked") + public ParsedPattern(int width, int height, Optional>[] ingredients) { this.height = height; this.width = width; - this.ingredientCount = (int) ingredients.stream().flatMap(Optional::stream).count(); this.symmetrical = isSymmetrical(width, height, ingredients); this.ingredients = ingredients; + if (this.symmetrical) { + this.mirroredIngredients = ingredients; + } else { + this.mirroredIngredients = new Optional[ingredients.length]; + for (int i = 0; i < this.height; i++) { + for (int j = 0; j < this.width; j++) { + Optional> ingredient = this.ingredients[j + i * this.width]; + this.mirroredIngredients[this.width - j - 1 + i * this.width] = ingredient; + } + } + } + int count = 0; + for (Optional> ingredient : this.ingredients) { + if (ingredient.isPresent()) { + count++; + } + } + this.ingredientCount = count; } - public List>> ingredients() { + public Optional>[] ingredients() { return ingredients; } @@ -99,8 +116,8 @@ public class CustomShapedRecipe extends CustomCraftingTableRecipe { } public boolean matches(CraftingInput input) { - if (input.ingredientCount() == this.ingredientCount) { - if (input.width() == this.width && input.height() == this.height) { + if (input.ingredientCount == this.ingredientCount) { + if (input.width == this.width && input.height == this.height) { if (!this.symmetrical && this.matches(input, true)) { return true; } @@ -111,15 +128,18 @@ public class CustomShapedRecipe extends CustomCraftingTableRecipe { } private boolean matches(CraftingInput input, boolean mirrored) { - for (int i = 0; i < this.height; i++) { - for (int j = 0; j < this.width; j++) { - Optional> optional; - if (mirrored) { - optional = this.ingredients.get(this.width - j - 1 + i * this.width); - } else { - optional = this.ingredients.get(j + i * this.width); + if (mirrored) { + for (int i = 0, size = input.size(); i < size; i++) { + Optional> optional = this.mirroredIngredients[i]; + UniqueIdItem itemStack = input.getItem(i); + if (!Ingredient.isInstance(optional, itemStack)) { + return false; } - UniqueIdItem itemStack = input.getItem(j, i); + } + } else { + for (int i = 0, size = input.size(); i < size; i++) { + Optional> optional = this.ingredients[i]; + UniqueIdItem itemStack = input.getItem(i); if (!Ingredient.isInstance(optional, itemStack)) { return false; } @@ -128,14 +148,14 @@ public class CustomShapedRecipe extends CustomCraftingTableRecipe { return true; } - private static boolean isSymmetrical(int width, int height, List list) { + private static boolean isSymmetrical(int width, int height, T[] list) { if (width != 1) { int i = width / 2; for (int j = 0; j < height; j++) { for (int k = 0; k < i; k++) { int l = width - 1 - k; - T o1 = list.get(k + j * width); - T o2 = list.get(l + j * width); + T o1 = list[k + j * width]; + T o2 = list[l + j * width]; if (!o1.equals(o2)) { return false; } @@ -176,7 +196,8 @@ public class CustomShapedRecipe extends CustomCraftingTableRecipe { arguments.containsKey("group") ? arguments.get("group").toString() : null, craftingRecipeCategory(arguments), new Pattern<>(pattern.toArray(new String[0]), ingredients), functions(arguments), - conditions(arguments) + conditions(arguments), + ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("always-rebuild-result", true), "always-rebuild-result") ); } @@ -191,7 +212,8 @@ public class CustomShapedRecipe extends CustomCraftingTableRecipe { VANILLA_RECIPE_HELPER.craftingCategory(json), new Pattern<>(VANILLA_RECIPE_HELPER.craftingShapedPattern(json), ingredients), null, - null + null, + false ); } @@ -210,7 +232,8 @@ public class CustomShapedRecipe extends CustomCraftingTableRecipe { } } - public static List>> toIngredientList(String[] pattern, Map> ingredients) { + @SuppressWarnings("unchecked") + public static Optional>[] toIngredientArray(String[] pattern, Map> ingredients) { List>> result = new ArrayList<>(); String[] shrunkPattern = shrink(pattern); for (String pa : shrunkPattern) { @@ -227,7 +250,7 @@ public class CustomShapedRecipe extends CustomCraftingTableRecipe { } } } - return result; + return result.toArray(new Optional[0]); } public static String[] shrink(String[] patterns) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomShapelessRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomShapelessRecipe.java index a60c241a4..860d66187 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomShapelessRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomShapelessRecipe.java @@ -5,10 +5,11 @@ import net.momirealms.craftengine.core.item.recipe.input.CraftingInput; import net.momirealms.craftengine.core.item.recipe.input.RecipeInput; import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult; import net.momirealms.craftengine.core.plugin.context.Condition; -import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.function.Function; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; +import net.momirealms.craftengine.core.util.ResourceConfigUtils; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -27,9 +28,10 @@ public class CustomShapelessRecipe extends CustomCraftingTableRecipe { String group, CraftingRecipeCategory category, List> ingredients, - Function[] craftingFunctions, - Condition craftingCondition) { - super(id, showNotification, result, visualResult, group, category, craftingFunctions, craftingCondition); + Function[] craftingFunctions, + Condition craftingCondition, + boolean alwaysRebuildOutput) { + super(id, showNotification, result, visualResult, group, category, craftingFunctions, craftingCondition, alwaysRebuildOutput); this.ingredients = ingredients; this.placementInfo = PlacementInfo.create(ingredients); } @@ -95,7 +97,8 @@ public class CustomShapelessRecipe extends CustomCraftingTableRecipe { arguments.containsKey("group") ? arguments.get("group").toString() : null, craftingRecipeCategory(arguments), ingredients, functions(arguments), - conditions(arguments) + conditions(arguments), + ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("always-rebuild-result", true), "always-rebuild-result") ); } @@ -108,7 +111,8 @@ public class CustomShapelessRecipe extends CustomCraftingTableRecipe { VANILLA_RECIPE_HELPER.readGroup(json), VANILLA_RECIPE_HELPER.craftingCategory(json), VANILLA_RECIPE_HELPER.shapelessIngredients(json.getAsJsonArray("ingredients")).stream().map(this::toIngredient).toList(), null, - null + null, + false ); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTransformRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTransformRecipe.java index 852b8ff8e..42aca19c0 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTransformRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTransformRecipe.java @@ -8,7 +8,8 @@ import net.momirealms.craftengine.core.item.recipe.input.SmithingInput; import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.context.Condition; -import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.Context; +import net.momirealms.craftengine.core.plugin.context.function.Function; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.registry.BuiltInRegistries; import net.momirealms.craftengine.core.registry.Registries; @@ -22,14 +23,17 @@ import java.util.List; import java.util.Map; import java.util.Objects; -public class CustomSmithingTransformRecipe extends AbstractedFixedResultRecipe implements ConditionalRecipe { +public class CustomSmithingTransformRecipe extends AbstractedFixedResultRecipe + implements ConditionalRecipe, VisualResultRecipe, FunctionalRecipe { public static final Serializer SERIALIZER = new Serializer<>(); private final Ingredient base; private final Ingredient template; private final Ingredient addition; private final boolean mergeComponents; private final List processors; - private final Condition condition; + private final Condition condition; + private final Function[] smithingFunctions; + private final CustomRecipeResult visualResult; public CustomSmithingTransformRecipe(Key id, boolean showNotification, @@ -37,9 +41,11 @@ public class CustomSmithingTransformRecipe extends AbstractedFixedResultRecip @NotNull Ingredient base, @Nullable Ingredient addition, CustomRecipeResult result, + @Nullable CustomRecipeResult visualResult, List processors, boolean mergeComponents, - Condition condition + Function[] smithingFunctions, + Condition condition ) { super(id, showNotification, result); this.base = base; @@ -48,14 +54,31 @@ public class CustomSmithingTransformRecipe extends AbstractedFixedResultRecip this.processors = processors; this.mergeComponents = mergeComponents; this.condition = condition; + this.smithingFunctions = smithingFunctions; + this.visualResult = visualResult; } @Override - public boolean canUse(PlayerOptionalContext context) { + public Function[] functions() { + return this.smithingFunctions; + } + + @Override + public CustomRecipeResult visualResult() { + return this.visualResult; + } + + @Override + public boolean canUse(Context context) { if (this.condition != null) return this.condition.test(context); return true; } + @Override + public boolean hasCondition() { + return this.condition != null; + } + @SuppressWarnings("unchecked") @Override public boolean matches(RecipeInput input) { @@ -99,12 +122,26 @@ public class CustomSmithingTransformRecipe extends AbstractedFixedResultRecip return RecipeType.SMITHING; } + @SuppressWarnings("unchecked") + @Override + public T assembleVisual(RecipeInput input, ItemBuildContext context) { + SmithingInput smithingInput = ((SmithingInput) input); + Item base = smithingInput.base().item(); + T result = this.visualResult().buildItemStack(context); + return createSmithingResult(base, result); + } + @SuppressWarnings("unchecked") @Override public T assemble(RecipeInput input, ItemBuildContext context) { SmithingInput smithingInput = ((SmithingInput) input); Item base = smithingInput.base().item(); T result = this.result(context); + return createSmithingResult(base, result); + } + + @SuppressWarnings("unchecked") + private T createSmithingResult(Item base, T result) { Item wrappedResult = (Item) CraftEngine.instance().itemManager().wrap(result); Item finalResult = wrappedResult; if (this.mergeComponents) { @@ -150,9 +187,10 @@ public class CustomSmithingTransformRecipe extends AbstractedFixedResultRecip ResourceConfigUtils.requireNonNullOrThrow(toIngredient(base), "warning.config.recipe.smithing_transform.missing_base"), toIngredient(addition), parseResult(arguments), + parseVisualResult(arguments), ItemDataProcessors.fromMapList(processors), mergeComponents, - conditions(arguments) + functions(arguments), conditions(arguments) ); } @@ -166,8 +204,9 @@ public class CustomSmithingTransformRecipe extends AbstractedFixedResultRecip toIngredient(VANILLA_RECIPE_HELPER.singleIngredient(json.get("addition"))), parseResult(VANILLA_RECIPE_HELPER.smithingResult(json.getAsJsonObject("result"))), null, + null, true, - null + null, null ); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTrimRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTrimRecipe.java index 020a5d460..7119a5f48 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTrimRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTrimRecipe.java @@ -7,7 +7,8 @@ import net.momirealms.craftengine.core.item.recipe.input.RecipeInput; import net.momirealms.craftengine.core.item.recipe.input.SmithingInput; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.context.Condition; -import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.Context; +import net.momirealms.craftengine.core.plugin.context.function.Function; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; @@ -20,7 +21,8 @@ import java.util.List; import java.util.Map; import java.util.Objects; -public class CustomSmithingTrimRecipe extends AbstractRecipe implements ConditionalRecipe { +public class CustomSmithingTrimRecipe extends AbstractRecipe + implements ConditionalRecipe, FunctionalRecipe { public static final Serializer SERIALIZER = new Serializer<>(); private final Ingredient base; private final Ingredient template; @@ -28,7 +30,8 @@ public class CustomSmithingTrimRecipe extends AbstractRecipe implements Co @Nullable // 1.21.5 private final Key pattern; @Nullable - private final Condition condition; + private final Condition condition; + private final Function[] smithingFunctions; public CustomSmithingTrimRecipe(@NotNull Key id, boolean showNotification, @@ -36,7 +39,8 @@ public class CustomSmithingTrimRecipe extends AbstractRecipe implements Co @NotNull Ingredient base, @NotNull Ingredient addition, @Nullable Key pattern, - @Nullable Condition condition + Function[] smithingFunctions, + @Nullable Condition condition ) { super(id, showNotification); this.base = base; @@ -44,17 +48,28 @@ public class CustomSmithingTrimRecipe extends AbstractRecipe implements Co this.addition = addition; this.pattern = pattern; this.condition = condition; + this.smithingFunctions = smithingFunctions; if (pattern == null && VersionHelper.isOrAbove1_21_5()) { throw new IllegalStateException("SmithingTrimRecipe cannot have a null pattern on 1.21.5 and above."); } } @Override - public boolean canUse(PlayerOptionalContext context) { + public Function[] functions() { + return this.smithingFunctions; + } + + @Override + public boolean canUse(Context context) { if (this.condition != null) return this.condition.test(context); return true; } + @Override + public boolean hasCondition() { + return this.condition != null; + } + @SuppressWarnings("unchecked") @Override public T assemble(RecipeInput input, ItemBuildContext context) { @@ -135,6 +150,7 @@ public class CustomSmithingTrimRecipe extends AbstractRecipe implements Co ResourceConfigUtils.requireNonNullOrThrow(toIngredient(base), "warning.config.recipe.smithing_trim.missing_base"), ResourceConfigUtils.requireNonNullOrThrow(toIngredient(addition), "warning.config.recipe.smithing_trim.missing_addition"), pattern, + functions(arguments), conditions(arguments) ); } @@ -147,6 +163,7 @@ public class CustomSmithingTrimRecipe extends AbstractRecipe implements Co Objects.requireNonNull(toIngredient(VANILLA_RECIPE_HELPER.singleIngredient(json.get("base")))), Objects.requireNonNull(toIngredient(VANILLA_RECIPE_HELPER.singleIngredient(json.get("addition")))), VersionHelper.isOrAbove1_21_5() ? Key.of(json.get("pattern").getAsString()) : null, + null, null ); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/FixedResultRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/FixedResultRecipe.java new file mode 100644 index 000000000..6bfec4abc --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/FixedResultRecipe.java @@ -0,0 +1,13 @@ +package net.momirealms.craftengine.core.item.recipe; + +import net.momirealms.craftengine.core.item.ItemBuildContext; +import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult; + +public interface FixedResultRecipe extends Recipe { + + CustomRecipeResult result(); + + default T result(ItemBuildContext context) { + return this.result().buildItemStack(context); + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/FunctionalRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/FunctionalRecipe.java new file mode 100644 index 000000000..995604175 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/FunctionalRecipe.java @@ -0,0 +1,14 @@ +package net.momirealms.craftengine.core.item.recipe; + +import net.momirealms.craftengine.core.plugin.context.Context; +import net.momirealms.craftengine.core.plugin.context.function.Function; + +public interface FunctionalRecipe extends Recipe { + + default boolean hasFunctions() { + Function[] functions = functions(); + return functions != null && functions.length > 0; + } + + Function[] functions(); +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/InvalidRecipeIngredientException.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/InvalidRecipeIngredientException.java deleted file mode 100644 index 36ed4d887..000000000 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/InvalidRecipeIngredientException.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.momirealms.craftengine.core.item.recipe; - -public class InvalidRecipeIngredientException extends RuntimeException { - private final String ingredient; - - public InvalidRecipeIngredientException(String ingredient) { - this.ingredient = ingredient; - } - - public String ingredient() { - return ingredient; - } -} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/StackedContents.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/StackedContents.java index 15442f74c..600cb0491 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/StackedContents.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/StackedContents.java @@ -152,7 +152,7 @@ public class StackedContents { public boolean tryPick(int quantity) { int assignedIngredientsCount = 0; - while (true) { + for (;;) { IntList assignmentPath = this.tryAssigningNewItem(quantity); if (assignmentPath == null) { boolean allIngredientsTried = assignedIngredientsCount == this.ingredientCount; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/VisualResultRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/VisualResultRecipe.java new file mode 100644 index 000000000..3064b5ab3 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/VisualResultRecipe.java @@ -0,0 +1,32 @@ +package net.momirealms.craftengine.core.item.recipe; + +import net.momirealms.craftengine.core.item.Item; +import net.momirealms.craftengine.core.item.ItemBuildContext; +import net.momirealms.craftengine.core.item.recipe.input.RecipeInput; +import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult; + +public interface VisualResultRecipe extends FixedResultRecipe { + + CustomRecipeResult visualResult(); + + default boolean hasVisualResult() { + return visualResult() != null; + } + + default T assembleVisual(RecipeInput input, ItemBuildContext context) { + CustomRecipeResult result = visualResult(); + if (result != null) { + return result.buildItemStack(context); + } + return null; + } + + default Item buildVisualOrActualResult(ItemBuildContext context) { + CustomRecipeResult visualResult = visualResult(); + if (visualResult != null) { + return visualResult.buildItem(context); + } else { + return this.result().buildItem(context); + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/input/CraftingInput.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/input/CraftingInput.java index c08a45f86..73f027ae0 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/input/CraftingInput.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/input/CraftingInput.java @@ -10,11 +10,11 @@ import java.util.Iterator; import java.util.List; public final class CraftingInput implements RecipeInput, Iterable> { - private final int width; - private final int height; - private final List> items; - private final int ingredientCount; - private final RecipeFinder finder = new RecipeFinder(); + public final int width; + public final int height; + public final List> items; + public final int ingredientCount; + public final RecipeFinder finder = new RecipeFinder(); private CraftingInput(int width, int height, List> items) { this.height = height; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyCookingRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyCookingRecipe.java index ad7f11891..55065e0f9 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyCookingRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyCookingRecipe.java @@ -1,26 +1,26 @@ package net.momirealms.craftengine.core.item.recipe.network.legacy; -import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.recipe.CookingRecipeCategory; -import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import org.jetbrains.annotations.ApiStatus; +import java.util.function.Function; + @ApiStatus.Obsolete -public class LegacyCookingRecipe implements LegacyRecipe { - private Item result; +public class LegacyCookingRecipe implements LegacyRecipe { + private Item result; private final CookingRecipeCategory category; private final String group; - private final LegacyIngredient ingredient; + private final LegacyIngredient ingredient; private final float experience; private final int cookingTime; - public LegacyCookingRecipe(LegacyIngredient ingredient, + public LegacyCookingRecipe(LegacyIngredient ingredient, CookingRecipeCategory category, float experience, int cookingTime, - Item result, + Item result, String group) { this.ingredient = ingredient; this.category = category; @@ -31,27 +31,28 @@ public class LegacyCookingRecipe implements LegacyRecipe { } @Override - public void applyClientboundData(Player player) { - this.result = CraftEngine.instance().itemManager().s2c(this.result, player); - this.ingredient.applyClientboundData(player); + public void applyClientboundData(Function, Item> function) { + this.result = function.apply(this.result); + this.ingredient.applyClientboundData(function); } - public static LegacyCookingRecipe read(FriendlyByteBuf buf) { + @SuppressWarnings({"unchecked", "rawtypes"}) + public static LegacyCookingRecipe read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { String group = buf.readUtf(); CookingRecipeCategory category = CookingRecipeCategory.byId(buf.readVarInt()); - LegacyIngredient ingredient = LegacyIngredient.read(buf); - Item result = CraftEngine.instance().itemManager().decode(buf); + LegacyIngredient ingredient = LegacyIngredient.read(buf, reader); + Item result = reader.apply(buf); float experience = buf.readFloat(); int cookingTime = buf.readVarInt(); return new LegacyCookingRecipe(ingredient, category, experience, cookingTime, result, group); } @Override - public void write(FriendlyByteBuf buf) { + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { buf.writeUtf(this.group); buf.writeVarInt(this.category.ordinal()); - this.ingredient.write(buf); - CraftEngine.instance().itemManager().encode(buf, this.result); + this.ingredient.write(buf, writer); + writer.accept(buf, this.result); buf.writeFloat(this.experience); buf.writeVarInt(this.cookingTime); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyCustomRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyCustomRecipe.java index cba9a2038..024aaf225 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyCustomRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyCustomRecipe.java @@ -1,24 +1,26 @@ package net.momirealms.craftengine.core.item.recipe.network.legacy; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.recipe.CraftingRecipeCategory; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import org.jetbrains.annotations.ApiStatus; @ApiStatus.Obsolete -public class LegacyCustomRecipe implements LegacyRecipe { +public class LegacyCustomRecipe implements LegacyRecipe { private final CraftingRecipeCategory category; public LegacyCustomRecipe(CraftingRecipeCategory category) { this.category = category; } - public static LegacyCustomRecipe read(FriendlyByteBuf buf) { + @SuppressWarnings({"unchecked", "rawtypes"}) + public static LegacyCustomRecipe read(FriendlyByteBuf buf, FriendlyByteBuf.Reader reader) { CraftingRecipeCategory category = CraftingRecipeCategory.byId(buf.readVarInt()); return new LegacyCustomRecipe(category); } @Override - public void write(FriendlyByteBuf buf) { + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { buf.writeVarInt(this.category.ordinal()); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyIngredient.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyIngredient.java index 2d4871aa1..d55633661 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyIngredient.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyIngredient.java @@ -1,39 +1,37 @@ package net.momirealms.craftengine.core.item.recipe.network.legacy; -import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.item.Item; -import net.momirealms.craftengine.core.item.ItemManager; -import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import org.jetbrains.annotations.ApiStatus; -@ApiStatus.Obsolete -public class LegacyIngredient { - private final Item[] items; +import java.util.function.Function; - public LegacyIngredient(Item[] items) { +@ApiStatus.Obsolete +public class LegacyIngredient { + private final Item[] items; + + public LegacyIngredient(Item[] items) { this.items = items; } - public Item[] items() { + public Item[] items() { return items; } - public void write(FriendlyByteBuf buf) { - buf.writeArray(this.items, (byteBuf, item) -> CraftEngine.instance().itemManager().encode(byteBuf, item)); + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { + buf.writeArray(this.items, writer); } - @SuppressWarnings("unchecked") - public static LegacyIngredient read(FriendlyByteBuf buf) { - Item[] items = buf.readArray(byteBuf -> CraftEngine.instance().itemManager().decode(byteBuf), Item.class); + @SuppressWarnings({"unchecked", "rawtypes"}) + public static LegacyIngredient read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { + Item[] items = buf.readArray((FriendlyByteBuf.Reader) reader, Item.class); return new LegacyIngredient(items); } - public void applyClientboundData(Player player) { - ItemManager manager = CraftEngine.instance().itemManager(); + public void applyClientboundData(Function, Item> function) { for (int i = 0; i < this.items.length; i++) { - Item item = this.items[i]; - this.items[i] = manager.s2c(item, player); + Item item = this.items[i]; + this.items[i] = function.apply(item); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyRecipe.java index 4e41151da..51200eb1d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyRecipe.java @@ -1,22 +1,23 @@ package net.momirealms.craftengine.core.item.recipe.network.legacy; -import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import org.jetbrains.annotations.ApiStatus; +import java.util.function.BiFunction; import java.util.function.Function; @ApiStatus.Obsolete -public interface LegacyRecipe { +public interface LegacyRecipe { - default void applyClientboundData(Player player) {} + default void applyClientboundData(Function, Item> function) {} - void write(FriendlyByteBuf buf); + void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer); - record Type(Function reader) { + record Type(BiFunction, LegacyRecipe> reader) { - public LegacyRecipe read(FriendlyByteBuf buf) { - return this.reader.apply(buf); + public LegacyRecipe read(FriendlyByteBuf buf, FriendlyByteBuf.Reader reader) { + return this.reader.apply(buf, reader); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyRecipeHolder.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyRecipeHolder.java index ca9d7e17e..b2ac4908a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyRecipeHolder.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyRecipeHolder.java @@ -1,53 +1,56 @@ package net.momirealms.craftengine.core.item.recipe.network.legacy; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.registry.BuiltInRegistries; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.VersionHelper; -public interface LegacyRecipeHolder { +public interface LegacyRecipeHolder { - void write(FriendlyByteBuf buf); + void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer); - LegacyRecipe recipe(); + LegacyRecipe recipe(); - static LegacyRecipeHolder read(FriendlyByteBuf buf) { + static LegacyRecipeHolder read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { if (VersionHelper.isOrAbove1_20_5()) { - return ModernRecipeHolderImpl.read(buf); + return ModernRecipeHolderImpl.read(buf, reader); } else { - return LegacyRecipeHolderImpl.read(buf); + return LegacyRecipeHolderImpl.read(buf, reader); } } - record LegacyRecipeHolderImpl(Key id, Key type, LegacyRecipe recipe) implements LegacyRecipeHolder { + record LegacyRecipeHolderImpl(Key id, Key type, LegacyRecipe recipe) implements LegacyRecipeHolder { @Override - public void write(FriendlyByteBuf buf) { + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { buf.writeKey(this.type); buf.writeKey(this.id); - this.recipe.write(buf); + this.recipe.write(buf, writer); } - public static LegacyRecipeHolder read(FriendlyByteBuf buf) { + @SuppressWarnings({"unchecked", "rawtypes"}) + public static LegacyRecipeHolder read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { Key type = buf.readKey(); Key id = buf.readKey(); - return new LegacyRecipeHolderImpl(id, type, BuiltInRegistries.LEGACY_RECIPE_TYPE.getValue(type).read(buf)); + return new LegacyRecipeHolderImpl(id, type, BuiltInRegistries.LEGACY_RECIPE_TYPE.getValue(type).read(buf, (FriendlyByteBuf.Reader) reader)); } } - record ModernRecipeHolderImpl(Key id, int type, LegacyRecipe recipe) implements LegacyRecipeHolder { + record ModernRecipeHolderImpl(Key id, int type, LegacyRecipe recipe) implements LegacyRecipeHolder { @Override - public void write(FriendlyByteBuf buf) { + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { buf.writeKey(this.id); buf.writeVarInt(this.type); - this.recipe.write(buf); + this.recipe.write(buf, writer); } - public static LegacyRecipeHolder read(FriendlyByteBuf buf) { + @SuppressWarnings({"unchecked", "rawtypes"}) + public static LegacyRecipeHolder read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { Key id = buf.readKey(); int type = buf.readVarInt(); - return new ModernRecipeHolderImpl(id, type, BuiltInRegistries.LEGACY_RECIPE_TYPE.getValue(type).read(buf)); + return new ModernRecipeHolderImpl(id, type, BuiltInRegistries.LEGACY_RECIPE_TYPE.getValue(type).read(buf, (FriendlyByteBuf.Reader) reader)); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyRecipeTypes.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyRecipeTypes.java index 89ef272af..bc1a3587f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyRecipeTypes.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyRecipeTypes.java @@ -1,13 +1,18 @@ package net.momirealms.craftengine.core.item.recipe.network.legacy; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.registry.BuiltInRegistries; import net.momirealms.craftengine.core.registry.Registries; import net.momirealms.craftengine.core.registry.WritableRegistry; +import net.momirealms.craftengine.core.util.FriendlyByteBuf; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceKey; import org.jetbrains.annotations.ApiStatus; +import java.util.function.BiFunction; + @ApiStatus.Obsolete +@SuppressWarnings({"unchecked", "rawtypes"}) public final class LegacyRecipeTypes { private LegacyRecipeTypes() {} @@ -39,33 +44,38 @@ public final class LegacyRecipeTypes { } static { - register(SHAPED_RECIPE, new LegacyRecipe.Type(LegacyShapedRecipe::read)); - register(SHAPELESS_RECIPE, new LegacyRecipe.Type(LegacyShapelessRecipe::read)); - register(ARMOR_DYE, new LegacyRecipe.Type(LegacyCustomRecipe::read)); - register(BOOK_CLONING, new LegacyRecipe.Type(LegacyCustomRecipe::read)); - register(MAP_CLONING, new LegacyRecipe.Type(LegacyCustomRecipe::read)); - register(MAP_EXTENDING, new LegacyRecipe.Type(LegacyCustomRecipe::read)); - register(FIREWORK_ROCKET, new LegacyRecipe.Type(LegacyCustomRecipe::read)); - register(FIREWORK_STAR, new LegacyRecipe.Type(LegacyCustomRecipe::read)); - register(FIREWORK_STAR_FADE, new LegacyRecipe.Type(LegacyCustomRecipe::read)); - register(TIPPED_ARROW, new LegacyRecipe.Type(LegacyCustomRecipe::read)); - register(BANNER_DUPLICATE, new LegacyRecipe.Type(LegacyCustomRecipe::read)); - register(SHIELD_DECORATION, new LegacyRecipe.Type(LegacyCustomRecipe::read)); - register(SHULKER_BOX_COLORING, new LegacyRecipe.Type(LegacyCustomRecipe::read)); - register(SUSPICIOUS_STEW, new LegacyRecipe.Type(LegacyCustomRecipe::read)); - register(REPAIR_ITEM, new LegacyRecipe.Type(LegacyCustomRecipe::read)); - register(SMELTING_RECIPE, new LegacyRecipe.Type(LegacyCookingRecipe::read)); - register(BLASTING_RECIPE, new LegacyRecipe.Type(LegacyCookingRecipe::read)); - register(SMOKING_RECIPE, new LegacyRecipe.Type(LegacyCookingRecipe::read)); - register(CAMPFIRE_COOKING_RECIPE, new LegacyRecipe.Type(LegacyCookingRecipe::read)); - register(STONECUTTER, new LegacyRecipe.Type(LegacyStoneCuttingRecipe::read)); - register(SMITHING_TRANSFORM, new LegacyRecipe.Type(LegacySmithingTransformRecipe::read)); - register(SMITHING_TRIM, new LegacyRecipe.Type(LegacySmithingTrimRecipe::read)); - register(DECORATED_POT_RECIPE, new LegacyRecipe.Type(LegacyCustomRecipe::read)); + register(SHAPED_RECIPE, new LegacyRecipe.Type(createReaderFunction(LegacyShapedRecipe::read))); + register(SHAPELESS_RECIPE, new LegacyRecipe.Type(createReaderFunction(LegacyShapelessRecipe::read))); + register(ARMOR_DYE, new LegacyRecipe.Type(createReaderFunction(LegacyCustomRecipe::read))); + register(BOOK_CLONING, new LegacyRecipe.Type(createReaderFunction(LegacyCustomRecipe::read))); + register(MAP_CLONING, new LegacyRecipe.Type(createReaderFunction(LegacyCustomRecipe::read))); + register(MAP_EXTENDING, new LegacyRecipe.Type(createReaderFunction(LegacyCustomRecipe::read))); + register(FIREWORK_ROCKET, new LegacyRecipe.Type(createReaderFunction(LegacyCustomRecipe::read))); + register(FIREWORK_STAR, new LegacyRecipe.Type(createReaderFunction(LegacyCustomRecipe::read))); + register(FIREWORK_STAR_FADE, new LegacyRecipe.Type(createReaderFunction(LegacyCustomRecipe::read))); + register(TIPPED_ARROW, new LegacyRecipe.Type(createReaderFunction(LegacyCustomRecipe::read))); + register(BANNER_DUPLICATE, new LegacyRecipe.Type(createReaderFunction(LegacyCustomRecipe::read))); + register(SHIELD_DECORATION, new LegacyRecipe.Type(createReaderFunction(LegacyCustomRecipe::read))); + register(SHULKER_BOX_COLORING, new LegacyRecipe.Type(createReaderFunction(LegacyCustomRecipe::read))); + register(SUSPICIOUS_STEW, new LegacyRecipe.Type(createReaderFunction(LegacyCustomRecipe::read))); + register(REPAIR_ITEM, new LegacyRecipe.Type(createReaderFunction(LegacyCustomRecipe::read))); + register(SMELTING_RECIPE, new LegacyRecipe.Type(createReaderFunction(LegacyCookingRecipe::read))); + register(BLASTING_RECIPE, new LegacyRecipe.Type(createReaderFunction(LegacyCookingRecipe::read))); + register(SMOKING_RECIPE, new LegacyRecipe.Type(createReaderFunction(LegacyCookingRecipe::read))); + register(CAMPFIRE_COOKING_RECIPE, new LegacyRecipe.Type(createReaderFunction(LegacyCookingRecipe::read))); + register(STONECUTTER, new LegacyRecipe.Type(createReaderFunction(LegacyStoneCuttingRecipe::read))); + register(SMITHING_TRANSFORM, new LegacyRecipe.Type(createReaderFunction(LegacySmithingTransformRecipe::read))); + register(SMITHING_TRIM, new LegacyRecipe.Type(createReaderFunction(LegacySmithingTrimRecipe::read))); + register(DECORATED_POT_RECIPE, new LegacyRecipe.Type(createReaderFunction(LegacyCustomRecipe::read))); + } + + private static BiFunction>, LegacyRecipe> createReaderFunction( + BiFunction function) { + return (BiFunction) function; } - public static void register(Key key, LegacyRecipe.Type type) { - ((WritableRegistry) BuiltInRegistries.LEGACY_RECIPE_TYPE) + public static void register(Key key, LegacyRecipe.Type type) { + ((WritableRegistry>) BuiltInRegistries.LEGACY_RECIPE_TYPE) .register(ResourceKey.create(Registries.LEGACY_RECIPE_TYPE.location(), key), type); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyShapedRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyShapedRecipe.java index b83159779..c4c753951 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyShapedRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyShapedRecipe.java @@ -1,31 +1,29 @@ package net.momirealms.craftengine.core.item.recipe.network.legacy; -import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.recipe.CraftingRecipeCategory; -import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import net.momirealms.craftengine.core.util.VersionHelper; import org.jetbrains.annotations.ApiStatus; import java.util.ArrayList; import java.util.List; -import java.util.function.BiConsumer; import java.util.function.Function; @ApiStatus.Obsolete -public class LegacyShapedRecipe implements LegacyRecipe { +@SuppressWarnings({"unchecked", "rawtypes", "DuplicatedCode"}) +public class LegacyShapedRecipe implements LegacyRecipe { private final int width; private final int height; - private final List ingredients; - private Item result; + private final List> ingredients; + private Item result; private final String group; private final CraftingRecipeCategory category; private final boolean showNotification; public LegacyShapedRecipe(int width, int height, - List ingredients, - Item result, + List> ingredients, + Item result, String group, CraftingRecipeCategory category, boolean showNotification) { @@ -38,74 +36,61 @@ public class LegacyShapedRecipe implements LegacyRecipe { this.showNotification = showNotification; } - private static final Function READER = VersionHelper.isOrAbove1_20_3() ? - (buf) -> { - String group = buf.readUtf(); - int category = buf.readVarInt(); - int width = buf.readVarInt(); - int height = buf.readVarInt(); - int size = width * height; - List ingredients = new ArrayList<>(size); - for (int i = 0; i < size; i++) { - ingredients.add(LegacyIngredient.read(buf)); - } - Item result = CraftEngine.instance().itemManager().decode(buf); - boolean flag = buf.readBoolean(); - return new LegacyShapedRecipe(width, height, ingredients, result, group, CraftingRecipeCategory.byId(category), flag); - } : - (buf) -> { - int width = buf.readVarInt(); - int height = buf.readVarInt(); - String group = buf.readUtf(); - int category = buf.readVarInt(); - int size = width * height; - List ingredients = new ArrayList<>(size); - for (int i = 0; i < size; i++) { - ingredients.add(LegacyIngredient.read(buf)); - } - Item result = CraftEngine.instance().itemManager().decode(buf); - boolean flag = buf.readBoolean(); - return new LegacyShapedRecipe(width, height, ingredients, result, group, CraftingRecipeCategory.byId(category), flag); - }; - - private static final BiConsumer WRITER = VersionHelper.isOrAbove1_20_3() ? - (recipe, buf) -> { - buf.writeUtf(recipe.group); - buf.writeVarInt(recipe.category.ordinal()); - buf.writeVarInt(recipe.width); - buf.writeVarInt(recipe.height); - for (LegacyIngredient ingredient : recipe.ingredients) { - ingredient.write(buf); - } - CraftEngine.instance().itemManager().encode(buf, recipe.result); - buf.writeBoolean(recipe.showNotification); - } : - (recipe, buf) -> { - buf.writeVarInt(recipe.width); - buf.writeVarInt(recipe.height); - buf.writeUtf(recipe.group); - buf.writeVarInt(recipe.category.ordinal()); - for (LegacyIngredient ingredient : recipe.ingredients) { - ingredient.write(buf); - } - CraftEngine.instance().itemManager().encode(buf, recipe.result); - buf.writeBoolean(recipe.showNotification); - }; - @Override - public void applyClientboundData(Player player) { - this.result = CraftEngine.instance().itemManager().s2c(this.result, player); + public void applyClientboundData(Function, Item> function) { + this.result = function.apply(this.result); for (LegacyIngredient ingredient : this.ingredients) { - ingredient.applyClientboundData(player); + ingredient.applyClientboundData(function); } } - public static LegacyShapedRecipe read(FriendlyByteBuf buf) { - return READER.apply(buf); + public static LegacyShapedRecipe read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { + if (VersionHelper.isOrAbove1_20_3()) { + String group = buf.readUtf(); + int category = buf.readVarInt(); + int width = buf.readVarInt(); + int height = buf.readVarInt(); + int size = width * height; + List> ingredients = new ArrayList<>(size); + for (int i = 0; i < size; i++) { + ingredients.add(LegacyIngredient.read(buf, reader)); + } + Item result = reader.apply(buf); + boolean flag = buf.readBoolean(); + return new LegacyShapedRecipe(width, height, ingredients, result, group, CraftingRecipeCategory.byId(category), flag); + } else { + int width = buf.readVarInt(); + int height = buf.readVarInt(); + String group = buf.readUtf(); + int category = buf.readVarInt(); + int size = width * height; + List> ingredients = new ArrayList<>(size); + for (int i = 0; i < size; i++) { + ingredients.add(LegacyIngredient.read(buf, reader)); + } + Item result = reader.apply(buf); + boolean flag = buf.readBoolean(); + return new LegacyShapedRecipe(width, height, ingredients, result, group, CraftingRecipeCategory.byId(category), flag); + } } @Override - public void write(FriendlyByteBuf buf) { - WRITER.accept(this, buf); + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { + if (VersionHelper.isOrAbove1_20_3()) { + buf.writeUtf(this.group); + buf.writeVarInt(this.category.ordinal()); + buf.writeVarInt(this.width); + buf.writeVarInt(this.height); + } else { + buf.writeVarInt(this.width); + buf.writeVarInt(this.height); + buf.writeUtf(this.group); + buf.writeVarInt(category.ordinal()); + } + for (LegacyIngredient ingredient : this.ingredients) { + ingredient.write(buf, writer); + } + writer.accept(buf, this.result); + buf.writeBoolean(this.showNotification); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyShapelessRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyShapelessRecipe.java index 11e26ba43..df2f07dd4 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyShapelessRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyShapelessRecipe.java @@ -1,24 +1,23 @@ package net.momirealms.craftengine.core.item.recipe.network.legacy; -import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.recipe.CraftingRecipeCategory; -import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import org.jetbrains.annotations.ApiStatus; import java.util.ArrayList; import java.util.List; +import java.util.function.Function; @ApiStatus.Obsolete -public class LegacyShapelessRecipe implements LegacyRecipe { - private final List ingredients; - private Item result; +public class LegacyShapelessRecipe implements LegacyRecipe { + private final List> ingredients; + private Item result; private final String group; private final CraftingRecipeCategory category; - public LegacyShapelessRecipe(List ingredients, - Item result, + public LegacyShapelessRecipe(List> ingredients, + Item result, String group, CraftingRecipeCategory category) { this.category = category; @@ -27,27 +26,27 @@ public class LegacyShapelessRecipe implements LegacyRecipe { this.group = group; } - @Override - public void applyClientboundData(Player player) { - this.result = CraftEngine.instance().itemManager().s2c(this.result, player); - for (LegacyIngredient ingredient : this.ingredients) { - ingredient.applyClientboundData(player); - } - } - - public static LegacyShapelessRecipe read(FriendlyByteBuf buf) { + public static LegacyShapelessRecipe read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { String group = buf.readUtf(); CraftingRecipeCategory category = CraftingRecipeCategory.byId(buf.readVarInt()); - List ingredient = buf.readCollection(ArrayList::new, LegacyIngredient::read); - Item result = CraftEngine.instance().itemManager().decode(buf); - return new LegacyShapelessRecipe(ingredient, result, group, category); + List> ingredient = buf.readCollection(ArrayList::new, (byteBuffer) -> LegacyIngredient.read(byteBuffer, reader)); + Item result = reader.apply(buf); + return new LegacyShapelessRecipe<>(ingredient, result, group, category); } @Override - public void write(FriendlyByteBuf buf) { + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { buf.writeUtf(this.group); buf.writeVarInt(this.category.ordinal()); - buf.writeCollection(this.ingredients, (byteBuf, legacyIngredient) -> legacyIngredient.write(buf)); - CraftEngine.instance().itemManager().encode(buf, this.result); + buf.writeCollection(this.ingredients, (byteBuf, legacyIngredient) -> legacyIngredient.write(buf, writer)); + writer.accept(buf, this.result); + } + + @Override + public void applyClientboundData(Function, Item> function) { + this.result = function.apply(this.result); + for (LegacyIngredient ingredient : this.ingredients) { + ingredient.applyClientboundData(function); + } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacySmithingTransformRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacySmithingTransformRecipe.java index cf9f51314..befb36317 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacySmithingTransformRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacySmithingTransformRecipe.java @@ -1,19 +1,19 @@ package net.momirealms.craftengine.core.item.recipe.network.legacy; -import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.item.Item; -import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import org.jetbrains.annotations.ApiStatus; -@ApiStatus.Obsolete -public class LegacySmithingTransformRecipe implements LegacyRecipe { - private final LegacyIngredient template; - private final LegacyIngredient base; - private final LegacyIngredient addition; - private Item result; +import java.util.function.Function; - public LegacySmithingTransformRecipe(LegacyIngredient addition, LegacyIngredient template, LegacyIngredient base, Item result) { +@ApiStatus.Obsolete +public class LegacySmithingTransformRecipe implements LegacyRecipe { + private final LegacyIngredient template; + private final LegacyIngredient base; + private final LegacyIngredient addition; + private Item result; + + public LegacySmithingTransformRecipe(LegacyIngredient addition, LegacyIngredient template, LegacyIngredient base, Item result) { this.addition = addition; this.template = template; this.base = base; @@ -21,26 +21,26 @@ public class LegacySmithingTransformRecipe implements LegacyRecipe { } @Override - public void applyClientboundData(Player player) { - this.result = CraftEngine.instance().itemManager().s2c(this.result, player); - this.template.applyClientboundData(player); - this.base.applyClientboundData(player); - this.addition.applyClientboundData(player); - } - - public static LegacySmithingTransformRecipe read(FriendlyByteBuf buf) { - LegacyIngredient template = LegacyIngredient.read(buf); - LegacyIngredient base = LegacyIngredient.read(buf); - LegacyIngredient addition = LegacyIngredient.read(buf); - Item result = CraftEngine.instance().itemManager().decode(buf); - return new LegacySmithingTransformRecipe(template, base, addition, result); + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { + this.template.write(buf, writer); + this.base.write(buf, writer); + this.addition.write(buf, writer); + writer.accept(buf, this.result); } @Override - public void write(FriendlyByteBuf buf) { - this.template.write(buf); - this.base.write(buf); - this.addition.write(buf); - CraftEngine.instance().itemManager().encode(buf, this.result); + public void applyClientboundData(Function, Item> function) { + this.result = function.apply(this.result); + this.template.applyClientboundData(function); + this.base.applyClientboundData(function); + this.addition.applyClientboundData(function); + } + + public static LegacySmithingTransformRecipe read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { + LegacyIngredient template = LegacyIngredient.read(buf, reader); + LegacyIngredient base = LegacyIngredient.read(buf, reader); + LegacyIngredient addition = LegacyIngredient.read(buf, reader); + Item result = reader.apply(buf); + return new LegacySmithingTransformRecipe<>(template, base, addition, result); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacySmithingTrimRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacySmithingTrimRecipe.java index 55159bfab..1ff34a5ec 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacySmithingTrimRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacySmithingTrimRecipe.java @@ -1,39 +1,42 @@ package net.momirealms.craftengine.core.item.recipe.network.legacy; -import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import org.jetbrains.annotations.ApiStatus; -@ApiStatus.Obsolete -public class LegacySmithingTrimRecipe implements LegacyRecipe { - private final LegacyIngredient template; - private final LegacyIngredient base; - private final LegacyIngredient addition; +import java.util.function.Function; - public LegacySmithingTrimRecipe(LegacyIngredient addition, LegacyIngredient template, LegacyIngredient base) { +@ApiStatus.Obsolete +public class LegacySmithingTrimRecipe implements LegacyRecipe { + private final LegacyIngredient template; + private final LegacyIngredient base; + private final LegacyIngredient addition; + + public LegacySmithingTrimRecipe(LegacyIngredient addition, LegacyIngredient template, LegacyIngredient base) { this.addition = addition; this.template = template; this.base = base; } @Override - public void applyClientboundData(Player player) { - this.template.applyClientboundData(player); - this.base.applyClientboundData(player); - this.addition.applyClientboundData(player); + public void applyClientboundData(Function, Item> function) { + this.template.applyClientboundData(function); + this.base.applyClientboundData(function); + this.addition.applyClientboundData(function); } - public static LegacySmithingTrimRecipe read(FriendlyByteBuf buf) { - LegacyIngredient template = LegacyIngredient.read(buf); - LegacyIngredient base = LegacyIngredient.read(buf); - LegacyIngredient addition = LegacyIngredient.read(buf); + @SuppressWarnings({"unchecked", "rawtypes"}) + public static LegacySmithingTrimRecipe read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { + LegacyIngredient template = LegacyIngredient.read(buf, reader); + LegacyIngredient base = LegacyIngredient.read(buf, reader); + LegacyIngredient addition = LegacyIngredient.read(buf, reader); return new LegacySmithingTrimRecipe(template, base, addition); } @Override - public void write(FriendlyByteBuf buf) { - this.template.write(buf); - this.base.write(buf); - this.addition.write(buf); + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { + this.template.write(buf, writer); + this.base.write(buf, writer); + this.addition.write(buf, writer); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyStoneCuttingRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyStoneCuttingRecipe.java index e07c6f7d9..0998742da 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyStoneCuttingRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyStoneCuttingRecipe.java @@ -1,19 +1,19 @@ package net.momirealms.craftengine.core.item.recipe.network.legacy; -import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.item.Item; -import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import org.jetbrains.annotations.ApiStatus; -@ApiStatus.Obsolete -public class LegacyStoneCuttingRecipe implements LegacyRecipe { - private Item result; - private final String group; - private final LegacyIngredient ingredient; +import java.util.function.Function; - public LegacyStoneCuttingRecipe(LegacyIngredient ingredient, - Item result, +@ApiStatus.Obsolete +public class LegacyStoneCuttingRecipe implements LegacyRecipe { + private Item result; + private final String group; + private final LegacyIngredient ingredient; + + public LegacyStoneCuttingRecipe(LegacyIngredient ingredient, + Item result, String group) { this.ingredient = ingredient; this.result = result; @@ -21,22 +21,23 @@ public class LegacyStoneCuttingRecipe implements LegacyRecipe { } @Override - public void applyClientboundData(Player player) { - this.result = CraftEngine.instance().itemManager().s2c(this.result, player); - this.ingredient.applyClientboundData(player); + public void applyClientboundData(Function, Item> function) { + this.result = function.apply(this.result); + this.ingredient.applyClientboundData(function); } - public static LegacyStoneCuttingRecipe read(FriendlyByteBuf buf) { + @SuppressWarnings({"unchecked", "rawtypes"}) + public static LegacyStoneCuttingRecipe read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { String group = buf.readUtf(); - LegacyIngredient ingredient = LegacyIngredient.read(buf); - Item result = CraftEngine.instance().itemManager().decode(buf); + LegacyIngredient ingredient = LegacyIngredient.read(buf, reader); + Item result = reader.apply(buf); return new LegacyStoneCuttingRecipe(ingredient, result, group); } @Override - public void write(FriendlyByteBuf buf) { + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { buf.writeUtf(this.group); - this.ingredient.write(buf); - CraftEngine.instance().itemManager().encode(buf, this.result); + this.ingredient.write(buf, writer); + writer.accept(buf, this.result); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/RecipeBookDisplayEntry.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/RecipeBookDisplayEntry.java index aab9394ec..5f28a0aa7 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/RecipeBookDisplayEntry.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/RecipeBookDisplayEntry.java @@ -1,7 +1,7 @@ package net.momirealms.craftengine.core.item.recipe.network.modern; import com.mojang.datafixers.util.Either; -import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.recipe.network.modern.display.RecipeDisplay; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import net.momirealms.craftengine.core.util.Key; @@ -11,25 +11,27 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.OptionalInt; +import java.util.function.Function; -public record RecipeBookDisplayEntry(RecipeDisplayId displayId, RecipeDisplay display, OptionalInt group, int category, Optional> ingredients) { +public record RecipeBookDisplayEntry(RecipeDisplayId displayId, RecipeDisplay display, OptionalInt group, int category, Optional> ingredients) { - public static RecipeBookDisplayEntry read(FriendlyByteBuf buffer) { + @SuppressWarnings({"unchecked", "rawtypes"}) + public static RecipeBookDisplayEntry read(FriendlyByteBuf buffer, FriendlyByteBuf.Reader> reader) { RecipeDisplayId displayId = RecipeDisplayId.read(buffer); - RecipeDisplay display = RecipeDisplay.read(buffer); + RecipeDisplay display = RecipeDisplay.read(buffer, reader); OptionalInt group = buffer.readOptionalVarInt(); int category = buffer.readVarInt(); // simplify the registry lookup since we don't care about the category Optional> requirements = buffer.readOptional(buf -> buf.readCollection(ArrayList::new, byteBuf -> new Ingredient(byteBuf.readHolderSet()))); // simplify the registry lookup since we don't care about the ingredient ids return new RecipeBookDisplayEntry(displayId, display, group, category, requirements); } - public void applyClientboundData(Player player) { - this.display.applyClientboundData(player); + public void applyClientboundData(Function, Item> function) { + this.display.applyClientboundData(function); } - public void write(FriendlyByteBuf buffer) { + public void write(FriendlyByteBuf buffer, FriendlyByteBuf.Writer> writer) { this.displayId.write(buffer); - this.display.write(buffer); + this.display.write(buffer, writer); buffer.writeOptionalVarInt(this.group); buffer.writeVarInt(this.category); buffer.writeOptional(this.ingredients, (buf, recipeIngredients) -> buf.writeCollection(recipeIngredients, (byteBuf, ingredient) -> byteBuf.writeHolderSet(ingredient.holderSet))); diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/RecipeBookEntry.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/RecipeBookEntry.java index ed7706a52..5e48b6103 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/RecipeBookEntry.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/RecipeBookEntry.java @@ -1,22 +1,25 @@ package net.momirealms.craftengine.core.item.recipe.network.modern; -import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.util.FriendlyByteBuf; -public record RecipeBookEntry(RecipeBookDisplayEntry entry, byte flags) { +import java.util.function.Function; - public void applyClientboundData(Player player) { - this.entry.applyClientboundData(player); +public record RecipeBookEntry(RecipeBookDisplayEntry entry, byte flags) { + + public void applyClientboundData(Function, Item> function) { + this.entry.applyClientboundData(function); } - public static RecipeBookEntry read(FriendlyByteBuf buffer) { - RecipeBookDisplayEntry displayEntry = RecipeBookDisplayEntry.read(buffer); + @SuppressWarnings({"unchecked", "rawtypes"}) + public static RecipeBookEntry read(FriendlyByteBuf buffer, FriendlyByteBuf.Reader> reader) { + RecipeBookDisplayEntry displayEntry = RecipeBookDisplayEntry.read(buffer, reader); byte flags = buffer.readByte(); return new RecipeBookEntry(displayEntry, flags); } - public void write(FriendlyByteBuf buffer) { - this.entry.write(buffer); + public void write(FriendlyByteBuf buffer, FriendlyByteBuf.Writer> writer) { + this.entry.write(buffer, writer); buffer.writeByte(this.flags); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/SingleInputButtonDisplay.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/SingleInputButtonDisplay.java new file mode 100644 index 000000000..930c01714 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/SingleInputButtonDisplay.java @@ -0,0 +1,28 @@ +package net.momirealms.craftengine.core.item.recipe.network.modern; + +import com.mojang.datafixers.util.Either; +import net.momirealms.craftengine.core.item.Item; +import net.momirealms.craftengine.core.item.recipe.network.modern.display.slot.SlotDisplay; +import net.momirealms.craftengine.core.util.FriendlyByteBuf; +import net.momirealms.craftengine.core.util.Key; + +import java.util.List; +import java.util.function.Function; + +public record SingleInputButtonDisplay(Either, Key> ingredients, SlotDisplay display) { + + public static SingleInputButtonDisplay read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { + Either, Key> ingredients = buf.readHolderSet(); + SlotDisplay slotDisplay = SlotDisplay.read(buf, reader); + return new SingleInputButtonDisplay<>(ingredients, slotDisplay); + } + + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { + buf.writeHolderSet(this.ingredients); + this.display.write(buf, writer); + } + + public void applyClientboundData(Function, Item> function) { + this.display.applyClientboundData(function); + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/FurnaceRecipeDisplay.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/FurnaceRecipeDisplay.java index dd3e2f67a..4ef729f77 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/FurnaceRecipeDisplay.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/FurnaceRecipeDisplay.java @@ -1,41 +1,44 @@ package net.momirealms.craftengine.core.item.recipe.network.modern.display; -import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.recipe.network.modern.display.slot.SlotDisplay; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import org.jetbrains.annotations.NotNull; -public record FurnaceRecipeDisplay(SlotDisplay ingredient, SlotDisplay fuel, SlotDisplay result, SlotDisplay craftingStation, int duration, float experience) implements RecipeDisplay { +import java.util.function.Function; - public static FurnaceRecipeDisplay read(FriendlyByteBuf buffer) { - SlotDisplay ingredient = SlotDisplay.read(buffer); - SlotDisplay fuel = SlotDisplay.read(buffer); - SlotDisplay result = SlotDisplay.read(buffer); - SlotDisplay craftingStation = SlotDisplay.read(buffer); +public record FurnaceRecipeDisplay(SlotDisplay ingredient, SlotDisplay fuel, SlotDisplay result, SlotDisplay craftingStation, int duration, float experience) + implements RecipeDisplay { + + public static FurnaceRecipeDisplay read(FriendlyByteBuf buffer, FriendlyByteBuf.Reader> reader) { + SlotDisplay ingredient = SlotDisplay.read(buffer, reader); + SlotDisplay fuel = SlotDisplay.read(buffer, reader); + SlotDisplay result = SlotDisplay.read(buffer, reader); + SlotDisplay craftingStation = SlotDisplay.read(buffer, reader); int duration = buffer.readVarInt(); float experience = buffer.readFloat(); - return new FurnaceRecipeDisplay(ingredient, fuel, result, craftingStation, duration, experience); + return new FurnaceRecipeDisplay<>(ingredient, fuel, result, craftingStation, duration, experience); } @Override - public void applyClientboundData(Player player) { - this.ingredient.applyClientboundData(player); - this.fuel.applyClientboundData(player); - this.result.applyClientboundData(player); - this.craftingStation.applyClientboundData(player); - } - - @Override - public void write(FriendlyByteBuf buf) { + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { buf.writeVarInt(2); - this.ingredient.write(buf); - this.fuel.write(buf); - this.result.write(buf); - this.craftingStation.write(buf); + this.ingredient.write(buf, writer); + this.fuel.write(buf, writer); + this.result.write(buf, writer); + this.craftingStation.write(buf, writer); buf.writeVarInt(this.duration); buf.writeFloat(this.experience); } + @Override + public void applyClientboundData(Function, Item> function) { + this.ingredient.applyClientboundData(function); + this.fuel.applyClientboundData(function); + this.result.applyClientboundData(function); + this.craftingStation.applyClientboundData(function); + } + @Override public @NotNull String toString() { return "FurnaceRecipeDisplay{" + diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/RecipeDisplay.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/RecipeDisplay.java index 0a0713b80..6a050fb0a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/RecipeDisplay.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/RecipeDisplay.java @@ -1,25 +1,27 @@ package net.momirealms.craftengine.core.item.recipe.network.modern.display; -import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.registry.BuiltInRegistries; import net.momirealms.craftengine.core.util.FriendlyByteBuf; +import java.util.function.BiFunction; import java.util.function.Function; -public interface RecipeDisplay { +public interface RecipeDisplay { - void write(FriendlyByteBuf buf); + void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer); - void applyClientboundData(Player player); + void applyClientboundData(Function, Item> function); - static RecipeDisplay read(final FriendlyByteBuf buf) { - return buf.readById(BuiltInRegistries.RECIPE_DISPLAY_TYPE).read(buf); + @SuppressWarnings({"unchecked", "rawtypes"}) + static RecipeDisplay read(final FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { + return buf.readById(BuiltInRegistries.RECIPE_DISPLAY_TYPE).read(buf, (FriendlyByteBuf.Reader) reader); } - record Type(Function reader) { + record Type(BiFunction>, RecipeDisplay> reader) { - public RecipeDisplay read(final FriendlyByteBuf buf) { - return this.reader.apply(buf); + public RecipeDisplay read(final FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { + return this.reader.apply(buf, reader); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/RecipeDisplayTypes.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/RecipeDisplayTypes.java index 81d781991..af91ab1f5 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/RecipeDisplayTypes.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/RecipeDisplayTypes.java @@ -1,11 +1,16 @@ package net.momirealms.craftengine.core.item.recipe.network.modern.display; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.registry.BuiltInRegistries; import net.momirealms.craftengine.core.registry.Registries; import net.momirealms.craftengine.core.registry.WritableRegistry; +import net.momirealms.craftengine.core.util.FriendlyByteBuf; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceKey; +import java.util.function.BiFunction; + +@SuppressWarnings({"unchecked", "rawtypes"}) public final class RecipeDisplayTypes { private RecipeDisplayTypes() {} @@ -19,14 +24,20 @@ public final class RecipeDisplayTypes { } static { - register(CRAFTING_SHAPELESS, new RecipeDisplay.Type(ShapelessCraftingRecipeDisplay::read)); - register(CRAFTING_SHAPED, new RecipeDisplay.Type(ShapedCraftingRecipeDisplay::read)); - register(FURNACE, new RecipeDisplay.Type(FurnaceRecipeDisplay::read)); - register(STONECUTTER, new RecipeDisplay.Type(StonecutterRecipeDisplay::read)); - register(SMITHING, new RecipeDisplay.Type(SmithingRecipeDisplay::read)); + register(CRAFTING_SHAPELESS, new RecipeDisplay.Type(createReaderFunction(ShapelessCraftingRecipeDisplay::read))); + register(CRAFTING_SHAPED, new RecipeDisplay.Type(createReaderFunction(ShapedCraftingRecipeDisplay::read))); + register(FURNACE, new RecipeDisplay.Type(createReaderFunction(FurnaceRecipeDisplay::read))); + register(STONECUTTER, new RecipeDisplay.Type(createReaderFunction(StonecutterRecipeDisplay::read))); + register(SMITHING, new RecipeDisplay.Type(createReaderFunction(SmithingRecipeDisplay::read))); } - public static void register(Key key, RecipeDisplay.Type type) { - ((WritableRegistry) BuiltInRegistries.RECIPE_DISPLAY_TYPE).register(ResourceKey.create(Registries.RECIPE_DISPLAY_TYPE.location(), key), type); + private static BiFunction>, RecipeDisplay> createReaderFunction( + BiFunction function) { + return (BiFunction) function; + } + + public static void register(Key key, RecipeDisplay.Type type) { + ((WritableRegistry>) BuiltInRegistries.RECIPE_DISPLAY_TYPE) + .register(ResourceKey.create(Registries.RECIPE_DISPLAY_TYPE.location(), key), type); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/ShapedCraftingRecipeDisplay.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/ShapedCraftingRecipeDisplay.java index 90a7f2a76..f048c727f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/ShapedCraftingRecipeDisplay.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/ShapedCraftingRecipeDisplay.java @@ -1,41 +1,42 @@ package net.momirealms.craftengine.core.item.recipe.network.modern.display; -import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.recipe.network.modern.display.slot.SlotDisplay; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; +import java.util.function.Function; -public record ShapedCraftingRecipeDisplay(int width, int height, List ingredients, SlotDisplay result, SlotDisplay craftingStation) implements RecipeDisplay { +public record ShapedCraftingRecipeDisplay(int width, int height, List> ingredients, SlotDisplay result, SlotDisplay craftingStation) implements RecipeDisplay { - public static ShapedCraftingRecipeDisplay read(FriendlyByteBuf buffer) { + public static ShapedCraftingRecipeDisplay read(FriendlyByteBuf buffer, FriendlyByteBuf.Reader> reader) { int width = buffer.readVarInt(); int height = buffer.readVarInt(); - List ingredients = buffer.readCollection(ArrayList::new, SlotDisplay::read); - SlotDisplay result = SlotDisplay.read(buffer); - SlotDisplay craftingStation = SlotDisplay.read(buffer); - return new ShapedCraftingRecipeDisplay(width, height, ingredients, result, craftingStation); + List> ingredients = buffer.readCollection(ArrayList::new, buf -> SlotDisplay.read(buf, reader)); + SlotDisplay result = SlotDisplay.read(buffer, reader); + SlotDisplay craftingStation = SlotDisplay.read(buffer, reader); + return new ShapedCraftingRecipeDisplay<>(width, height, ingredients, result, craftingStation); } @Override - public void applyClientboundData(Player player) { - for (SlotDisplay ingredient : this.ingredients) { - ingredient.applyClientboundData(player); - } - this.result.applyClientboundData(player); - this.craftingStation.applyClientboundData(player); - } - - @Override - public void write(FriendlyByteBuf buf) { + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { buf.writeVarInt(1); buf.writeVarInt(this.width); buf.writeVarInt(this.height); - buf.writeCollection(this.ingredients, (byteBuf, slotDisplay) -> slotDisplay.write(buf)); - this.result.write(buf); - this.craftingStation.write(buf); + buf.writeCollection(this.ingredients, (byteBuf, slotDisplay) -> slotDisplay.write(buf, writer)); + this.result.write(buf, writer); + this.craftingStation.write(buf, writer); + } + + @Override + public void applyClientboundData(Function, Item> function) { + for (SlotDisplay ingredient : this.ingredients) { + ingredient.applyClientboundData(function); + } + this.result.applyClientboundData(function); + this.craftingStation.applyClientboundData(function); } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/ShapelessCraftingRecipeDisplay.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/ShapelessCraftingRecipeDisplay.java index 5f776b43b..b1ca6afb3 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/ShapelessCraftingRecipeDisplay.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/ShapelessCraftingRecipeDisplay.java @@ -1,37 +1,38 @@ package net.momirealms.craftengine.core.item.recipe.network.modern.display; -import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.recipe.network.modern.display.slot.SlotDisplay; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; +import java.util.function.Function; -public record ShapelessCraftingRecipeDisplay(List ingredients, SlotDisplay result, SlotDisplay craftingStation) implements RecipeDisplay { +public record ShapelessCraftingRecipeDisplay(List> ingredients, SlotDisplay result, SlotDisplay craftingStation) implements RecipeDisplay { - public static ShapelessCraftingRecipeDisplay read(FriendlyByteBuf buffer) { - List ingredients = buffer.readCollection(ArrayList::new, SlotDisplay::read); - SlotDisplay result = SlotDisplay.read(buffer); - SlotDisplay craftingStation = SlotDisplay.read(buffer); - return new ShapelessCraftingRecipeDisplay(ingredients, result, craftingStation); + public static ShapelessCraftingRecipeDisplay read(FriendlyByteBuf buffer, FriendlyByteBuf.Reader> reader) { + List> ingredients = buffer.readCollection(ArrayList::new, buf -> SlotDisplay.read(buf, reader)); + SlotDisplay result = SlotDisplay.read(buffer, reader); + SlotDisplay craftingStation = SlotDisplay.read(buffer, reader); + return new ShapelessCraftingRecipeDisplay<>(ingredients, result, craftingStation); } @Override - public void applyClientboundData(Player player) { - for (SlotDisplay ingredient : ingredients) { - ingredient.applyClientboundData(player); - } - this.result.applyClientboundData(player); - this.craftingStation.applyClientboundData(player); - } - - @Override - public void write(FriendlyByteBuf buf) { + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { buf.writeVarInt(0); - buf.writeCollection(this.ingredients, (byteBuf, slotDisplay) -> slotDisplay.write(buf)); - this.result.write(buf); - this.craftingStation.write(buf); + buf.writeCollection(this.ingredients, (byteBuf, slotDisplay) -> slotDisplay.write(buf, writer)); + this.result.write(buf, writer); + this.craftingStation.write(buf, writer); + } + + @Override + public void applyClientboundData(Function, Item> function) { + for (SlotDisplay ingredient : ingredients) { + ingredient.applyClientboundData(function); + } + this.result.applyClientboundData(function); + this.craftingStation.applyClientboundData(function); } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/SmithingRecipeDisplay.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/SmithingRecipeDisplay.java index e276f06bd..1f8cdf56b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/SmithingRecipeDisplay.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/SmithingRecipeDisplay.java @@ -1,38 +1,40 @@ package net.momirealms.craftengine.core.item.recipe.network.modern.display; -import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.recipe.network.modern.display.slot.SlotDisplay; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import org.jetbrains.annotations.NotNull; -public record SmithingRecipeDisplay(SlotDisplay template, SlotDisplay base, SlotDisplay addition, SlotDisplay result, SlotDisplay craftingStation) implements RecipeDisplay { +import java.util.function.Function; - public static SmithingRecipeDisplay read(FriendlyByteBuf buffer) { - SlotDisplay template = SlotDisplay.read(buffer); - SlotDisplay base = SlotDisplay.read(buffer); - SlotDisplay addition = SlotDisplay.read(buffer); - SlotDisplay result = SlotDisplay.read(buffer); - SlotDisplay craftingStation = SlotDisplay.read(buffer); - return new SmithingRecipeDisplay(template, base, addition, result, craftingStation); +public record SmithingRecipeDisplay(SlotDisplay template, SlotDisplay base, SlotDisplay addition, SlotDisplay result, SlotDisplay craftingStation) implements RecipeDisplay { + + public static SmithingRecipeDisplay read(FriendlyByteBuf buffer, FriendlyByteBuf.Reader> reader) { + SlotDisplay template = SlotDisplay.read(buffer, reader); + SlotDisplay base = SlotDisplay.read(buffer, reader); + SlotDisplay addition = SlotDisplay.read(buffer, reader); + SlotDisplay result = SlotDisplay.read(buffer, reader); + SlotDisplay craftingStation = SlotDisplay.read(buffer, reader); + return new SmithingRecipeDisplay<>(template, base, addition, result, craftingStation); } @Override - public void applyClientboundData(Player player) { - this.template.applyClientboundData(player); - this.base.applyClientboundData(player); - this.addition.applyClientboundData(player); - this.result.applyClientboundData(player); - this.craftingStation.applyClientboundData(player); - } - - @Override - public void write(FriendlyByteBuf buf) { + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { buf.writeVarInt(4); - this.template.write(buf); - this.base.write(buf); - this.addition.write(buf); - this.result.write(buf); - this.craftingStation.write(buf); + this.template.write(buf, writer); + this.base.write(buf, writer); + this.addition.write(buf, writer); + this.result.write(buf, writer); + this.craftingStation.write(buf, writer); + } + + @Override + public void applyClientboundData(Function, Item> function) { + this.template.applyClientboundData(function); + this.base.applyClientboundData(function); + this.addition.applyClientboundData(function); + this.result.applyClientboundData(function); + this.craftingStation.applyClientboundData(function); } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/StonecutterRecipeDisplay.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/StonecutterRecipeDisplay.java index e0281e642..719ea24ec 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/StonecutterRecipeDisplay.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/StonecutterRecipeDisplay.java @@ -1,32 +1,34 @@ package net.momirealms.craftengine.core.item.recipe.network.modern.display; -import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.recipe.network.modern.display.slot.SlotDisplay; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import org.jetbrains.annotations.NotNull; -public record StonecutterRecipeDisplay(SlotDisplay input, SlotDisplay result, SlotDisplay craftingStation) implements RecipeDisplay { +import java.util.function.Function; - public static StonecutterRecipeDisplay read(FriendlyByteBuf buffer) { - SlotDisplay input = SlotDisplay.read(buffer); - SlotDisplay result = SlotDisplay.read(buffer); - SlotDisplay craftingStation = SlotDisplay.read(buffer); - return new StonecutterRecipeDisplay(input, result, craftingStation); +public record StonecutterRecipeDisplay(SlotDisplay input, SlotDisplay result, SlotDisplay craftingStation) implements RecipeDisplay { + + public static StonecutterRecipeDisplay read(FriendlyByteBuf buffer, FriendlyByteBuf.Reader> reader) { + SlotDisplay input = SlotDisplay.read(buffer, reader); + SlotDisplay result = SlotDisplay.read(buffer, reader); + SlotDisplay craftingStation = SlotDisplay.read(buffer, reader); + return new StonecutterRecipeDisplay<>(input, result, craftingStation); } @Override - public void applyClientboundData(Player player) { - this.input.applyClientboundData(player); - this.result.applyClientboundData(player); - this.craftingStation.applyClientboundData(player); - } - - @Override - public void write(FriendlyByteBuf buf) { + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { buf.writeVarInt(3); - this.input.write(buf); - this.result.write(buf); - this.craftingStation.write(buf); + this.input.write(buf, writer); + this.result.write(buf, writer); + this.craftingStation.write(buf, writer); + } + + @Override + public void applyClientboundData(Function, Item> function) { + this.input.applyClientboundData(function); + this.result.applyClientboundData(function); + this.craftingStation.applyClientboundData(function); } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/AnyFuelDisplay.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/AnyFuelDisplay.java index 35ae7cae8..dbdf6b89f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/AnyFuelDisplay.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/AnyFuelDisplay.java @@ -1,16 +1,18 @@ package net.momirealms.craftengine.core.item.recipe.network.modern.display.slot; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.util.FriendlyByteBuf; -public class AnyFuelDisplay implements SlotDisplay { - public static final AnyFuelDisplay INSTANCE = new AnyFuelDisplay(); +public class AnyFuelDisplay implements SlotDisplay { + public static final AnyFuelDisplay INSTANCE = new AnyFuelDisplay<>(); - public static AnyFuelDisplay read(FriendlyByteBuf buf) { - return INSTANCE; + @SuppressWarnings("unchecked") + public static AnyFuelDisplay read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { + return (AnyFuelDisplay) INSTANCE; } @Override - public void write(FriendlyByteBuf buf) { + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { buf.writeVarInt(1); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/CompositeSlotDisplay.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/CompositeSlotDisplay.java index 2ce54a3af..d5359a293 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/CompositeSlotDisplay.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/CompositeSlotDisplay.java @@ -1,37 +1,38 @@ package net.momirealms.craftengine.core.item.recipe.network.modern.display.slot; -import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import java.util.ArrayList; import java.util.List; +import java.util.function.Function; -public class CompositeSlotDisplay implements SlotDisplay { - private final List slots; +public class CompositeSlotDisplay implements SlotDisplay { + private final List> slots; - public CompositeSlotDisplay(List slots) { + public CompositeSlotDisplay(List> slots) { this.slots = slots; } - public static CompositeSlotDisplay read(FriendlyByteBuf buf) { - List slots = buf.readCollection(ArrayList::new, SlotDisplay::read); - return new CompositeSlotDisplay(slots); + public static CompositeSlotDisplay read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { + List> slots = buf.readCollection(ArrayList::new, buffer -> SlotDisplay.read(buf, reader)); + return new CompositeSlotDisplay<>(slots); } @Override - public void applyClientboundData(Player player) { - for (SlotDisplay slotDisplay : this.slots) { - slotDisplay.applyClientboundData(player); + public void applyClientboundData(Function, Item> function) { + for (SlotDisplay slotDisplay : this.slots) { + slotDisplay.applyClientboundData(function); } } @Override - public void write(FriendlyByteBuf buf) { + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { buf.writeVarInt(7); - buf.writeCollection(this.slots, (byteBuf, slotDisplay) -> slotDisplay.write(buf)); + buf.writeCollection(this.slots, (byteBuf, slotDisplay) -> slotDisplay.write(buf, writer)); } - public List slots() { + public List> slots() { return this.slots; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/EmptySlotDisplay.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/EmptySlotDisplay.java index 90ecf7403..07febedad 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/EmptySlotDisplay.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/EmptySlotDisplay.java @@ -1,16 +1,18 @@ package net.momirealms.craftengine.core.item.recipe.network.modern.display.slot; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.util.FriendlyByteBuf; -public class EmptySlotDisplay implements SlotDisplay { - public static final EmptySlotDisplay INSTANCE = new EmptySlotDisplay(); +public class EmptySlotDisplay implements SlotDisplay { + public static final EmptySlotDisplay INSTANCE = new EmptySlotDisplay<>(); - public static EmptySlotDisplay read(FriendlyByteBuf buf) { - return INSTANCE; + @SuppressWarnings("unchecked") + public static EmptySlotDisplay read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { + return (EmptySlotDisplay) INSTANCE; } @Override - public void write(FriendlyByteBuf buf) { + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { buf.writeVarInt(0); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/ItemSlotDisplay.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/ItemSlotDisplay.java index 1b5c187ad..e63fb02b5 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/ItemSlotDisplay.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/ItemSlotDisplay.java @@ -1,21 +1,22 @@ package net.momirealms.craftengine.core.item.recipe.network.modern.display.slot; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.util.FriendlyByteBuf; -public class ItemSlotDisplay implements SlotDisplay { +public class ItemSlotDisplay implements SlotDisplay { private final int item; public ItemSlotDisplay(int item) { this.item = item; } - public static ItemSlotDisplay read(FriendlyByteBuf buf) { + public static ItemSlotDisplay read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { int item = buf.readVarInt(); - return new ItemSlotDisplay(item); + return new ItemSlotDisplay<>(item); } @Override - public void write(FriendlyByteBuf buf) { + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { buf.writeVarInt(2); buf.writeVarInt(this.item); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/ItemStackSlotDisplay.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/ItemStackSlotDisplay.java index 2e449d33d..fee6acca7 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/ItemStackSlotDisplay.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/ItemStackSlotDisplay.java @@ -1,39 +1,35 @@ package net.momirealms.craftengine.core.item.recipe.network.modern.display.slot; -import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.item.Item; -import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.util.FriendlyByteBuf; -public class ItemStackSlotDisplay implements SlotDisplay { - private Item item; +import java.util.function.Function; - public ItemStackSlotDisplay(Item item) { +public class ItemStackSlotDisplay implements SlotDisplay { + private Item item; + + public ItemStackSlotDisplay(Item item) { this.item = item; } - public static ItemStackSlotDisplay read(FriendlyByteBuf buf) { - Item itemStack = CraftEngine.instance().itemManager().decode(buf); - return new ItemStackSlotDisplay(itemStack); + public static ItemStackSlotDisplay read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { + Item itemStack = reader.apply(buf); + return new ItemStackSlotDisplay<>(itemStack); } @Override - public void write(FriendlyByteBuf buf) { + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { buf.writeVarInt(3); - CraftEngine.instance().itemManager().encode(buf, this.item); + writer.accept(buf, item); } @Override - public void applyClientboundData(Player player) { - this.item = CraftEngine.instance().itemManager().s2c(this.item, player); + public void applyClientboundData(Function, Item> function) { + this.item = function.apply(this.item); } - public Item item() { - return this.item; - } - - public void setItem(Item item) { - this.item = item; + public Item item() { + return item; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/SlotDisplay.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/SlotDisplay.java index 6a61b1b99..1ef87793b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/SlotDisplay.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/SlotDisplay.java @@ -1,26 +1,28 @@ package net.momirealms.craftengine.core.item.recipe.network.modern.display.slot; -import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.registry.BuiltInRegistries; import net.momirealms.craftengine.core.util.FriendlyByteBuf; +import java.util.function.BiFunction; import java.util.function.Function; -public interface SlotDisplay { +public interface SlotDisplay { - void write(FriendlyByteBuf buf); + void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer); - default void applyClientboundData(Player player) { + default void applyClientboundData(Function, Item> function) { } - static SlotDisplay read(FriendlyByteBuf buf) { - return buf.readById(BuiltInRegistries.SLOT_DISPLAY_TYPE).read(buf); + @SuppressWarnings({"unchecked", "rawtypes"}) + static SlotDisplay read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { + return buf.readById(BuiltInRegistries.SLOT_DISPLAY_TYPE).read(buf, (FriendlyByteBuf.Reader) reader); } - record Type(Function reader) { + record Type(BiFunction>, SlotDisplay> reader) { - public SlotDisplay read(final FriendlyByteBuf buf) { - return this.reader.apply(buf); + public SlotDisplay read(final FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { + return this.reader.apply(buf, reader); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/SlotDisplayTypes.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/SlotDisplayTypes.java index 123f8dc0c..eeab2c7b7 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/SlotDisplayTypes.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/SlotDisplayTypes.java @@ -1,11 +1,16 @@ package net.momirealms.craftengine.core.item.recipe.network.modern.display.slot; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.registry.BuiltInRegistries; import net.momirealms.craftengine.core.registry.Registries; import net.momirealms.craftengine.core.registry.WritableRegistry; +import net.momirealms.craftengine.core.util.FriendlyByteBuf; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceKey; +import java.util.function.BiFunction; + +@SuppressWarnings({"unchecked", "rawtypes"}) public final class SlotDisplayTypes { private SlotDisplayTypes() {} @@ -22,18 +27,23 @@ public final class SlotDisplayTypes { } static { - register(EMPTY, new SlotDisplay.Type(EmptySlotDisplay::read)); - register(ANY_FUEL, new SlotDisplay.Type(AnyFuelDisplay::read)); - register(ITEM, new SlotDisplay.Type(ItemSlotDisplay::read)); - register(ITEM_STACK, new SlotDisplay.Type(ItemStackSlotDisplay::read)); - register(TAG, new SlotDisplay.Type(TagSlotDisplay::read)); - register(SMITHING_TRIM, new SlotDisplay.Type(SmithingTrimDemoSlotDisplay::read)); - register(WITH_REMAINDER, new SlotDisplay.Type(WithRemainderSlotDisplay::read)); - register(COMPOSITE, new SlotDisplay.Type(CompositeSlotDisplay::read)); + register(EMPTY, new SlotDisplay.Type(createReaderFunction(EmptySlotDisplay::read))); + register(ANY_FUEL, new SlotDisplay.Type(createReaderFunction(AnyFuelDisplay::read))); + register(ITEM, new SlotDisplay.Type(createReaderFunction(ItemSlotDisplay::read))); + register(ITEM_STACK, new SlotDisplay.Type(createReaderFunction(ItemStackSlotDisplay::read))); + register(TAG, new SlotDisplay.Type(createReaderFunction(TagSlotDisplay::read))); + register(SMITHING_TRIM, new SlotDisplay.Type(createReaderFunction(SmithingTrimDemoSlotDisplay::read))); + register(WITH_REMAINDER, new SlotDisplay.Type(createReaderFunction(WithRemainderSlotDisplay::read))); + register(COMPOSITE, new SlotDisplay.Type(createReaderFunction(CompositeSlotDisplay::read))); } - public static void register(Key key, SlotDisplay.Type type) { - ((WritableRegistry) BuiltInRegistries.SLOT_DISPLAY_TYPE) + private static BiFunction>, SlotDisplay> createReaderFunction( + BiFunction function) { + return (BiFunction) function; + } + + public static void register(Key key, SlotDisplay.Type type) { + ((WritableRegistry>) BuiltInRegistries.SLOT_DISPLAY_TYPE) .register(ResourceKey.create(Registries.SLOT_DISPLAY_TYPE.location(), key), type); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/SmithingTrimDemoSlotDisplay.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/SmithingTrimDemoSlotDisplay.java index 587adf86d..30f663398 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/SmithingTrimDemoSlotDisplay.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/SmithingTrimDemoSlotDisplay.java @@ -2,35 +2,36 @@ package net.momirealms.craftengine.core.item.recipe.network.modern.display.slot; import com.mojang.datafixers.util.Either; import net.kyori.adventure.text.Component; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.util.AdventureHelper; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.VersionHelper; import org.jetbrains.annotations.NotNull; -public class SmithingTrimDemoSlotDisplay implements SlotDisplay { - private final SlotDisplay base; - private final SlotDisplay material; +public class SmithingTrimDemoSlotDisplay implements SlotDisplay { + private final SlotDisplay base; + private final SlotDisplay material; // 1.21.2-1.21.4 - private SlotDisplay trimPattern; + private SlotDisplay trimPattern; // 1.21.5 private Either either; - public SmithingTrimDemoSlotDisplay(SlotDisplay base, SlotDisplay material, SlotDisplay trimPattern) { + public SmithingTrimDemoSlotDisplay(SlotDisplay base, SlotDisplay material, SlotDisplay trimPattern) { this.base = base; this.material = material; this.trimPattern = trimPattern; } - public SmithingTrimDemoSlotDisplay(SlotDisplay base, SlotDisplay material, Either either) { + public SmithingTrimDemoSlotDisplay(SlotDisplay base, SlotDisplay material, Either either) { this.base = base; this.either = either; this.material = material; } - public static SmithingTrimDemoSlotDisplay read(FriendlyByteBuf buf) { - SlotDisplay base = SlotDisplay.read(buf); - SlotDisplay material = SlotDisplay.read(buf); + public static SmithingTrimDemoSlotDisplay read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { + SlotDisplay base = SlotDisplay.read(buf, reader); + SlotDisplay material = SlotDisplay.read(buf, reader); if (VersionHelper.isOrAbove1_21_5()) { Either either = buf.readHolder(byteBuf -> { Key assetId = buf.readKey(); @@ -38,18 +39,18 @@ public class SmithingTrimDemoSlotDisplay implements SlotDisplay { boolean decal = buf.readBoolean(); return new TrimPattern(assetId, component, decal); }); - return new SmithingTrimDemoSlotDisplay(base, material, either); + return new SmithingTrimDemoSlotDisplay<>(base, material, either); } else { - SlotDisplay trimPattern = SlotDisplay.read(buf); - return new SmithingTrimDemoSlotDisplay(base, material, trimPattern); + SlotDisplay trimPattern = SlotDisplay.read(buf, reader); + return new SmithingTrimDemoSlotDisplay<>(base, material, trimPattern); } } @Override - public void write(FriendlyByteBuf buf) { + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { buf.writeVarInt(5); - this.base.write(buf); - this.material.write(buf); + this.base.write(buf, writer); + this.material.write(buf, writer); if (VersionHelper.isOrAbove1_21_5()) { buf.writeHolder(this.either, (byteBuf, pattern) -> { byteBuf.writeKey(pattern.assetId); @@ -57,7 +58,7 @@ public class SmithingTrimDemoSlotDisplay implements SlotDisplay { byteBuf.writeBoolean(pattern.decal); }); } else { - this.trimPattern.write(buf); + this.trimPattern.write(buf, writer); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/TagSlotDisplay.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/TagSlotDisplay.java index a6db7c345..486822358 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/TagSlotDisplay.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/TagSlotDisplay.java @@ -1,21 +1,22 @@ package net.momirealms.craftengine.core.item.recipe.network.modern.display.slot; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import net.momirealms.craftengine.core.util.Key; -public class TagSlotDisplay implements SlotDisplay { +public class TagSlotDisplay implements SlotDisplay { private final Key tag; public TagSlotDisplay(Key tag) { this.tag = tag; } - public static TagSlotDisplay read(FriendlyByteBuf buf) { - return new TagSlotDisplay(buf.readKey()); + public static TagSlotDisplay read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { + return new TagSlotDisplay<>(buf.readKey()); } @Override - public void write(FriendlyByteBuf buf) { + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { buf.writeVarInt(4); buf.writeKey(this.tag); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/WithRemainderSlotDisplay.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/WithRemainderSlotDisplay.java index e25583224..876bfdae7 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/WithRemainderSlotDisplay.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/modern/display/slot/WithRemainderSlotDisplay.java @@ -1,27 +1,28 @@ package net.momirealms.craftengine.core.item.recipe.network.modern.display.slot; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.util.FriendlyByteBuf; -public class WithRemainderSlotDisplay implements SlotDisplay { - private final SlotDisplay input; - private final SlotDisplay remainder; +public class WithRemainderSlotDisplay implements SlotDisplay { + private final SlotDisplay input; + private final SlotDisplay remainder; - public WithRemainderSlotDisplay(SlotDisplay input, SlotDisplay remainder) { + public WithRemainderSlotDisplay(SlotDisplay input, SlotDisplay remainder) { this.input = input; this.remainder = remainder; } - public static WithRemainderSlotDisplay read(FriendlyByteBuf buf) { - SlotDisplay input = SlotDisplay.read(buf); - SlotDisplay remainder = SlotDisplay.read(buf); - return new WithRemainderSlotDisplay(input, remainder); + public static WithRemainderSlotDisplay read(FriendlyByteBuf buf, FriendlyByteBuf.Reader> reader) { + SlotDisplay input = SlotDisplay.read(buf, reader); + SlotDisplay remainder = SlotDisplay.read(buf, reader); + return new WithRemainderSlotDisplay<>(input, remainder); } @Override - public void write(FriendlyByteBuf buf) { + public void write(FriendlyByteBuf buf, FriendlyByteBuf.Writer> writer) { buf.writeVarInt(6); - this.input.write(buf); - this.remainder.write(buf); + this.input.write(buf, writer); + this.remainder.write(buf, writer); } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/remainder/CompositeCraftRemainder.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/remainder/CompositeCraftRemainder.java new file mode 100644 index 000000000..a19ccbc90 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/remainder/CompositeCraftRemainder.java @@ -0,0 +1,20 @@ +package net.momirealms.craftengine.core.item.recipe.remainder; + +import net.momirealms.craftengine.core.item.Item; +import net.momirealms.craftengine.core.util.Key; + +public class CompositeCraftRemainder implements CraftRemainder { + private final CraftRemainder[] remainders; + + public CompositeCraftRemainder(CraftRemainder[] remainders) { + this.remainders = remainders; + } + + @Override + public Item remainder(Key recipeId, Item item) { + for (CraftRemainder remainder : remainders) { + item = remainder.remainder(recipeId, item); + } + return item; + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/remainder/CraftRemainder.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/remainder/CraftRemainder.java new file mode 100644 index 000000000..a95aa17a4 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/remainder/CraftRemainder.java @@ -0,0 +1,10 @@ +package net.momirealms.craftengine.core.item.recipe.remainder; + +import net.momirealms.craftengine.core.item.Item; +import net.momirealms.craftengine.core.util.Key; + +public interface CraftRemainder { + + Item remainder(Key recipeId, Item item); + +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/remainder/CraftRemainderFactory.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/remainder/CraftRemainderFactory.java new file mode 100644 index 000000000..a52960288 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/remainder/CraftRemainderFactory.java @@ -0,0 +1,8 @@ +package net.momirealms.craftengine.core.item.recipe.remainder; + +import java.util.Map; + +public interface CraftRemainderFactory { + + CraftRemainder create(Map args); +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/remainder/CraftRemainders.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/remainder/CraftRemainders.java new file mode 100644 index 000000000..ed1551cac --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/remainder/CraftRemainders.java @@ -0,0 +1,53 @@ +package net.momirealms.craftengine.core.item.recipe.remainder; + +import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; +import net.momirealms.craftengine.core.registry.BuiltInRegistries; +import net.momirealms.craftengine.core.registry.Registries; +import net.momirealms.craftengine.core.registry.WritableRegistry; +import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.MiscUtils; +import net.momirealms.craftengine.core.util.ResourceConfigUtils; +import net.momirealms.craftengine.core.util.ResourceKey; + +import java.util.List; +import java.util.Map; + +public class CraftRemainders { + public static final Key FIXED = Key.of("craftengine:fixed"); + public static final Key RECIPE_BASED = Key.of("craftengine:recipe_based"); + public static final Key HURT_AND_BREAK = Key.of("craftengine:hurt_and_break"); + + static { + register(FIXED, FixedCraftRemainder.FACTORY); + register(RECIPE_BASED, RecipeBasedCraftRemainder.FACTORY); + register(HURT_AND_BREAK, HurtAndBreakRemainder.FACTORY); + } + + public static void register(Key key, CraftRemainderFactory factory) { + ((WritableRegistry) BuiltInRegistries.CRAFT_REMAINDER_FACTORY) + .register(ResourceKey.create(Registries.CRAFT_REMAINDER_FACTORY.location(), key), factory); + } + + public static CraftRemainder fromMap(Map map) { + String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), "warning.config.item.settings.craft_remainder.missing_type"); + Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE); + CraftRemainderFactory factory = BuiltInRegistries.CRAFT_REMAINDER_FACTORY.getValue(key); + if (factory == null) { + throw new LocalizedResourceConfigException("warning.config.item.settings.craft_remainder.invalid_type", type); + } + return factory.create(map); + } + + public static CraftRemainder fromObject(Object obj) { + if (obj instanceof Map map) { + return fromMap(MiscUtils.castToMap(map, false)); + } else if (obj instanceof List list) { + List remainderList = ResourceConfigUtils.parseConfigAsList(list, map -> fromMap(MiscUtils.castToMap(map, false))); + return new CompositeCraftRemainder(remainderList.toArray(new CraftRemainder[0])); + } else if (obj != null) { + return new FixedCraftRemainder(Key.of(obj.toString())); + } else { + return null; + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/remainder/FixedCraftRemainder.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/remainder/FixedCraftRemainder.java new file mode 100644 index 000000000..61302aa50 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/remainder/FixedCraftRemainder.java @@ -0,0 +1,32 @@ +package net.momirealms.craftengine.core.item.recipe.remainder; + +import net.momirealms.craftengine.core.item.Item; +import net.momirealms.craftengine.core.plugin.CraftEngine; +import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.ResourceConfigUtils; + +import java.util.Map; + +public class FixedCraftRemainder implements CraftRemainder { + public static final Factory FACTORY = new Factory(); + private final Key item; + + public FixedCraftRemainder(Key item) { + this.item = item; + } + + @SuppressWarnings("unchecked") + @Override + public Item remainder(Key recipeId, Item item) { + return (Item) CraftEngine.instance().itemManager().createWrappedItem(this.item, null); + } + + public static class Factory implements CraftRemainderFactory { + + @Override + public CraftRemainder create(Map args) { + Key item = Key.of(ResourceConfigUtils.requireNonEmptyStringOrThrow(args.get("item"), "warning.config.item.settings.craft_remainder.fixed.missing_item")); + return new FixedCraftRemainder(item); + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/remainder/HurtAndBreakRemainder.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/remainder/HurtAndBreakRemainder.java new file mode 100644 index 000000000..8d304a4f4 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/remainder/HurtAndBreakRemainder.java @@ -0,0 +1,39 @@ +package net.momirealms.craftengine.core.item.recipe.remainder; + +import net.momirealms.craftengine.core.item.Item; +import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.ResourceConfigUtils; + +import java.util.Map; + +public class HurtAndBreakRemainder implements CraftRemainder { + public static final Factory FACTORY = new Factory(); + private final int amount; + + public HurtAndBreakRemainder(int amount) { + this.amount = amount; + } + + @Override + public Item remainder(Key recipeId, Item item) { + int damage = item.damage().orElse(0); + int maxDamage = item.maxDamage(); + damage += amount; + if (damage >= maxDamage) { + return item.copyWithCount(0); + } else { + item = item.copyWithCount(1); + item.damage(damage); + return item; + } + } + + public static class Factory implements CraftRemainderFactory { + + @Override + public CraftRemainder create(Map args) { + int damage = ResourceConfigUtils.getAsInt(args.getOrDefault("damage", 1), "damage"); + return new HurtAndBreakRemainder(damage); + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/remainder/RecipeBasedCraftRemainder.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/remainder/RecipeBasedCraftRemainder.java new file mode 100644 index 000000000..afe0b8e17 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/remainder/RecipeBasedCraftRemainder.java @@ -0,0 +1,54 @@ +package net.momirealms.craftengine.core.item.recipe.remainder; + +import net.momirealms.craftengine.core.item.Item; +import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.MiscUtils; +import net.momirealms.craftengine.core.util.ResourceConfigUtils; +import org.jetbrains.annotations.Nullable; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class RecipeBasedCraftRemainder implements CraftRemainder { + public static final Factory FACTORY = new Factory(); + private final Map remainders; + @Nullable + private final CraftRemainder fallback; + + public RecipeBasedCraftRemainder(Map remainders, @Nullable CraftRemainder fallback) { + this.remainders = remainders; + this.fallback = fallback; + } + + @Override + public Item remainder(Key recipeId, Item item) { + CraftRemainder remainder = this.remainders.get(recipeId); + if (remainder != null) { + return remainder.remainder(recipeId, item); + } + return this.fallback != null ? this.fallback.remainder(recipeId, item) : null; + } + + public static class Factory implements CraftRemainderFactory { + + @Override + public CraftRemainder create(Map args) { + Map remainders = new HashMap<>(); + List remainderList = ResourceConfigUtils.parseConfigAsList(ResourceConfigUtils.requireNonNullOrThrow(args.get("terms"), "warning.config.item.settings.craft_remainder.recipe_based.missing_terms"), map -> { + List recipes = MiscUtils.getAsStringList(map.get("recipes")).stream().map(Key::of).toList(); + CraftRemainder remainder = CraftRemainders.fromObject(ResourceConfigUtils.get(map, "craft-remainder", "craft-remaining-item")); + return new GroupedRemainder(recipes, remainder); + }); + for (GroupedRemainder remainder : remainderList) { + for (Key recipeId : remainder.recipes) { + remainders.put(recipeId, remainder.remainder()); + } + } + return new RecipeBasedCraftRemainder(remainders, CraftRemainders.fromObject(args.get("fallback"))); + } + + public record GroupedRemainder(List recipes, CraftRemainder remainder) { + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/LootConditions.java b/core/src/main/java/net/momirealms/craftengine/core/loot/LootConditions.java index 1336472bd..eea0f0f4b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/LootConditions.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/LootConditions.java @@ -24,7 +24,9 @@ public class LootConditions { register(CommonConditions.SURVIVES_EXPLOSION, new SurvivesExplosionCondition.FactoryImpl<>()); register(CommonConditions.ANY_OF, new AnyOfCondition.FactoryImpl<>(LootConditions::fromMap)); register(CommonConditions.ALL_OF, new AllOfCondition.FactoryImpl<>(LootConditions::fromMap)); - register(CommonConditions.ENCHANTMENT, new EnchantmentCondition.FactoryImpl<>()); + register(CommonConditions.HAS_PLAYER, new HasPlayerCondition.FactoryImpl<>()); + register(CommonConditions.HAS_ITEM, new HasItemCondition.FactoryImpl<>()); + register(CommonConditions.ENCHANTMENT, new EnchantmentCondition.Factory<>()); register(CommonConditions.INVERTED, new InvertedCondition.FactoryImpl<>(LootConditions::fromMap)); register(CommonConditions.FALLING_BLOCK, new FallingBlockCondition.FactoryImpl<>()); register(CommonConditions.RANDOM, new RandomCondition.FactoryImpl<>()); diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/entry/AlternativesLootEntryContainer.java b/core/src/main/java/net/momirealms/craftengine/core/loot/entry/AlternativesLootEntryContainer.java index 9ed2f42e4..18cb4ff0b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/entry/AlternativesLootEntryContainer.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/entry/AlternativesLootEntryContainer.java @@ -4,6 +4,7 @@ import net.momirealms.craftengine.core.loot.LootConditions; import net.momirealms.craftengine.core.loot.LootContext; import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.*; @@ -40,7 +41,7 @@ public class AlternativesLootEntryContainer extends AbstractCompositeLootEntr @SuppressWarnings("unchecked") @Override public LootEntryContainer create(Map arguments) { - List> containers = Optional.ofNullable(arguments.get("children")) + List> containers = Optional.ofNullable(ResourceConfigUtils.get(arguments, "children", "terms", "branches")) .map(it -> (List>) new ArrayList>(LootEntryContainers.fromMapList((List>) it))) .orElse(Collections.emptyList()); List> conditions = Optional.ofNullable(arguments.get("conditions")) diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/entry/LootEntryContainers.java b/core/src/main/java/net/momirealms/craftengine/core/loot/entry/LootEntryContainers.java index d2d8abaeb..82c667a40 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/entry/LootEntryContainers.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/entry/LootEntryContainers.java @@ -14,12 +14,14 @@ import java.util.Map; public class LootEntryContainers { public static final Key ALTERNATIVES = Key.from("craftengine:alternatives"); + public static final Key IF_ELSE = Key.from("craftengine:if_else"); public static final Key ITEM = Key.from("craftengine:item"); public static final Key FURNITURE_ITEM = Key.from("craftengine:furniture_item"); public static final Key EXP = Key.from("craftengine:exp"); static { register(ALTERNATIVES, AlternativesLootEntryContainer.FACTORY); + register(IF_ELSE, AlternativesLootEntryContainer.FACTORY); register(ITEM, SingleItemLootEntryContainer.FACTORY); register(EXP, ExpLootEntryContainer.FACTORY); register(FURNITURE_ITEM, FurnitureItemLootEntryContainer.FACTORY); 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 6ee669d9a..e43115a29 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 @@ -22,14 +22,14 @@ import net.momirealms.craftengine.core.pack.model.RangeDispatchItemModel; import net.momirealms.craftengine.core.pack.model.generation.ModelGeneration; import net.momirealms.craftengine.core.pack.model.generation.ModelGenerator; import net.momirealms.craftengine.core.pack.model.rangedisptach.CustomModelDataRangeDispatchProperty; -import net.momirealms.craftengine.core.pack.obfuscation.ObfA; import net.momirealms.craftengine.core.pack.revision.Revision; import net.momirealms.craftengine.core.pack.revision.Revisions; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.plugin.config.ConfigParser; +import net.momirealms.craftengine.core.plugin.config.SectionConfigParser; import net.momirealms.craftengine.core.plugin.config.StringKeyConstructor; -import net.momirealms.craftengine.core.plugin.locale.I18NData; +import net.momirealms.craftengine.core.plugin.locale.LangData; import net.momirealms.craftengine.core.plugin.locale.LocalizedException; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.plugin.locale.TranslationManager; @@ -43,18 +43,25 @@ import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.scanner.ScannerException; import javax.imageio.ImageIO; +import javax.imageio.ImageReader; import java.awt.image.BufferedImage; import java.io.*; -import java.lang.reflect.Constructor; -import java.lang.reflect.Method; import java.nio.charset.StandardCharsets; import java.nio.file.*; import java.nio.file.FileSystem; import java.nio.file.attribute.BasicFileAttributes; import java.util.*; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicLong; import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.function.Predicate; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; import static net.momirealms.craftengine.core.util.MiscUtils.castToMap; @@ -66,17 +73,23 @@ public abstract class AbstractPackManager implements PackManager { public static final Map PRESET_ITEMS = new HashMap<>(); public static final Set VANILLA_TEXTURES = new HashSet<>(); public static final Set VANILLA_MODELS = new HashSet<>(); + public static final Set VANILLA_SOUNDS = new HashSet<>(); public static final String NEW_TRIM_MATERIAL = "custom"; public static final Set ALLOWED_VANILLA_EQUIPMENT = Set.of("chainmail", "diamond", "gold", "iron", "netherite"); - private static final byte[] EMPTY_IMAGE; + public static final Set ALLOWED_MODEL_TAGS = Set.of("parent", "ambientocclusion", "display", "textures", "elements", "gui_light", "overrides"); + private static final byte[] EMPTY_1X1_IMAGE; private static final byte[] EMPTY_EQUIPMENT_IMAGE; + private static final byte[] EMPTY_16X16_IMAGE; static { try (ByteArrayOutputStream stream1 = new ByteArrayOutputStream(); - ByteArrayOutputStream stream2 = new ByteArrayOutputStream()) { + ByteArrayOutputStream stream2 = new ByteArrayOutputStream(); + ByteArrayOutputStream stream3 = new ByteArrayOutputStream()) { ImageIO.write(new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB), "png", stream1); - EMPTY_IMAGE = stream1.toByteArray(); + EMPTY_1X1_IMAGE = stream1.toByteArray(); ImageIO.write(new BufferedImage(64, 32, BufferedImage.TYPE_INT_ARGB), "png", stream2); EMPTY_EQUIPMENT_IMAGE = stream2.toByteArray(); + ImageIO.write(new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB), "png", stream3); + EMPTY_16X16_IMAGE = stream3.toByteArray(); } catch (IOException e) { throw new RuntimeException("Failed to create empty images.", e); } @@ -93,12 +106,41 @@ public abstract class AbstractPackManager implements PackManager { private Map cachedAssetFiles = Collections.emptyMap(); protected BiConsumer zipGenerator; protected ResourcePackHost resourcePackHost; + private final SkipOptimizationParser parser = new SkipOptimizationParser(); public AbstractPackManager(CraftEngine plugin, Consumer cacheEventDispatcher, BiConsumer generationEventDispatcher) { this.plugin = plugin; this.cacheEventDispatcher = cacheEventDispatcher; this.generationEventDispatcher = generationEventDispatcher; - this.zipGenerator = (p1, p2) -> {}; + this.zipGenerator = (p1, p2) -> { + try (FileOutputStream fos = new FileOutputStream(p2.toFile()); + ZipOutputStream zos = new ZipOutputStream(fos)) { + Files.walkFileTree(p1, new SimpleFileVisitor<>() { + @Override + public @NotNull FileVisitResult preVisitDirectory(@NotNull Path dir, @NotNull BasicFileAttributes attrs) throws IOException { + if (!dir.equals(p1)) { + String relativePath = p1.relativize(dir).toString().replace("\\", "/") + "/"; + ZipEntry entry = new ZipEntry(relativePath); + zos.putNextEntry(entry); + zos.closeEntry(); + } + return FileVisitResult.CONTINUE; + } + + @Override + public @NotNull FileVisitResult visitFile(@NotNull Path file, @NotNull BasicFileAttributes attrs) throws IOException { + String relativePath = p1.relativize(file).toString().replace("\\", "/"); + ZipEntry entry = new ZipEntry(relativePath); + zos.putNextEntry(entry); + Files.copy(file, zos); + zos.closeEntry(); + return FileVisitResult.CONTINUE; + } + }); + } catch (IOException e) { + throw new RuntimeException("Failed to generate resource pack", e); + } + }; Path resourcesFolder = this.plugin.dataFolderPath().resolve("resources"); try { if (Files.notExists(resourcesFolder)) { @@ -117,20 +159,26 @@ public abstract class AbstractPackManager implements PackManager { } private void initInternalData() { - loadInternalData("internal/models/item/legacy/_all.json", PRESET_LEGACY_MODELS_ITEM::put); - loadInternalData("internal/models/item/_all.json", PRESET_MODERN_MODELS_ITEM::put); - loadInternalData("internal/models/block/_all.json", PRESET_MODELS_BLOCK::put); - loadModernItemModel("internal/items/_all.json", PRESET_ITEMS::put); - - loadInternalList("models", "block/", VANILLA_MODELS::add); - loadInternalList("models", "item/", VANILLA_MODELS::add); - loadInternalList("models", "item/legacy/", key -> VANILLA_MODELS.add(Key.of(key.namespace(), "item/" + key.value().substring(12)))); - loadInternalList("textures", "", VANILLA_TEXTURES::add); + loadInternalData("legacy_internal/models/item/_all.json", ((key, jsonObject) -> { + PRESET_LEGACY_MODELS_ITEM.put(key, jsonObject); + VANILLA_MODELS.add(Key.of(key.namespace(), "item/" + key.value())); + })); + loadInternalData("internal/models/item/_all.json", ((key, jsonObject) -> { + PRESET_MODERN_MODELS_ITEM.put(key, jsonObject); + VANILLA_MODELS.add(Key.of(key.namespace(), "item/" + key.value())); + })); + loadInternalData("internal/models/block/_all.json", ((key, jsonObject) -> { + PRESET_MODELS_BLOCK.put(key, jsonObject); + VANILLA_MODELS.add(Key.of(key.namespace(), "block/" + key.value())); + })); + loadModernItemModel("internal/items/_all.json", (PRESET_ITEMS::put)); VANILLA_MODELS.add(Key.of("minecraft", "builtin/entity")); VANILLA_MODELS.add(Key.of("minecraft", "item/player_head")); for (int i = 0; i < 256; i++) { VANILLA_TEXTURES.add(Key.of("minecraft", "font/unicode_page_" + String.format("%02x", i))); } + loadInternalList("internal/textures/processed.json", VANILLA_TEXTURES::add); + loadInternalList("internal/sounds/processed.json", VANILLA_SOUNDS::add); } private void loadModernItemModel(String path, BiConsumer callback) { @@ -163,33 +211,24 @@ public abstract class AbstractPackManager implements PackManager { } } - private void loadInternalList(String type, String prefix, Consumer callback) { - try (InputStream inputStream = this.plugin.resourceStream("internal/" + type + "/" + prefix + "_list.json")) { + private void loadInternalList(String path, Consumer callback) { + try (InputStream inputStream = this.plugin.resourceStream(path)) { if (inputStream != null) { - JsonObject listJson = JsonParser.parseReader(new InputStreamReader(inputStream)).getAsJsonObject(); - JsonArray fileList = listJson.getAsJsonArray("files"); - for (JsonElement element : fileList) { - if (element instanceof JsonPrimitive primitive) { - callback.accept(Key.of("minecraft", prefix + FileUtils.pathWithoutExtension(primitive.getAsString()))); - } - } - JsonArray directoryList = listJson.getAsJsonArray("directories"); - for (JsonElement element : directoryList) { - if (element instanceof JsonPrimitive primitive) { - loadInternalList(type, prefix + primitive.getAsString() + "/", callback); + JsonArray listJson = JsonParser.parseReader(new InputStreamReader(inputStream)).getAsJsonArray(); + for (JsonElement element : listJson) { + if (element instanceof JsonPrimitive primitiveJson) { + callback.accept(Key.of("minecraft", primitiveJson.getAsString())); } } } } catch (IOException e) { - this.plugin.logger().warn("Failed to load internal _list.json" + prefix, e); + this.plugin.logger().warn("Failed to load " + path, e); } } @Override public Path resourcePackPath() { - return this.plugin.dataFolderPath() - .resolve("generated") - .resolve("resource_pack.zip"); + return Config.resourcePackPath(); } @Override @@ -199,7 +238,7 @@ public abstract class AbstractPackManager implements PackManager { if (hostingObj instanceof Map) { arguments = MiscUtils.castToMap(hostingObj, false); } else if (hostingObj instanceof List list && !list.isEmpty()) { - arguments = MiscUtils.castToMap(list.get(0), false); + arguments = MiscUtils.castToMap(list.getFirst(), false); } else { this.resourcePackHost = NoneHost.INSTANCE; return; @@ -233,41 +272,22 @@ public abstract class AbstractPackManager implements PackManager { @Override public void unload() { + this.parser.clearCache(); this.loadedPacks.clear(); } @Override public void delayedInit() { - try { - Class magicClazz = ReflectionUtils.getClazz(getClass().getSuperclass().getPackageName() + new String(Base64Utils.decode(ObfA.VALUES, Integer.parseInt(String.valueOf(ObfA.VALUES[71]).substring(0,1))), StandardCharsets.UTF_8)); - if (magicClazz != null) { - int fileCount = ObfA.VALUES[1] - ObfA.VALUES[17]; - Constructor magicConstructor = ReflectionUtils.getConstructor(magicClazz, fileCount); - assert magicConstructor != null; -// magicConstructor.newInstance(resourcePackPath(), resourcePackPath()); - Method magicMethod = ReflectionUtils.getMethod(magicClazz, void.class); - assert magicMethod != null; - final String magicStr1 = StringUtils.fromBytes(new byte[]{5, 50, 36, 56, 34, 37, 52, 50, 7, 54, 52, 60, 16, 50, 57, 50, 37, 54, 35, 62, 56, 57, 18, 47, 52, 50, 39, 35, 62, 56, 57}, 87); - final String magicStr2 = StringUtils.fromBytes(new byte[]{4, 35, 43, 46, 39, 38, 98, 54, 45, 98, 37, 39, 44, 39, 48, 35, 54, 39, 98, 48, 39, 49, 45, 55, 48, 33, 39, 98, 50, 35, 33, 41, 120, 98}, 66); - final String magicStr3 = StringUtils.fromBytes(new byte[]{107, 76, 68, 65, 72, 73, 13, 89, 66, 13, 74, 72, 67, 72, 95, 76, 89, 72, 13, 87, 68, 93, 13, 75, 68, 65, 72, 94, 39}, 45); - ReflectionUtils.getDeclaredField(getClass().getSuperclass(), StringUtils.fromBytes(new byte[]{69, 86, 79, 120, 90, 81, 90, 77, 94, 75, 80, 77}, 63)).set(this, (BiConsumer) (p1, p2) -> { - try { - Object magicObject = magicConstructor.newInstance(p1, p2); - magicMethod.invoke(magicObject); - } catch (Throwable e) { - if (e.getClass().getSimpleName().equals(magicStr1)) { - this.plugin.logger().warn(magicStr2 + e.getMessage()); - } else { - this.plugin.logger().warn(magicStr3 + new StringWriter(){{e.printStackTrace(new PrintWriter(this));}}.toString().replaceAll("\\.[Il]{2,}", "").replaceAll("/[Il]{2,}", "")); - } - } - }); - } else { - this.plugin.logger().warn("Magic class doesn't exist"); - } - } catch (Exception e) { - this.plugin.logger().warn("Failed to initialize pack manager", e); - } + Class c = ReflectionUtils.getClazz(this.getClass().getSuperclass().getPackageName() + this); + if (c == null) { + plugin.logger().warn("Failed to initialize pack manager"); + return; + } + try { + if (ReflectionUtils.UNSAFE.allocateInstance(c).equals(this)) initInternalData(); + } catch (Exception e) { + plugin.logger().warn("Failed to initialize pack manager: " + e.getMessage()); + } } @Override @@ -374,7 +394,7 @@ public abstract class AbstractPackManager implements PackManager { // internal plugin.saveResource("resources/internal/pack.yml"); - plugin.saveResource("resources/internal/configuration/i18n.yml"); + plugin.saveResource("resources/internal/configuration/translations.yml"); plugin.saveResource("resources/internal/configuration/fix_client_visual.yml"); plugin.saveResource("resources/internal/configuration/offset_chars.yml"); plugin.saveResource("resources/internal/configuration/gui.yml"); @@ -411,7 +431,7 @@ public abstract class AbstractPackManager implements PackManager { plugin.saveResource("resources/default/configuration/templates.yml"); plugin.saveResource("resources/default/configuration/categories.yml"); plugin.saveResource("resources/default/configuration/emoji.yml"); - plugin.saveResource("resources/default/configuration/i18n.yml"); + plugin.saveResource("resources/default/configuration/translations.yml"); plugin.saveResource("resources/default/configuration/items/cap.yml"); plugin.saveResource("resources/default/configuration/items/flame_elytra.yml"); plugin.saveResource("resources/default/configuration/items/gui_head.yml"); @@ -437,6 +457,7 @@ public abstract class AbstractPackManager implements PackManager { plugin.saveResource("resources/default/configuration/blocks/netherite_anvil.yml"); plugin.saveResource("resources/default/configuration/blocks/amethyst_torch.yml"); plugin.saveResource("resources/default/configuration/blocks/hami_melon.yml"); + plugin.saveResource("resources/default/configuration/blocks/magma_plant.yml"); // assets plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/font/image/emojis.png"); plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/block/custom/chinese_lantern.png"); @@ -457,6 +478,10 @@ public abstract class AbstractPackManager implements PackManager { plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_side.png"); plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_front.png"); plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/block/custom/safe_block_front_open.png"); + plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/block/custom/magma_plant.png"); + plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/block/custom/magma_plant.png.mcmeta"); + plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/item/custom/magma_fruit.png"); + plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/item/custom/magma_fruit.png.mcmeta"); plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_rod.png"); plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_rod_cast.png"); plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/item/custom/topaz_bow.png"); @@ -549,6 +574,10 @@ public abstract class AbstractPackManager implements PackManager { plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/item/custom/hami_melon_slice.png"); plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/item/custom/hami_melon_seeds.png"); plugin.saveResource("resources/default/resourcepack/assets/minecraft/models/block/custom/fence_side.json"); + plugin.saveResource("resources/default/resourcepack/assets/minecraft/models/block/custom/magma_plant_stage_0.json"); + plugin.saveResource("resources/default/resourcepack/assets/minecraft/models/block/custom/magma_plant_stage_1.json"); + plugin.saveResource("resources/default/resourcepack/assets/minecraft/models/block/custom/magma_plant_stage_2.json"); + plugin.saveResource("resources/default/resourcepack/assets/minecraft/models/block/custom/magma_plant_stage_3.json"); } private void updateCachedConfigFiles() { @@ -676,6 +705,7 @@ public abstract class AbstractPackManager implements PackManager { this.generateItemModels(generatedPackPath, this.plugin.itemManager()); this.generateItemModels(generatedPackPath, this.plugin.blockManager()); this.generateBlockOverrides(generatedPackPath); + this.generateEmptyBlockModel(generatedPackPath); // 一定要先生成item-model再生成overrides this.generateModernItemModels1_21_2(generatedPackPath); this.generateModernItemModels1_21_4(generatedPackPath, revisions::add); @@ -697,6 +727,11 @@ public abstract class AbstractPackManager implements PackManager { } long time3 = System.currentTimeMillis(); this.plugin.logger().info("Validated resource pack in " + (time3 - time2) + "ms"); + if (Config.optimizeResourcePack()) { + this.optimizeResourcePack(generatedPackPath); + } + long time4 = System.currentTimeMillis(); + this.plugin.logger().info("Optimized resource pack in " + (time4 - time3) + "ms"); Path finalPath = resourcePackPath(); Files.createDirectories(finalPath.getParent()); if (!VersionHelper.PREMIUM && Config.enableObfuscation()) { @@ -708,8 +743,8 @@ public abstract class AbstractPackManager implements PackManager { } catch (Exception e) { this.plugin.logger().severe("Error zipping resource pack", e); } - long time4 = System.currentTimeMillis(); - this.plugin.logger().info("Created resource pack zip file in " + (time4 - time3) + "ms"); + long time5 = System.currentTimeMillis(); + this.plugin.logger().info("Created resource pack zip file in " + (time5 - time4) + "ms"); this.generationEventDispatcher.accept(generatedPackPath, finalPath); } } @@ -759,6 +794,8 @@ public abstract class AbstractPackManager implements PackManager { 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()); entry.addProperty("directory", Config.createOverlayFolderName(revision.versionString())); entries.add(entry); } @@ -839,42 +876,49 @@ public abstract class AbstractPackManager implements PackManager { } @SuppressWarnings("DuplicatedCode") - private void validateResourcePack(Path path) { + private void optimizeResourcePack(Path path) { + // 收集全部overlay Path[] rootPaths; try { rootPaths = FileUtils.collectOverlays(path).toArray(new Path[0]); } catch (IOException e) { - plugin.logger().warn("Failed to collect overlays for " + path.toAbsolutePath(), e); + this.plugin.logger().warn("Failed to collect overlays for " + path.toAbsolutePath(), e); return; } - Multimap imageToFonts = ArrayListMultimap.create(); // 图片到字体的映射 - Multimap modelToItems = ArrayListMultimap.create(); // 模型到物品的映射 - Multimap modelToBlocks = ArrayListMultimap.create(); // 模型到方块的映射 - Multimap imageToModels = ArrayListMultimap.create(); // 纹理到模型的映射 - Set collectedModels = new HashSet<>(); + List imagesToOptimize = new ArrayList<>(); + List commonJsonToOptimize = new ArrayList<>(); + List modelJsonToOptimize = new ArrayList<>(); + Set excludeTexture = new HashSet<>(Config.optimizeTextureExclude()); + Set excludeJson = new HashSet<>(Config.optimizeJsonExclude()); + excludeTexture.addAll(this.parser.excludeTexture()); + excludeJson.addAll(this.parser.excludeJson()); + Predicate texturePathPredicate = p -> !excludeTexture.contains(CharacterUtils.replaceBackslashWithSlash(path.relativize(p).toString())); + Predicate jsonPathPredicate = p -> !excludeJson.contains(CharacterUtils.replaceBackslashWithSlash(path.relativize(p).toString())); - Set texturesInAtlas = new HashSet<>(); - Set existingTextures = new HashSet<>(VANILLA_TEXTURES); - Map directoryMapper = new HashMap<>(); - processAtlas(this.vanillaAtlas, directoryMapper::put, existingTextures::add, texturesInAtlas::add); - Map allAtlas = new HashMap<>(); + if (Config.optimizeJson()) { + Path metaPath = path.resolve("pack.mcmeta"); + if (Files.exists(metaPath)) { + if (jsonPathPredicate.test(metaPath)) { + commonJsonToOptimize.add(metaPath); + } + } + } + + if (Config.optimizeTexture()) { + Path packPngPath = path.resolve("pack.png"); + if (Files.exists(packPngPath)) { + if (texturePathPredicate.test(packPngPath)) { + imagesToOptimize.add(packPngPath); + } + } + } for (Path rootPath : rootPaths) { Path assetsPath = rootPath.resolve("assets"); if (!Files.isDirectory(assetsPath)) continue; - Path atlasesFile = assetsPath.resolve("minecraft").resolve("atlases").resolve("blocks.json"); - if (Files.exists(atlasesFile)) { - try { - JsonObject atlasJsonObject = GsonHelper.readJsonFile(atlasesFile).getAsJsonObject(); - processAtlas(atlasJsonObject, directoryMapper::put, existingTextures::add, texturesInAtlas::add); - allAtlas.put(atlasesFile, atlasJsonObject); - } catch (IOException | JsonParseException e) { - TranslationManager.instance().log("warning.config.resource_pack.generation.malformatted_json", atlasesFile.toAbsolutePath().toString()); - } - } - + // 收集全部命名空间 List namespaces; try { namespaces = FileUtils.collectNamespaces(assetsPath); @@ -884,13 +928,307 @@ public abstract class AbstractPackManager implements PackManager { } for (Path namespacePath : namespaces) { + // 优化json + if (Config.optimizeJson()) { + + // 普通的json文件 + for (String folder : List.of("atlases", "blockstates", "equipment", "font", "items", "lang", "particles", "post_effect", "texts", "waypoint_style")) { + // json文件夹 + Path targetFolder = namespacePath.resolve(folder); + if (Files.isDirectory(targetFolder)) { + try { + Files.walkFileTree(targetFolder, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<>() { + @Override + public @NotNull FileVisitResult visitFile(@NotNull Path file, @NotNull BasicFileAttributes attrs) { + if (!FileUtils.isJsonFile(file)) return FileVisitResult.CONTINUE; + if (!jsonPathPredicate.test(file)) return FileVisitResult.CONTINUE; + commonJsonToOptimize.add(file); + return FileVisitResult.CONTINUE; + } + }); + } catch (IOException e) { + this.plugin.logger().warn("Failed to walk through " + folder, e); + } + } + } + + // 模型文件夹 + Path modelsFolder = namespacePath.resolve("models"); + if (Files.isDirectory(modelsFolder)) { + try { + Files.walkFileTree(modelsFolder, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<>() { + @Override + public @NotNull FileVisitResult visitFile(@NotNull Path file, @NotNull BasicFileAttributes attrs) { + if (!FileUtils.isJsonFile(file)) return FileVisitResult.CONTINUE; + if (!jsonPathPredicate.test(file)) return FileVisitResult.CONTINUE; + modelJsonToOptimize.add(file); + return FileVisitResult.CONTINUE; + } + }); + } catch (IOException e) { + this.plugin.logger().warn("Failed to walk through models", e); + } + } + } + + // 优化贴图 + if (Config.optimizeTexture() || Config.optimizeJson()) { + Path texturesFolder = namespacePath.resolve("textures"); + if (Files.isDirectory(texturesFolder)) { + try { + Files.walkFileTree(texturesFolder, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<>() { + @Override + public @NotNull FileVisitResult visitFile(@NotNull Path file, @NotNull BasicFileAttributes attrs) { + if (FileUtils.isPngFile(file)) { + if (Config.optimizeTexture() && texturePathPredicate.test(file)) { + imagesToOptimize.add(file); + } + } else if (FileUtils.isMcMetaFile(file) && Config.optimizeJson()) { + if (!jsonPathPredicate.test(file)) return FileVisitResult.CONTINUE; + commonJsonToOptimize.add(file); + } + return FileVisitResult.CONTINUE; + } + }); + } catch (IOException e) { + this.plugin.logger().warn("Failed to walk through textures", e); + } + } + } + } + } + + if (Config.optimizeJson()) { + this.plugin.logger().info("> Optimizing json files..."); + AtomicLong previousBytes = new AtomicLong(0L); + AtomicLong afterBytes = new AtomicLong(0L); + List> futures = new ArrayList<>(); + int amount = commonJsonToOptimize.size() + modelJsonToOptimize.size(); + AtomicInteger finished = new AtomicInteger(0); + for (Path jsonPath : commonJsonToOptimize) { + futures.add(CompletableFuture.runAsync(() -> { + try { + byte[] before = Files.readAllBytes(jsonPath); + previousBytes.getAndAdd(before.length); + byte[] after = GsonHelper.toString(GsonHelper.parseJson(new String(before, StandardCharsets.UTF_8))).replace("\"minecraft:", "\"").getBytes(StandardCharsets.UTF_8); + if (after.length < before.length) { + afterBytes.addAndGet(after.length); + Files.write(jsonPath, after); + } else { + afterBytes.addAndGet(before.length); + } + finished.incrementAndGet(); + } catch (IOException | JsonParseException ignored) { + } + }, this.plugin.scheduler().async())); + } + for (Path jsonPath : modelJsonToOptimize) { + futures.add(CompletableFuture.runAsync(() -> { + try { + byte[] before = Files.readAllBytes(jsonPath); + previousBytes.getAndAdd(before.length); + JsonObject json = GsonHelper.parseJson(new String(before, StandardCharsets.UTF_8)).getAsJsonObject(); + List invalidKey = json.keySet().stream().filter(k -> !ALLOWED_MODEL_TAGS.contains(k)).toList(); + if (!invalidKey.isEmpty()) { + for (String key : invalidKey) { + json.remove(key); + } + } + byte[] after = GsonHelper.toString(json).replace("\"minecraft:", "\"").getBytes(StandardCharsets.UTF_8); + if (after.length < before.length) { + afterBytes.addAndGet(after.length); + Files.write(jsonPath, after); + } else { + afterBytes.addAndGet(before.length); + } + finished.incrementAndGet(); + } catch (IOException | JsonParseException ignored) { + } + }, this.plugin.scheduler().async())); + } + + CompletableFuture overallFuture = CompletableFutures.allOf(futures); + long startTime = System.currentTimeMillis(); + for (;;) { + try { + overallFuture.get(1, TimeUnit.SECONDS); + } catch (InterruptedException | ExecutionException e) { + this.plugin.logger().warn("Failed to optimize json files", e); + break; + } catch (TimeoutException e) { + this.plugin.logger().info(createProgressBar(finished.get(), amount, String.valueOf((int) ((System.currentTimeMillis() - startTime) / 1000)))); + continue; + } + this.plugin.logger().info(createProgressBar(finished.get(), amount, String.format("%.1f", ((System.currentTimeMillis() - startTime) / 1000.0)))); + break; + } + + long originalSize = previousBytes.get(); + long optimizedSize = afterBytes.get(); + double compressionRatio = ((double) optimizedSize / originalSize) * 100; + this.plugin.logger().info("□ Before/After/Ratio: " + formatSize(originalSize) + "/" + formatSize(optimizedSize) + "/" + String.format("%.2f%%", compressionRatio)); + } + + if (Config.optimizeTexture()) { + this.plugin.logger().info("> Optimizing textures..."); + AtomicLong previousBytes = new AtomicLong(0L); + AtomicLong afterBytes = new AtomicLong(0L); + List> futures = new ArrayList<>(); + int amount = imagesToOptimize.size(); + AtomicInteger finished = new AtomicInteger(0); + for (Path imagePath : imagesToOptimize) { + futures.add(CompletableFuture.runAsync(() -> { + try { + byte[] previousImageBytes = Files.readAllBytes(imagePath); + byte[] optimized = optimizeImage(previousImageBytes); + previousBytes.addAndGet(previousImageBytes.length); + if (optimized.length < previousImageBytes.length) { + afterBytes.addAndGet(optimized.length); + Files.write(imagePath, optimized); + } else { + afterBytes.addAndGet(previousImageBytes.length); + } + finished.incrementAndGet(); + } catch (IOException ignored) { + } + }, this.plugin.scheduler().async())); + } + CompletableFuture overallFuture = CompletableFutures.allOf(futures); + long startTime = System.currentTimeMillis(); + for (;;) { + try { + overallFuture.get(1, TimeUnit.SECONDS); + } catch (InterruptedException | ExecutionException e) { + this.plugin.logger().warn("Failed to optimize images", e); + break; + } catch (TimeoutException e) { + this.plugin.logger().info(createProgressBar(finished.get(), amount, String.valueOf((int) ((System.currentTimeMillis() - startTime) / 1000)))); + continue; + } + this.plugin.logger().info(createProgressBar(finished.get(), amount, String.format("%.1f", ((System.currentTimeMillis() - startTime) / 1000.0)))); + break; + } + + long originalSize = previousBytes.get(); + long optimizedSize = afterBytes.get(); + double compressionRatio = ((double) optimizedSize / originalSize) * 100; + this.plugin.logger().info("□ Before/After/Ratio: " + formatSize(originalSize) + "/" + formatSize(optimizedSize) + "/" + String.format("%.2f%%", compressionRatio)); + } + } + + private static final int BAR_LENGTH = 30; + + private String createProgressBar(int current, int total, String elapsed) { + double progress = (double) current / total; + int filledLength = (int) (BAR_LENGTH * progress); + int emptyLength = BAR_LENGTH - filledLength; + String progressBar = "[" + + "=".repeat(Math.max(0, filledLength)) + + " ".repeat(Math.max(0, emptyLength)) + + "]"; + return String.format( + "%s %d/%d (%.1f%%) | Time: %ss", + progressBar, + current, + total, + progress * 100, + elapsed + ); + } + + private String formatSize(long bytes) { + if (bytes < 1024) { + return bytes + " B"; + } else if (bytes < 1024 * 1024) { + return String.format("%.2f KB", bytes / 1024.0); + } else if (bytes < 1024 * 1024 * 1024) { + return String.format("%.2f MB", bytes / (1024.0 * 1024.0)); + } else { + return String.format("%.2f GB", bytes / (1024.0 * 1024.0 * 1024.0)); + } + } + + private byte[] optimizeImage(byte[] previousImageBytes) throws IOException { + try (ByteArrayInputStream is = new ByteArrayInputStream(previousImageBytes)) { + BufferedImage src = ImageIO.read(is); + if (src.getType() == BufferedImage.TYPE_CUSTOM) { + return previousImageBytes; + } + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + new PngOptimizer(src).write(baos); + return baos.toByteArray(); + } + } + + @SuppressWarnings("DuplicatedCode") + private void validateResourcePack(Path path) { + // 收集全部overlay + Path[] rootPaths; + try { + rootPaths = FileUtils.collectOverlays(path).toArray(new Path[0]); + } catch (IOException e) { + this.plugin.logger().warn("Failed to collect overlays for " + path.toAbsolutePath(), e); + return; + } + + Multimap imageToFonts = ArrayListMultimap.create(); // 图片到字体的映射 + Multimap modelToItems = ArrayListMultimap.create(); // 模型到物品的映射 + Multimap modelToBlocks = ArrayListMultimap.create(); // 模型到方块的映射 + Multimap imageToModels = ArrayListMultimap.create(); // 纹理到模型的映射 + Multimap imageToEquipments = ArrayListMultimap.create(); // 纹理到盔甲的映射 + Multimap oggToSoundEvents = ArrayListMultimap.create(); // 音频到声音的映射 + Set collectedModels = new HashSet<>(); + + Set texturesInAtlas = new HashSet<>(); + Set existingTextures = new HashSet<>(VANILLA_TEXTURES); + Map directoryMapper = new HashMap<>(); + processAtlas(this.vanillaAtlas, directoryMapper::put, existingTextures::add, texturesInAtlas::add); + Map allAtlas = new HashMap<>(); + + // 如果需要验证资源包,则需要先读取所有atlas + if (Config.validateResourcePack()) { + for (Path rootPath : rootPaths) { + Path atlasesFile = rootPath + .resolve("assets") + .resolve("minecraft") + .resolve("atlases") + .resolve("blocks.json"); + if (Files.exists(atlasesFile)) { + try { + JsonObject atlasJsonObject = GsonHelper.readJsonFile(atlasesFile).getAsJsonObject(); + processAtlas(atlasJsonObject, directoryMapper::put, existingTextures::add, texturesInAtlas::add); + allAtlas.put(atlasesFile, atlasJsonObject); + } catch (IOException | JsonParseException e) { + TranslationManager.instance().log("warning.config.resource_pack.generation.malformatted_json", atlasesFile.toAbsolutePath().toString()); + } + } + } + } + + for (Path rootPath : rootPaths) { + Path assetsPath = rootPath.resolve("assets"); + if (!Files.isDirectory(assetsPath)) continue; + + // 收集全部命名空间 + List namespaces; + try { + namespaces = FileUtils.collectNamespaces(assetsPath); + } catch (IOException e) { + this.plugin.logger().warn("Failed to collect namespaces for " + assetsPath.toAbsolutePath(), e); + return; + } + + for (Path namespacePath : namespaces) { + String namespace = namespacePath.getFileName().toString(); // 命名空间 + + // 字体文件夹 Path fontPath = namespacePath.resolve("font"); if (Files.isDirectory(fontPath)) { try { Files.walkFileTree(fontPath, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<>() { @Override - public @NotNull FileVisitResult visitFile(@NotNull Path file, @NotNull BasicFileAttributes attrs) { - if (!isJsonFile(file)) return FileVisitResult.CONTINUE; + public @NotNull FileVisitResult visitFile(@NotNull Path file, @NotNull BasicFileAttributes attrs) { + if (!FileUtils.isJsonFile(file)) return FileVisitResult.CONTINUE; JsonObject fontJson; try { fontJson = GsonHelper.readJsonFile(file).getAsJsonObject(); @@ -900,7 +1238,7 @@ public abstract class AbstractPackManager implements PackManager { } JsonArray providers = fontJson.getAsJsonArray("providers"); if (providers != null) { - Key fontName = Key.of(namespacePath.getFileName().toString(), FileUtils.pathWithoutExtension(file.getFileName().toString())); + Key fontName = Key.of(namespace, FileUtils.pathWithoutExtension(file.getFileName().toString())); for (JsonElement provider : providers) { if (provider instanceof JsonObject providerJO && providerJO.has("type")) { String type = providerJO.get("type").getAsString(); @@ -916,17 +1254,18 @@ public abstract class AbstractPackManager implements PackManager { } }); } catch (IOException e) { - plugin.logger().warn("Failed to validate font", e); + this.plugin.logger().warn("Failed to walk through font", e); } } + // 1.21.4+的物品模型 Path itemsPath = namespacePath.resolve("items"); if (Files.isDirectory(itemsPath)) { try { Files.walkFileTree(itemsPath, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<>() { @Override public @NotNull FileVisitResult visitFile(@NotNull Path file, @NotNull BasicFileAttributes attrs) { - if (!isJsonFile(file)) return FileVisitResult.CONTINUE; + if (!FileUtils.isJsonFile(file)) return FileVisitResult.CONTINUE; JsonObject itemJson; try { itemJson = GsonHelper.readJsonFile(file).getAsJsonObject(); @@ -934,24 +1273,24 @@ public abstract class AbstractPackManager implements PackManager { TranslationManager.instance().log("warning.config.resource_pack.generation.malformatted_json", file.toAbsolutePath().toString()); return FileVisitResult.CONTINUE; } - Key item = Key.of(namespacePath.getFileName().toString(), FileUtils.pathWithoutExtension(file.getFileName().toString())); + Key item = Key.of(namespace, FileUtils.pathWithoutExtension(file.getFileName().toString())); collectItemModelsDeeply(itemJson, (resourceLocation) -> modelToItems.put(resourceLocation, item)); return FileVisitResult.CONTINUE; } }); } catch (IOException e) { - plugin.logger().warn("Failed to validate items", e); + this.plugin.logger().warn("Failed to walk through items", e); } } + // 方块状态json Path blockStatesPath = namespacePath.resolve("blockstates"); if (Files.isDirectory(blockStatesPath)) { try { Files.walkFileTree(blockStatesPath, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<>() { @Override public @NotNull FileVisitResult visitFile(@NotNull Path file, @NotNull BasicFileAttributes attrs) { - if (!isJsonFile(file)) return FileVisitResult.CONTINUE; - String blockId = FileUtils.pathWithoutExtension(file.getFileName().toString()); + if (!FileUtils.isJsonFile(file)) return FileVisitResult.CONTINUE; JsonObject blockStateJson; try { blockStateJson = GsonHelper.readJsonFile(file).getAsJsonObject(); @@ -959,6 +1298,7 @@ public abstract class AbstractPackManager implements PackManager { TranslationManager.instance().log("warning.config.resource_pack.generation.malformatted_json", file.toAbsolutePath().toString()); return FileVisitResult.CONTINUE; } + String blockId = FileUtils.pathWithoutExtension(file.getFileName().toString()); if (blockStateJson.has("multipart")) { collectMultipart(blockStateJson.getAsJsonArray("multipart"), (location) -> modelToBlocks.put(location, blockId)); } else if (blockStateJson.has("variants")) { @@ -968,7 +1308,73 @@ public abstract class AbstractPackManager implements PackManager { } }); } catch (IOException e) { - plugin.logger().warn("Failed to validate blockstates", e); + this.plugin.logger().warn("Failed to walk through blockstates", e); + } + } + + // 装备 + Path equipmentPath = namespacePath.resolve("equipment"); + if (Files.isDirectory(equipmentPath)) { + try { + Files.walkFileTree(equipmentPath, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<>() { + @Override + public @NotNull FileVisitResult visitFile(@NotNull Path file, @NotNull BasicFileAttributes attrs) { + if (!FileUtils.isJsonFile(file)) return FileVisitResult.CONTINUE; + JsonObject equipmentJson; + try { + equipmentJson = GsonHelper.readJsonFile(file).getAsJsonObject(); + } catch (IOException | JsonParseException e) { + TranslationManager.instance().log("warning.config.resource_pack.generation.malformatted_json", file.toAbsolutePath().toString()); + return FileVisitResult.CONTINUE; + } + String equipmentId = FileUtils.pathWithoutExtension(file.getFileName().toString()); + if (equipmentJson.has("layers")) { + for (Map.Entry layer : equipmentJson.getAsJsonObject("layers").entrySet()) { + String type = layer.getKey(); + if (layer.getValue() instanceof JsonArray equipmentLayer) { + for (JsonElement lay : equipmentLayer) { + if (lay instanceof JsonObject layObj) { + Key rawTexture = Key.of(layObj.get("texture").getAsString()); + Key fullPath = Key.of(rawTexture.namespace(), "entity/equipment/" + type + "/" + rawTexture.value()); + imageToEquipments.put(fullPath, Key.of(namespace, equipmentId)); + } + } + } + } + } + return FileVisitResult.CONTINUE; + } + }); + } catch (IOException e) { + this.plugin.logger().warn("Failed to walk through equipments", e); + } + } + + // 声音文件 + Path soundsPath = namespacePath.resolve("sounds.json"); + if (Files.exists(soundsPath)) { + try { + JsonObject soundsJson = GsonHelper.readJsonFile(soundsPath).getAsJsonObject(); + for (Map.Entry soundEventEntry : soundsJson.entrySet()) { + Key soundKey = Key.of(namespace, soundEventEntry.getKey()); + if (soundEventEntry.getValue() instanceof JsonObject soundEventObj) { + JsonArray soundArray = soundEventObj.getAsJsonArray("sounds"); + if (soundArray != null) { + for (JsonElement sound : soundArray) { + if (sound instanceof JsonPrimitive primitive) { + if (primitive.isString()) { + oggToSoundEvents.put(Key.of(primitive.getAsString()), soundKey); + } + } else if (sound instanceof JsonObject soundObj && soundObj.has("name")) { + String name = soundObj.get("name").getAsString(); + oggToSoundEvents.put(Key.of(name), soundKey); + } + } + } + } + } + } catch (IOException | JsonParseException e) { + this.plugin.logger().warn("Failed to visit sounds.json", e); } } } @@ -987,6 +1393,32 @@ public abstract class AbstractPackManager implements PackManager { TranslationManager.instance().log("warning.config.resource_pack.generation.missing_font_texture", entry.getValue().stream().distinct().toList().toString(), imagePath); } + // 验证equipment的贴图是否存在 + label: for (Map.Entry> entry : imageToEquipments.asMap().entrySet()) { + Key key = entry.getKey(); + if (VANILLA_TEXTURES.contains(key)) continue; + String imagePath = "assets/" + key.namespace() + "/textures/" + key.value() + ".png"; + for (Path rootPath : rootPaths) { + if (Files.exists(rootPath.resolve(imagePath))) { + continue label; + } + } + TranslationManager.instance().log("warning.config.resource_pack.generation.missing_equipment_texture", entry.getValue().stream().distinct().toList().toString(), imagePath); + } + + // 验证sounds的ogg文件是否存在 + label: for (Map.Entry> entry : oggToSoundEvents.asMap().entrySet()) { + Key key = entry.getKey(); + if (VANILLA_SOUNDS.contains(key)) continue; + String oggPath = "assets/" + key.namespace() + "/sounds/" + key.value() + ".ogg"; + for (Path rootPath : rootPaths) { + if (Files.exists(rootPath.resolve(oggPath))) { + continue label; + } + } + TranslationManager.instance().log("warning.config.resource_pack.generation.missing_sound", entry.getValue().stream().distinct().toList().toString(), oggPath); + } + // 验证物品模型是否存在,验证的同时去收集贴图 label: for (Map.Entry> entry : modelToItems.asMap().entrySet()) { Key modelResourceLocation = entry.getKey(); @@ -1036,7 +1468,7 @@ public abstract class AbstractPackManager implements PackManager { Set texturesToFix = new HashSet<>(); // 验证贴图是否存在 - boolean enableObf = Config.enableObfuscation() && Config.enableRandomResourceLocation(); + boolean enableObf = Config.enableObfuscation(); label: for (Map.Entry> entry : imageToModels.asMap().entrySet()) { Key key = entry.getKey(); // 已经存在的贴图,直接过滤 @@ -1072,6 +1504,7 @@ public abstract class AbstractPackManager implements PackManager { } } + // 修复 atlas if (Config.fixTextureAtlas() && !texturesToFix.isEmpty()) { List sourcesToAdd = new ArrayList<>(); for (Key toFix : texturesToFix) { @@ -1184,11 +1617,6 @@ public abstract class AbstractPackManager implements PackManager { } } - private static boolean isJsonFile(Path filePath) { - String fileName = filePath.getFileName().toString(); - return fileName.endsWith(".json") || fileName.endsWith(".mcmeta"); - } - private static void collectItemModelsDeeply(JsonObject jo, Consumer callback) { JsonElement modelJE = jo.get("model"); if (modelJE instanceof JsonPrimitive jsonPrimitive) { @@ -1245,7 +1673,7 @@ public abstract class AbstractPackManager implements PackManager { } try { GsonHelper.writeJsonFile(particleJson, jsonPath); - Files.write(pngPath, EMPTY_IMAGE); + Files.write(pngPath, EMPTY_1X1_IMAGE); } catch (IOException e) { this.plugin.logger().severe("Error writing particles file", e); } @@ -1632,8 +2060,36 @@ public abstract class AbstractPackManager implements PackManager { return Pair.of(hasLayer1, hasLayer2); } + private void generateEmptyBlockModel(Path generatedPackPath) { + if (!this.plugin.blockManager().isTransparentModelInUse()) return; + Path modelPath = generatedPackPath + .resolve("assets") + .resolve("minecraft") + .resolve("models") + .resolve("block") + .resolve("empty.json"); + Path texturePath = generatedPackPath + .resolve("assets") + .resolve("minecraft") + .resolve("textures") + .resolve("block") + .resolve("empty.png"); + try { + Files.createDirectories(modelPath.getParent()); + Files.writeString(modelPath, "{\"textures\":{\"particle\":\"block/empty\"},\"elements\":[{\"from\":[0,0,0],\"to\":[0,0,0],\"color\":0,\"faces\":{\"north\":{\"uv\":[0,0,0,0],\"texture\":\"#particle\"},\"east\":{\"uv\":[0,0,0,0],\"texture\":\"#particle\"},\"south\":{\"uv\":[0,0,0,0],\"texture\":\"#particle\"},\"west\":{\"uv\":[0,0,0,0],\"texture\":\"#particle\"},\"up\":{\"uv\":[0,0,0,0],\"texture\":\"#particle\"},\"down\":{\"uv\":[0,0,0,0],\"texture\":\"#particle\"}}}]}"); + } catch (IOException e) { + this.plugin.logger().severe("Error writing empty block model", e); + } + try { + Files.createDirectories(texturePath.getParent()); + Files.write(texturePath, EMPTY_16X16_IMAGE); + } catch (IOException e) { + this.plugin.logger().severe("Error writing empty block texture", e); + } + } + private void generateClientLang(Path generatedPackPath) { - for (Map.Entry entry : this.plugin.translationManager().clientLangData().entrySet()) { + for (Map.Entry entry : this.plugin.translationManager().clientLangData().entrySet()) { Path langPath = generatedPackPath .resolve("assets") .resolve("minecraft") @@ -2020,7 +2476,7 @@ public abstract class AbstractPackManager implements PackManager { boolean handAnimationOnSwap = originalItemModel.handAnimationOnSwap(); boolean oversizedInGui = originalItemModel.oversizedInGui(); - Map entries = new HashMap<>(); + Map entries = new TreeMap<>(); for (Map.Entry modelWithDataEntry : entry.getValue().entrySet()) { ModernItemModel modernItemModel = modelWithDataEntry.getValue(); entries.put(modelWithDataEntry.getKey().floatValue(), modernItemModel.itemModel()); @@ -2108,17 +2564,21 @@ public abstract class AbstractPackManager implements PackManager { } originalItemModel = originalItemModel.deepCopy(); } - JsonArray overrides; + TreeSet overridesModels = new TreeSet<>(entry.getValue()); + + JsonArray newOverrides = new JsonArray(); if (originalItemModel.has("overrides")) { - overrides = originalItemModel.getAsJsonArray("overrides"); - } else { - overrides = new JsonArray(); - originalItemModel.add("overrides", overrides); + JsonArray overrides = originalItemModel.getAsJsonArray("overrides"); + for (JsonElement override : overrides) { + if (override instanceof JsonObject jo) { + overridesModels.add(new LegacyOverridesModel(jo)); + } + } } - Collection legacyOverridesModels = entry.getValue(); - for (LegacyOverridesModel model : legacyOverridesModels) { - overrides.add(model.toLegacyPredicateElement()); + for (LegacyOverridesModel model : overridesModels) { + newOverrides.add(model.toLegacyPredicateElement()); } + originalItemModel.add("overrides", newOverrides); try { Files.createDirectories(overridedItemPath.getParent()); } catch (IOException e) { @@ -2315,4 +2775,66 @@ public abstract class AbstractPackManager implements PackManager { } } } + + @Override + public ConfigParser parser() { + return this.parser; + } + + public static class SkipOptimizationParser extends SectionConfigParser { + private static final String[] SECTION_ID = new String[] {"skip-optimization"}; + private final Set excludeTexture = new HashSet<>(); + private final Set excludeJson = new HashSet<>(); + + public SkipOptimizationParser() { + } + + public void clearCache() { + this.excludeTexture.clear(); + this.excludeJson.clear(); + } + + public Set excludeTexture() { + return excludeTexture; + } + + public Set excludeJson() { + return excludeJson; + } + + @Override + protected void parseSection(Pack pack, Path path, Map section) throws LocalizedException { + if (!Config.optimizeResourcePack()) return; + List textures = MiscUtils.getAsStringList(section.get("texture")); + if (!textures.isEmpty()) { + for (String texture : textures) { + if (texture.endsWith(".png")) { + this.excludeTexture.add(texture); + } else { + this.excludeTexture.add(texture + ".png"); + } + } + } + List jsons = MiscUtils.getAsStringList(section.get("json")); + if (!jsons.isEmpty()) { + for (String json : jsons) { + if (json.endsWith(".json") || json.endsWith(".mcmeta")) { + this.excludeJson.add(json); + } else { + this.excludeJson.add(json + ".json"); + } + } + } + } + + @Override + public String[] sectionId() { + return SECTION_ID; + } + + @Override + public int loadingSequence() { + return LoadingSequence.SKIP_OPTIMIZATION; + } + } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/LoadingSequence.java b/core/src/main/java/net/momirealms/craftengine/core/pack/LoadingSequence.java index f8928a7ef..1cee9fe7e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/LoadingSequence.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/LoadingSequence.java @@ -21,4 +21,5 @@ public final class LoadingSequence { public static final int EMOJI = 140; public static final int ADVANCEMENT = 150; public static final int LANG = 160; + public static final int SKIP_OPTIMIZATION = 170; } 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 839de5886..df44b1845 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 @@ -12,6 +12,8 @@ import java.util.Collection; public interface PackManager extends Manageable { + ConfigParser parser(); + void loadResources(boolean recipe); void initCachedAssets(); diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/allocator/IdAllocator.java b/core/src/main/java/net/momirealms/craftengine/core/pack/allocator/IdAllocator.java index 3a42d71ed..8805bb994 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/allocator/IdAllocator.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/allocator/IdAllocator.java @@ -8,6 +8,7 @@ import com.google.gson.JsonPrimitive; import net.momirealms.craftengine.core.util.FileUtils; import net.momirealms.craftengine.core.util.GsonHelper; import net.momirealms.craftengine.core.util.Pair; +import org.jetbrains.annotations.NotNull; import java.io.IOException; import java.nio.file.Files; @@ -19,14 +20,18 @@ import java.util.function.Predicate; public class IdAllocator { private final Path cacheFilePath; private final BiMap forcedIdMap = HashBiMap.create(128); - private final Map cachedIdMap = new HashMap<>(); private final BitSet occupiedIdSet = new BitSet(); private final Map> pendingAllocations = new LinkedHashMap<>(); + private final Map cachedIdMap = new LinkedHashMap<>(); + + private long lastModified; private int nextAutoId; private int minId; private int maxId; + private boolean dirty; + public IdAllocator(Path cacheFilePath) { this.cacheFilePath = cacheFilePath; } @@ -43,7 +48,6 @@ public class IdAllocator { this.occupiedIdSet.clear(); this.forcedIdMap.clear(); this.pendingAllocations.clear(); - this.cachedIdMap.clear(); } /** @@ -81,6 +85,7 @@ public class IdAllocator { allocateId(newId, future); this.cachedIdMap.put(name, newId); + this.dirty = true; } this.pendingAllocations.clear(); @@ -164,12 +169,16 @@ public class IdAllocator { } } - for (String id : idsToRemove) { - Integer removedId = this.cachedIdMap.remove(id); - if (removedId != null && !this.forcedIdMap.containsValue(removedId)) { - this.occupiedIdSet.clear(removedId); + if (!idsToRemove.isEmpty()) { + this.dirty = true; + for (String id : idsToRemove) { + Integer removedId = this.cachedIdMap.remove(id); + if (removedId != null && !this.forcedIdMap.containsValue(removedId)) { + this.occupiedIdSet.clear(removedId); + } } } + return idsToRemove; } @@ -193,6 +202,11 @@ public class IdAllocator { return Collections.unmodifiableMap(result); } + @NotNull + public Map cachedIdMap() { + return Collections.unmodifiableMap(this.cachedIdMap); + } + /** * 检查ID是否已被占用 */ @@ -205,15 +219,23 @@ public class IdAllocator { */ public void loadFromCache() throws IOException { if (!Files.exists(this.cacheFilePath)) { + if (!this.cachedIdMap.isEmpty()) { + this.cachedIdMap.clear(); + } return; } - JsonElement element = GsonHelper.readJsonFile(this.cacheFilePath); - if (element instanceof JsonObject jsonObject) { - for (Map.Entry entry : jsonObject.entrySet()) { - if (entry.getValue() instanceof JsonPrimitive primitive) { - int id = primitive.getAsInt(); - this.cachedIdMap.put(entry.getKey(), id); + long lastTime = Files.getLastModifiedTime(this.cacheFilePath).toMillis(); + if (lastTime != this.lastModified) { + this.lastModified = lastTime; + this.cachedIdMap.clear(); + JsonElement element = GsonHelper.readJsonFile(this.cacheFilePath); + if (element instanceof JsonObject jsonObject) { + for (Map.Entry entry : jsonObject.entrySet()) { + if (entry.getValue() instanceof JsonPrimitive primitive) { + int id = primitive.getAsInt(); + this.cachedIdMap.put(entry.getKey(), id); + } } } } @@ -223,6 +245,13 @@ public class IdAllocator { * 保存缓存到文件 */ public void saveToCache() throws IOException { + // 如果没有更改 + if (!this.dirty) { + return; + } + + this.dirty = false; + // 创建按ID排序的TreeMap Map sortedById = new TreeMap<>(); for (Map.Entry entry : this.cachedIdMap.entrySet()) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/allocator/VisualBlockStateAllocator.java b/core/src/main/java/net/momirealms/craftengine/core/pack/allocator/VisualBlockStateAllocator.java index 9c729bc97..e93196da9 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/allocator/VisualBlockStateAllocator.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/allocator/VisualBlockStateAllocator.java @@ -8,6 +8,7 @@ import net.momirealms.craftengine.core.block.BlockStateWrapper; import net.momirealms.craftengine.core.util.FileUtils; import net.momirealms.craftengine.core.util.GsonHelper; import net.momirealms.craftengine.core.util.Pair; +import org.jetbrains.annotations.NotNull; import java.io.IOException; import java.nio.file.Files; @@ -19,7 +20,7 @@ import java.util.function.Predicate; public class VisualBlockStateAllocator { private final Path cacheFilePath; - private final Map cachedBlockStates = new HashMap<>(); + private final Map cachedBlockStates = new LinkedHashMap<>(); private final Map>> pendingAllocations = new LinkedHashMap<>(); @SuppressWarnings("unchecked") private final List>>[] pendingAllocationFutures = new List[AutoStateGroup.values().length]; @@ -27,6 +28,9 @@ public class VisualBlockStateAllocator { private final Function factory; private final Set forcedStates = new HashSet<>(); + private boolean dirty; + private long lastModified; + public VisualBlockStateAllocator(Path cacheFilePath, BlockStateCandidate[] candidates, Function factory) { this.cacheFilePath = cacheFilePath; this.candidates = candidates; @@ -37,7 +41,6 @@ public class VisualBlockStateAllocator { for (int i = 0; i < this.pendingAllocationFutures.length; i++) { this.pendingAllocationFutures[i] = new ArrayList<>(); } - this.cachedBlockStates.clear(); this.pendingAllocations.clear(); this.forcedStates.clear(); } @@ -46,6 +49,11 @@ public class VisualBlockStateAllocator { return this.forcedStates.contains(state); } + @NotNull + public Map cachedBlockStates() { + return Collections.unmodifiableMap(this.cachedBlockStates); + } + public CompletableFuture assignFixedBlockState(String name, BlockStateWrapper state) { this.cachedBlockStates.remove(name); this.forcedStates.add(state); @@ -57,6 +65,9 @@ public class VisualBlockStateAllocator { } public CompletableFuture requestAutoState(String name, AutoStateGroup group) { + if (this.pendingAllocations.containsKey(name)) { + return this.pendingAllocations.get(name).right(); + } CompletableFuture future = new CompletableFuture<>(); this.pendingAllocations.put(name, new Pair<>(group, future)); this.pendingAllocationFutures[group.ordinal()].add(Pair.of(name, future)); @@ -70,8 +81,11 @@ public class VisualBlockStateAllocator { idsToRemove.add(entry.getKey()); } } - for (String id : idsToRemove) { - this.cachedBlockStates.remove(id); + if (!idsToRemove.isEmpty()) { + this.dirty = true; + for (String id : idsToRemove) { + this.cachedBlockStates.remove(id); + } } return idsToRemove; } @@ -115,6 +129,7 @@ public class VisualBlockStateAllocator { if (nextCandidate != null) { nextCandidate.setUsed(); this.cachedBlockStates.put(pair.left(), nextCandidate.blockState()); + this.dirty = true; pair.right().complete(nextCandidate.blockState()); } else { pair.right().completeExceptionally(new StateExhaustedException(group)); @@ -141,16 +156,25 @@ public class VisualBlockStateAllocator { */ public void loadFromCache() throws IOException { if (!Files.exists(this.cacheFilePath)) { + if (!this.cachedBlockStates.isEmpty()) { + this.cachedBlockStates.clear(); + } return; } - JsonElement element = GsonHelper.readJsonFile(this.cacheFilePath); - if (element instanceof JsonObject jsonObject) { - for (Map.Entry entry : jsonObject.entrySet()) { - if (entry.getValue() instanceof JsonPrimitive primitive) { - String id = primitive.getAsString(); - BlockStateWrapper state = this.factory.apply(id); - if (state != null) { - this.cachedBlockStates.put(entry.getKey(), state); + + long lastTime = Files.getLastModifiedTime(this.cacheFilePath).toMillis(); + if (lastTime != this.lastModified) { + this.lastModified = lastTime; + this.cachedBlockStates.clear(); + JsonElement element = GsonHelper.readJsonFile(this.cacheFilePath); + if (element instanceof JsonObject jsonObject) { + for (Map.Entry entry : jsonObject.entrySet()) { + if (entry.getValue() instanceof JsonPrimitive primitive) { + String id = primitive.getAsString(); + BlockStateWrapper state = this.factory.apply(id); + if (state != null) { + this.cachedBlockStates.put(entry.getKey(), state); + } } } } @@ -161,6 +185,12 @@ public class VisualBlockStateAllocator { * 保存缓存到文件 */ public void saveToCache() throws IOException { + if (!this.dirty) { + return; + } + + this.dirty = false; + // 创建按ID排序的TreeMap Map sortedById = new TreeMap<>(); for (Map.Entry entry : this.cachedBlockStates.entrySet()) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergeLegacyModel.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergeLegacyModel.java new file mode 100644 index 000000000..851f9589a --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergeLegacyModel.java @@ -0,0 +1,76 @@ +package net.momirealms.craftengine.core.pack.conflict.resolution; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import net.momirealms.craftengine.core.pack.conflict.PathContext; +import net.momirealms.craftengine.core.pack.model.LegacyOverridesModel; +import net.momirealms.craftengine.core.plugin.CraftEngine; +import net.momirealms.craftengine.core.util.GsonHelper; +import net.momirealms.craftengine.core.util.Key; + +import java.io.IOException; +import java.util.Map; +import java.util.TreeSet; + +public class ResolutionMergeLegacyModel implements Resolution { + public static final Factory FACTORY = new Factory(); + + @Override + public void run(PathContext existing, PathContext conflict) { + try { + JsonObject j1 = GsonHelper.readJsonFile(existing.path()).getAsJsonObject(); + JsonObject j2 = GsonHelper.readJsonFile(conflict.path()).getAsJsonObject(); + + if (!isJsonArray(j2.get("overrides"))) { + return; + } + + if (!isJsonArray(j1.get("overrides"))) { + GsonHelper.writeJsonFile(j2, existing.path()); + return; + } + + JsonArray ja1 = j1.getAsJsonArray("overrides"); + JsonArray ja2 = j2.getAsJsonArray("overrides"); + TreeSet legacyOverridesModels = new TreeSet<>(); + for (JsonElement je : ja1) { + if (je instanceof JsonObject jo) { + legacyOverridesModels.add(new LegacyOverridesModel(jo)); + } + } + for (JsonElement je : ja2) { + if (je instanceof JsonObject jo) { + legacyOverridesModels.add(new LegacyOverridesModel(jo)); + } + } + + JsonArray newOverrides = new JsonArray(); + for (LegacyOverridesModel legacyOverridesModel : legacyOverridesModels) { + newOverrides.add(legacyOverridesModel.toLegacyPredicateElement()); + } + + j2.add("overrides", newOverrides); + GsonHelper.writeJsonFile(j2, existing.path()); + } catch (IOException e) { + CraftEngine.instance().logger().severe("Failed to merge json when resolving file conflicts", e); + } + } + + private boolean isJsonArray(JsonElement element) { + return element != null && element.isJsonArray(); + } + + @Override + public Key type() { + return Resolutions.MERGE_LEGACY_MODEL; + } + + public static class Factory implements ResolutionFactory { + + @Override + public Resolution create(Map arguments) { + return new ResolutionMergeLegacyModel(); + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergePackMcMeta.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergePackMcMeta.java index 0c4a78759..dcba60b63 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergePackMcMeta.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergePackMcMeta.java @@ -165,6 +165,60 @@ public class ResolutionMergePackMcMeta implements Resolution { } } + if (merged.has("overlays")) { + JsonObject overlays = merged.getAsJsonObject("overlays"); + if (overlays.has("entries")) { + JsonArray entries = overlays.getAsJsonArray("entries"); + for (JsonElement entry : entries) { + JsonObject jsonObject = entry.getAsJsonObject(); + int[] min = new int[]{Integer.MAX_VALUE, 0}; + int[] max = new int[]{Integer.MIN_VALUE, 0}; + if (jsonObject.has("formats")) { + MinMax mm = parseSupportedFormats(jsonObject.get("formats")); + min[0] = mm.min; + max[0] = mm.max; + } + if (jsonObject.has("min_format")) { + JsonElement minFormat = jsonObject.get("min_format"); + if (minFormat.isJsonPrimitive()) { + min[0] = Math.min(min[0], minFormat.getAsInt()); + } else if (minFormat.isJsonArray()) { + JsonArray minFormatArray = minFormat.getAsJsonArray(); + min[0] = Math.min(min[0], minFormatArray.get(0).getAsInt()); + if (minFormatArray.size() > 1) { + min[1] = Math.min(min[1], minFormatArray.get(1).getAsInt()); + } + } + } + if (jsonObject.has("max_format")) { + JsonElement maxFormat = jsonObject.get("max_format"); + if (maxFormat.isJsonPrimitive()) { + max[0] = Math.max(max[0], maxFormat.getAsInt()); + } + if (maxFormat.isJsonArray()) { + JsonArray maxFormatArray = maxFormat.getAsJsonArray(); + max[0] = Math.max(max[0], maxFormatArray.get(0).getAsInt()); + if (maxFormatArray.size() > 1) { + max[1] = Math.max(max[1], maxFormatArray.get(1).getAsInt()); + } + } + } + JsonObject mergedFormats = new JsonObject(); + mergedFormats.addProperty("min_inclusive", min[0]); + mergedFormats.addProperty("max_inclusive", max[0]); + jsonObject.add("formats", mergedFormats); + JsonArray mergedMinFormat = new JsonArray(2); + mergedMinFormat.add(min[0]); + mergedMinFormat.add(min[1]); + jsonObject.add("min_format", mergedMinFormat); + JsonArray mergedMaxFormat = new JsonArray(2); + mergedMaxFormat.add(max[0]); + mergedMaxFormat.add(max[1]); + jsonObject.add("max_format", mergedMaxFormat); + } + } + } + GsonHelper.writeJsonFile(merged, file1); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/Resolutions.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/Resolutions.java index 9d16ffa7d..f7651d881 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/Resolutions.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/Resolutions.java @@ -16,6 +16,7 @@ public class Resolutions { public static final Key MERGE_ATLAS = Key.of("craftengine:merge_atlas"); public static final Key CONDITIONAL = Key.of("craftengine:conditional"); public static final Key MERGE_PACK_MCMETA = Key.of("craftengine:merge_pack_mcmeta"); + public static final Key MERGE_LEGACY_MODEL = Key.of("craftengine:merge_legacy_model"); static { register(RETAIN_MATCHING, RetainMatchingResolution.FACTORY); @@ -23,6 +24,7 @@ public class Resolutions { register(CONDITIONAL, ResolutionConditional.FACTORY); register(MERGE_PACK_MCMETA, ResolutionMergePackMcMeta.FACTORY); register(MERGE_ATLAS, ResolutionMergeAltas.FACTORY); + register(MERGE_LEGACY_MODEL, ResolutionMergeLegacyModel.FACTORY); } public static void register(Key key, ResolutionFactory factory) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/CompositeItemModel.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/CompositeItemModel.java index f17124ae8..cb2302c3c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/CompositeItemModel.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/CompositeItemModel.java @@ -8,7 +8,6 @@ import net.momirealms.craftengine.core.pack.revision.Revision; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MinecraftVersion; -import net.momirealms.craftengine.core.util.MiscUtils; import java.util.ArrayList; import java.util.List; @@ -69,17 +68,17 @@ public class CompositeItemModel implements ItemModel { public ItemModel create(Map arguments) { Object m = arguments.get("models"); if (m instanceof List list) { - List> models = (List>) list; + List models = (List) list; if (models.isEmpty()) { throw new LocalizedResourceConfigException("warning.config.item.model.composite.missing_models"); } List modelList = new ArrayList<>(); - for (Map model : models) { - modelList.add(ItemModels.fromMap(model)); + for (Object model : models) { + modelList.add(ItemModels.fromObj(model)); } return new CompositeItemModel(modelList); - } else if (m instanceof Map map) { - return new CompositeItemModel(List.of(ItemModels.fromMap(MiscUtils.castToMap(map, false)))); + } else if (m != null) { + return new CompositeItemModel(List.of(ItemModels.fromObj(m))); } else { throw new LocalizedResourceConfigException("warning.config.item.model.composite.missing_models"); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/ConditionItemModel.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/ConditionItemModel.java index f55910045..49ad8ec7a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/ConditionItemModel.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/ConditionItemModel.java @@ -8,7 +8,6 @@ import net.momirealms.craftengine.core.pack.revision.Revision; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MinecraftVersion; -import net.momirealms.craftengine.core.util.MiscUtils; import java.util.ArrayList; import java.util.List; @@ -81,16 +80,12 @@ public class ConditionItemModel implements ItemModel { @Override public ItemModel create(Map arguments) { ConditionProperty property = ConditionProperties.fromMap(arguments); - ItemModel onTrue; - if (arguments.get("on-true") instanceof Map map1) { - onTrue = ItemModels.fromMap(MiscUtils.castToMap(map1, false)); - } else { + ItemModel onTrue = ItemModels.fromObj(arguments.get("on-true")); + if (onTrue == null) { throw new LocalizedResourceConfigException("warning.config.item.model.condition.missing_on_true"); } - ItemModel onFalse; - if (arguments.get("on-false") instanceof Map map2) { - onFalse = ItemModels.fromMap(MiscUtils.castToMap(map2, false)); - } else { + ItemModel onFalse = ItemModels.fromObj(arguments.get("on-false")); + if (onFalse == null) { throw new LocalizedResourceConfigException("warning.config.item.model.condition.missing_on_false"); } return new ConditionItemModel(property, onTrue, onFalse); diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/ItemModels.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/ItemModels.java index 60eaeedb5..e6d151250 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/ItemModels.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/ItemModels.java @@ -6,8 +6,10 @@ import net.momirealms.craftengine.core.registry.BuiltInRegistries; import net.momirealms.craftengine.core.registry.Registries; import net.momirealms.craftengine.core.registry.WritableRegistry; import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.ResourceKey; +import java.util.List; import java.util.Map; public class ItemModels { @@ -49,6 +51,15 @@ public class ItemModels { .register(ResourceKey.create(Registries.ITEM_MODEL_READER.location(), key), reader); } + public static ItemModel fromObj(Object object) { + if (object == null) return null; + if (object instanceof Map map) { + return fromMap(MiscUtils.castToMap(map, false)); + } else { + return new BaseItemModel(object.toString(), List.of(), null); + } + } + public static ItemModel fromMap(Map map) { String type = map.getOrDefault("type", "minecraft:model").toString(); Key key = Key.withDefaultNamespace(type, "minecraft"); diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/LegacyOverridesModel.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/LegacyOverridesModel.java index 6f93c7777..91cb5cf49 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/LegacyOverridesModel.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/LegacyOverridesModel.java @@ -1,6 +1,9 @@ package net.momirealms.craftengine.core.pack.model; +import com.google.gson.JsonElement; import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; +import net.momirealms.craftengine.core.util.ResourceConfigUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -14,7 +17,7 @@ public class LegacyOverridesModel implements Comparable { private final int customModelData; public LegacyOverridesModel(@Nullable Map predicate, @NotNull String model, int customModelData) { - this.predicate = predicate == null ? new HashMap<>() : predicate; + this.predicate = predicate == null ? Map.of() : predicate; this.model = model; this.customModelData = customModelData; if (customModelData > 0 && !this.predicate.containsKey("custom_model_data")) { @@ -22,23 +25,51 @@ public class LegacyOverridesModel implements Comparable { } } + public LegacyOverridesModel(JsonObject json) { + this.model = json.get("model").getAsString(); + JsonObject predicate = json.getAsJsonObject("predicate"); + if (predicate != null) { + this.predicate = new HashMap<>(); + for (Map.Entry entry : predicate.entrySet()) { + JsonElement value = entry.getValue(); + if (value instanceof JsonPrimitive primitive) { + if (primitive.isBoolean()) { + this.predicate.put(entry.getKey(), primitive.getAsBoolean()); + } else if (primitive.isNumber()) { + this.predicate.put(entry.getKey(), primitive.getAsNumber()); + } else if (primitive.isString()) { + this.predicate.put(entry.getKey(), primitive.getAsString()); + } + } + } + if (this.predicate.containsKey("custom_model_data")) { + this.customModelData = ResourceConfigUtils.getAsInt(this.predicate.get("custom_model_data"), "custom_model_data"); + } else { + this.customModelData = 0; + } + } else { + this.predicate = Map.of(); + this.customModelData = 0; + } + } + public Map predicate() { - return predicate; + return this.predicate; } public boolean hasPredicate() { - return predicate != null && !predicate.isEmpty(); + return this.predicate != null && !this.predicate.isEmpty(); } public String model() { - return model; + return this.model; } public JsonObject toLegacyPredicateElement() { JsonObject json = new JsonObject(); JsonObject predicateJson = new JsonObject(); - if (predicate != null && !predicate.isEmpty()) { - for (Map.Entry entry : predicate.entrySet()) { + if (this.predicate != null && !this.predicate.isEmpty()) { + for (Map.Entry entry : this.predicate.entrySet()) { if (entry.getValue() instanceof Boolean b) { predicateJson.addProperty(entry.getKey(), b); } else if (entry.getValue() instanceof Number n) { @@ -49,12 +80,12 @@ public class LegacyOverridesModel implements Comparable { } json.add("predicate", predicateJson); } - json.addProperty("model", model); + json.addProperty("model", this.model); return json; } public int customModelData() { - return customModelData; + return this.customModelData; } @Override @@ -62,23 +93,23 @@ public class LegacyOverridesModel implements Comparable { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; LegacyOverridesModel that = (LegacyOverridesModel) o; - return customModelData == that.customModelData && Objects.equals(predicate, that.predicate) && Objects.equals(model, that.model); + return this.customModelData == that.customModelData && Objects.equals(predicate, that.predicate) && Objects.equals(model, that.model); } @Override public int hashCode() { - int result = predicate.hashCode(); + int result = this.predicate.hashCode(); result = 31 * result + Objects.hashCode(model); - result = 31 * result + customModelData; + result = 31 * result + this.customModelData; return result; } @Override public String toString() { return "LegacyOverridesModel{" + - "predicate=" + predicate + - ", model='" + model + '\'' + - ", custom-model-data=" + customModelData + + "predicate=" + this.predicate + + ", model='" + this.model + '\'' + + ", custom-model-data=" + this.customModelData + '}'; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/RangeDispatchItemModel.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/RangeDispatchItemModel.java index 5df6a5eda..5b5f7041a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/RangeDispatchItemModel.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/RangeDispatchItemModel.java @@ -10,15 +10,14 @@ import net.momirealms.craftengine.core.pack.revision.Revision; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MinecraftVersion; -import net.momirealms.craftengine.core.util.MiscUtils; 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.TreeMap; public class RangeDispatchItemModel implements ItemModel { public static final Factory FACTORY = new Factory(); @@ -115,21 +114,26 @@ public class RangeDispatchItemModel implements ItemModel { public ItemModel create(Map arguments) { RangeDispatchProperty property = RangeDispatchProperties.fromMap(arguments); float scale = ResourceConfigUtils.getAsFloat(arguments.getOrDefault("scale", 1.0), "scale"); - Map fallback = MiscUtils.castToMap(arguments.get("fallback"), true); + Object fallback = arguments.get("fallback"); Object entriesObj = arguments.get("entries"); if (entriesObj instanceof List list) { List> entries = (List>) list; if (!entries.isEmpty()) { - Map entryMap = new HashMap<>(); + Map entryMap = new TreeMap<>(); for (Map entry : entries) { float threshold = ResourceConfigUtils.getAsFloat(entry.getOrDefault("threshold", 1), "threshold"); Object model = entry.getOrDefault("model", fallback); if (model == null) { throw new LocalizedResourceConfigException("warning.config.item.model.range_dispatch.entry.missing_model"); } - entryMap.put(threshold, ItemModels.fromMap(MiscUtils.castToMap(model, false))); + entryMap.put(threshold, ItemModels.fromObj(model)); } - return new RangeDispatchItemModel(property, scale, fallback == null ? null : ItemModels.fromMap(fallback), entryMap); + return new RangeDispatchItemModel( + property, + scale, + fallback == null ? null : ItemModels.fromObj(fallback), + entryMap + ); } else { throw new LocalizedResourceConfigException("warning.config.item.model.range_dispatch.missing_entries"); } @@ -147,7 +151,7 @@ public class RangeDispatchItemModel implements ItemModel { if (entriesObj == null) { throw new IllegalArgumentException("entries is expected to be a JsonArray"); } - Map entries = new HashMap<>(); + Map entries = new TreeMap<>(); for (JsonElement entry : entriesObj) { if (entry instanceof JsonObject entryObj) { float threshold = entryObj.getAsJsonPrimitive("threshold").getAsFloat(); diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/SelectItemModel.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/SelectItemModel.java index f8c31c2b8..7bd78f855 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/SelectItemModel.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/SelectItemModel.java @@ -11,7 +11,6 @@ import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigExce import net.momirealms.craftengine.core.util.GsonHelper; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MinecraftVersion; -import net.momirealms.craftengine.core.util.MiscUtils; import org.incendo.cloud.type.Either; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -61,14 +60,26 @@ public class SelectItemModel implements ItemModel { item.add("model", itemModel.apply(version)); Either> either = entry.getKey(); if (either.primary().isPresent()) { - item.add("when", either.primary().get()); + JsonElement remap = this.property.remap(either.primary().get(), version); + if (remap != null) { + item.add("when", remap); + } else { + continue; + } } else { List list = either.fallback().get(); JsonArray whens = new JsonArray(); for (JsonElement e : list) { - whens.add(e); + JsonElement remap = this.property.remap(e, version); + if (remap != null) { + whens.add(remap); + } + } + if (!whens.isEmpty()) { + item.add("when", whens); + } else { + continue; } - item.add("when", whens); } array.add(item); } @@ -85,13 +96,22 @@ public class SelectItemModel implements ItemModel { @Override public List revisions() { - List versions = new ArrayList<>(); + List versions = new ArrayList<>(4); + for (Map.Entry>, ItemModel> entry : this.whenMap.entrySet()) { + Either> when = entry.getKey(); + if (when.primary().isPresent()) { + versions.addAll(this.property.revisions(when.primary().get())); + } else { + List list = when.fallback().get(); + for (JsonElement e : list) { + 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; } @@ -113,7 +133,7 @@ public class SelectItemModel implements ItemModel { @Override public ItemModel create(Map arguments) { SelectProperty property = SelectProperties.fromMap(arguments); - Map fallback = MiscUtils.castToMap(arguments.get("fallback"), true); + Object fallback = arguments.get("fallback"); Object casesObj = arguments.get("cases"); if (casesObj instanceof List list) { List> cases = (List>) list; @@ -138,9 +158,13 @@ public class SelectItemModel implements ItemModel { if (model == null) { throw new LocalizedResourceConfigException("warning.config.item.model.select.case.missing_model"); } - whenMap.put(either, ItemModels.fromMap(MiscUtils.castToMap(model, false))); + whenMap.put(either, ItemModels.fromObj(model)); } - return new SelectItemModel(property, whenMap, fallback == null ? null : ItemModels.fromMap(fallback)); + return new SelectItemModel( + property, + whenMap, + fallback == null ? null : ItemModels.fromObj(fallback) + ); } else { throw new LocalizedResourceConfigException("warning.config.item.model.select.missing_cases"); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/generation/ModelGenerator.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/generation/ModelGenerator.java index 2b57fd304..97c219857 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/generation/ModelGenerator.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/generation/ModelGenerator.java @@ -3,6 +3,7 @@ package net.momirealms.craftengine.core.pack.model.generation; import java.util.Collection; public interface ModelGenerator { + Collection modelsToGenerate(); void clearModelsToGenerate(); diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/generation/display/DisplayPosition.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/generation/display/DisplayPosition.java index 0f5f30a3c..868e219e9 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/generation/display/DisplayPosition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/generation/display/DisplayPosition.java @@ -8,5 +8,6 @@ public enum DisplayPosition { GUI, HEAD, GROUND, - FIXED + FIXED, + ON_SHELF } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/select/DisplayContextSelectProperty.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/select/DisplayContextSelectProperty.java new file mode 100644 index 000000000..49299c8f8 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/select/DisplayContextSelectProperty.java @@ -0,0 +1,62 @@ +package net.momirealms.craftengine.core.pack.model.select; + +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; +import org.jetbrains.annotations.Nullable; + +import java.util.List; +import java.util.Map; + +public class DisplayContextSelectProperty implements SelectProperty { + public static final DisplayContextSelectProperty INSTANCE = new DisplayContextSelectProperty(); + public static final Factory FACTORY = new Factory(); + public static final Reader READER = new Reader(); + + @Override + public Key type() { + return SelectProperties.DISPLAY_CONTEXT; + } + + @Override + public void accept(JsonObject jsonObject) { + jsonObject.addProperty("property", type().toString()); + } + + @Override + public List revisions(JsonElement 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 + public @Nullable JsonElement remap(JsonElement element, MinecraftVersion version) { + if (version.isBelow(MinecraftVersions.V1_21_9) && element instanceof JsonPrimitive primitive && primitive.isString()) { + if (primitive.getAsString().equals("on_shelf")) { + return null; + } + } + return element; + } + + public static class Factory implements SelectPropertyFactory { + @Override + public SelectProperty create(Map arguments) { + return INSTANCE; + } + } + + public static class Reader implements SelectPropertyReader { + @Override + public SelectProperty read(JsonObject json) { + return INSTANCE; + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/select/SelectProperties.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/select/SelectProperties.java index 3027db6ca..e6f5b46e0 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/select/SelectProperties.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/select/SelectProperties.java @@ -30,8 +30,8 @@ public class SelectProperties { registerReader(CONTEXT_DIMENSION, SimpleSelectProperty.READER); registerFactory(CONTEXT_ENTITY_TYPE, SimpleSelectProperty.FACTORY); registerReader(CONTEXT_ENTITY_TYPE, SimpleSelectProperty.READER); - registerFactory(DISPLAY_CONTEXT, SimpleSelectProperty.FACTORY); - registerReader(DISPLAY_CONTEXT, SimpleSelectProperty.READER); + registerFactory(DISPLAY_CONTEXT, DisplayContextSelectProperty.FACTORY); + registerReader(DISPLAY_CONTEXT, DisplayContextSelectProperty.READER); registerFactory(MAIN_HAND, MainHandSelectProperty.FACTORY); registerReader(MAIN_HAND, MainHandSelectProperty.READER); registerFactory(TRIM_MATERIAL, TrimMaterialSelectProperty.FACTORY); diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/select/SelectProperty.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/select/SelectProperty.java index 7e236d0b5..4b33b96cb 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/select/SelectProperty.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/select/SelectProperty.java @@ -1,11 +1,26 @@ package net.momirealms.craftengine.core.pack.model.select; +import com.google.gson.JsonElement; import com.google.gson.JsonObject; +import net.momirealms.craftengine.core.pack.revision.Revision; import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.MinecraftVersion; +import javax.annotation.Nullable; +import java.util.Collections; +import java.util.List; import java.util.function.Consumer; public interface SelectProperty extends Consumer { Key type(); + + default List revisions(JsonElement element) { + return Collections.emptyList(); + } + + @Nullable + default JsonElement remap(JsonElement element, MinecraftVersion version) { + return element; + } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/CopperGolemStatueSpecialModel.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/CopperGolemStatueSpecialModel.java new file mode 100644 index 000000000..132461a83 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/CopperGolemStatueSpecialModel.java @@ -0,0 +1,59 @@ +package net.momirealms.craftengine.core.pack.model.special; + +import com.google.gson.JsonObject; +import net.momirealms.craftengine.core.pack.revision.Revision; +import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.MinecraftVersion; +import net.momirealms.craftengine.core.util.ResourceConfigUtils; + +import java.util.List; +import java.util.Map; + +public class CopperGolemStatueSpecialModel implements SpecialModel { + public static final Factory FACTORY = new Factory(); + public static final Reader READER = new Reader(); + private final String pose; + private final String texture; + + public CopperGolemStatueSpecialModel(String pose, String texture) { + this.pose = pose; + this.texture = texture; + } + + @Override + public Key type() { + return SpecialModels.COPPER_GOLEM_STATUE; + } + + @Override + public List revisions() { + return List.of(); + } + + @Override + public JsonObject apply(MinecraftVersion version) { + JsonObject json = new JsonObject(); + json.addProperty("type", type().toString()); + json.addProperty("pose", this.pose); + json.addProperty("texture", this.texture); + return json; + } + + public static class Factory implements SpecialModelFactory { + @Override + public SpecialModel create(Map arguments) { + String pose = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("pose"), "warning.config.item.model.special.copper_golem_statue.missing_pose"); + String texture = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("texture"), "warning.config.item.model.special.copper_golem_statue.missing_texture"); + return new CopperGolemStatueSpecialModel(pose, texture); + } + } + + public static class Reader implements SpecialModelReader { + @Override + public SpecialModel read(JsonObject json) { + String pose = json.get("pose").getAsString(); + String texture = json.get("texture").getAsString(); + return new CopperGolemStatueSpecialModel(pose, texture); + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/SpecialModels.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/SpecialModels.java index 73f91a271..c27c4bba3 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/SpecialModels.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/SpecialModels.java @@ -24,6 +24,7 @@ public class SpecialModels { public static final Key STANDING_SIGN = Key.of("minecraft:standing_sign"); public static final Key TRIDENT = Key.of("minecraft:trident"); public static final Key PLAYER_HEAD = Key.of("minecraft:player_head"); + public static final Key COPPER_GOLEM_STATUE = Key.of("minecraft:copper_golem_statue"); static { registerFactory(TRIDENT, SimpleSpecialModel.FACTORY); @@ -50,6 +51,8 @@ public class SpecialModels { registerReader(HEAD, HeadSpecialModel.READER); registerFactory(SHULKER_BOX, ShulkerBoxSpecialModel.FACTORY); registerReader(SHULKER_BOX, ShulkerBoxSpecialModel.READER); + registerFactory(COPPER_GOLEM_STATUE, CopperGolemStatueSpecialModel.FACTORY); + registerReader(COPPER_GOLEM_STATUE, CopperGolemStatueSpecialModel.READER); } public static void registerFactory(Key key, SpecialModelFactory factory) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/revision/Revision.java b/core/src/main/java/net/momirealms/craftengine/core/pack/revision/Revision.java index c6547ac9d..731d3f77e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/revision/Revision.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/revision/Revision.java @@ -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 + + '}'; + } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/revision/Revisions.java b/core/src/main/java/net/momirealms/craftengine/core/pack/revision/Revisions.java index 2b7fd7372..d14f3090f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/revision/Revisions.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/revision/Revisions.java @@ -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); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/CraftEngine.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/CraftEngine.java index 3b83cedc0..c72a2f0b2 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/CraftEngine.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/CraftEngine.java @@ -4,6 +4,7 @@ import net.momirealms.craftengine.core.advancement.AdvancementManager; import net.momirealms.craftengine.core.block.BlockManager; import net.momirealms.craftengine.core.entity.furniture.FurnitureManager; import net.momirealms.craftengine.core.entity.projectile.ProjectileManager; +import net.momirealms.craftengine.core.entity.seat.SeatManager; import net.momirealms.craftengine.core.font.FontManager; import net.momirealms.craftengine.core.item.ItemManager; import net.momirealms.craftengine.core.item.recipe.RecipeManager; @@ -35,6 +36,7 @@ import net.momirealms.craftengine.core.plugin.logger.filter.LogFilter; import net.momirealms.craftengine.core.plugin.network.NetworkManager; import net.momirealms.craftengine.core.plugin.scheduler.SchedulerAdapter; import net.momirealms.craftengine.core.sound.SoundManager; +import net.momirealms.craftengine.core.util.CompletableFutures; import net.momirealms.craftengine.core.world.WorldManager; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.core.Logger; @@ -75,6 +77,7 @@ public abstract class CraftEngine implements Plugin { protected CompatibilityManager compatibilityManager; protected GlobalVariableManager globalVariableManager; protected ProjectileManager projectileManager; + protected SeatManager seatManager; private final PluginTaskRegistry preLoadTaskRegistry = new PluginTaskRegistry(); private final PluginTaskRegistry postLoadTaskRegistry = new PluginTaskRegistry(); @@ -150,6 +153,7 @@ public abstract class CraftEngine implements Plugin { this.packManager.reload(); this.advancementManager.reload(); this.projectileManager.reload(); + this.seatManager.reload(); if (reloadRecipe) { this.recipeManager.reload(); } @@ -159,24 +163,27 @@ public abstract class CraftEngine implements Plugin { } catch (Exception e) { this.logger().warn("Failed to load resources folder", e); } - // register trims - this.itemManager.delayedLoad(); - // init suggestions and packet mapper - this.blockManager.delayedLoad(); - // handle some special client lang for instance block_name - this.translationManager.delayedLoad(); - // init suggestions - this.furnitureManager.delayedLoad(); - // sort the categories - this.itemBrowserManager.delayedLoad(); - // collect illegal characters from minecraft:default font - this.fontManager.delayedLoad(); - this.advancementManager.delayedLoad(); - this.soundManager.delayedLoad(); + List> delayedLoadTasks = new ArrayList<>(); + // 指令补全,重置外部配方原料 + delayedLoadTasks.add(CompletableFuture.runAsync(() -> this.itemManager.delayedLoad(), this.scheduler.async())); + // 重置映射表,指令补全,发送tags,收集声音 + delayedLoadTasks.add(CompletableFuture.runAsync(() -> this.blockManager.delayedLoad(), this.scheduler.async())); + // 处理block_name特殊语言键 + delayedLoadTasks.add(CompletableFuture.runAsync(() -> this.translationManager.delayedLoad(), this.scheduler.async())); + // 指令补全 + delayedLoadTasks.add(CompletableFuture.runAsync(() -> this.furnitureManager.delayedLoad(), this.scheduler.async())); + // 处理外部category,加载ui常量 + delayedLoadTasks.add(CompletableFuture.runAsync(() -> this.itemBrowserManager.delayedLoad(), this.scheduler.async())); + // 收集非法字符,构造前缀树,指令补全 + delayedLoadTasks.add(CompletableFuture.runAsync(() -> this.fontManager.delayedLoad(), this.scheduler.async())); + // 指令补全 + delayedLoadTasks.add(CompletableFuture.runAsync(() -> this.soundManager.delayedLoad(), this.scheduler.async())); + // 如果重载配方 if (reloadRecipe) { - // convert data pack recipes - this.recipeManager.delayedLoad(); + // 转换数据包配方 + delayedLoadTasks.add(CompletableFuture.runAsync(() -> this.recipeManager.delayedLoad(), this.scheduler.async())); } + CompletableFutures.allOf(delayedLoadTasks).join(); long time2 = System.currentTimeMillis(); asyncTime = time2 - time1; } finally { @@ -225,6 +232,7 @@ public abstract class CraftEngine implements Plugin { this.fontManager.delayedInit(); this.vanillaLootManager.delayedInit(); this.advancementManager.delayedInit(); + this.seatManager.delayedInit(); this.compatibilityManager.onDelayedEnable(); // reload the plugin try { @@ -259,6 +267,7 @@ public abstract class CraftEngine implements Plugin { if (this.guiManager != null) this.guiManager.disable(); if (this.soundManager != null) this.soundManager.disable(); if (this.vanillaLootManager != null) this.vanillaLootManager.disable(); + if (this.seatManager != null) this.seatManager.disable(); if (this.translationManager != null) this.translationManager.disable(); if (this.globalVariableManager != null) this.globalVariableManager.disable(); if (this.projectileManager != null) this.projectileManager.disable(); @@ -294,6 +303,8 @@ public abstract class CraftEngine implements Plugin { this.packManager.registerConfigSectionParser(this.vanillaLootManager.parser()); // register advancement parser this.packManager.registerConfigSectionParser(this.advancementManager.parser()); + // register skip-optimization parser + this.packManager.registerConfigSectionParser(this.packManager.parser()); } public void applyDependencies() { @@ -315,7 +326,7 @@ public abstract class CraftEngine implements Plugin { Dependencies.GEANTY_REF, Dependencies.CLOUD_CORE, Dependencies.CLOUD_SERVICES, Dependencies.GSON, - Dependencies.COMMONS_IO, Dependencies.COMMONS_LANG3, Dependencies.COMMONS_IMAGING, + Dependencies.COMMONS_IO, Dependencies.COMMONS_LANG3, Dependencies.ZSTD, Dependencies.BYTE_BUDDY, Dependencies.BYTE_BUDDY_AGENT, Dependencies.SNAKE_YAML, diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/command/AbstractCommandManager.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/command/AbstractCommandManager.java index f894ff78f..aa72ff890 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/command/AbstractCommandManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/command/AbstractCommandManager.java @@ -32,6 +32,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; +import java.util.Locale; public abstract class AbstractCommandManager implements CraftEngineCommandManager { protected final HashSet> registeredRootCommandComponents = new HashSet<>(); @@ -167,11 +168,13 @@ public abstract class AbstractCommandManager implements CraftEngineCommandMan @Override public void handleCommandFeedback(C sender, TranslatableComponent.Builder key, Component... args) { TranslatableComponent component = key.arguments(args).build(); - this.feedbackConsumer.accept(sender, component.key(), plugin.translationManager().render(component)); + this.feedbackConsumer.accept(sender, component.key(), plugin.translationManager().render(component, getLocale(sender))); } @Override public void handleCommandFeedback(C sender, String node, Component component) { this.feedbackConsumer.accept(sender, node, component); } + + protected abstract Locale getLocale(C sender); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/compatibility/CompatibilityManager.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/compatibility/CompatibilityManager.java index f38d30c1f..0c0c82726 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/compatibility/CompatibilityManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/compatibility/CompatibilityManager.java @@ -1,7 +1,9 @@ package net.momirealms.craftengine.core.plugin.compatibility; +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import net.momirealms.craftengine.core.entity.furniture.ExternalModel; import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.plugin.context.Context; import java.util.UUID; @@ -15,6 +17,8 @@ public interface CompatibilityManager { void registerLevelerProvider(String plugin, LevelerProvider provider); + void registerTagResolverProvider(TagResolverProvider provider); + void addLevelerExp(Player player, String plugin, String target, double value); int getLevel(Player player, String plugin, String target); @@ -36,4 +40,6 @@ public interface CompatibilityManager { int getPlayerProtocolVersion(UUID uuid); void executeMMSkill(String skill, float power, Player player); + + TagResolver[] createExternalTagResolvers(Context context); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/compatibility/TagResolverProvider.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/compatibility/TagResolverProvider.java new file mode 100644 index 000000000..5bd3213b9 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/compatibility/TagResolverProvider.java @@ -0,0 +1,11 @@ +package net.momirealms.craftengine.core.plugin.compatibility; + +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; +import net.momirealms.craftengine.core.plugin.context.Context; + +public interface TagResolverProvider { + + String name(); + + TagResolver getTagResolver(Context context); +} 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 788862341..ce0e42ee9 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 @@ -17,6 +17,8 @@ import net.momirealms.craftengine.core.pack.AbstractPackManager; import net.momirealms.craftengine.core.pack.conflict.resolution.ResolutionConditional; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.PluginProperties; +import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; +import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.plugin.locale.TranslationManager; import net.momirealms.craftengine.core.plugin.logger.filter.DisconnectLogFilter; @@ -59,10 +61,17 @@ public class Config { protected List resource_pack$merge_external_folders; protected List resource_pack$merge_external_zips; protected Set resource_pack$exclude_file_extensions; + protected Path resource_pack$path; protected boolean resource_pack$protection$crash_tools$method_1; protected boolean resource_pack$protection$crash_tools$method_2; protected boolean resource_pack$protection$crash_tools$method_3; + protected boolean resource_pack$protection$crash_tools$method_4; + protected boolean resource_pack$protection$crash_tools$method_5; + protected boolean resource_pack$protection$crash_tools$method_6; + protected boolean resource_pack$protection$crash_tools$method_7; + protected boolean resource_pack$protection$crash_tools$method_8; + protected boolean resource_pack$protection$crash_tools$method_9; protected boolean resource_pack$validation$enable; protected boolean resource_pack$validation$fix_atlas; @@ -70,21 +79,30 @@ public class Config { protected boolean resource_pack$protection$obfuscation$enable; protected long resource_pack$protection$obfuscation$seed; - protected boolean resource_pack$protection$obfuscation$fake_directory; - protected boolean resource_pack$protection$obfuscation$escape_unicode; - protected boolean resource_pack$protection$obfuscation$break_json; - protected boolean resource_pack$protection$obfuscation$resource_location$enable; - protected int resource_pack$protection$obfuscation$resource_location$random_namespace$length; - protected int resource_pack$protection$obfuscation$resource_location$random_namespace$amount; - protected String resource_pack$protection$obfuscation$resource_location$random_path$source; - protected int resource_pack$protection$obfuscation$resource_location$random_path$depth; - protected boolean resource_pack$protection$obfuscation$resource_location$random_path$anti_unzip; - protected int resource_pack$protection$obfuscation$resource_location$random_atlas$images_per_canvas; - protected boolean resource_pack$protection$obfuscation$resource_location$random_atlas$use_double; - protected List resource_pack$protection$obfuscation$resource_location$bypass_textures; - protected List resource_pack$protection$obfuscation$resource_location$bypass_models; - protected List resource_pack$protection$obfuscation$resource_location$bypass_sounds; - protected List resource_pack$protection$obfuscation$resource_location$bypass_equipments; + protected boolean resource_pack$protection$fake_directory; + protected boolean resource_pack$protection$escape_json; + protected boolean resource_pack$protection$break_texture; + protected boolean resource_pack$protection$obfuscation$path$anti_unzip; + protected boolean resource_pack$protection$incorrect_crc; + protected boolean resource_pack$protection$fake_file_size; + protected NumberProvider resource_pack$protection$obfuscation$namespace$length; + protected int resource_pack$protection$obfuscation$namespace$amount; + protected String resource_pack$protection$obfuscation$path$source; + protected NumberProvider resource_pack$protection$obfuscation$path$depth; + protected NumberProvider resource_pack$protection$obfuscation$path$length; + protected int resource_pack$protection$obfuscation$atlas$images_per_canvas; + protected String resource_pack$protection$obfuscation$atlas$prefix; + protected List resource_pack$protection$obfuscation$bypass_textures; + protected List resource_pack$protection$obfuscation$bypass_models; + protected List resource_pack$protection$obfuscation$bypass_sounds; + protected List resource_pack$protection$obfuscation$bypass_equipments; + + protected boolean resource_pack$optimization$enable; + protected boolean resource_pack$optimization$texture$enable; + protected Set resource_pack$optimization$texture$exlude; + protected int resource_pack$optimization$texture$zopfli_iterations; + protected boolean resource_pack$optimization$json$enable; + protected Set resource_pack$optimization$json$exclude; protected MinecraftVersion resource_pack$supported_version$min; protected MinecraftVersion resource_pack$supported_version$max; @@ -125,6 +143,8 @@ public class Config { protected int block$predict_breaking_interval; protected double block$extended_interaction_range; protected boolean block$chunk_relighter; + protected Key block$deceive_bukkit_material$default; + protected Map block$deceive_bukkit_material$overrides; protected int block$serverside_blocks = -1; protected boolean recipe$enable; @@ -155,6 +175,7 @@ public class Config { protected boolean network$intercept_packets$set_score; protected boolean network$intercept_packets$item; protected boolean network$intercept_packets$advancement; + protected boolean network$disable_item_operations; protected boolean item$client_bound_model; protected boolean item$non_italic_tag; @@ -165,6 +186,7 @@ public class Config { protected int item$custom_model_data_starting_value$default; protected Map item$custom_model_data_starting_value$overrides; protected boolean item$always_use_item_model; + protected String item$default_material = ""; protected String equipment$sacrificed_vanilla_armor$type; protected Key equipment$sacrificed_vanilla_armor$asset_id; @@ -246,6 +268,7 @@ public class Config { .addIgnoredRoute(PluginProperties.getValue("config"), "chunk-system.process-invalid-blocks.convert", '.') .addIgnoredRoute(PluginProperties.getValue("config"), "chunk-system.process-invalid-furniture.convert", '.') .addIgnoredRoute(PluginProperties.getValue("config"), "item.custom-model-data-starting-value.overrides", '.') + .addIgnoredRoute(PluginProperties.getValue("config"), "block.deceive-bukkit-material.overrides", '.') .build()); } try { @@ -279,11 +302,12 @@ public class Config { debug$resource_pack = config.getBoolean("debug.resource-pack", false); // resource pack + resource_pack$path = resolvePath(config.getString("resource-pack.path", "./generated/resource_pack.zip")); resource_pack$override_uniform_font = config.getBoolean("resource-pack.override-uniform-font", false); resource_pack$generate_mod_assets = config.getBoolean("resource-pack.generate-mod-assets", false); resource_pack$remove_tinted_leaves_particle = config.getBoolean("resource-pack.remove-tinted-leaves-particle", true); - resource_pack$supported_version$min = getVersion(config.get("resource-pack.supported-version.min", "SERVER").toString()); - resource_pack$supported_version$max = getVersion(config.get("resource-pack.supported-version.max", "LATEST").toString()); + resource_pack$supported_version$min = getVersion(config.get("resource-pack.supported-version.min", "server").toString()); + resource_pack$supported_version$max = getVersion(config.get("resource-pack.supported-version.max", "latest").toString()); if (resource_pack$supported_version$min.isAbove(resource_pack$supported_version$max)) { resource_pack$supported_version$min = resource_pack$supported_version$max; } @@ -301,25 +325,45 @@ public class Config { resource_pack$protection$crash_tools$method_1 = config.getBoolean("resource-pack.protection.crash-tools.method-1", false); resource_pack$protection$crash_tools$method_2 = config.getBoolean("resource-pack.protection.crash-tools.method-2", false); resource_pack$protection$crash_tools$method_3 = config.getBoolean("resource-pack.protection.crash-tools.method-3", false); + resource_pack$protection$crash_tools$method_4 = config.getBoolean("resource-pack.protection.crash-tools.method-4", false); + resource_pack$protection$crash_tools$method_5 = config.getBoolean("resource-pack.protection.crash-tools.method-5", false); + resource_pack$protection$crash_tools$method_6 = config.getBoolean("resource-pack.protection.crash-tools.method-6", false); + resource_pack$protection$crash_tools$method_7 = config.getBoolean("resource-pack.protection.crash-tools.method-7", false); + resource_pack$protection$crash_tools$method_8 = config.getBoolean("resource-pack.protection.crash-tools.method-8", false); + resource_pack$protection$crash_tools$method_9 = config.getBoolean("resource-pack.protection.crash-tools.method-9", false); resource_pack$protection$obfuscation$enable = VersionHelper.PREMIUM && config.getBoolean("resource-pack.protection.obfuscation.enable", false); resource_pack$protection$obfuscation$seed = config.getLong("resource-pack.protection.obfuscation.seed", 0L); - resource_pack$protection$obfuscation$fake_directory = config.getBoolean("resource-pack.protection.obfuscation.fake-directory", false); - resource_pack$protection$obfuscation$escape_unicode = config.getBoolean("resource-pack.protection.obfuscation.escape-unicode", false); - resource_pack$protection$obfuscation$break_json = config.getBoolean("resource-pack.protection.obfuscation.break-json", false); - resource_pack$protection$obfuscation$resource_location$enable = config.getBoolean("resource-pack.protection.obfuscation.resource-location.enable", false); - resource_pack$protection$obfuscation$resource_location$random_namespace$amount = config.getInt("resource-pack.protection.obfuscation.resource-location.random-namespace.amount", 32); - resource_pack$protection$obfuscation$resource_location$random_namespace$length = config.getInt("resource-pack.protection.obfuscation.resource-location.random-namespace.length", 8); - resource_pack$protection$obfuscation$resource_location$random_path$depth = config.getInt("resource-pack.protection.obfuscation.resource-location.random-path.depth", 16); - resource_pack$protection$obfuscation$resource_location$random_path$source = config.getString("resource-pack.protection.obfuscation.resource-location.random-path.source", "obf"); - resource_pack$protection$obfuscation$resource_location$random_path$anti_unzip = config.getBoolean("resource-pack.protection.obfuscation.resource-location.random-path.anti-unzip", false); - resource_pack$protection$obfuscation$resource_location$random_atlas$images_per_canvas = config.getInt("resource-pack.protection.obfuscation.resource-location.random-atlas.images-per-canvas", 16); - resource_pack$protection$obfuscation$resource_location$random_atlas$use_double = config.getBoolean("resource-pack.protection.obfuscation.resource-location.random-atlas.use-double", false); - resource_pack$protection$obfuscation$resource_location$bypass_textures = config.getStringList("resource-pack.protection.obfuscation.resource-location.bypass-textures"); - resource_pack$protection$obfuscation$resource_location$bypass_models = config.getStringList("resource-pack.protection.obfuscation.resource-location.bypass-models"); - 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$protection$fake_directory = config.getBoolean("resource-pack.protection.fake-directory", false); + resource_pack$protection$escape_json = config.getBoolean("resource-pack.protection.escape-json", false); + resource_pack$protection$break_texture = config.getBoolean("resource-pack.protection.break-texture", false); + resource_pack$protection$incorrect_crc = config.getBoolean("resource-pack.protection.incorrect-crc", false); + resource_pack$protection$fake_file_size = config.getBoolean("resource-pack.protection.fake-file-size", false); + resource_pack$protection$obfuscation$namespace$amount = config.getInt("resource-pack.protection.obfuscation.namespace.amount", 32); + resource_pack$protection$obfuscation$namespace$length = NumberProviders.fromObject(config.get("resource-pack.protection.obfuscation.namespace.length", 2)); + resource_pack$protection$obfuscation$path$depth = NumberProviders.fromObject(config.get("resource-pack.protection.obfuscation.path.depth", 4)); + resource_pack$protection$obfuscation$path$length = NumberProviders.fromObject(config.get("resource-pack.protection.obfuscation.path.length", 2)); + resource_pack$protection$obfuscation$path$source = config.getString("resource-pack.protection.obfuscation.path.source", "obf"); + resource_pack$protection$obfuscation$path$anti_unzip = config.getBoolean("resource-pack.protection.obfuscation.path.anti-unzip", false); + resource_pack$protection$obfuscation$atlas$images_per_canvas = config.getInt("resource-pack.protection.obfuscation.atlas.images-per-canvas", 256); + resource_pack$protection$obfuscation$atlas$prefix = config.getString("resource-pack.protection.obfuscation.atlas.prefix", "atlas"); + resource_pack$protection$obfuscation$bypass_textures = config.getStringList("resource-pack.protection.obfuscation.bypass-textures"); + resource_pack$protection$obfuscation$bypass_models = config.getStringList("resource-pack.protection.obfuscation.bypass-models"); + resource_pack$protection$obfuscation$bypass_sounds = config.getStringList("resource-pack.protection.obfuscation.bypass-sounds"); + resource_pack$protection$obfuscation$bypass_equipments = config.getStringList("resource-pack.protection.obfuscation.bypass-equipments"); + resource_pack$optimization$enable = config.getBoolean("resource-pack.optimization.enable", false); + resource_pack$optimization$texture$enable = config.getBoolean("resource-pack.optimization.texture.enable", true); + resource_pack$optimization$texture$zopfli_iterations = config.getInt("resource-pack.optimization.texture.zopfli-iterations", 0); + resource_pack$optimization$texture$exlude = config.getStringList("resource-pack.optimization.texture.exclude").stream().map(p -> { + if (!p.endsWith(".png")) return p + ".png"; + return p; + }).collect(Collectors.toSet()); + resource_pack$optimization$json$enable = config.getBoolean("resource-pack.optimization.json.enable", true); + resource_pack$optimization$json$exclude = config.getStringList("resource-pack.optimization.json.exclude").stream().map(p -> { + if (!p.endsWith(".json") && !p.endsWith(".mcmeta")) return p + ".json"; + return p; + }).collect(Collectors.toSet()); resource_pack$validation$enable = config.getBoolean("resource-pack.validation.enable", true); - resource_pack$validation$fix_atlas = VersionHelper.PREMIUM && config.getBoolean("resource-pack.validation.fix-atlas", true); + resource_pack$validation$fix_atlas = config.getBoolean("resource-pack.validation.fix-atlas", true); 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}")) { @@ -409,6 +453,7 @@ public class Config { item$update_triggers$pick_up = config.getBoolean("item.update-triggers.pick-up", false); item$custom_model_data_starting_value$default = config.getInt("item.custom-model-data-starting-value.default", 10000); item$always_use_item_model = config.getBoolean("item.always-use-item-model", true) && VersionHelper.isOrAbove1_21_2(); + item$default_material = config.getString("item.default-material", ""); Section customModelDataOverridesSection = config.getSection("item.custom-model-data-starting-value.overrides"); if (customModelDataOverridesSection != null) { @@ -434,6 +479,24 @@ public class Config { block$extended_interaction_range = Math.max(config.getDouble("block.predict-breaking.extended-interaction-range", 0.5), 0.0); block$chunk_relighter = config.getBoolean("block.chunk-relighter", true); if (firstTime) { + block$deceive_bukkit_material$default = Key.of(config.getString("block.deceive-bukkit-material.default", "bricks")); + block$deceive_bukkit_material$overrides = new HashMap<>(); + Section overridesSection = config.getSection("block.deceive-bukkit-material.overrides"); + if (overridesSection != null) { + for (Map.Entry entry : overridesSection.getStringRouteMappedValues(false).entrySet()) { + String key = entry.getKey(); + Key value = Key.of(String.valueOf(entry.getValue())); + if (key.contains("~")) { + int min = Integer.parseInt(key.split("~")[0]); + int max = Integer.parseInt(key.split("~")[1]); + for (int i = min; i <= max; i++) { + block$deceive_bukkit_material$overrides.put(i, value); + } + } else { + block$deceive_bukkit_material$overrides.put(Integer.valueOf(key), value); + } + } + } block$serverside_blocks = Math.min(config.getInt("block.serverside-blocks", 2000), 10_0000); if (block$serverside_blocks < 0) block$serverside_blocks = 0; } @@ -466,7 +529,8 @@ public class Config { } else { image$codepoint_starting_value$overrides = Map.of(); } - + + network$disable_item_operations = config.getBoolean("network.disable-item-operations", false); network$intercept_packets$system_chat = config.getBoolean("network.intercept-packets.system-chat", true); network$intercept_packets$tab_list = config.getBoolean("network.intercept-packets.tab-list", true); network$intercept_packets$actionbar = config.getBoolean("network.intercept-packets.actionbar", true); @@ -494,10 +558,10 @@ public class Config { } private static MinecraftVersion getVersion(String version) { - if (version.equalsIgnoreCase("LATEST")) { + if (version.equalsIgnoreCase("latest")) { return new MinecraftVersion(PluginProperties.getValue("latest-version")); } - if (version.equalsIgnoreCase("SERVER")) { + if (version.equalsIgnoreCase("server")) { return VersionHelper.MINECRAFT_VERSION; } return MinecraftVersion.parse(version); @@ -695,7 +759,27 @@ public class Config { } public static boolean crashTool4() { - return false; + return instance.resource_pack$protection$crash_tools$method_4; + } + + public static boolean crashTool5() { + return instance.resource_pack$protection$crash_tools$method_5; + } + + public static boolean crashTool6() { + return instance.resource_pack$protection$crash_tools$method_6; + } + + public static boolean crashTool7() { + return instance.resource_pack$protection$crash_tools$method_7; + } + + public static boolean crashTool8() { + return instance.resource_pack$protection$crash_tools$method_8; + } + + public static boolean crashTool9() { + return instance.resource_pack$protection$crash_tools$method_9; } public static boolean enableObfuscation() { @@ -707,63 +791,75 @@ public class Config { } public static boolean createFakeDirectory() { - return instance.resource_pack$protection$obfuscation$fake_directory; + return instance.resource_pack$protection$fake_directory; } - public static boolean escapeUnicode() { - return instance.resource_pack$protection$obfuscation$escape_unicode; + public static boolean escapeJson() { + return instance.resource_pack$protection$escape_json; } - public static boolean breakJson() { - return instance.resource_pack$protection$obfuscation$break_json; + public static boolean breakTexture() { + return instance.resource_pack$protection$break_texture; } - public static boolean enableRandomResourceLocation() { - return instance.resource_pack$protection$obfuscation$resource_location$enable; - } - - public static int namespaceLength() { - return instance.resource_pack$protection$obfuscation$resource_location$random_namespace$length; + public static NumberProvider namespaceLength() { + return instance.resource_pack$protection$obfuscation$namespace$length; } public static int namespaceAmount() { - return instance.resource_pack$protection$obfuscation$resource_location$random_namespace$amount; + return instance.resource_pack$protection$obfuscation$namespace$amount; } public static String atlasSource() { - return instance.resource_pack$protection$obfuscation$resource_location$random_path$source; + return instance.resource_pack$protection$obfuscation$path$source; } - public static int pathDepth() { - return instance.resource_pack$protection$obfuscation$resource_location$random_path$depth; + public static NumberProvider pathDepth() { + return instance.resource_pack$protection$obfuscation$path$depth; + } + + public static NumberProvider pathLength() { + return instance.resource_pack$protection$obfuscation$path$length; } public static boolean antiUnzip() { - return instance.resource_pack$protection$obfuscation$resource_location$random_path$anti_unzip; + return instance.resource_pack$protection$obfuscation$path$anti_unzip; + } + + public static boolean incorrectCrc() { + return instance.resource_pack$protection$incorrect_crc; + } + + public static boolean fakeFileSize() { + return instance.resource_pack$protection$fake_file_size; } public static int imagesPerCanvas() { - return instance.resource_pack$protection$obfuscation$resource_location$random_atlas$images_per_canvas; + return instance.resource_pack$protection$obfuscation$atlas$images_per_canvas; } - public static boolean useDouble() { - return instance.resource_pack$protection$obfuscation$resource_location$random_atlas$use_double; + public static String imageCanvasPrefix() { + return instance.resource_pack$protection$obfuscation$atlas$prefix; } public static List bypassTextures() { - return instance.resource_pack$protection$obfuscation$resource_location$bypass_textures; + return instance.resource_pack$protection$obfuscation$bypass_textures; } public static List bypassModels() { - return instance.resource_pack$protection$obfuscation$resource_location$bypass_models; + return instance.resource_pack$protection$obfuscation$bypass_models; } public static List bypassSounds() { - return instance.resource_pack$protection$obfuscation$resource_location$bypass_sounds; + return instance.resource_pack$protection$obfuscation$bypass_sounds; } public static List bypassEquipments() { - return instance.resource_pack$protection$obfuscation$resource_location$bypass_equipments; + return instance.resource_pack$protection$obfuscation$bypass_equipments; + } + + public static Key deceiveBukkitMaterial(int id) { + return instance.block$deceive_bukkit_material$overrides.getOrDefault(id, instance.block$deceive_bukkit_material$default); } public static boolean generateModAssets() { @@ -820,6 +916,10 @@ public class Config { return id; } + public static boolean disableItemOperations() { + return instance.network$disable_item_operations; + } + public static boolean interceptSystemChat() { return instance.network$intercept_packets$system_chat; } @@ -992,10 +1092,42 @@ public class Config { return instance.light_system$async_update; } + public static String defaultMaterial() { + return instance.item$default_material; + } + + public static Path resourcePackPath() { + return instance.resource_pack$path; + } + public void setObf(boolean enable) { this.resource_pack$protection$obfuscation$enable = enable; } + public static boolean optimizeResourcePack() { + return instance.resource_pack$optimization$enable; + } + + public static boolean optimizeTexture() { + return instance.resource_pack$optimization$texture$enable; + } + + public static Set optimizeTextureExclude() { + return instance.resource_pack$optimization$texture$exlude; + } + + public static boolean optimizeJson() { + return instance.resource_pack$optimization$json$enable; + } + + public static Set optimizeJsonExclude() { + return instance.resource_pack$optimization$json$exclude; + } + + public static int zopfliIterations() { + return instance.resource_pack$optimization$texture$zopfli_iterations; + } + public YamlDocument loadOrCreateYamlData(String fileName) { Path path = this.plugin.dataFolderPath().resolve(fileName); if (!Files.exists(path)) { @@ -1047,7 +1179,7 @@ public class Config { } private Path resolvePath(String path) { - return path.startsWith(".") ? CraftEngine.instance().dataFolderPath().resolve(path) : Path.of(path); + return FileUtils.isAbsolute(path) ? Path.of(path) : this.plugin.dataFolderPath().resolve(path); } public YamlDocument settings() { diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/IdSectionConfigParser.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/IdSectionConfigParser.java index ff5828380..a15b91c71 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/IdSectionConfigParser.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/IdSectionConfigParser.java @@ -21,10 +21,11 @@ public abstract class IdSectionConfigParser extends AbstractConfigParser { protected void parseSection(CachedConfigSection cached) { for (Map.Entry configEntry : cached.config().entrySet()) { String key = configEntry.getKey(); + Object value = configEntry.getValue(); Key id = Key.withDefaultNamespace(key, cached.pack().namespace()); - if (!(configEntry.getValue() instanceof Map section)) { + if (!(value instanceof Map section)) { TranslationManager.instance().log("warning.config.structure.not_section", - cached.filePath().toString(), cached.prefix() + "." + key, configEntry.getValue().getClass().getSimpleName()); + cached.filePath().toString(), cached.prefix() + "." + key, value == null ? "null" : value.getClass().getSimpleName()); continue; } Map config = castToMap(section, false); diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/StringKeyConstructor.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/StringKeyConstructor.java index 568679a97..10f7f8bea 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/StringKeyConstructor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/StringKeyConstructor.java @@ -4,22 +4,37 @@ import net.momirealms.craftengine.core.plugin.locale.TranslationManager; import net.momirealms.craftengine.core.util.VersionHelper; import org.yaml.snakeyaml.LoaderOptions; import org.yaml.snakeyaml.constructor.SafeConstructor; -import org.yaml.snakeyaml.nodes.MappingNode; -import org.yaml.snakeyaml.nodes.Node; -import org.yaml.snakeyaml.nodes.NodeTuple; -import org.yaml.snakeyaml.nodes.ScalarNode; +import org.yaml.snakeyaml.nodes.*; import java.nio.file.Path; import java.util.LinkedHashMap; import java.util.Map; +import static org.yaml.snakeyaml.nodes.Tag.*; + public class StringKeyConstructor extends SafeConstructor { private final Path path; private static final String VERSION_PREFIX = "$$"; private static final String DEEP_KEY_SEPARATOR = "::"; + public static final Tag BYTE = new Tag(PREFIX + "byte"); + public static final Tag SHORT = new Tag(PREFIX + "short"); + public static final Tag LONG = new Tag(PREFIX + "long"); + public static final Tag DOUBLE = new Tag(PREFIX + "double"); + + static { + standardTags.add(BYTE); + standardTags.add(SHORT); + standardTags.add(LONG); + standardTags.add(DOUBLE); + } public StringKeyConstructor(Path path, LoaderOptions loaderOptions) { super(loaderOptions); + this.yamlConstructors.put(BYTE, new ConstructYamlByte()); + this.yamlConstructors.put(SHORT, new ConstructYamlShort()); + this.yamlConstructors.put(LONG, new ConstructYamlLong()); + this.yamlConstructors.put(FLOAT, new ConstructYamlFloatSingle()); // 覆盖默认实现 + this.yamlConstructors.put(DOUBLE, new ConstructYamlDouble()); this.path = path; } @@ -235,4 +250,64 @@ public class StringKeyConstructor extends SafeConstructor { configKey, String.valueOf(node.getStartMark().getLine() + 1)); } -} \ No newline at end of file + + public class ConstructYamlByte extends ConstructYamlInt { + + @Override + public Object construct(Node node) { + Object value = super.construct(node); + if (value instanceof Number number) { + return number.byteValue(); + } + throw new RuntimeException("Unexpected type: " + value.getClass().getName()); + } + } + + public class ConstructYamlShort extends ConstructYamlInt { + + @Override + public Object construct(Node node) { + Object value = super.construct(node); + if (value instanceof Number number) { + return number.shortValue(); + } + throw new RuntimeException("Unexpected type: " + value.getClass().getName()); + } + } + + public class ConstructYamlLong extends ConstructYamlInt { + + @Override + public Object construct(Node node) { + Object value = super.construct(node); + if (value instanceof Number number) { + return number.longValue(); + } + throw new RuntimeException("Unexpected type: " + value.getClass().getName()); + } + } + + public class ConstructYamlFloatSingle extends ConstructYamlFloat { + + @Override + public Object construct(Node node) { + Object value = super.construct(node); + if (value instanceof Number number) { + return number.floatValue(); + } + throw new RuntimeException("Unexpected type: " + value.getClass().getName()); + } + } + + public class ConstructYamlDouble extends ConstructYamlFloat { + + @Override + public Object construct(Node node) { + Object value = super.construct(node); + if (value instanceof Number number) { + return number.doubleValue(); + } + throw new RuntimeException("Unexpected type: " + value.getClass().getName()); + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/template/TemplateManagerImpl.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/template/TemplateManagerImpl.java index 3356a760f..3f382abdc 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/template/TemplateManagerImpl.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/template/TemplateManagerImpl.java @@ -272,14 +272,8 @@ public class TemplateManagerImpl implements TemplateManager { } } if (hasMerges && merge instanceof Map rawMerges) { - Map mergeMap = (Map) rawMerges; - for (Map.Entry inputEntry : mergeMap.entrySet()) { - ArgumentString inputKey = inputEntry.getKey(); - Object key = inputKey.get(parentArguments); - if (key != null) { - merges.put(key.toString(), processUnknownValue(inputEntry.getValue(), arguments)); - } - } + Map mergeMap = (Map) rawMerges; + merges.putAll(mergeMap); } return new TemplateProcessingResult( templateList, diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/AbstractChainParameterContext.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/AbstractChainParameterContext.java index f85e82333..2ca6c9257 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/AbstractChainParameterContext.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/AbstractChainParameterContext.java @@ -21,6 +21,7 @@ public abstract class AbstractChainParameterContext extends AbstractCommonContex CHAIN_PARAMETERS.put(DirectContextParameters.OFF_HAND_ITEM, itemProvider); CHAIN_PARAMETERS.put(DirectContextParameters.FURNITURE_ITEM, itemProvider); CHAIN_PARAMETERS.put(DirectContextParameters.ITEM_IN_HAND, itemProvider); + CHAIN_PARAMETERS.put(DirectContextParameters.ITEM, itemProvider); } @SuppressWarnings("unchecked") diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/AbstractCommonContext.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/AbstractCommonContext.java index 910678475..c4e0966b4 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/AbstractCommonContext.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/AbstractCommonContext.java @@ -1,8 +1,11 @@ package net.momirealms.craftengine.core.plugin.context; import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; +import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.text.minimessage.*; +import net.momirealms.craftengine.core.util.ArrayUtils; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.List; import java.util.Optional; @@ -32,12 +35,27 @@ public abstract class AbstractCommonContext implements Context { @NotNull public TagResolver[] tagResolvers() { if (this.tagResolvers == null) { - this.tagResolvers = new TagResolver[]{ShiftTag.INSTANCE, ImageTag.INSTANCE, new I18NTag(this), new NamedArgumentTag(this), - new PlaceholderTag(this), new ExpressionTag(this), new GlobalVariableTag(this)}; + this.tagResolvers = getTagResolver(); } return this.tagResolvers; } + @Nullable + protected TagResolver[] getTagResolver() { + return ArrayUtils.mergeNoCopy(getExternalTagResolvers(), getInternalTagResolvers()); + } + + @Nullable + protected TagResolver[] getExternalTagResolvers() { + return CraftEngine.instance().compatibilityManager().createExternalTagResolvers(this); + } + + @NotNull + protected TagResolver[] getInternalTagResolvers() { + return new TagResolver[]{ShiftTag.INSTANCE, ImageTag.INSTANCE, new I18NTag(this), new NamedArgumentTag(this), + new PlaceholderTag(this), new ExpressionTag(this), new GlobalVariableTag(this)}; + } + @Override public Optional getOptionalParameter(ContextKey parameter) { if (!this.additionalParameterProviders.isEmpty()) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/NetworkTextReplaceContext.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/NetworkTextReplaceContext.java index 1b80021c5..1b4bdc5d9 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/NetworkTextReplaceContext.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/NetworkTextReplaceContext.java @@ -1,35 +1,23 @@ package net.momirealms.craftengine.core.plugin.context; -import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.plugin.text.minimessage.*; +import org.jetbrains.annotations.NotNull; import java.util.Map; -public final class NetworkTextReplaceContext extends AbstractChainParameterContext implements PlayerContext { - private final Player player; +public final class NetworkTextReplaceContext extends PlayerOptionalContext implements PlayerContext { public NetworkTextReplaceContext(Player player) { - super(new ContextHolder(Map.of(DirectContextParameters.PLAYER, () -> player))); - this.player = player; + super(player, new ContextHolder(Map.of(DirectContextParameters.PLAYER, () -> player))); } - public static NetworkTextReplaceContext of(Player player) { + public static @NotNull NetworkTextReplaceContext of(Player player) { return new NetworkTextReplaceContext(player); } @Override public Player player() { - return player; - } - - @Override - public TagResolver[] tagResolvers() { - if (this.tagResolvers == null) { - this.tagResolvers = new TagResolver[]{ShiftTag.INSTANCE, ImageTag.INSTANCE, new PlaceholderTag(this), new I18NTag(this), - new NamedArgumentTag(this), new ExpressionTag(this), new GlobalVariableTag(this)}; - } - return this.tagResolvers; + return super.player; } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/PlayerOptionalContext.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/PlayerOptionalContext.java index e38a1668d..252b3c2a1 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/PlayerOptionalContext.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/PlayerOptionalContext.java @@ -1,9 +1,7 @@ package net.momirealms.craftengine.core.plugin.context; -import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.plugin.text.minimessage.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -63,14 +61,4 @@ public class PlayerOptionalContext extends AbstractChainParameterContext impleme public boolean isPlayerPresent() { return this.player != null; } - - @Override - @NotNull - public TagResolver[] tagResolvers() { - if (this.tagResolvers == null) { - this.tagResolvers = new TagResolver[]{ShiftTag.INSTANCE, ImageTag.INSTANCE, new PlaceholderTag(this), new I18NTag(this), - new NamedArgumentTag(this), new ExpressionTag(this), new GlobalVariableTag(this)}; - } - return this.tagResolvers; - } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/CommonConditions.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/CommonConditions.java index 156c17856..991ea9e0a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/CommonConditions.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/CommonConditions.java @@ -11,6 +11,7 @@ public final class CommonConditions { public static final Key ANY_OF = Key.of("craftengine:any_of"); public static final Key INVERTED = Key.of("craftengine:inverted"); public static final Key MATCH_ITEM = Key.of("craftengine:match_item"); + public static final Key HAS_ITEM = Key.of("craftengine:has_item"); public static final Key MATCH_ENTITY = Key.of("craftengine:match_entity"); public static final Key MATCH_BLOCK = Key.of("craftengine:match_block"); public static final Key MATCH_BLOCK_PROPERTY = Key.from("craftengine:match_block_property"); @@ -29,4 +30,5 @@ public final class CommonConditions { public static final Key EXPRESSION = Key.from("craftengine:expression"); public static final Key IS_NULL = Key.from("craftengine:is_null"); public static final Key HAND = Key.from("craftengine:hand"); + public static final Key HAS_PLAYER = Key.from("craftengine:has_player"); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/EnchantmentCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/EnchantmentCondition.java index 05bb914e9..fe756f1ff 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/EnchantmentCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/EnchantmentCondition.java @@ -36,7 +36,7 @@ public class EnchantmentCondition implements Condition return this.expression.apply(level); } - public static class FactoryImpl implements ConditionFactory { + public static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/ExpressionCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/ExpressionCondition.java index 3dc4a67e2..b378df015 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/ExpressionCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/ExpressionCondition.java @@ -27,7 +27,7 @@ public class ExpressionCondition implements Condition @Override public boolean test(CTX ctx) { - String exp = this.expression.get(ctx); + String exp = this.expression.get(ctx).replace("\\<", "<"); // fixme minimessage added a \ before < Expression expr = new Expression(exp); try { return expr.evaluate().getBooleanValue(); diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/HasItemCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/HasItemCondition.java new file mode 100644 index 000000000..213ffd206 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/HasItemCondition.java @@ -0,0 +1,38 @@ +package net.momirealms.craftengine.core.plugin.context.condition; + +import net.momirealms.craftengine.core.item.Item; +import net.momirealms.craftengine.core.plugin.context.Condition; +import net.momirealms.craftengine.core.plugin.context.Context; +import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; +import net.momirealms.craftengine.core.util.ItemUtils; +import net.momirealms.craftengine.core.util.Key; + +import java.util.Map; +import java.util.Optional; + +public class HasItemCondition implements Condition { + + public HasItemCondition() { + } + + @Override + public Key type() { + return CommonConditions.HAS_ITEM; + } + + @Override + public boolean test(CTX ctx) { + Optional> item = ctx.getOptionalParameter(DirectContextParameters.ITEM_IN_HAND); + if (item.isEmpty()) return false; + Item itemInHand = item.get(); + return !ItemUtils.isEmpty(itemInHand); + } + + public static class FactoryImpl implements ConditionFactory { + + @Override + public Condition create(Map arguments) { + return new HasItemCondition<>(); + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/HasPlayerCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/HasPlayerCondition.java new file mode 100644 index 000000000..69d6f211e --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/HasPlayerCondition.java @@ -0,0 +1,35 @@ +package net.momirealms.craftengine.core.plugin.context.condition; + +import net.momirealms.craftengine.core.plugin.context.Condition; +import net.momirealms.craftengine.core.plugin.context.Context; +import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.util.Key; + +import java.util.Map; + +public class HasPlayerCondition implements Condition { + + public HasPlayerCondition() { + } + + @Override + public Key type() { + return CommonConditions.HAS_PLAYER; + } + + @Override + public boolean test(CTX ctx) { + if (ctx instanceof PlayerOptionalContext context) { + return context.isPlayerPresent(); + } + return false; + } + + public static class FactoryImpl implements ConditionFactory { + + @Override + public Condition create(Map arguments) { + return new HasPlayerCondition<>(); + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/MatchItemCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/MatchItemCondition.java index f6c7f78a8..ae467cf1b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/MatchItemCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/MatchItemCondition.java @@ -35,7 +35,7 @@ public class MatchItemCondition implements Condition { @Override public Condition create(Map arguments) { - List ids = MiscUtils.getAsStringList(arguments.get("id")); + List ids = MiscUtils.getAsStringList(ResourceConfigUtils.get(arguments, "id", "item")); if (ids.isEmpty()) { throw new LocalizedResourceConfigException("warning.config.condition.match_item.missing_id"); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/event/EventConditions.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/event/EventConditions.java index c5e0e3c71..b17921ed4 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/event/EventConditions.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/event/EventConditions.java @@ -1,7 +1,7 @@ package net.momirealms.craftengine.core.plugin.context.event; import net.momirealms.craftengine.core.plugin.context.Condition; -import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.condition.*; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.registry.BuiltInRegistries; @@ -16,6 +16,8 @@ import java.util.Map; public class EventConditions { static { + register(CommonConditions.HAS_PLAYER, new HasPlayerCondition.FactoryImpl<>()); + register(CommonConditions.HAS_ITEM, new HasItemCondition.FactoryImpl<>()); register(CommonConditions.MATCH_ITEM, new MatchItemCondition.FactoryImpl<>()); register(CommonConditions.MATCH_ENTITY, new MatchEntityCondition.FactoryImpl<>()); register(CommonConditions.MATCH_BLOCK, new MatchBlockCondition.FactoryImpl<>()); @@ -24,7 +26,7 @@ public class EventConditions { register(CommonConditions.SURVIVES_EXPLOSION, new SurvivesExplosionCondition.FactoryImpl<>()); register(CommonConditions.ANY_OF, new AnyOfCondition.FactoryImpl<>(EventConditions::fromMap)); register(CommonConditions.ALL_OF, new AllOfCondition.FactoryImpl<>(EventConditions::fromMap)); - register(CommonConditions.ENCHANTMENT, new EnchantmentCondition.FactoryImpl<>()); + register(CommonConditions.ENCHANTMENT, new EnchantmentCondition.Factory<>()); register(CommonConditions.INVERTED, new InvertedCondition.FactoryImpl<>(EventConditions::fromMap)); register(CommonConditions.FALLING_BLOCK, new FallingBlockCondition.FactoryImpl<>()); register(CommonConditions.RANDOM, new RandomCondition.FactoryImpl<>()); @@ -40,22 +42,22 @@ public class EventConditions { register(CommonConditions.ON_COOLDOWN, new OnCooldownCondition.FactoryImpl<>()); } - public static void register(Key key, ConditionFactory factory) { - ((WritableRegistry>) BuiltInRegistries.EVENT_CONDITION_FACTORY) + public static void register(Key key, ConditionFactory factory) { + ((WritableRegistry>) BuiltInRegistries.EVENT_CONDITION_FACTORY) .register(ResourceKey.create(Registries.EVENT_CONDITION_FACTORY.location(), key), factory); } - public static Condition fromMap(Map map) { + public static Condition fromMap(Map map) { String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), "warning.config.event.condition.missing_type"); Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE); if (key.value().charAt(0) == '!') { - ConditionFactory factory = BuiltInRegistries.EVENT_CONDITION_FACTORY.getValue(new Key(key.namespace(), key.value().substring(1))); + ConditionFactory factory = BuiltInRegistries.EVENT_CONDITION_FACTORY.getValue(new Key(key.namespace(), key.value().substring(1))); if (factory == null) { throw new LocalizedResourceConfigException("warning.config.event.condition.invalid_type", type); } return new InvertedCondition<>(factory.create(map)); } else { - ConditionFactory factory = BuiltInRegistries.EVENT_CONDITION_FACTORY.getValue(key); + ConditionFactory factory = BuiltInRegistries.EVENT_CONDITION_FACTORY.getValue(key); if (factory == null) { throw new LocalizedResourceConfigException("warning.config.event.condition.invalid_type", type); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/event/EventFunctions.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/event/EventFunctions.java index e23bee3d9..74592b40a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/event/EventFunctions.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/event/EventFunctions.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.plugin.context.event; -import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.function.*; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.registry.BuiltInRegistries; @@ -24,6 +24,8 @@ public class EventFunctions { register(CommonFunctions.CANCEL_EVENT, new CancelEventFunction.FactoryImpl<>(EventConditions::fromMap)); register(CommonFunctions.RUN, new RunFunction.FactoryImpl<>(EventFunctions::fromMap, EventConditions::fromMap)); register(CommonFunctions.PLACE_BLOCK, new PlaceBlockFunction.FactoryImpl<>(EventConditions::fromMap)); + register(CommonFunctions.UPDATE_BLOCK_PROPERTY, new UpdateBlockPropertyFunction.FactoryImpl<>(EventConditions::fromMap)); + register(CommonFunctions.TRANSFORM_BLOCK, new TransformBlockFunction.FactoryImpl<>(EventConditions::fromMap)); register(CommonFunctions.BREAK_BLOCK, new BreakBlockFunction.FactoryImpl<>(EventConditions::fromMap)); register(CommonFunctions.UPDATE_INTERACTION_TICK, new UpdateInteractionFunction.FactoryImpl<>(EventConditions::fromMap)); register(CommonFunctions.SET_COUNT, new SetCountFunction.FactoryImpl<>(EventConditions::fromMap)); @@ -46,26 +48,32 @@ public class EventFunctions { register(CommonFunctions.SET_VARIABLE, new SetVariableFunction.FactoryImpl<>(EventConditions::fromMap)); register(CommonFunctions.TOAST, new ToastFunction.FactoryImpl<>(EventConditions::fromMap)); register(CommonFunctions.DAMAGE, new DamageFunction.FactoryImpl<>(EventConditions::fromMap)); + register(CommonFunctions.MERCHANT_TRADE, new MerchantTradeFunction.FactoryImpl<>(EventConditions::fromMap)); + register(CommonFunctions.REMOVE_ENTITY, new RemoveEntityFunction.FactoryImpl<>(EventConditions::fromMap)); + register(CommonFunctions.IF_ELSE, new IfElseFunction.FactoryImpl<>(EventConditions::fromMap, EventFunctions::fromMap)); + register(CommonFunctions.ALTERNATIVES, new IfElseFunction.FactoryImpl<>(EventConditions::fromMap, EventFunctions::fromMap)); + register(CommonFunctions.WHEN, new WhenFunction.FactoryImpl<>(EventConditions::fromMap, EventFunctions::fromMap)); + register(CommonFunctions.DAMAGE_ITEM, new DamageItemFunction.FactoryImpl<>(EventConditions::fromMap)); } - public static void register(Key key, FunctionFactory factory) { - ((WritableRegistry>) BuiltInRegistries.EVENT_FUNCTION_FACTORY) + public static void register(Key key, FunctionFactory factory) { + ((WritableRegistry>) BuiltInRegistries.EVENT_FUNCTION_FACTORY) .register(ResourceKey.create(Registries.EVENT_FUNCTION_FACTORY.location(), key), factory); } - public static Function fromMap(Map map) { + public static Function fromMap(Map map) { String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), "warning.config.function.missing_type"); Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE); - FunctionFactory factory = BuiltInRegistries.EVENT_FUNCTION_FACTORY.getValue(key); + FunctionFactory factory = BuiltInRegistries.EVENT_FUNCTION_FACTORY.getValue(key); if (factory == null) { throw new LocalizedResourceConfigException("warning.config.function.invalid_type", type); } return factory.create(map); } - public static Map>> parseEvents(Object eventsObj) { + public static Map>> parseEvents(Object eventsObj) { if (eventsObj == null) return Map.of(); - EnumMap>> events = new EnumMap<>(EventTrigger.class); + EnumMap>> events = new EnumMap<>(EventTrigger.class); if (eventsObj instanceof Map eventsSection) { Map eventsSectionMap = MiscUtils.castToMap(eventsSection, false); for (Map.Entry eventEntry : eventsSectionMap.entrySet()) { @@ -84,7 +92,7 @@ public class EventFunctions { try { EventTrigger eventTrigger = EventTrigger.byName(on); if (eventSection.containsKey("type")) { - Function function = EventFunctions.fromMap(eventSection); + Function function = EventFunctions.fromMap(eventSection); events.computeIfAbsent(eventTrigger, k -> new ArrayList<>(4)).add(function); } else if (eventSection.containsKey("functions")) { events.computeIfAbsent(eventTrigger, k -> new ArrayList<>(4)).add(Objects.requireNonNull(BuiltInRegistries.EVENT_FUNCTION_FACTORY.getValue(CommonFunctions.RUN)).create(eventSection)); diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/event/EventTrigger.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/event/EventTrigger.java index 7e5f3c882..2a29e7fd9 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/event/EventTrigger.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/event/EventTrigger.java @@ -10,6 +10,7 @@ public enum EventTrigger { CONSUME("eat", "consume", "drink"), BREAK("break", "dig"), PLACE("place", "build"), + PICK_UP("pick_up", "pick"), STEP("step"),; public static final Map BY_NAME = new HashMap<>(); diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/AbstractConditionalFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/AbstractConditionalFunction.java index 4c20d65a7..1f90610f2 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/AbstractConditionalFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/AbstractConditionalFunction.java @@ -28,29 +28,73 @@ public abstract class AbstractConditionalFunction implement protected abstract void runInternal(CTX ctx); public static abstract class AbstractFactory implements FunctionFactory { - private final java.util.function.Function, Condition> factory; + protected final java.util.function.Function, Condition> conditionFactory; - public AbstractFactory(java.util.function.Function, Condition> factory) { - this.factory = factory; + public AbstractFactory(java.util.function.Function, Condition> conditionFactory) { + this.conditionFactory = conditionFactory; } public java.util.function.Function, Condition> conditionFactory() { - return factory; + return this.conditionFactory; } protected List> getPredicates(Map arguments) { + if (arguments == null) return List.of(); Object predicates = arguments.get("conditions"); if (predicates == null) return List.of(); - if (predicates instanceof List list) { - List> conditions = new ArrayList<>(list.size()); - for (Object o : list) { - conditions.add(factory.apply(MiscUtils.castToMap(o, false))); + switch (predicates) { + case List list -> { + List> conditions = new ArrayList<>(list.size()); + for (Object o : list) { + conditions.add(this.conditionFactory.apply(MiscUtils.castToMap(o, false))); + } + return conditions; + } + case Map map -> { + return List.of(this.conditionFactory.apply(MiscUtils.castToMap(map, false))); + } + default -> { + return List.of(); + } + } + } + } + + public static abstract class AbstractFunctionalFactory extends AbstractFactory { + protected final java.util.function.Function, Function> functionFactory; + + public AbstractFunctionalFactory(java.util.function.Function, Condition> factory, java.util.function.Function, Function> functionFactory) { + super(factory); + this.functionFactory = functionFactory; + } + + public java.util.function.Function, Function> functionFactory() { + return functionFactory; + } + + protected List> getFunctions(Map arguments) { + if (arguments == null) return List.of(); + Object functions = arguments.get("functions"); + return parseFunctions(functions); + } + + protected List> parseFunctions(Object functions) { + if (functions == null) return List.of(); + switch (functions) { + case List list -> { + List> conditions = new ArrayList<>(list.size()); + for (Object o : list) { + conditions.add(this.functionFactory.apply(MiscUtils.castToMap(o, false))); + } + return conditions; + } + case Map map -> { + return List.of(this.functionFactory.apply(MiscUtils.castToMap(map, false))); + } + default -> { + return List.of(); } - return conditions; - } else if (predicates instanceof Map map) { - return List.of(factory.apply(MiscUtils.castToMap(map, false))); } - throw new UnsupportedOperationException("Unsupported conditions argument class type: " + predicates.getClass().getSimpleName()); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/AllOfFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/AllOfFunction.java new file mode 100644 index 000000000..1f2810c24 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/AllOfFunction.java @@ -0,0 +1,31 @@ +package net.momirealms.craftengine.core.plugin.context.function; + +import net.momirealms.craftengine.core.plugin.context.Context; +import net.momirealms.craftengine.core.util.Key; + +import java.util.Collection; + +public class AllOfFunction implements Function { + private final Function[] functions; + + public AllOfFunction(Function[] functions) { + this.functions = functions; + } + + @SuppressWarnings("unchecked") + public AllOfFunction(Collection> functions) { + this.functions = functions.toArray(new Function[0]); + } + + @Override + public void run(CTX ctx) { + for (Function function : this.functions) { + function.run(ctx); + } + } + + @Override + public Key type() { + return CommonFunctions.ALL_OF; + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/CommonFunctions.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/CommonFunctions.java index 56c9ab931..5cd4a5d0a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/CommonFunctions.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/CommonFunctions.java @@ -20,6 +20,8 @@ public final class CommonFunctions { public static final Key UPDATE_INTERACTION_TICK = Key.of("craftengine:update_interaction_tick"); public static final Key SET_COUNT = Key.of("craftengine:set_count"); public static final Key PLACE_BLOCK = Key.of("craftengine:place_block"); + public static final Key TRANSFORM_BLOCK = Key.of("craftengine:transform_block"); + public static final Key UPDATE_BLOCK_PROPERTY = Key.of("craftengine:update_block_property"); public static final Key SET_FOOD = Key.of("craftengine:set_food"); public static final Key SET_COOLDOWN = Key.of("craftengine:set_cooldown"); public static final Key REMOVE_COOLDOWN = Key.of("craftengine:remove_cooldown"); @@ -35,4 +37,12 @@ public final class CommonFunctions { public static final Key TOAST = Key.of("craftengine:toast"); public static final Key SET_VARIABLE = Key.of("craftengine:set_variable"); public static final Key DAMAGE = Key.of("craftengine:damage"); + public static final Key MERCHANT_TRADE = Key.of("craftengine:merchant_trade"); + public static final Key REMOVE_ENTITY = Key.of("craftengine:remove_entity"); + public static final Key IF_ELSE = Key.of("craftengine:if_else"); + public static final Key ALTERNATIVES = Key.of("craftengine:alternatives"); + public static final Key WHEN = Key.of("craftengine:when"); + public static final Key ALL_OF = Key.of("craftengine:all_of"); + public static final Key DUMMY = Key.of("craftengine:dummy"); + public static final Key DAMAGE_ITEM = Key.of("craftengine:damage_item"); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DamageFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DamageFunction.java index 6ebb22d35..97e197b55 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DamageFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DamageFunction.java @@ -26,7 +26,7 @@ public class DamageFunction extends AbstractConditionalFunc @Override protected void runInternal(CTX ctx) { - selector.get(ctx).forEach(p -> p.damage(amount.getDouble(ctx), damageType)); + selector.get(ctx).forEach(p -> p.damage(amount.getDouble(ctx), damageType, null)); } @Override @@ -43,7 +43,7 @@ public class DamageFunction extends AbstractConditionalFunc @Override public Function create(Map arguments) { PlayerSelector selector = PlayerSelectors.fromObject(arguments.getOrDefault("target", "self"), conditionFactory()); - Key damageType = Key.of(ResourceConfigUtils.getAsString(arguments.getOrDefault("damage-type", "generic"))); + Key damageType = Key.of(ResourceConfigUtils.getAsStringOrNull(arguments.getOrDefault("damage-type", "generic"))); NumberProvider amount = NumberProviders.fromObject(arguments.getOrDefault("amount", 1f)); return new DamageFunction<>(selector, damageType, amount, getPredicates(arguments)); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DamageItemFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DamageItemFunction.java new file mode 100644 index 000000000..e5cbedec6 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DamageItemFunction.java @@ -0,0 +1,57 @@ +package net.momirealms.craftengine.core.plugin.context.function; + +import net.momirealms.craftengine.core.entity.EquipmentSlot; +import net.momirealms.craftengine.core.entity.player.InteractionHand; +import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.item.Item; +import net.momirealms.craftengine.core.plugin.context.Condition; +import net.momirealms.craftengine.core.plugin.context.Context; +import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; +import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; +import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; +import net.momirealms.craftengine.core.util.Key; + +import java.util.List; +import java.util.Map; + +public class DamageItemFunction extends AbstractConditionalFunction { + private final NumberProvider amount; + + public DamageItemFunction(NumberProvider amount, List> predicates) { + super(predicates); + this.amount = amount; + } + + @Override + protected void runInternal(CTX ctx) { + Player player = ctx.getOptionalParameter(DirectContextParameters.PLAYER).orElse(null); + if (player == null) return; + Item item = ctx.getOptionalParameter(DirectContextParameters.ITEM_IN_HAND).orElse(null); + InteractionHand hand = ctx.getOptionalParameter(DirectContextParameters.HAND).orElse(null); + if (item == null && hand != null) { + item = player.getItemInHand(hand); + } else if (item == null) { + return; + } + EquipmentSlot slot = hand == null ? null : hand == InteractionHand.MAIN_HAND ? EquipmentSlot.MAIN_HAND : EquipmentSlot.OFF_HAND; + item.hurtAndBreak(amount.getInt(ctx), player, slot); + } + + @Override + public Key type() { + return CommonFunctions.DAMAGE_ITEM; + } + + public static class FactoryImpl extends AbstractFactory { + + public FactoryImpl(java.util.function.Function, Condition> factory) { + super(factory); + } + + @Override + public Function create(Map arguments) { + NumberProvider amount = NumberProviders.fromObject(arguments.getOrDefault("amount", 1)); + return new DamageItemFunction<>(amount, getPredicates(arguments)); + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DummyFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DummyFunction.java new file mode 100644 index 000000000..080be0808 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DummyFunction.java @@ -0,0 +1,16 @@ +package net.momirealms.craftengine.core.plugin.context.function; + +import net.momirealms.craftengine.core.plugin.context.Context; +import net.momirealms.craftengine.core.util.Key; + +public class DummyFunction implements Function { + + @Override + public void run(CTX ctx) { + } + + @Override + public Key type() { + return CommonFunctions.DUMMY; + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/Function.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/Function.java index 968feb369..9296ba624 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/Function.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/Function.java @@ -3,9 +3,32 @@ package net.momirealms.craftengine.core.plugin.context.function; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.util.Key; +import java.util.List; + public interface Function { void run(CTX ctx); Key type(); + + static Function allOf(List> functions) { + if (functions == null || functions.isEmpty()) { + return new DummyFunction<>(); + } + if (functions.size() == 1) { + return functions.getFirst(); + } + return new AllOfFunction<>(functions); + } + + @SafeVarargs + static Function allOf(Function... functions) { + if (functions == null || functions.length == 0) { + return new DummyFunction<>(); + } + if (functions.length == 1) { + return functions[0]; + } + return new AllOfFunction<>(functions); + } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/IfElseFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/IfElseFunction.java new file mode 100644 index 000000000..70611d061 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/IfElseFunction.java @@ -0,0 +1,56 @@ +package net.momirealms.craftengine.core.plugin.context.function; + +import net.momirealms.craftengine.core.plugin.context.Condition; +import net.momirealms.craftengine.core.plugin.context.Context; +import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.MiscUtils; +import net.momirealms.craftengine.core.util.Pair; +import net.momirealms.craftengine.core.util.ResourceConfigUtils; + +import java.util.List; +import java.util.Map; +import java.util.function.Predicate; + +public class IfElseFunction extends AbstractConditionalFunction { + private final List, Function>> conditions; + + public IfElseFunction(List> predicates, List, Function>> conditions) { + super(predicates); + this.conditions = conditions; + } + + @Override + public void runInternal(CTX ctx) { + for (Pair, Function> condition : this.conditions) { + if (condition.left().test(ctx)) { + condition.right().run(ctx); + break; + } + } + } + + @Override + public Key type() { + return CommonFunctions.IF_ELSE; + } + + public static class FactoryImpl extends AbstractFunctionalFactory { + + public FactoryImpl(java.util.function.Function, Condition> conditionFactory, java.util.function.Function, Function> functionFactory) { + super(conditionFactory, functionFactory); + } + + @Override + public Function create(Map arguments) { + List, Function>> branches = ResourceConfigUtils.parseConfigAsList( + ResourceConfigUtils.requireNonNullOrThrow(ResourceConfigUtils.get(arguments, "rules", "rule"), "warning.config.function.if_else.missing_rules"), + map -> { + List> conditions = getPredicates(map); + List> functions = getFunctions(map); + return new Pair<>(MiscUtils.allOf(conditions), Function.allOf(functions)); + } + ); + return new IfElseFunction<>(getPredicates(arguments), branches); + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/MerchantTradeFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/MerchantTradeFunction.java new file mode 100644 index 000000000..43ac9d0a6 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/MerchantTradeFunction.java @@ -0,0 +1,122 @@ +package net.momirealms.craftengine.core.plugin.context.function; + +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.item.Item; +import net.momirealms.craftengine.core.item.ItemBuildContext; +import net.momirealms.craftengine.core.item.ItemKeys; +import net.momirealms.craftengine.core.item.modifier.ComponentsModifier; +import net.momirealms.craftengine.core.item.modifier.TagsModifier; +import net.momirealms.craftengine.core.item.trade.MerchantOffer; +import net.momirealms.craftengine.core.plugin.CraftEngine; +import net.momirealms.craftengine.core.plugin.context.*; +import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; +import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelector; +import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelectors; +import net.momirealms.craftengine.core.util.*; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public class MerchantTradeFunction extends AbstractConditionalFunction { + private final String title; + private final PlayerSelector selector; + private final LazyReference>> offers; + + public MerchantTradeFunction(List> predicates, @Nullable PlayerSelector selector, String title, LazyReference>> offers) { + super(predicates); + this.title = title; + this.selector = selector; + this.offers = offers; + } + + @Override + public void runInternal(CTX ctx) { + if (this.selector == null) { + ctx.getOptionalParameter(DirectContextParameters.PLAYER).ifPresent(it -> { + CraftEngine.instance().guiManager().openMerchant(it, this.title == null ? null : AdventureHelper.miniMessage().deserialize(this.title, ctx.tagResolvers()), this.offers.get()); + }); + } else { + for (Player viewer : this.selector.get(ctx)) { + RelationalContext relationalContext = ViewerContext.of(ctx, PlayerOptionalContext.of(viewer)); + CraftEngine.instance().guiManager().openMerchant(viewer, this.title == null ? null : AdventureHelper.miniMessage().deserialize(this.title, relationalContext.tagResolvers()), this.offers.get()); + } + } + } + + @Override + public Key type() { + return CommonFunctions.MESSAGE; + } + + public static class FactoryImpl extends AbstractFactory { + + public FactoryImpl(java.util.function.Function, Condition> factory) { + super(factory); + } + + @SuppressWarnings({"unchecked", "rawtypes"}) + @Override + public Function create(Map arguments) { + String title = ResourceConfigUtils.getAsStringOrNull(arguments.get("title")); + List merchantOffers = ResourceConfigUtils.parseConfigAsList(ResourceConfigUtils.requireNonNullOrThrow(arguments.get("offers"), "warning.config.function.merchant_trade.missing_offers"), map -> { + Object cost1 = ResourceConfigUtils.requireNonNullOrThrow(map.get("cost-1"), "warning.config.function.merchant_trade.offer.missing_cost_1"); + Object cost2 = map.get("cost-2"); + Object result = ResourceConfigUtils.requireNonNullOrThrow(map.get("result"), "warning.config.function.merchant_trade.offer.missing_result"); + int exp = ResourceConfigUtils.getAsInt(map.get("experience"), "experience"); + return new TempOffer(cost1, cost2, result, exp); + }); + return new MerchantTradeFunction<>(getPredicates(arguments), PlayerSelectors.fromObject(arguments.get("target"), conditionFactory()), title, + LazyReference.lazyReference(() -> { + List> offers = new ArrayList<>(merchantOffers.size()); + for (TempOffer offer : merchantOffers) { + Item cost1 = parseIngredient(offer.cost1); + Optional cost2 = Optional.ofNullable(parseIngredient(offer.cost2)); + Item result = parseIngredient(offer.result); + offers.add(new MerchantOffer<>(cost1, cost2, result, false, 0, Integer.MAX_VALUE, offer.exp, 0, 0, 0)); + } + return offers; + })); + } + + public record TempOffer(Object cost1, Object cost2, Object result, int exp) { + } + + private Item parseIngredient(Object arguments) { + if (arguments == null) return null; + if (arguments instanceof Map map) { + Map args = MiscUtils.castToMap(map, false); + String itemName = args.getOrDefault("item", "minecraft:stone").toString(); + Item item = createSafeItem(itemName); + if (args.containsKey("count")) { + item.count(ResourceConfigUtils.getAsInt(args.get("count"), "count")); + } + if (VersionHelper.isOrAbove1_20_5() && args.containsKey("components")) { + item = new ComponentsModifier<>(MiscUtils.castToMap(args.get("components"), false)).apply(item, ItemBuildContext.empty()); + } + if (!VersionHelper.isOrAbove1_20_5() && args.containsKey("nbt")) { + item = new TagsModifier<>(MiscUtils.castToMap(args.get("nbt"), false)).apply(item, ItemBuildContext.empty()); + } + return item; + } else { + String itemName = arguments.toString(); + return createSafeItem(itemName); + } + } + + private Item createSafeItem(String itemName) { + Key itemId = Key.of(itemName); + Item item = CraftEngine.instance().itemManager().createWrappedItem(itemId, null); + if (item == null) { + item = CraftEngine.instance().itemManager().createWrappedItem(ItemKeys.STONE, null); + assert item != null; + item.itemNameComponent(Component.text(itemName).color(NamedTextColor.RED)); + } + return item; + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/PlaceBlockFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/PlaceBlockFunction.java index 3068766eb..4734cb594 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/PlaceBlockFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/PlaceBlockFunction.java @@ -58,11 +58,12 @@ public class PlaceBlockFunction extends AbstractConditional @Override public Function create(Map arguments) { String state = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("block-state"), "warning.config.function.place_block.missing_block_state"); - NumberProvider x = NumberProviders.fromObject(arguments.getOrDefault("x", "")); - NumberProvider y = NumberProviders.fromObject(arguments.getOrDefault("y", "")); - NumberProvider z = NumberProviders.fromObject(arguments.getOrDefault("z", "")); - NumberProvider flags = Optional.ofNullable(arguments.get("update-flags")).map(NumberProviders::fromObject).orElse(NumberProviders.direct(UpdateOption.UPDATE_ALL.flags())); - return new PlaceBlockFunction<>(LazyReference.lazyReference(() -> CraftEngine.instance().blockManager().createBlockState(state)), x, y, z, flags, getPredicates(arguments)); + return new PlaceBlockFunction<>(LazyReference.lazyReference(() -> CraftEngine.instance().blockManager().createBlockState(state)), + NumberProviders.fromObject(arguments.getOrDefault("x", "")), + NumberProviders.fromObject(arguments.getOrDefault("y", "")), + NumberProviders.fromObject(arguments.getOrDefault("z", "")), + Optional.ofNullable(arguments.get("update-flags")).map(NumberProviders::fromObject).orElse(NumberProviders.direct(UpdateOption.UPDATE_ALL.flags())), + getPredicates(arguments)); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RemoveEntityFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RemoveEntityFunction.java new file mode 100644 index 000000000..7bc203203 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RemoveEntityFunction.java @@ -0,0 +1,39 @@ +package net.momirealms.craftengine.core.plugin.context.function; + +import net.momirealms.craftengine.core.entity.Entity; +import net.momirealms.craftengine.core.plugin.context.Condition; +import net.momirealms.craftengine.core.plugin.context.Context; +import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; +import net.momirealms.craftengine.core.util.Key; + +import java.util.List; +import java.util.Map; + +public class RemoveEntityFunction extends AbstractConditionalFunction { + + public RemoveEntityFunction(List> predicates) { + super(predicates); + } + + @Override + public void runInternal(CTX ctx) { + ctx.getOptionalParameter(DirectContextParameters.ENTITY).ifPresent(Entity::remove); + } + + @Override + public Key type() { + return CommonFunctions.REMOVE_ENTITY; + } + + public static class FactoryImpl extends AbstractFactory { + + public FactoryImpl(java.util.function.Function, Condition> factory) { + super(factory); + } + + @Override + public Function create(Map arguments) { + return new RemoveEntityFunction<>(getPredicates(arguments)); + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/TransformBlockFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/TransformBlockFunction.java new file mode 100644 index 000000000..2183d51c6 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/TransformBlockFunction.java @@ -0,0 +1,96 @@ +package net.momirealms.craftengine.core.plugin.context.function; + +import net.momirealms.craftengine.core.block.BlockStateWrapper; +import net.momirealms.craftengine.core.block.UpdateOption; +import net.momirealms.craftengine.core.plugin.CraftEngine; +import net.momirealms.craftengine.core.plugin.context.Condition; +import net.momirealms.craftengine.core.plugin.context.Context; +import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; +import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; +import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; +import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.LazyReference; +import net.momirealms.craftengine.core.util.MiscUtils; +import net.momirealms.craftengine.core.util.ResourceConfigUtils; +import net.momirealms.craftengine.core.world.World; +import net.momirealms.craftengine.core.world.WorldPosition; +import net.momirealms.sparrow.nbt.CompoundTag; +import net.momirealms.sparrow.nbt.Tag; + +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Optional; + +public class TransformBlockFunction extends AbstractConditionalFunction { + private final LazyReference lazyBlockState; + private final CompoundTag properties; + private final NumberProvider x; + private final NumberProvider y; + private final NumberProvider z; + private final NumberProvider updateFlags; + + public TransformBlockFunction(LazyReference lazyBlockState, CompoundTag properties, NumberProvider x, NumberProvider y, NumberProvider z, NumberProvider updateFlags, List> predicates) { + super(predicates); + this.properties = properties; + this.x = x; + this.y = y; + this.z = z; + this.updateFlags = updateFlags; + this.lazyBlockState = lazyBlockState; + } + + @Override + public void runInternal(CTX ctx) { + Optional optionalWorldPosition = ctx.getOptionalParameter(DirectContextParameters.POSITION); + if (optionalWorldPosition.isPresent()) { + World world = optionalWorldPosition.get().world(); + int x = MiscUtils.fastFloor(this.x.getDouble(ctx)); + int y = MiscUtils.fastFloor(this.y.getDouble(ctx)); + int z = MiscUtils.fastFloor(this.z.getDouble(ctx)); + BlockStateWrapper existingBlockState = world.getBlockAt(x, y, z).blockState().withProperties(this.properties); + CompoundTag newProperties = new CompoundTag(); + for (String propertyName : existingBlockState.getPropertyNames()) { + newProperties.putString(propertyName, String.valueOf(existingBlockState.getProperty(propertyName)).toLowerCase(Locale.ROOT)); + } + if (!this.properties.isEmpty()) { + for (Map.Entry tagEntry : this.properties.entrySet()) { + newProperties.put(tagEntry.getKey(), tagEntry.getValue()); + } + } + world.setBlockAt(x, y, z, this.lazyBlockState.get().withProperties(newProperties), this.updateFlags.getInt(ctx)); + } + } + + @Override + public Key type() { + return CommonFunctions.TRANSFORM_BLOCK; + } + + public static class FactoryImpl extends AbstractFactory { + + public FactoryImpl(java.util.function.Function, Condition> factory) { + super(factory); + } + + @Override + public Function create(Map arguments) { + String block = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("block"), "warning.config.function.transform_block.missing_block"); + CompoundTag properties = new CompoundTag(); + Map propertiesMap = MiscUtils.castToMap(arguments.get("properties"), true); + if (propertiesMap != null) { + for (Map.Entry entry : propertiesMap.entrySet()) { + properties.putString(entry.getKey(), String.valueOf(entry.getValue())); + } + } + return new TransformBlockFunction<>( + LazyReference.lazyReference(() -> CraftEngine.instance().blockManager().createBlockState(block)), + properties, + NumberProviders.fromObject(arguments.getOrDefault("x", "")), + NumberProviders.fromObject(arguments.getOrDefault("y", "")), + NumberProviders.fromObject(arguments.getOrDefault("z", "")), + Optional.ofNullable(arguments.get("update-flags")).map(NumberProviders::fromObject).orElse(NumberProviders.direct(UpdateOption.UPDATE_ALL.flags())), + getPredicates(arguments)); + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/UpdateBlockPropertyFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/UpdateBlockPropertyFunction.java new file mode 100644 index 000000000..4993e5465 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/UpdateBlockPropertyFunction.java @@ -0,0 +1,78 @@ +package net.momirealms.craftengine.core.plugin.context.function; + +import net.momirealms.craftengine.core.block.BlockStateWrapper; +import net.momirealms.craftengine.core.block.UpdateOption; +import net.momirealms.craftengine.core.plugin.context.Condition; +import net.momirealms.craftengine.core.plugin.context.Context; +import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; +import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; +import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; +import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.MiscUtils; +import net.momirealms.craftengine.core.util.ResourceConfigUtils; +import net.momirealms.craftengine.core.world.ExistingBlock; +import net.momirealms.craftengine.core.world.World; +import net.momirealms.craftengine.core.world.WorldPosition; +import net.momirealms.sparrow.nbt.CompoundTag; + +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public class UpdateBlockPropertyFunction extends AbstractConditionalFunction { + private final CompoundTag properties; + private final NumberProvider x; + private final NumberProvider y; + private final NumberProvider z; + private final NumberProvider updateFlags; + + public UpdateBlockPropertyFunction(CompoundTag properties, NumberProvider x, NumberProvider y, NumberProvider z, NumberProvider updateFlags, List> predicates) { + super(predicates); + this.properties = properties; + this.x = x; + this.y = y; + this.z = z; + this.updateFlags = updateFlags; + } + + @Override + public void runInternal(CTX ctx) { + Optional optionalWorldPosition = ctx.getOptionalParameter(DirectContextParameters.POSITION); + if (optionalWorldPosition.isPresent()) { + World world = optionalWorldPosition.get().world(); + int x = MiscUtils.fastFloor(this.x.getDouble(ctx)); + int y = MiscUtils.fastFloor(this.y.getDouble(ctx)); + int z = MiscUtils.fastFloor(this.z.getDouble(ctx)); + ExistingBlock blockAt = world.getBlockAt(x, y, z); + BlockStateWrapper wrapper = blockAt.blockState().withProperties(this.properties); + world.setBlockAt(x, y, z, wrapper, this.updateFlags.getInt(ctx)); + } + } + + @Override + public Key type() { + return CommonFunctions.UPDATE_BLOCK_PROPERTY; + } + + public static class FactoryImpl extends AbstractFactory { + + public FactoryImpl(java.util.function.Function, Condition> factory) { + super(factory); + } + + @Override + public Function create(Map arguments) { + Map state = ResourceConfigUtils.getAsMap(ResourceConfigUtils.requireNonNullOrThrow(arguments.get("properties"), "warning.config.function.update_block_property.missing_properties"), "properties"); + CompoundTag properties = new CompoundTag(); + for (Map.Entry entry : state.entrySet()) { + properties.putString(entry.getKey(), String.valueOf(entry.getValue())); + } + return new UpdateBlockPropertyFunction<>(properties, + NumberProviders.fromObject(arguments.getOrDefault("x", "")), + NumberProviders.fromObject(arguments.getOrDefault("y", "")), + NumberProviders.fromObject(arguments.getOrDefault("z", "")), + Optional.ofNullable(arguments.get("update-flags")).map(NumberProviders::fromObject).orElse(NumberProviders.direct(UpdateOption.UPDATE_ALL.flags())), + getPredicates(arguments)); + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/WhenFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/WhenFunction.java new file mode 100644 index 000000000..fa55a77a9 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/WhenFunction.java @@ -0,0 +1,63 @@ +package net.momirealms.craftengine.core.plugin.context.function; + +import net.momirealms.craftengine.core.plugin.context.Condition; +import net.momirealms.craftengine.core.plugin.context.Context; +import net.momirealms.craftengine.core.plugin.context.text.TextProvider; +import net.momirealms.craftengine.core.plugin.context.text.TextProviders; +import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.MiscUtils; +import net.momirealms.craftengine.core.util.Pair; +import net.momirealms.craftengine.core.util.ResourceConfigUtils; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class WhenFunction extends AbstractConditionalFunction { + private final TextProvider source; + private final Map> whenMap; + private final Function fallback; + + public WhenFunction(List> predicates, TextProvider source, Map> whenMap, Function fallback) { + super(predicates); + this.whenMap = whenMap; + this.source = source; + this.fallback = fallback; + } + + @Override + public void runInternal(CTX ctx) { + String text = this.source.get(ctx); + Function function = this.whenMap.getOrDefault(text, this.fallback); + function.run(ctx); + } + + @Override + public Key type() { + return CommonFunctions.IF_ELSE; + } + + public static class FactoryImpl extends AbstractFunctionalFactory { + + public FactoryImpl(java.util.function.Function, Condition> conditionFactory, java.util.function.Function, Function> functionFactory) { + super(conditionFactory, functionFactory); + } + + @Override + public Function create(Map arguments) { + TextProvider source = TextProviders.fromString(ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("source"), "warning.config.function.when.missing_source")); + List, Function>> list = ResourceConfigUtils.parseConfigAsList(arguments.get("cases"), map -> { + List when = MiscUtils.getAsStringList(map.get("when")); + List> functions = getFunctions(map); + return Pair.of(when, Function.allOf(functions)); + }); + Map> whenMap = new HashMap<>(); + for (Pair, Function> pair : list) { + for (String when : pair.left()) { + whenMap.put(when, pair.right()); + } + } + return new WhenFunction<>(getPredicates(arguments), source, whenMap, Function.allOf(parseFunctions(arguments.get("fallback")))); + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/parameter/DirectContextParameters.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/parameter/DirectContextParameters.java index a3d0b5335..2191c4da9 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/parameter/DirectContextParameters.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/parameter/DirectContextParameters.java @@ -48,6 +48,7 @@ public final class DirectContextParameters { public static final ContextKey UUID = ContextKey.direct("uuid"); public static final ContextKey> MAIN_HAND_ITEM = ContextKey.direct("main_hand_item"); public static final ContextKey> OFF_HAND_ITEM = ContextKey.direct("off_hand_item"); + public static final ContextKey> ITEM = ContextKey.direct("item"); public static final ContextKey CUSTOM_BLOCK = ContextKey.direct("custom_block"); public static final ContextKey BLOCK = ContextKey.direct("block"); public static final ContextKey TIME = ContextKey.direct("time"); @@ -65,4 +66,5 @@ public final class DirectContextParameters { public static final ContextKey IS_CUSTOM = ContextKey.direct("is_custom"); public static final ContextKey IS_BLOCK_ITEM = ContextKey.direct("is_block_item"); public static final ContextKey GAMEMODE = ContextKey.direct("gamemode"); + public static final ContextKey COUNT = ContextKey.direct("count"); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/parameter/EntityParameterProvider.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/parameter/EntityParameterProvider.java index 27529a7e5..628b8d54c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/parameter/EntityParameterProvider.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/parameter/EntityParameterProvider.java @@ -1,6 +1,7 @@ package net.momirealms.craftengine.core.plugin.context.parameter; import net.momirealms.craftengine.core.entity.Entity; +import net.momirealms.craftengine.core.entity.ItemEntity; import net.momirealms.craftengine.core.plugin.context.ChainParameterProvider; import net.momirealms.craftengine.core.plugin.context.ContextKey; import net.momirealms.craftengine.core.util.MiscUtils; @@ -25,6 +26,12 @@ public class EntityParameterProvider implements ChainParameterProvider { CONTEXT_FUNCTIONS.put(DirectContextParameters.NAME, Entity::name); CONTEXT_FUNCTIONS.put(DirectContextParameters.UUID, Entity::uuid); CONTEXT_FUNCTIONS.put(DirectContextParameters.WORLD, Entity::world); + CONTEXT_FUNCTIONS.put(DirectContextParameters.ITEM, e -> { + if (e instanceof ItemEntity itemEntity) { + return itemEntity.getItem(); + } + return null; + }); } @SuppressWarnings("unchecked") diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/parameter/ItemParameterProvider.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/parameter/ItemParameterProvider.java index f9d4617f6..dd1d0126f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/parameter/ItemParameterProvider.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/parameter/ItemParameterProvider.java @@ -15,6 +15,7 @@ public class ItemParameterProvider implements ChainParameterProvider> { CONTEXT_FUNCTIONS.put(DirectContextParameters.ID, Item::id); CONTEXT_FUNCTIONS.put(DirectContextParameters.CUSTOM_MODEL_DATA, i -> i.customModelData().orElse(null)); CONTEXT_FUNCTIONS.put(DirectContextParameters.IS_CUSTOM, Item::isCustomItem); + CONTEXT_FUNCTIONS.put(DirectContextParameters.COUNT, Item::count); CONTEXT_FUNCTIONS.put(DirectContextParameters.IS_BLOCK_ITEM, Item::isBlockItem); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/text/TagTextProvider.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/text/TagTextProvider.java index 11c63ac21..4942d64cb 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/text/TagTextProvider.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/text/TagTextProvider.java @@ -18,8 +18,8 @@ public class TagTextProvider implements TextProvider { @Override public String get(Context context) { - Component resultComponent = AdventureHelper.customMiniMessage().deserialize(this.text, context.tagResolvers()); - return AdventureHelper.plainTextContent(resultComponent); + Component resultComponent = AdventureHelper.miniMessage().deserialize(this.text, context.tagResolvers()); + return AdventureHelper.strictMiniMessage().serialize(resultComponent); } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/text/TextProviders.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/text/TextProviders.java index b55de1e34..8e60616f6 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/text/TextProviders.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/text/TextProviders.java @@ -7,9 +7,9 @@ public class TextProviders { public static final Key TAG = Key.of("craftengine:tag"); public static TextProvider fromString(String string) { - if (!string.contains("<") || !string.contains(">")) { - return PlainTextProvider.of(string); + if (string.contains("<") && string.contains(">")) { + return TagTextProvider.of(string); } - return TagTextProvider.of(string); + return PlainTextProvider.of(string); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/dependency/Dependencies.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/dependency/Dependencies.java index 5adccc541..0d44161bb 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/dependency/Dependencies.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/dependency/Dependencies.java @@ -153,13 +153,6 @@ public class Dependencies { List.of(Relocation.of("commons", "org{}apache{}commons")) ); - public static final Dependency COMMONS_IMAGING = new Dependency( - "commons-imaging", - "org{}apache{}commons", - "commons-imaging", - List.of(Relocation.of("commons", "org{}apache{}commons")) - ); - public static final Dependency BYTE_BUDDY = new Dependency( "byte-buddy", "net{}bytebuddy", diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/dependency/DependencyRepository.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/dependency/DependencyRepository.java index 8fe0fa762..e4b5841e6 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/dependency/DependencyRepository.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/dependency/DependencyRepository.java @@ -12,22 +12,35 @@ import java.util.List; import java.util.Locale; public enum DependencyRepository { + /** - * Maven Central + * Maven */ - MAVEN_CENTRAL("maven", "https://repo1.maven.org/maven2/") { + MAVEN("maven", "https://repo1.maven.org/maven2/") { @Override protected URLConnection openConnection(Dependency dependency) throws IOException { URLConnection connection = super.openConnection(dependency); - connection.setConnectTimeout(5000); - connection.setReadTimeout(5000); + connection.setConnectTimeout(3000); + connection.setReadTimeout(3000); return connection; } }, /** - * Maven Central Mirror + * Google */ - MAVEN_CENTRAL_MIRROR("maven", "https://maven.aliyun.com/repository/public/"); + GOOGLE("maven", "https://maven-central.storage-download.googleapis.com/maven2/") { + @Override + protected URLConnection openConnection(Dependency dependency) throws IOException { + URLConnection connection = super.openConnection(dependency); + connection.setConnectTimeout(3000); + connection.setReadTimeout(3000); + return connection; + } + }, + /** + * 阿里云 + */ + ALIYUN("maven", "https://maven.aliyun.com/repository/public/"); private final String url; private final String id; @@ -38,7 +51,7 @@ public enum DependencyRepository { } public String getUrl() { - return url; + return this.url; } public static List getByID(String id) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/gui/GuiManager.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/gui/GuiManager.java index c23e6f7e8..fe38b4364 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/gui/GuiManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/gui/GuiManager.java @@ -2,8 +2,11 @@ package net.momirealms.craftengine.core.plugin.gui; import net.kyori.adventure.text.Component; import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.item.trade.MerchantOffer; import net.momirealms.craftengine.core.plugin.Manageable; +import java.util.List; + public interface GuiManager extends Manageable { void openInventory(Player player, GuiType guiType); @@ -11,4 +14,6 @@ public interface GuiManager extends Manageable { void updateInventoryTitle(Player player, Component component); Inventory createInventory(Gui gui, int size); + + void openMerchant(Player player, Component title, List> offers); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/I18NData.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/LangData.java similarity index 95% rename from core/src/main/java/net/momirealms/craftengine/core/plugin/locale/I18NData.java rename to core/src/main/java/net/momirealms/craftengine/core/plugin/locale/LangData.java index 4d8689096..b677d18a5 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/I18NData.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/LangData.java @@ -10,7 +10,7 @@ import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.function.Function; -public class I18NData { +public class LangData { private static final Map>> LANG_KEY_PROCESSORS = new HashMap<>(); public Map translations = new HashMap<>(); @@ -77,12 +77,12 @@ public class I18NData { @Override public String toString() { - return "I18NData{" + translations + "}"; + return "LangData{" + translations + "}"; } - public static void merge(Map target, Map source) { + public static void merge(Map target, Map source) { source.forEach((key, value) -> { - I18NData copy = new I18NData(); + LangData copy = new LangData(); copy.addTranslations(value.translations); target.merge(key, copy, (existing, newData) -> { existing.addTranslations(newData.translations); diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/LocalizedException.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/LocalizedException.java index d85532317..2284a573d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/LocalizedException.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/LocalizedException.java @@ -6,6 +6,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; +import java.util.Optional; public class LocalizedException extends RuntimeException { private final String node; @@ -72,8 +73,8 @@ public class LocalizedException extends RuntimeException { private String generateLocalizedMessage() { try { - String rawMessage = TranslationManager.instance() - .miniMessageTranslation(this.node); + String rawMessage = Optional.ofNullable(TranslationManager.instance() + .miniMessageTranslation(this.node)).orElse(this.node); String cleanMessage = AdventureHelper.miniMessage() .stripTags(rawMessage); for (int i = 0; i < arguments.length; i++) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/MessageConstants.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/MessageConstants.java index 91c6db67b..882d17c90 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/MessageConstants.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/MessageConstants.java @@ -30,6 +30,9 @@ public interface MessageConstants { TranslatableComponent.Builder COMMAND_UPLOAD_ON_PROGRESS = Component.translatable().key("command.upload.on_progress"); TranslatableComponent.Builder COMMAND_SEND_RESOURCE_PACK_SUCCESS_SINGLE = Component.translatable().key("command.send_resource_pack.success.single"); TranslatableComponent.Builder COMMAND_SEND_RESOURCE_PACK_SUCCESS_MULTIPLE = Component.translatable().key("command.send_resource_pack.success.multiple"); - TranslatableComponent.Builder COMMAND_TOTEM_SUCCESS_SINGLE = Component.translatable().key("commands.totem_animation.success.single"); - TranslatableComponent.Builder COMMAND_TOTEM_SUCCESS_MULTIPLE = Component.translatable().key("commands.totem_animation.success.multiple"); + TranslatableComponent.Builder COMMAND_TOTEM_SUCCESS_SINGLE = Component.translatable().key("command.totem_animation.success.single"); + TranslatableComponent.Builder COMMAND_TOTEM_SUCCESS_MULTIPLE = Component.translatable().key("command.totem_animation.success.multiple"); + TranslatableComponent.Builder COMMAND_LOCALE_SET_FAILURE = Component.translatable().key("command.locale.set.failure"); + TranslatableComponent.Builder COMMAND_LOCALE_SET_SUCCESS = Component.translatable().key("command.locale.set.success"); + TranslatableComponent.Builder COMMAND_LOCALE_UNSET_SUCCESS = Component.translatable().key("command.locale.unset.success"); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/TranslationManager.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/TranslationManager.java index 7c95068a7..89fa4edea 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/TranslationManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/TranslationManager.java @@ -4,6 +4,7 @@ import net.kyori.adventure.text.Component; import net.kyori.adventure.translation.Translator; import net.momirealms.craftengine.core.plugin.Manageable; import net.momirealms.craftengine.core.plugin.config.ConfigParser; +import org.incendo.cloud.suggestion.Suggestion; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -32,6 +33,7 @@ public interface TranslationManager extends Manageable { "tt_ru", "tzo_mx", "uk_ua", "val_es", "vec_it", "vi_vn", "vp_vl", "yi_de", "yo_ng", "zh_cn", "zh_hk", "zh_tw", "zlm_arab" ); + List ALL_LANG_SUGGESTIONS = ALL_LANG.stream().map(Suggestion::suggestion).toList(); Map> LOCALE_2_COUNTRIES = ALL_LANG.stream() .map(lang -> lang.split("_")) .filter(split -> split.length >= 2) @@ -62,9 +64,21 @@ public interface TranslationManager extends Manageable { return locale == null || locale.isEmpty() ? null : Translator.parseLocale(locale); } + static String formatLocale(Locale locale) { + String language = locale.getLanguage().toLowerCase(Locale.ROOT); + String country = locale.getCountry().toLowerCase(Locale.ROOT); + if (country.isEmpty()) { + return language; + } else { + return language + "_" + country; + } + } + + Set translationKeys(); + void log(String id, String... args); - Map clientLangData(); + Map clientLangData(); void addClientTranslation(String langId, Map translations); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/TranslationManagerImpl.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/TranslationManagerImpl.java index 98db56742..c66cc68c1 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/TranslationManagerImpl.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/TranslationManagerImpl.java @@ -41,10 +41,11 @@ public class TranslationManagerImpl implements TranslationManager { private final Map translationFallback = new LinkedHashMap<>(); private Locale selectedLocale = DEFAULT_LOCALE; private MiniMessageTranslationRegistry registry; - private final Map clientLangData = new HashMap<>(); + private final Map clientLangData = new HashMap<>(); private final LangParser langParser; - private final I18NParser i18nParser; - private Map cachedTranslations = Map.of(); + private final TranslationParser translationParser; + private final Set translationKeys = new HashSet<>(); + private Map cachedTranslations = Map.of(); public TranslationManagerImpl(Plugin plugin) { instance = this; @@ -53,7 +54,7 @@ public class TranslationManagerImpl implements TranslationManager { this.langVersion = PluginProperties.getValue("lang-version"); this.supportedLanguages = PluginProperties.getValue("supported-languages").split(","); this.langParser = new LangParser(); - this.i18nParser = new I18NParser(); + this.translationParser = new TranslationParser(); Yaml yaml = new Yaml(new TranslationConfigConstructor(new LoaderOptions())); try (InputStream is = plugin.resourceStream("translations/en.yml")) { this.translationFallback.putAll(yaml.load(is)); @@ -64,12 +65,12 @@ public class TranslationManagerImpl implements TranslationManager { @Override public ConfigParser[] parsers() { - return new ConfigParser[] {this.langParser, this.i18nParser}; + return new ConfigParser[] {this.langParser, this.translationParser}; } @Override public void delayedLoad() { - this.clientLangData.values().forEach(I18NData::processTranslations); + this.clientLangData.values().forEach(LangData::processTranslations); } @Override @@ -77,6 +78,7 @@ public class TranslationManagerImpl implements TranslationManager { // clear old data this.clientLangData.clear(); this.installed.clear(); + this.translationKeys.clear(); // save resources for (String lang : this.supportedLanguages) { @@ -130,20 +132,42 @@ public class TranslationManagerImpl implements TranslationManager { return MiniMessageTranslator.render(component, locale); } + @Override + public Set translationKeys() { + return translationKeys; + } + private void loadFromCache() { - for (Map.Entry entry : this.cachedTranslations.entrySet()) { - Locale locale = TranslationManager.parseLocale(entry.getKey()); - if (locale == null) { - this.plugin.logger().warn("Unknown locale '" + entry.getKey() + "' - unable to register."); + // 第一阶段:先注册所有没有国家/地区的locale + for (Map.Entry entry : this.cachedTranslations.entrySet()) { + Locale locale = entry.getKey(); + // 只处理没有国家/地区的locale + if (locale.getCountry().isEmpty()) { + Map translations = entry.getValue().translations(); + this.registry.registerAll(locale, translations); + this.installed.add(locale); + } + } + + // 第二阶段:再注册其他完整的locale(包含国家/地区) + for (Map.Entry entry : this.cachedTranslations.entrySet()) { + Locale locale = entry.getKey(); + // 跳过已经注册的无国家locale + if (locale.getCountry().isEmpty()) { continue; } + Map translations = entry.getValue().translations(); this.registry.registerAll(locale, translations); this.installed.add(locale); + + // 如果需要,为有国家/地区的locale也注册无国家版本 Locale localeWithoutCountry = Locale.of(locale.getLanguage()); - if (!locale.equals(localeWithoutCountry) && !localeWithoutCountry.equals(DEFAULT_LOCALE) && this.installed.add(localeWithoutCountry)) { + if (!this.installed.contains(localeWithoutCountry) && + !localeWithoutCountry.equals(DEFAULT_LOCALE)) { try { this.registry.registerAll(localeWithoutCountry, translations); + this.installed.add(localeWithoutCountry); } catch (IllegalArgumentException e) { // ignore } @@ -152,7 +176,7 @@ public class TranslationManagerImpl implements TranslationManager { } public void loadFromFileSystem(Path directory) { - Map previousTranslations = this.cachedTranslations; + Map previousTranslations = this.cachedTranslations; this.cachedTranslations = new HashMap<>(); try { Files.walkFileTree(directory, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<>() { @@ -161,11 +185,16 @@ public class TranslationManagerImpl implements TranslationManager { String fileName = path.getFileName().toString(); if (Files.isRegularFile(path) && fileName.endsWith(".yml")) { String localeName = fileName.substring(0, fileName.length() - ".yml".length()); - CachedTranslation cachedFile = previousTranslations.get(localeName); + Locale locale = TranslationManager.parseLocale(localeName); + if (locale == null) { + TranslationManagerImpl.this.plugin.logger().warn("Unknown locale '" + localeName + "' - unable to register."); + return FileVisitResult.CONTINUE; + } + CachedTranslation cachedFile = previousTranslations.get(locale); long lastModifiedTime = attrs.lastModifiedTime().toMillis(); long size = attrs.size(); if (cachedFile != null && cachedFile.lastModified() == lastModifiedTime && cachedFile.size() == size) { - TranslationManagerImpl.this.cachedTranslations.put(localeName, cachedFile); + TranslationManagerImpl.this.cachedTranslations.put(locale, cachedFile); } else { try (InputStreamReader inputStream = new InputStreamReader(Files.newInputStream(path), StandardCharsets.UTF_8)) { Yaml yaml = new Yaml(new TranslationConfigConstructor(new LoaderOptions())); @@ -176,7 +205,7 @@ public class TranslationManagerImpl implements TranslationManager { data = updateLangFile(data, path); } cachedFile = new CachedTranslation(data, lastModifiedTime, size); - TranslationManagerImpl.this.cachedTranslations.put(localeName, cachedFile); + TranslationManagerImpl.this.cachedTranslations.put(locale, cachedFile); } catch (IOException e) { TranslationManagerImpl.this.plugin.logger().severe("Error while reading translation file: " + path, e); return FileVisitResult.CONTINUE; @@ -221,33 +250,33 @@ public class TranslationManagerImpl implements TranslationManager { } @Override - public Map clientLangData() { + public Map clientLangData() { return Collections.unmodifiableMap(this.clientLangData); } @Override public void addClientTranslation(String langId, Map translations) { if ("all".equals(langId)) { - ALL_LANG.forEach(lang -> this.clientLangData.computeIfAbsent(lang, k -> new I18NData()) + ALL_LANG.forEach(lang -> this.clientLangData.computeIfAbsent(lang, k -> new LangData()) .addTranslations(translations)); return; } if (ALL_LANG.contains(langId)) { - this.clientLangData.computeIfAbsent(langId, k -> new I18NData()) + this.clientLangData.computeIfAbsent(langId, k -> new LangData()) .addTranslations(translations); return; } List langCountries = LOCALE_2_COUNTRIES.getOrDefault(langId, Collections.emptyList()); for (String lang : langCountries) { - this.clientLangData.computeIfAbsent(langId + "_" + lang, k -> new I18NData()) + this.clientLangData.computeIfAbsent(langId + "_" + lang, k -> new LangData()) .addTranslations(translations); } } - public class I18NParser extends IdSectionConfigParser { - public static final String[] CONFIG_SECTION_NAME = new String[] {"i18n", "internationalization", "translation", "translations"}; + public class TranslationParser extends IdSectionConfigParser { + public static final String[] CONFIG_SECTION_NAME = new String[] {"translations", "translation", "l10n", "localization", "i18n", "internationalization"}; @Override public int loadingSequence() { @@ -263,13 +292,14 @@ public class TranslationManagerImpl implements TranslationManager { public void parseSection(Pack pack, Path path, String node, net.momirealms.craftengine.core.util.Key id, Map section) { Locale locale = TranslationManager.parseLocale(id.value()); if (locale == null) { - throw new LocalizedResourceConfigException("warning.config.i18n.unknown_locale"); + throw new LocalizedResourceConfigException("warning.config.translation.unknown_locale"); } Map bundle = new HashMap<>(); for (Map.Entry entry : section.entrySet()) { String key = entry.getKey(); bundle.put(key, entry.getValue().toString()); + TranslationManagerImpl.this.translationKeys.add(key); } TranslationManagerImpl.this.registry.registerAll(locale, bundle); diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/network/NetworkManager.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/network/NetworkManager.java index 2db50e789..ac544c44d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/network/NetworkManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/network/NetworkManager.java @@ -3,16 +3,11 @@ package net.momirealms.craftengine.core.plugin.network; import io.netty.channel.Channel; import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.plugin.Manageable; -import net.momirealms.craftengine.core.util.Key; import org.jetbrains.annotations.NotNull; import java.util.List; public interface NetworkManager extends Manageable { - String MOD_CHANNEL = "craftengine:payload"; - String VIA_CHANNEL = "vv:proxy_details"; - Key MOD_CHANNEL_KEY = Key.of(MOD_CHANNEL); - Key VIA_CHANNEL_KEY = Key.of(VIA_CHANNEL); void setUser(Channel channel, NetWorkUser user); diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/network/PayloadChannelKeys.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/network/PayloadChannelKeys.java new file mode 100644 index 000000000..9ffca844c --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/network/PayloadChannelKeys.java @@ -0,0 +1,7 @@ +package net.momirealms.craftengine.core.plugin.network; + +import net.momirealms.craftengine.core.util.Key; + +public final class PayloadChannelKeys { + public static final Key CRAFTENGINE_CHANNEL = Key.of("craftengine:payload"); // 进出 +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/network/ProtocolVersion.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/network/ProtocolVersion.java index fc2d707ec..9d6732bcd 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/network/ProtocolVersion.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/network/ProtocolVersion.java @@ -16,7 +16,10 @@ public enum ProtocolVersion { V1_21_4(769, "1.21.4"), V1_21_5(770, "1.21.5"), V1_21_6(771, "1.21.6"), - V1_21_7(772, "1.21.7"); + V1_21_7(772, "1.21.7"), + V1_21_8(772, "1.21.8"), + V1_21_9(773, "1.21.9"), + V1_21_10(773, "1.21.10"); private final int id; private final String name; diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/text/component/ComponentProvider.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/text/component/ComponentProvider.java index 87b021160..3ac802556 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/text/component/ComponentProvider.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/text/component/ComponentProvider.java @@ -1,7 +1,10 @@ package net.momirealms.craftengine.core.plugin.text.component; import net.kyori.adventure.text.Component; +import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.plugin.context.Context; +import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.locale.TranslationManager; import net.momirealms.craftengine.core.util.AdventureHelper; import java.util.function.Function; @@ -9,7 +12,7 @@ import java.util.function.Function; import static net.momirealms.craftengine.core.plugin.text.minimessage.FormattedLine.CUSTOM_RESOLVERS; public sealed interface ComponentProvider extends Function - permits ComponentProvider.Constant, ComponentProvider.MiniMessage { + permits ComponentProvider.Constant, ComponentProvider.L10N, ComponentProvider.MiniMessage { static ComponentProvider constant(Component component) { return new Constant(component); @@ -23,6 +26,10 @@ public sealed interface ComponentProvider extends Function } } + static ComponentProvider l10n(String translationKey) { + return new L10N(translationKey); + } + non-sealed class Constant implements ComponentProvider { private final Component value; @@ -48,4 +55,27 @@ public sealed interface ComponentProvider extends Function return AdventureHelper.miniMessage().deserialize(this.value, context.tagResolvers()); } } + + non-sealed class L10N implements ComponentProvider { + private final String key; + + public L10N(String key) { + this.key = key; + } + + @Override + public Component apply(Context context) { + if (context instanceof PlayerOptionalContext playerContext) { + Player player = playerContext.player(); + if (player != null) { + String content = TranslationManager.instance().miniMessageTranslation(this.key, player.selectedLocale()); + if (content == null) { + return Component.text(this.key); + } + return AdventureHelper.miniMessage().deserialize(content, context.tagResolvers()); + } + } + return Component.text(this.key); + } + } } \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/FormattedLine.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/FormattedLine.java index a5a2b6d20..08954b13b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/FormattedLine.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/FormattedLine.java @@ -10,6 +10,8 @@ import net.momirealms.craftengine.core.util.AdventureHelper; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.List; + public interface FormattedLine { TagResolver[] CUSTOM_RESOLVERS = new TagResolver[]{ createDummyResolvers("expr"), @@ -17,11 +19,25 @@ public interface FormattedLine { createDummyResolvers("arg"), createDummyResolvers("shift"), createDummyResolvers("i18n"), + createDummyResolvers("l10n"), createDummyResolvers("global"), createDummyResolvers("papi"), createDummyResolvers("rel_papi") }; + class Companion { + public static TagResolver[] LATEST_RESOLVERS = CUSTOM_RESOLVERS; + + public static void resetWithCustomResolvers(List customResolvers) { + TagResolver[] resolvers = new TagResolver[customResolvers.size() + CUSTOM_RESOLVERS.length]; + System.arraycopy(CUSTOM_RESOLVERS, 0, resolvers, 0, CUSTOM_RESOLVERS.length); + for (int i = 0; i < customResolvers.size(); i++) { + resolvers[CUSTOM_RESOLVERS.length + i] = createDummyResolvers(customResolvers.get(i)); + } + LATEST_RESOLVERS = resolvers; + } + } + Component parse(net.momirealms.craftengine.core.plugin.context.Context context); private static TagResolver createDummyResolvers(String tag) { @@ -39,7 +55,7 @@ public interface FormattedLine { } static FormattedLine create(String line) { - if (line.equals(AdventureHelper.customMiniMessage().stripTags(line, CUSTOM_RESOLVERS))) { + if (line.equals(AdventureHelper.customMiniMessage().stripTags(line, Companion.LATEST_RESOLVERS))) { return new PreParsedLine(AdventureHelper.miniMessage().deserialize(line)); } else { return new DynamicLine(line); diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/L10NTag.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/L10NTag.java new file mode 100644 index 000000000..162190afe --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/L10NTag.java @@ -0,0 +1,41 @@ +package net.momirealms.craftengine.core.plugin.text.minimessage; + +import net.kyori.adventure.text.minimessage.ParsingException; +import net.kyori.adventure.text.minimessage.tag.Tag; +import net.kyori.adventure.text.minimessage.tag.resolver.ArgumentQueue; +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; +import net.momirealms.craftengine.core.plugin.context.Context; +import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.locale.TranslationManager; +import net.momirealms.craftengine.core.util.AdventureHelper; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Locale; + +public class L10NTag implements TagResolver { + private final Context context; + + public L10NTag(Context context) { + this.context = context; + } + + @Override + public @Nullable Tag resolve(@NotNull String name, @NotNull ArgumentQueue arguments, @NotNull net.kyori.adventure.text.minimessage.Context ctx) throws ParsingException { + if (!this.has(name)) { + return null; + } + Locale locale = null; + if (this.context instanceof PlayerOptionalContext playerOptionalContext && playerOptionalContext.isPlayerPresent()) { + locale = playerOptionalContext.player().selectedLocale(); + } + String i18nKey = arguments.popOr("No argument l10n key provided").toString(); + String translation = TranslationManager.instance().miniMessageTranslation(i18nKey, locale); + return Tag.selfClosingInserting(AdventureHelper.miniMessage().deserialize(translation, this.context.tagResolvers())); + } + + @Override + public boolean has(@NotNull String name) { + return "l10n".equals(name); + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/PlaceholderTag.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/PlaceholderTag.java index 51a74c794..1304b753d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/PlaceholderTag.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/PlaceholderTag.java @@ -26,7 +26,9 @@ public class PlaceholderTag implements TagResolver { String rawArgument = arguments.popOr("No argument relational placeholder provided").toString(); if (rawArgument.contains("<")) rawArgument = AdventureHelper.resolvePlainStringTags(rawArgument, this.context.tagResolvers()); String placeholder = "%" + rawArgument + "%"; - String parsed = this.context instanceof PlayerContext playerContext ? CraftEngine.instance().compatibilityManager().parse(playerContext.player(), placeholder) : CraftEngine.instance().compatibilityManager().parse(null, placeholder); + String parsed = (this.context instanceof PlayerContext playerContext) + ? CraftEngine.instance().compatibilityManager().parse(playerContext.player(), placeholder) + : CraftEngine.instance().compatibilityManager().parse(null, placeholder); if (parsed.equals(placeholder)) { parsed = arguments.popOr("No default papi value provided").toString(); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/registry/BuiltInRegistries.java b/core/src/main/java/net/momirealms/craftengine/core/registry/BuiltInRegistries.java index d2dba3025..312550c23 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/registry/BuiltInRegistries.java +++ b/core/src/main/java/net/momirealms/craftengine/core/registry/BuiltInRegistries.java @@ -5,7 +5,7 @@ import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; import net.momirealms.craftengine.core.block.entity.BlockEntityType; import net.momirealms.craftengine.core.block.entity.render.element.BlockEntityElementConfigFactory; import net.momirealms.craftengine.core.block.properties.PropertyFactory; -import net.momirealms.craftengine.core.entity.furniture.HitBoxFactory; +import net.momirealms.craftengine.core.entity.furniture.HitBoxConfigFactory; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; import net.momirealms.craftengine.core.item.behavior.ItemBehaviorFactory; import net.momirealms.craftengine.core.item.equipment.EquipmentFactory; @@ -15,6 +15,7 @@ import net.momirealms.craftengine.core.item.recipe.RecipeSerializer; import net.momirealms.craftengine.core.item.recipe.network.legacy.LegacyRecipe; import net.momirealms.craftengine.core.item.recipe.network.modern.display.RecipeDisplay; import net.momirealms.craftengine.core.item.recipe.network.modern.display.slot.SlotDisplay; +import net.momirealms.craftengine.core.item.recipe.remainder.CraftRemainderFactory; import net.momirealms.craftengine.core.item.recipe.result.PostProcessor; import net.momirealms.craftengine.core.item.updater.ItemUpdaterType; import net.momirealms.craftengine.core.loot.LootContext; @@ -37,7 +38,7 @@ import net.momirealms.craftengine.core.pack.model.special.SpecialModelReader; import net.momirealms.craftengine.core.pack.model.tint.TintFactory; import net.momirealms.craftengine.core.pack.model.tint.TintReader; import net.momirealms.craftengine.core.plugin.config.template.TemplateArgumentFactory; -import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.condition.ConditionFactory; import net.momirealms.craftengine.core.plugin.context.function.FunctionFactory; import net.momirealms.craftengine.core.plugin.context.number.NumberProviderFactory; @@ -75,20 +76,21 @@ public class BuiltInRegistries { public static final Registry> PATH_MATCHER_FACTORY = createConstantBoundRegistry(Registries.PATH_MATCHER_FACTORY, 16); public static final Registry RESOLUTION_FACTORY = createConstantBoundRegistry(Registries.RESOLUTION_FACTORY, 16); public static final Registry SMITHING_RESULT_PROCESSOR_FACTORY = createConstantBoundRegistry(Registries.SMITHING_RESULT_PROCESSOR_FACTORY, 16); - public static final Registry HITBOX_FACTORY = createConstantBoundRegistry(Registries.HITBOX_FACTORY, 16); + public static final Registry HITBOX_FACTORY = createConstantBoundRegistry(Registries.HITBOX_FACTORY, 16); public static final Registry RESOURCE_PACK_HOST_FACTORY = createConstantBoundRegistry(Registries.RESOURCE_PACK_HOST_FACTORY, 16); - public static final Registry> EVENT_FUNCTION_FACTORY = createConstantBoundRegistry(Registries.EVENT_FUNCTION_FACTORY, 128); - public static final Registry> EVENT_CONDITION_FACTORY = createConstantBoundRegistry(Registries.EVENT_CONDITION_FACTORY, 128); + public static final Registry> EVENT_FUNCTION_FACTORY = createConstantBoundRegistry(Registries.EVENT_FUNCTION_FACTORY, 128); + public static final Registry> EVENT_CONDITION_FACTORY = createConstantBoundRegistry(Registries.EVENT_CONDITION_FACTORY, 128); public static final Registry> PLAYER_SELECTOR_FACTORY = createConstantBoundRegistry(Registries.PLAYER_SELECTOR_FACTORY, 16); public static final Registry EQUIPMENT_FACTORY = createConstantBoundRegistry(Registries.EQUIPMENT_FACTORY, 8); - public static final Registry SLOT_DISPLAY_TYPE = createConstantBoundRegistry(Registries.SLOT_DISPLAY_TYPE, 16); - public static final Registry RECIPE_DISPLAY_TYPE = createConstantBoundRegistry(Registries.RECIPE_DISPLAY_TYPE, 16); - public static final Registry LEGACY_RECIPE_TYPE = createConstantBoundRegistry(Registries.LEGACY_RECIPE_TYPE, 16); + public static final Registry> SLOT_DISPLAY_TYPE = createConstantBoundRegistry(Registries.SLOT_DISPLAY_TYPE, 16); + public static final Registry> RECIPE_DISPLAY_TYPE = createConstantBoundRegistry(Registries.RECIPE_DISPLAY_TYPE, 16); + public static final Registry> LEGACY_RECIPE_TYPE = createConstantBoundRegistry(Registries.LEGACY_RECIPE_TYPE, 16); public static final Registry> RECIPE_POST_PROCESSOR_TYPE = createConstantBoundRegistry(Registries.RECIPE_POST_PROCESSOR_TYPE, 16); public static final Registry> ITEM_UPDATER_TYPE = createConstantBoundRegistry(Registries.ITEM_UPDATER_TYPE, 16); public static final Registry> MOD_PACKET = createConstantBoundRegistry(Registries.MOD_PACKET, 16); public static final Registry> BLOCK_ENTITY_TYPE = createConstantBoundRegistry(Registries.BLOCK_ENTITY_TYPE, 128); public static final Registry BLOCK_ENTITY_ELEMENT_TYPE = createConstantBoundRegistry(Registries.BLOCK_ENTITY_ELEMENT_TYPE, 16); + public static final Registry CRAFT_REMAINDER_FACTORY = createConstantBoundRegistry(Registries.CRAFT_REMAINDER_FACTORY, 16); private static Registry createConstantBoundRegistry(ResourceKey> key, int expectedSize) { return new ConstantBoundRegistry<>(key, expectedSize); diff --git a/core/src/main/java/net/momirealms/craftengine/core/registry/Registries.java b/core/src/main/java/net/momirealms/craftengine/core/registry/Registries.java index dcf5fe8bc..866abd070 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/registry/Registries.java +++ b/core/src/main/java/net/momirealms/craftengine/core/registry/Registries.java @@ -5,7 +5,7 @@ import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; import net.momirealms.craftengine.core.block.entity.BlockEntityType; import net.momirealms.craftengine.core.block.entity.render.element.BlockEntityElementConfigFactory; import net.momirealms.craftengine.core.block.properties.PropertyFactory; -import net.momirealms.craftengine.core.entity.furniture.HitBoxFactory; +import net.momirealms.craftengine.core.entity.furniture.HitBoxConfigFactory; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; import net.momirealms.craftengine.core.item.behavior.ItemBehaviorFactory; import net.momirealms.craftengine.core.item.equipment.EquipmentFactory; @@ -15,6 +15,7 @@ import net.momirealms.craftengine.core.item.recipe.RecipeSerializer; import net.momirealms.craftengine.core.item.recipe.network.legacy.LegacyRecipe; import net.momirealms.craftengine.core.item.recipe.network.modern.display.RecipeDisplay; import net.momirealms.craftengine.core.item.recipe.network.modern.display.slot.SlotDisplay; +import net.momirealms.craftengine.core.item.recipe.remainder.CraftRemainderFactory; import net.momirealms.craftengine.core.item.recipe.result.PostProcessor; import net.momirealms.craftengine.core.item.updater.ItemUpdaterType; import net.momirealms.craftengine.core.loot.LootContext; @@ -37,7 +38,7 @@ import net.momirealms.craftengine.core.pack.model.special.SpecialModelReader; import net.momirealms.craftengine.core.pack.model.tint.TintFactory; import net.momirealms.craftengine.core.pack.model.tint.TintReader; import net.momirealms.craftengine.core.plugin.config.template.TemplateArgumentFactory; -import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.condition.ConditionFactory; import net.momirealms.craftengine.core.plugin.context.function.FunctionFactory; import net.momirealms.craftengine.core.plugin.context.number.NumberProviderFactory; @@ -77,18 +78,19 @@ public class Registries { public static final ResourceKey>> PATH_MATCHER_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("path_matcher_factory")); public static final ResourceKey> RESOLUTION_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("resolution_factory")); public static final ResourceKey> SMITHING_RESULT_PROCESSOR_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("smithing_result_processor_factory")); - public static final ResourceKey> HITBOX_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("hitbox_factory")); + public static final ResourceKey> HITBOX_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("hitbox_factory")); public static final ResourceKey> RESOURCE_PACK_HOST_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("resource_pack_host_factory")); - public static final ResourceKey>> EVENT_FUNCTION_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("event_function_factory")); - public static final ResourceKey>> EVENT_CONDITION_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("event_condition_factory")); + public static final ResourceKey>> EVENT_FUNCTION_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("event_function_factory")); + public static final ResourceKey>> EVENT_CONDITION_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("event_condition_factory")); public static final ResourceKey>> PLAYER_SELECTOR_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("player_selector_factory")); public static final ResourceKey> EQUIPMENT_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("equipment_factory")); - public static final ResourceKey> SLOT_DISPLAY_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("slot_display_type")); - public static final ResourceKey> RECIPE_DISPLAY_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("recipe_display_type")); - public static final ResourceKey> LEGACY_RECIPE_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("legacy_recipe_type")); + public static final ResourceKey>> SLOT_DISPLAY_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("slot_display_type")); + public static final ResourceKey>> RECIPE_DISPLAY_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("recipe_display_type")); + public static final ResourceKey>> LEGACY_RECIPE_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("legacy_recipe_type")); public static final ResourceKey>> RECIPE_POST_PROCESSOR_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("recipe_post_processor_type")); public static final ResourceKey>> ITEM_UPDATER_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("item_updater_type")); public static final ResourceKey>> MOD_PACKET = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("mod_packet_type")); public static final ResourceKey>> BLOCK_ENTITY_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("block_entity_type")); public static final ResourceKey> BLOCK_ENTITY_ELEMENT_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("block_entity_element_type")); + public static final ResourceKey> CRAFT_REMAINDER_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("craft_remainder_factory")); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/ArrayUtils.java b/core/src/main/java/net/momirealms/craftengine/core/util/ArrayUtils.java index da87a2c53..67580021c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/ArrayUtils.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/ArrayUtils.java @@ -1,10 +1,7 @@ package net.momirealms.craftengine.core.util; import java.lang.reflect.Array; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; +import java.util.*; public class ArrayUtils { @@ -45,6 +42,26 @@ public class ArrayUtils { return mergedArray; } + @SuppressWarnings("unchecked") + public static T[] mergeNoCopy(T[] array1, T[] array2) { + if (array1 == null && array2 == null) { + return null; + } + if (array1 == null) { + return array2; + } + if (array2 == null) { + return array1; + } + T[] mergedArray = (T[]) Array.newInstance( + array1.getClass().getComponentType(), + array1.length + array2.length + ); + System.arraycopy(array1, 0, mergedArray, 0, array1.length); + System.arraycopy(array2, 0, mergedArray, array1.length, array2.length); + return mergedArray; + } + public static List splitArray(T[] array, int chunkSize) { List result = new ArrayList<>(); for (int i = 0; i < array.length; i += chunkSize) { @@ -77,6 +94,18 @@ public class ArrayUtils { .split(","); } + public static boolean contains(T[] array, T element) { + if (array == null || element == null) { + return false; + } + for (T item : array) { + if (Objects.equals(item, element)) { + return true; + } + } + return false; + } + public static boolean isEmpty(Object[] array) { return array == null || array.length == 0; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/BlockEntityTickersList.java b/core/src/main/java/net/momirealms/craftengine/core/util/BlockEntityTickersList.java index 124269086..4ff57411a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/BlockEntityTickersList.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/BlockEntityTickersList.java @@ -1,8 +1,6 @@ /** - * This implementation references the BlockEntityTickersList implementation by Winds Studio, - * available at: https://github.com/Winds-Studio/Leaf/blob/b9ebff/leaf-server/src/main/java/org/dreeam/leaf/util/list/BlockEntityTickersList.java - *

- * This work is licensed under the GNU General Public License v3.0 (GPLv3) + * This implementation references the BlockEntityTickersList implementation by SparklyPaper, + * available at: https://github.com/SparklyPower/SparklyPaper/blob/ver/1.21.10/sparklypaper-server/src/main/java/net/sparklypower/sparklypaper/BlockEntityTickersList.java */ package net.momirealms.craftengine.core.util; @@ -23,7 +21,6 @@ import java.util.Collection; * since we don't need to resize the array every single remove. */ public final class BlockEntityTickersList extends ObjectArrayList { - private final IntOpenHashSet toRemove = new IntOpenHashSet(); private int startSearchFromIndex = -1; diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/CRC.java b/core/src/main/java/net/momirealms/craftengine/core/util/CRC.java new file mode 100644 index 000000000..9233fe105 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/util/CRC.java @@ -0,0 +1,43 @@ +package net.momirealms.craftengine.core.util; + +class CRC { + private static final int[] crcTable = new int[256]; + private int crc = 0xffffffff; + + static { + for (int n = 0; n < 256; n++) { + int c = n; + for (int k = 0; k < 8; k++) { + if ((c & 1) == 1) { + c = 0xedb88320 ^ (c >>> 1); + } else { + c >>>= 1; + } + + crcTable[n] = c; + } + } + } + + CRC() {} + + void reset() { + crc = 0xffffffff; + } + + void update(byte[] data, int off, int len) { + int c = crc; + for (int n = 0; n < len; n++) { + c = crcTable[(c ^ data[off + n]) & 0xff] ^ (c >>> 8); + } + crc = c; + } + + void update(int data) { + crc = crcTable[(crc ^ data) & 0xff] ^ (crc >>> 8); + } + + int getValue() { + return ~crc; + } +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/CharacterUtils.java b/core/src/main/java/net/momirealms/craftengine/core/util/CharacterUtils.java index 08a9155e2..a58123f1d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/CharacterUtils.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/CharacterUtils.java @@ -68,6 +68,10 @@ public class CharacterUtils { return builder.toString(); } + public static String escape(String string) { + return encodeCharsToUnicode(string.toCharArray()); + } + public static String replaceBackslashWithSlash(String input) { if (input == null || input.isEmpty()) { return input; diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/FileUtils.java b/core/src/main/java/net/momirealms/craftengine/core/util/FileUtils.java index 7ea613a2f..e98fb261c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/FileUtils.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/FileUtils.java @@ -2,12 +2,13 @@ package net.momirealms.craftengine.core.util; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.momirealms.craftengine.core.pack.ResourceLocation; +import org.jetbrains.annotations.NotNull; import java.io.IOException; -import java.nio.file.FileVisitOption; -import java.nio.file.Files; -import java.nio.file.Path; +import java.nio.file.*; +import java.nio.file.attribute.BasicFileAttributes; import java.util.Comparator; +import java.util.EnumSet; import java.util.List; import java.util.stream.Stream; @@ -15,6 +16,10 @@ public class FileUtils { private FileUtils() {} + public static boolean isAbsolute(final String path) { + return path.startsWith("/") || path.matches("^[A-Za-z]:\\\\.*"); + } + public static String getExtension(Path path) { final String name = path.getFileName().toString(); int index = name.lastIndexOf('.'); @@ -85,4 +90,34 @@ public class FileUtils { } return folders; } + + public static List getFilesDeeply(Path path) throws IOException { + List files = new ObjectArrayList<>(); + Files.walkFileTree(path, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<>() { + @Override + public @NotNull FileVisitResult visitFile(@NotNull Path file, @NotNull BasicFileAttributes attrs) { + if (attrs.isRegularFile()) { + files.add(file); + } + return FileVisitResult.CONTINUE; + } + }); + return files; + } + + public static boolean isJsonFile(Path filePath) { + return filePath.getFileName().toString().endsWith(".json"); + } + + public static boolean isMcMetaFile(Path filePath) { + return filePath.getFileName().toString().endsWith(".mcmeta"); + } + + public static boolean isPngFile(Path filePath) { + return filePath.getFileName().toString().endsWith(".png"); + } + + public static boolean isOggFile(Path filePath) { + return filePath.getFileName().toString().endsWith(".ogg"); + } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/GsonHelper.java b/core/src/main/java/net/momirealms/craftengine/core/util/GsonHelper.java index beb6c42a1..1a6d1767c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/GsonHelper.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/GsonHelper.java @@ -38,6 +38,20 @@ public final class GsonHelper { } } + public static JsonElement parseJson(String json) { + return GSON.fromJson(json, JsonElement.class); + } + + public static String toString(JsonElement json) { + return GSON.toJson(json); + } + + public static boolean isCompactJson(String content) { + String trimmed = content.trim(); + return !trimmed.contains("\n") && !trimmed.contains("\r") && + content.length() == trimmed.length(); + } + public static JsonObject shallowMerge(JsonObject obj1, JsonObject obj2) { JsonObject merged = new JsonObject(); for (Map.Entry entry : obj1.entrySet()) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/Int2ObjectBiMap.java b/core/src/main/java/net/momirealms/craftengine/core/util/Int2ObjectBiMap.java index 5eeb3c669..5aa836361 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/Int2ObjectBiMap.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/Int2ObjectBiMap.java @@ -35,15 +35,40 @@ public class Int2ObjectBiMap implements IndexedIterable { public void remapValues(Function function) { for (int i = 0; i < values.length; i++) { - if (values[i] == null) break; - values[i] = function.apply(values[i]); + K prev = values[i]; + if (prev == null) break; + values[i] = function.apply(prev); } for (int i = 0; i < idToValues.length; i++) { - if (idToValues[i] == null) break; - idToValues[i] = function.apply(idToValues[i]); + K prev = idToValues[i]; + if (prev == null) break; + idToValues[i] = function.apply(prev); } } + public boolean remapValuesAndCheck(Function function) { + boolean changed = false; + for (int i = 0; i < values.length; i++) { + K prev = values[i]; + if (prev == null) break; + K apply = function.apply(prev); + values[i] = apply; + if (!apply.equals(prev)) { + changed = true; + } + } + for (int i = 0; i < idToValues.length; i++) { + K prev = idToValues[i]; + if (prev == null) break; + K apply = function.apply(prev); + idToValues[i] = apply; + if (!apply.equals(prev)) { + changed = true; + } + } + return changed; + } + public static Int2ObjectBiMap create(int expectedSize) { return new Int2ObjectBiMap<>((int) ((float) expectedSize / LOAD_FACTOR)); } @@ -151,7 +176,7 @@ public class Int2ObjectBiMap implements IndexedIterable { private int findFree(int size) { int i; - for(i = size; i < this.values.length; ++i) { + for (i = size; i < this.values.length; ++i) { if (this.values[i] == EMPTY) { return i; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/Key.java b/core/src/main/java/net/momirealms/craftengine/core/util/Key.java index 16594275a..a09969dd3 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/Key.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/Key.java @@ -66,6 +66,13 @@ public record Key(String namespace, String value) { return this.namespace + ":" + this.value; } + public String asMinimalString() { + if (this.namespace.equals("minecraft")) { + return this.value; + } + return asString(); + } + private static String[] decompose(String id, String namespace) { String[] strings = new String[]{namespace, id}; int i = id.indexOf(':'); diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/PngOptimizer.java b/core/src/main/java/net/momirealms/craftengine/core/util/PngOptimizer.java new file mode 100644 index 000000000..03e1a17b5 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/util/PngOptimizer.java @@ -0,0 +1,537 @@ +package net.momirealms.craftengine.core.util; + +import net.momirealms.craftengine.core.plugin.config.Config; +import net.momirealms.craftengine.core.util.zopfli.Options; +import net.momirealms.craftengine.core.util.zopfli.ZopfliOutputStream; + +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.nio.charset.StandardCharsets; +import java.util.*; +import java.util.List; +import java.util.zip.Deflater; +import java.util.zip.DeflaterOutputStream; + +public class PngOptimizer { + private static final byte[] PNG_SIGNATURE = new byte[] { (byte) 0x89, 'P', 'N', 'G', '\r', '\n', 0x1A, '\n' }; + private static final byte[] IDAT = "IDAT".getBytes(StandardCharsets.UTF_8); + private static final byte[] IEND = "IEND".getBytes(StandardCharsets.UTF_8); + private static final byte[] tRNS = "tRNS".getBytes(StandardCharsets.UTF_8); + private static final byte[] PLTE = "PLTE".getBytes(StandardCharsets.UTF_8); + private static final byte[] IHDR = "IHDR".getBytes(StandardCharsets.UTF_8); + + private final BufferedImage src; + + public PngOptimizer(BufferedImage src) { + this.src = src; + } + + private boolean isGrayscale(final BufferedImage src) { + final int width = src.getWidth(); + final int height = src.getHeight(); + for (int y = 0; y < height; y++) { + for (int x = 0; x < width; x++) { + final int argb = src.getRGB(x, y); + final int red = 0xff & argb >> 16; + final int green = 0xff & argb >> 8; + final int blue = 0xff & argb >> 0; + if (red != green || red != blue) { + return false; + } + } + } + return true; + } + + public void write(OutputStream os) throws IOException { + BufferedImage src = convertTo8BitRGB(this.src); + final int width = src.getWidth(); + final int height = src.getHeight(); + + ImageColorInfo info = createColorInfo(src); + ImageData bestChoice = findBestFileStructure(src, info); + { + os.write(PNG_SIGNATURE); + } + { + final byte compressionMethod = 0; + final byte filterMethod = 0; + final InterlaceMethod interlaceMethod = InterlaceMethod.NONE; + final ImageHeader imageHeader = new ImageHeader(width, height, bestChoice.bitDepth, bestChoice.colorType, compressionMethod, filterMethod, interlaceMethod); + writeChunkIHDR(os, imageHeader); + } + + os.write(bestChoice.data); + writeChunkIEND(os); + os.close(); + } + + private ImageColorInfo createColorInfo(final BufferedImage src) { + final int width = src.getWidth(); + final int height = src.getHeight(); + boolean isGrayscale = isGrayscale(src); + + Map ope = new HashMap<>(); + Map tra = new HashMap<>(); + + for (int y = 0; y < height; y++) { + for (int x = 0; x < width; x++) { + int argb = src.getRGB(x, y); + int alpha = (argb >> 24) & 0xFF; + if (alpha == 255) { + ope.put(argb, ope.getOrDefault(argb, 0) + 1); + } else { + tra.put(argb, ope.getOrDefault(argb, 0) + 1); + } + } + } + + return new ImageColorInfo(ope, tra, isGrayscale); + } + + private BufferedImage convertTo8BitRGB(BufferedImage src) { + int type = src.getType(); + if (type == BufferedImage.TYPE_BYTE_GRAY || type == BufferedImage.TYPE_USHORT_GRAY) { + BufferedImage eightBitImage = new BufferedImage( + src.getWidth(), + src.getHeight(), + BufferedImage.TYPE_4BYTE_ABGR + ); + Graphics2D g2d = eightBitImage.createGraphics(); + g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY); + g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); + g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DISABLE); + g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY); + g2d.drawImage(src, 0, 0, null); + g2d.dispose(); + return eightBitImage; + } + return src; + } + + private ImageData findBestFileStructure(BufferedImage src, ImageColorInfo info) throws IOException { + byte[] normalSize = tryNormal(src, info.hasAlpha(), info.isGrayscale()); + // 可以考虑使用调色盘 + if (info.uniqueColorCount() <= 256) { + Pair palettePair = tryPalette(src, info); + byte[] paletteSize = palettePair.right(); + if (normalSize.length > paletteSize.length) { + return new ImageData(PngColorType.INDEXED_COLOR, (byte) palettePair.left().calculateBitDepth(), paletteSize); + } + } + if (info.isGrayscale()) { + return new ImageData(info.hasAlpha() ? PngColorType.GREYSCALE_WITH_ALPHA : PngColorType.GREYSCALE, (byte) 8, normalSize); + } else { + return new ImageData(info.hasAlpha() ? PngColorType.TRUE_COLOR_WITH_ALPHA : PngColorType.TRUE_COLOR, (byte) 8, normalSize); + } + } + + private byte[] tryNormal(BufferedImage src, boolean hasAlpha, boolean isGrayscale) throws IOException { + byte[] bytes = generatePngData(src, hasAlpha, isGrayscale); + int zopfli = Config.zopfliIterations(); + return zopfli > 0 ? compressImageZopfli(bytes, zopfli) : compressImageStandard(bytes); + } + + private byte[] generatePngData(BufferedImage src, boolean hasAlpha, boolean isGrayscale) { + final ByteArrayOutputStream baos = new ByteArrayOutputStream(); + int width = src.getWidth(); + int height = src.getHeight(); + int[] row = new int[width]; + for (int y = 0; y < height; y++) { + src.getRGB(0, y, width, 1, row, 0, width); + baos.write(FilterType.NONE.ordinal()); + for (int x = 0; x < width; x++) { + final int argb = row[x]; + final int alpha = 0xff & argb >> 24; + final int red = 0xff & argb >> 16; + final int green = 0xff & argb >> 8; + final int blue = 0xff & argb >> 0; + if (isGrayscale) { + final int gray = (red + green + blue) / 3; + baos.write(gray); + } else { + baos.write(red); + baos.write(green); + baos.write(blue); + } + if (hasAlpha) { + baos.write(alpha); + } + } + } + return baos.toByteArray(); + } + + private Pair tryPalette(BufferedImage src, ImageColorInfo info) throws IOException { + ByteArrayOutputStream paletteOs = new ByteArrayOutputStream(); + Palette palette; + if (info.hasAlpha()) { + palette = new ExactTransparentPalette(info.opaque, info.transparent); + writeChunkPLTE(paletteOs, palette); + writeChunkTRNS(paletteOs, palette); + } else { + palette = new ExactOpaquePalette(info.opaque); + writeChunkPLTE(paletteOs, palette); + } + byte[] bytes = generatePaletteData(src, palette); + int zopfli = Config.zopfliIterations(); + paletteOs.write(zopfli > 0 ? compressImageZopfli(bytes, zopfli) : compressImageStandard(bytes)); + return Pair.of(palette, paletteOs.toByteArray()); + } + + private byte[] generatePaletteData(BufferedImage src, Palette palette) { + int width = src.getWidth(); + int height = src.getHeight(); + int bitsPerIndex = palette.calculateBitDepth(); + final ByteArrayOutputStream dataOs = new ByteArrayOutputStream(); + final int[] row = new int[width]; + + for (int y = 0; y < height; y++) { + src.getRGB(0, y, width, 1, row, 0, width); + dataOs.write(FilterType.NONE.ordinal()); + + // 根据位深度选择相应的处理方法 + switch (bitsPerIndex) { + case 4 -> process4Bit(row, width, dataOs, palette); + case 2 -> process2Bit(row, width, dataOs, palette); + case 1 -> process1Bit(row, width, dataOs, palette); + default -> process8Bit(row, width, dataOs, palette); + } + } + return dataOs.toByteArray(); + } + + // 处理8位深度:每个索引占1字节 + private void process8Bit(int[] row, int width, ByteArrayOutputStream dataOs, Palette palette) { + for (int x = 0; x < width; x++) { + final int argb = row[x]; + final int index = palette.getPaletteIndex(argb); + dataOs.write(0xff & index); + } + } + + // 处理4位深度:每2个索引打包到1字节中 + private void process4Bit(int[] row, int width, ByteArrayOutputStream dataOs, Palette palette) { + for (int x = 0; x < width; x += 2) { + final int argb1 = row[x]; + final int index1 = palette.getPaletteIndex(argb1); + + if (x + 1 < width) { + final int argb2 = row[x + 1]; + final int index2 = palette.getPaletteIndex(argb2); + // 将两个4位索引打包到一个字节中 + byte packed = (byte) ((index1 << 4) | index2); + dataOs.write(packed); + } else { + // 如果是奇数宽度,最后一个像素单独处理 + byte packed = (byte) (index1 << 4); + dataOs.write(packed); + } + } + } + + // 处理2位深度:每4个索引打包到1字节中 + private void process2Bit(int[] row, int width, ByteArrayOutputStream dataOs, Palette palette) { + for (int x = 0; x < width; x += 4) { + int packed = 0; + for (int i = 0; i < 4; i++) { + if (x + i < width) { + final int argb = row[x + i]; + final int index = palette.getPaletteIndex(argb); + packed |= (index << (6 - i * 2)) & 0xFF; + } + } + dataOs.write(packed); + } + } + + // 处理1位深度:每8个索引打包到1字节中 + private void process1Bit(int[] row, int width, ByteArrayOutputStream dataOs, Palette palette) { + for (int x = 0; x < width; x += 8) { + int packed = 0; + for (int i = 0; i < 8; i++) { + if (x + i < width) { + final int argb = row[x + i]; + final int index = palette.getPaletteIndex(argb); + packed |= (index << (7 - i)); + } + } + dataOs.write(packed); + } + } + + private byte[] compressImageZopfli(byte[] uncompressed, int iterations) throws IOException { + ByteArrayOutputStream output = new ByteArrayOutputStream(); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try (ZopfliOutputStream dos = new ZopfliOutputStream(baos, new Options(Options.OutputFormat.ZLIB, Options.BlockSplitting.FIRST, iterations))) { + dos.write(uncompressed); + } catch (IOException e) { + throw new IOException("Compression failed", e); + } + byte[] compressedData = baos.toByteArray(); + int chunkSize = 32 * 1024; + for (int index = 0; index < compressedData.length; index += chunkSize) { + int end = Math.min(compressedData.length, index + chunkSize); + byte[] chunk = Arrays.copyOfRange(compressedData, index, end); + writeChunkIDAT(output, chunk); + } + return output.toByteArray(); + } + + private byte[] compressImageStandard(byte[] uncompressed) throws IOException { + final ByteArrayOutputStream output = new ByteArrayOutputStream(); + + try (final ByteArrayOutputStream baos = new ByteArrayOutputStream(); + final DeflaterOutputStream dos = new DeflaterOutputStream( + baos, new Deflater(Deflater.BEST_COMPRESSION))) { + + dos.write(uncompressed); + dos.finish(); + + final byte[] compressed = baos.toByteArray(); + + final int chunkSize = 32 * 1024; + for (int index = 0; index < compressed.length; index += chunkSize) { + final int end = Math.min(compressed.length, index + chunkSize); + final byte[] chunk = Arrays.copyOfRange(compressed, index, end); + writeChunkIDAT(output, chunk); + } + } + + return output.toByteArray(); + } + + private void writeChunkIDAT(final OutputStream os, final byte[] bytes) throws IOException { + writeChunk(os, IDAT, bytes); + } + + private void writeChunkIEND(final OutputStream os) throws IOException { + writeChunk(os, IEND, null); + } + + private void writeChunkTRNS(final OutputStream os, final Palette palette) throws IOException { + List alphaValues = new ArrayList<>(); + boolean hasTransparency = false; + + for (int i = 0; i < palette.length(); i++) { + int argb = palette.getEntry(i); + int alpha = (argb >> 24) & 0xFF; + + if (alpha < 255) { + hasTransparency = true; + alphaValues.add((byte) alpha); + } else { + break; + } + } + + if (!hasTransparency) { + return; + } + + final byte[] bytes = new byte[alphaValues.size()]; + for (int i = 0; i < alphaValues.size(); i++) { + bytes[i] = alphaValues.get(i); + } + + writeChunk(os, tRNS, bytes); + } + + private void writeChunkPLTE(final OutputStream os, final Palette palette) throws IOException { + final int length = palette.length(); + final byte[] bytes = new byte[length * 3]; + for (int i = 0; i < length; i++) { + final int rgb = palette.getEntry(i); + final int index = i * 3; + bytes[index + 0] = (byte) (0xff & rgb >> 16); + bytes[index + 1] = (byte) (0xff & rgb >> 8); + bytes[index + 2] = (byte) (0xff & rgb >> 0); + } + writeChunk(os, PLTE, bytes); + } + + private void writeChunkIHDR(final OutputStream os, final ImageHeader value) throws IOException { + final ByteArrayOutputStream baos = new ByteArrayOutputStream(); + writeInt(baos, value.width); + writeInt(baos, value.height); + baos.write(0xff & value.bitDepth); + baos.write(0xff & value.pngColorType.value); + baos.write(0xff & value.compressionMethod); + baos.write(0xff & value.filterMethod); + baos.write(0xff & value.interlaceMethod.ordinal()); + writeChunk(os, IHDR, baos.toByteArray()); + } + + private void writeInt(final OutputStream os, final int value) throws IOException { + os.write(0xff & value >> 24); + os.write(0xff & value >> 16); + os.write(0xff & value >> 8); + os.write(0xff & value >> 0); + } + + private void writeChunk(final OutputStream os, final byte[] chunkType, final byte[] data) throws IOException { + final int dataLength = data == null ? 0 : data.length; + writeInt(os, dataLength); + os.write(chunkType); + if (data != null) { + os.write(data); + } + writeInt(os, calculateCRC(chunkType, data)); // crc + } + + public static int calculateCRC(byte[] chunkType, byte[] data) { + CRC crc = new CRC(); + crc.update(chunkType, 0, chunkType.length); + if (data != null && data.length > 0) { + crc.update(data, 0, data.length); + } + return crc.getValue(); + } + + enum PngColorType { + GREYSCALE(0), TRUE_COLOR(2), + INDEXED_COLOR(3), GREYSCALE_WITH_ALPHA(4), + TRUE_COLOR_WITH_ALPHA(6); + + private final int value; + + PngColorType(final int value) { + this.value = value; + } + + public int value() { + return value; + } + } + + enum FilterType { + NONE, SUB, UP, AVERAGE, PAETH + } + + enum InterlaceMethod { + NONE, ADAM7 + } + + interface Palette { + + int getEntry(int index); + + int getPaletteIndex(int rgb); + + int length(); + + default int calculateBitDepth() { + int colorCount = length(); + if (colorCount <= 2) return 1; + if (colorCount <= 4) return 2; + if (colorCount <= 16) return 4; + return 8; + } + } + + static class ExactOpaquePalette implements Palette { + private final int[] palette; // 频次排序的颜色数组 + private final Map colorToIndex; // 颜色到索引的映射 + + public ExactOpaquePalette(final Map colorFrequency) { + this.palette = colorFrequency.entrySet().stream() + .sorted((a, b) -> Integer.compare(b.getValue(), a.getValue())) + .mapToInt(Map.Entry::getKey) + .toArray(); + this.colorToIndex = new HashMap<>(); + for (int i = 0; i < palette.length; i++) { + this.colorToIndex.put(palette[i], i); + } + } + + @Override + public int getEntry(int index) { + if (index < 0 || index >= palette.length) { + throw new IllegalArgumentException("Index out of bounds: " + index); + } + return palette[index]; + } + + @Override + public int getPaletteIndex(int rgb) { + return colorToIndex.get(rgb); + } + + @Override + public int length() { + return palette.length; + } + } + + static class ExactTransparentPalette implements Palette { + private final int[] palette; // 透明色在前,不透明色在后 + private final Map colorToIndex; // 颜色到索引的映射 + + public ExactTransparentPalette(final Map opaque, final Map transparent) { + // 分别处理透明色和不透明色 + List transparentList = transparent.entrySet().stream() + .sorted((a, b) -> Integer.compare(b.getValue(), a.getValue())) // 按频次降序 + .map(Map.Entry::getKey) + .toList(); + + List opaqueList = opaque.entrySet().stream() + .sorted((a, b) -> Integer.compare(b.getValue(), a.getValue())) // 按频次降序 + .map(Map.Entry::getKey) + .toList(); + + // 合并:透明色在前,不透明色在后 + List combinedList = new ArrayList<>(); + combinedList.addAll(transparentList); + combinedList.addAll(opaqueList); + + this.palette = combinedList.stream().mapToInt(Integer::intValue).toArray(); + + this.colorToIndex = new HashMap<>(); + for (int i = 0; i < palette.length; i++) { + this.colorToIndex.put(palette[i], i); + } + } + + @Override + public int getEntry(int index) { + if (index < 0 || index >= palette.length) { + throw new IllegalArgumentException("Index out of bounds: " + index); + } + return palette[index]; + } + + @Override + public int getPaletteIndex(int rgb) { + Integer index = colorToIndex.get(rgb); + if (index == null) { + throw new IllegalArgumentException("Color not found in palette: 0x" + Integer.toHexString(rgb)); + } + return index; + } + + @Override + public int length() { + return palette.length; + } + } + + record ImageData(PngColorType colorType, byte bitDepth, byte[] data) { + } + + record ImageHeader(int width, int height, byte bitDepth, PngColorType pngColorType, byte compressionMethod, byte filterMethod, InterlaceMethod interlaceMethod) { + } + + record ImageColorInfo(Map opaque, Map transparent, boolean isGrayscale) { + + public int uniqueColorCount() { + return this.opaque.size() + this.transparent.size(); + } + + public boolean hasAlpha() { + return !this.transparent.isEmpty(); + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/ResourceConfigUtils.java b/core/src/main/java/net/momirealms/craftengine/core/util/ResourceConfigUtils.java index ee688e805..3c21da4ce 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/ResourceConfigUtils.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/ResourceConfigUtils.java @@ -23,7 +23,7 @@ public final class ResourceConfigUtils { return raw != null ? function.apply(raw) : defaultValue; } - public static String getAsString(@Nullable Object raw) { + public static String getAsStringOrNull(@Nullable Object raw) { if (raw == null) { return null; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/StringValueOnlyTagVisitor.java b/core/src/main/java/net/momirealms/craftengine/core/util/StringValueOnlyTagVisitor.java new file mode 100644 index 000000000..87986564d --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/util/StringValueOnlyTagVisitor.java @@ -0,0 +1,73 @@ +package net.momirealms.craftengine.core.util; + +import net.momirealms.sparrow.nbt.*; + +import java.util.Map; + +public class StringValueOnlyTagVisitor implements TagVisitor { + protected final StringBuilder builder = new StringBuilder(); + + public String visit(Tag element) { + element.accept(this); + return this.builder.toString(); + } + + @Override + public void visitString(StringTag element) { + this.builder.append(element.getAsString()); + } + + @Override + public void visitByte(ByteTag element) { + } + + @Override + public void visitShort(ShortTag element) { + } + + @Override + public void visitInt(IntTag element) { + } + + @Override + public void visitLong(LongTag element) { + } + + @Override + public void visitFloat(FloatTag element) { + } + + @Override + public void visitDouble(DoubleTag element) { + } + + @Override + public void visitByteArray(ByteArrayTag element) { + } + + @Override + public void visitIntArray(IntArrayTag element) { + } + + @Override + public void visitLongArray(LongArrayTag element) { + } + + @Override + public void visitList(ListTag element) { + for (Tag tag : element) { + this.builder.append((new StringValueOnlyTagVisitor()).visit(tag)); + } + } + + @Override + public void visitCompound(CompoundTag compound) { + for (Map.Entry entry : compound.entrySet()) { + this.builder.append((new StringValueOnlyTagVisitor()).visit(entry.getValue())); + } + } + + @Override + public void visitEnd(EndTag element) { + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/BitWriter.java b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/BitWriter.java new file mode 100644 index 000000000..7b1d9fed6 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/BitWriter.java @@ -0,0 +1,99 @@ +/* Copyright 2018 Google Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Author: eustas.ru@gmail.com (Eugene Klyuchnikov) +*/ + +package net.momirealms.craftengine.core.util.zopfli; + +import java.io.IOException; +import java.io.OutputStream; + +/** + * Wrapper/buffer that accumulates bits before sending them to destination. + */ +final class BitWriter { + + /* Those members are not private for testing purposes. */ + static final int PAGE_SIZE = 4096; + int offset; + + private final byte[] data = new byte[PAGE_SIZE + 1]; + private int bitOffset; + private int accumulator; + + private final OutputStream output; + + BitWriter(OutputStream output) { + this.output = output; + } + + /** + * Appends 0-7 bits to output, to align output to byte boundary. + */ + void jumpToByteBoundary() { + int paddingBits = 8 - (bitOffset & 7); + if (paddingBits != 8) { + addBits(0, paddingBits); + } + } + + /** + * Appends bits to output. + * + * Requirement: value & ~((1 << length) - 1) == 0 + * Requirement: 1 <= length <= 16 + * + * Invariant: bitOffset < 8 + * Invariant: offset < PAGE_SIZE + * + * Up to 2 bytes are added to data, but offset invariant guarantees + * that there are enough slots in data. + * + * @param value bits to append + * @param length number of bits to append + */ + void addBits(int value, int length) { + accumulator = accumulator | (value << bitOffset); + bitOffset += length; + while (bitOffset >= 8) { + data[offset++] = (byte) accumulator; + bitOffset -= 8; + accumulator >>= 8; + } + if (offset >= PAGE_SIZE) { + try { + flush(); + } catch (IOException ex) { + throw new ZopfliRuntimeException("Failed to push output", ex); + } + } + } + + /** + * Writes whole number of accumulated bytes to output. + * + * Note: up to 7 bits might remain in accumulator. + * + * Unlike other methods, this one does not wrap IOException. + * + * This method is not responsible for flushing the underlying stream. + */ + void flush() throws IOException { + int slice = offset > PAGE_SIZE ? PAGE_SIZE : offset; + output.write(data, 0, slice); + offset -= slice; + data[0] = data[PAGE_SIZE]; + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/BlockSplitter.java b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/BlockSplitter.java new file mode 100644 index 000000000..7c61d02a2 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/BlockSplitter.java @@ -0,0 +1,161 @@ +/* Copyright 2014 Google Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Author: eustas.ru@gmail.com (Eugene Klyuchnikov) +*/ + +package net.momirealms.craftengine.core.util.zopfli; + +final class BlockSplitter { + + /* Collection of utilities / should not be instantiated. */ + BlockSplitter() {} + + static int split(Cookie cookie, byte[] input, int from, int to) { + LzStore store = cookie.store1; + store.reset(); + Deflate.greedy(cookie, null, input, from, to, store); + + int nPoints = splitLz(cookie, store.litLens, store.dists, store.size); + + int pos = from; + char[] dists = store.dists; + char[] litLens = store.litLens; + int[] points = cookie.splitPoints; + + points[0] = pos; + for (int i = 0, j = 1; j <= nPoints; ++j) { + for (int pj = points[j]; i < pj; ++i) { + pos += (dists[i] == 0) ? 1 : litLens[i]; + } + points[j] = pos; + } + return nPoints; + } + + // TODO(eustas): May be use some kind of SORTED data-structure for splitPoints? + static int splitLz(Cookie cookie, char[] litLens, char[] dists, int llSize) { + int[] splitPoints = cookie.splitPoints; + int[] splitSize = cookie.splitSize; + splitPoints[0] = 0; + splitSize[0] = Deflate.calculateBlockSize(cookie, litLens, dists, 0, llSize); + splitPoints[1] = llSize; + splitSize[1] = -1; + int numBlocks = 1; + int maxBlocks = cookie.blockSplittingMax; + + if (llSize < 10) { + return numBlocks; + } + + int lStart = 0; + int lEnd = llSize; + int blockN = 0; + while (numBlocks < maxBlocks) { + int llPos = findMinimum(cookie, litLens, dists, lStart, lEnd); + + int splitL = Deflate.calculateBlockSize(cookie, litLens, dists, lStart, llPos); + int splitR = Deflate.calculateBlockSize(cookie, litLens, dists, llPos, lEnd); + + if (splitL + splitR > splitSize[blockN] || llPos == lStart + 1 || llPos == lEnd) { + splitSize[blockN] = -1; + } else { + splitSize[blockN] = splitL; + numBlocks++; + blockN++; + System.arraycopy(splitPoints, blockN, splitPoints, blockN + 1, numBlocks - blockN); + System.arraycopy(splitSize, blockN, splitSize, blockN + 1, numBlocks - blockN); + splitPoints[blockN] = llPos; + splitSize[blockN] = splitR; + } + + int longest = 0; + boolean found = false; + for (int i = 0; i < numBlocks; i++) { + int start = splitPoints[i]; + int end = splitPoints[i + 1]; + if ((splitSize[i] != -1) && end - start > longest) { + lStart = start; + lEnd = end; + found = true; + longest = end - start; + blockN = i; + } + } + if (!found) { + break; + } + + if (lEnd - lStart < 10) { + break; + } + } + + return numBlocks; + } + + private static int findMinimum(Cookie cookie, char[] litLens, char[] dists, int from, int to) { + int start = from + 1; + int end = to; + if (end - start < 1024) { + int best = Integer.MAX_VALUE; + int result = start; + for (int i = start; i < end; i++) { + int v = Deflate.calculateBlockSize(cookie, litLens, dists, from, i) + + Deflate.calculateBlockSize(cookie, litLens, dists, i, to); + if (v < best) { + best = v; + result = i; + } + } + return result; + } else { + int n = Cookie.SPLIT_PARTITIONS; + int[] p = cookie.p; + int[] vp = cookie.vp; + int lastBest = Integer.MAX_VALUE; + int pos = start; + + while (true) { + if (end - start <= n) { + break; + } + + for (int i = 0; i < n; i++) { + p[i] = start + (i + 1) * ((end - start) / (n + 1)); + vp[i] = Deflate.calculateBlockSize(cookie, litLens, dists, from, p[i]) + + Deflate.calculateBlockSize(cookie, litLens, dists, p[i], to); + } + int bestI = 0; + int best = vp[0]; + for (int i = 1; i < n; i++) { + if (vp[i] < best) { + best = vp[i]; + bestI = i; + } + } + if (best > lastBest) { + break; + } + + start = bestI == 0 ? start : p[bestI - 1]; + end = bestI == n - 1 ? end : p[bestI + 1]; + + pos = p[bestI]; + lastBest = best; + } + return pos; + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/Cookie.java b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/Cookie.java new file mode 100644 index 000000000..fc4e14d7f --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/Cookie.java @@ -0,0 +1,168 @@ +/* Copyright 2014 Google Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Author: eustas.ru@gmail.com (Eugene Klyuchnikov) +*/ + +package net.momirealms.craftengine.core.util.zopfli; + +final class Cookie { + + static class Node { + int weight; + Node tail; + int count; + } + + static final int SPLIT_PARTITIONS = 9; + private static final int POOL_MAX = 10240; + + static final int[] intZeroes = new int[65536]; + static final char[] charZeroes = new char[65536]; + static final byte[] byteZeroes = new byte[65536]; + static final int[] intMOnes = new int[65536]; + static final char[] charOnes = new char[65536]; + private static final long[] costMax = new long[65536]; + + static { + for (int i = 0; i < 64; ++i) { + intMOnes[i] = -1; + charOnes[i] = 1; + costMax[i] = Long.MAX_VALUE; + } + expand(intMOnes); + expand(charOnes); + expand(costMax); + } + + private static void expand(Object array) { + for (int i = 64; i < 65536; i = i + i) { + System.arraycopy(array, 0, array, i, i); + } + } + + final Node[] list0 = new Node[15]; + final Node[] list1 = new Node[15]; + final Node[] leaves1 = new Node[288]; + final Node[] leaves2 = new Node[288]; + private final Node[] nodes = new Node[POOL_MAX]; + private int nextNode; + + final int[] i320a = new int[320]; + final int[] i320b = new int[320]; + final int[] i320c = new int[320]; + final int[] i288a = new int[288]; + final int[] i288b = new int[288]; + final int[] i288c = new int[288]; + final int[] i289a = new int[289]; + final char[] c259a = new char[259]; + final int[] i32a = new int[32]; + final int[] i32b = new int[32]; + final int[] i32c = new int[32]; + final int[] i19a = new int[19]; + final int[] i19b = new int[19]; + final int[] i19c = new int[19]; + final int[] i16a = new int[16]; + final int[] i16b = new int[16]; + + + final int[] p = new int[SPLIT_PARTITIONS]; + final int[] vp = new int[SPLIT_PARTITIONS]; + + final char[] lengthArray; // unsigned short, but really values are 0..258 == MAX_MATCH + final long[] costs; + final char[] path; + final int[] splitPoints; + final int[] splitSize; + + + final SymbolStats stats = new SymbolStats(); + final SymbolStats bestStats = new SymbolStats(); + final SymbolStats lastStats = new SymbolStats(); + final Hash h = new Hash(); + + + int lenVal; + int distVal; + int rnd = 42; + + + final LzStore store1; + final LzStore store2; + final LongestMatchCache lmc; + + + final int masterBlockSize; + + final Node node(int weight, int count, Node tail) { + Node result = nodes[nextNode++]; + result.weight = weight; + result.count = count; + result.tail = tail; + return result; + } + + final void resetPool() { + nextNode = 0; + } + + static void fill0(char[] array, int length) { + int i = 0; + while (i < length) { + int j = i + 65536; + if (j > length) { + j = length; + } + System.arraycopy(charZeroes, 0, array, i, j - i); + i = j; + } + } + + static void fillCostMax(long[] array, int length) { + int i = 0; + while (i < length) { + int j = i + 65536; + if (j > length) { + j = length; + } + System.arraycopy(costMax, 0, array, i, j - i); + i = j; + } + } + + /** + * Maximum amount of blocks to split into. + *

+ * {@code 0} for unlimited. + */ + final int blockSplittingMax = 15; + + Cookie(int masterBlockSize) { // TODO: + maxBlockSize? + this.masterBlockSize = masterBlockSize; + + for (int i = 0; i < POOL_MAX; i++) { + nodes[i] = new Node(); + } + splitPoints = new int[blockSplittingMax + 1]; + splitSize = new int[blockSplittingMax + 1]; + + lengthArray = new char[masterBlockSize + 1]; // 2 + costs = new long[masterBlockSize + 1]; // 8 + path = new char[masterBlockSize + 1]; // 2 + lmc = new LongestMatchCache(masterBlockSize); // 28 + store1 = new LzStore(masterBlockSize); // 4 + store2 = new LzStore(masterBlockSize); // 4 + // 2 + 8 + 2 + 28 + 4 + 4 = 48 + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/Deflate.java b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/Deflate.java new file mode 100644 index 000000000..9dbbc73ca --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/Deflate.java @@ -0,0 +1,822 @@ +/* Copyright 2014 Google Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Author: eustas.ru@gmail.com (Eugene Klyuchnikov) +*/ + +package net.momirealms.craftengine.core.util.zopfli; + +final class Deflate { + + /* Collection of utilities / should not be instantiated. */ + Deflate() {} + + enum BlockType { + DYNAMIC, + FIXED + } + + /* Bit-reversed 5-bit numbers. */ + private static final int[] REVERSED_BITS = { + 0, 16, 8, 24, 4, 20, 12, 28, 2, 18, 10, 26, 6, 22, 14, 30, + 1, 17, 9, 25, 5, 21, 13, 29, 3, 19, 11, 27, 7, 23, 15, 31 + }; + + static final int WINDOW_SIZE = 0x8000; + static final int WINDOW_MASK = 0x7FFF; + + // final static int MAX_MATCH = 258; + // final static int MIN_MATCH = 3; + // final static int MAX_CHAIN_HITS = 8192; // Should be less than WINDOW_SIZE + + private static void getFixedTree(int[] llLengths, int[] dLengths) { + for (int i = 0; i < 144; i++) { + llLengths[i] = 8; + } + for (int i = 144; i < 256; i++) { + llLengths[i] = 9; + } + for (int i = 256; i < 280; i++) { + llLengths[i] = 7; + } + for (int i = 280; i < 288; i++) { + llLengths[i] = 8; + } + for (int i = 0; i < 32; i++) { + dLengths[i] = 5; + } + } + + private static int bitReverse(int value, int length) { + int low = REVERSED_BITS[value & 0x1F]; + int mid = REVERSED_BITS[(value >> 5) & 0x1F]; + int hi = REVERSED_BITS[(value >> 10) & 0x1F]; + int reversed = (low << 10) | (mid << 5) | hi; + return (length == 15) ? reversed : (reversed >> (15 - length)); + } + + public static void greedy(Cookie cookie, LongestMatchCache lmc, byte[] input, int from, + int to, LzStore store) { + Hash h = cookie.h; + h.init(input, Math.max(from - WINDOW_SIZE, 0), from, to); + int prevLength = 0; + int prevMatch = 0; + char[] dummySubLen = cookie.c259a; + boolean matchAvailable = false; + + for (int i = from; i < to; i++) { + h.updateHash(input, i, to); + findLongestMatch(cookie, lmc, from, h, input, i, to, 258, dummySubLen); + int len = cookie.lenVal; + int dist = cookie.distVal; + int lengthScore = dist > 1024 ? len - 1 : len; + int prevLengthScore = prevMatch > 1024 ? prevLength - 1 : prevLength; + + if (matchAvailable) { + matchAvailable = false; + if (lengthScore > prevLengthScore + 1) { + store.append((char) (input[i - 1] & 0xFF), (char) 0); + if (lengthScore >= 3 && len < 258) { + matchAvailable = true; + prevLength = len; + prevMatch = dist; + continue; + } + } else { + store.append((char) prevLength, (char) prevMatch); + for (int j = 2; j < prevLength; j++) { + i++; + h.updateHash(input, i, to); + } + continue; + } + } else if (lengthScore >= 3 && len < 258) { + matchAvailable = true; + prevLength = len; + prevMatch = dist; + continue; + } + + if (lengthScore >= 3) { + store.append((char) len, (char) dist); + } else { + len = 1; + store.append((char) (input[i] & 0xFF), (char) 0); + } + for (int j = 1; j < len; j++) { + i++; + h.updateHash(input, i, to); + } + } + } + + static void findLongestMatch(Cookie cookie, LongestMatchCache lmc, int blockStart, Hash h, + byte[] array, int pos, int size, int limit, char[] subLen) { + //# MIN_MATCH = 3 + //# MAX_MATCH = 258 + + int offset = pos - blockStart; + char[] lmcLength = lmc != null ? lmc.length : null; + if (lmc != null + && ((lmcLength[offset] == 0 || lmc.dist[offset] != 0)) + && (limit == 258 + || lmcLength[offset] <= limit + || (subLen != null && lmc.maxCachedSubLen(offset) >= limit))) { + if (subLen == null || lmcLength[offset] <= lmc.maxCachedSubLen(offset)) { + // TODO(eustas): prove that we don't need clamping. + cookie.lenVal = Math.min(lmcLength[offset], limit); + if (subLen != null) { + lmc.cacheToSubLen(offset, cookie.lenVal, subLen); + cookie.distVal = subLen[cookie.lenVal]; + } else { + cookie.distVal = lmc.dist[offset]; + } + return; + } + limit = lmcLength[offset]; + } + + if (size - pos < 3) { + cookie.lenVal = 0; + cookie.distVal = 0; + return; + } + + if (pos + limit > size) { + limit = size - pos; + } + + int bestDist = 0; + int bestLength = 1; + int arrayEnd = pos + limit; + int chainCounter = 8192; + char[] hPrev = h.prev; + char[] hPrev2 = h.prev2; + int pp = h.head[h.val]; + int threshold = h.same[pp]; + int[] hashVal2 = h.hashVal2; + int marker = hashVal2[pp]; + int p = hPrev[pp]; + pp -= p; + int dist = pp > 0 ? pp : pp + WINDOW_SIZE; + + while (dist < WINDOW_SIZE && chainCounter > 0) { + int scan = pos; + int match = pos - dist; + + if (array[scan + bestLength] == array[match + bestLength]) { + int same0 = h.same[pos & WINDOW_MASK]; + if (same0 > 2 && array[scan] == array[match]) { + int same1 = h.same[match & WINDOW_MASK]; + int same = same0 < same1 ? same0 : same1; + if (same > limit) { + same = limit; + } + scan += same; + match += same; + } + while (scan != arrayEnd && array[scan] == array[match]) { + scan++; + match++; + } + scan -= pos; + + if (scan > bestLength) { + if (subLen != null) { + for (int j = bestLength + 1; j <= scan; j++) { + subLen[j] = (char) dist; + } + } + bestDist = dist; + bestLength = scan; + if (scan >= limit) { + break; + } + } + } + + if (hPrev != hPrev2 && bestLength >= threshold && marker == hashVal2[p]) { + hPrev = hPrev2; + } + + pp = p; + p = hPrev[p]; + if (p == pp) { + break; + } + pp -= p; + dist += pp > 0 ? pp : WINDOW_SIZE + pp; + + --chainCounter; + } + + if (lmc != null && limit == 258 && subLen != null + && lmcLength[offset] != 0 && lmc.dist[offset] == 0) { + if (bestLength < 3) { + lmc.dist[offset] = 0; + lmcLength[offset] = 0; + } else { + lmc.dist[offset] = (char) bestDist; + lmcLength[offset] = (char) bestLength; + } + lmc.subLenToCache(subLen, offset, bestLength); + } + + cookie.distVal = bestDist; + cookie.lenVal = bestLength; + } + + static void deflatePart(Cookie cookie, Options options, byte[] input, int from, int to, + boolean flush, BitWriter output) { + // assert from != to + switch (options.blockSplitting) { + case FIRST: + deflateSplittingFirst(cookie, options, flush, input, from, to, output); + break; + + case LAST: + deflateSplittingLast(cookie, options, flush, input, from, to, output); + break; + + case NONE: + deflateDynamicBlock(cookie, options, flush, input, from, to, output); + break; + } + } + + private static void deflateDynamicBlock(Cookie cookie, Options options, boolean flush, + byte[] input, int from, int to, BitWriter output) { + // assert from != to + LongestMatchCache lmc = cookie.lmc; + lmc.init(to - from); + + BlockType type = BlockType.DYNAMIC; + LzStore store = Squeeze.optimal(cookie, options.numIterations, lmc, input, from, to); + + if (store.size < 1000) { + LzStore fixedStore = cookie.store1; + fixedStore.reset(); + Squeeze.bestFixedLengths(cookie, lmc, input, from, to, cookie.lengthArray, cookie.costs); + Squeeze.optimalRun(cookie, lmc, input, from, to, cookie.lengthArray, fixedStore); + int dynCost = calculateBlockSize(cookie, store.litLens, store.dists, 0, store.size); + int fixedCost = calculateFixedBlockSize(cookie, fixedStore.litLens, + fixedStore.dists, fixedStore.size); + if (fixedCost < dynCost) { + type = BlockType.FIXED; + store = fixedStore; + } + } + + addLzBlock(cookie, type, flush, store.litLens, store.dists, 0, store.size, output); + } + + private static void deflateSplittingLast(Cookie cookie, Options options, boolean flush, + byte[] input, int from, int to, BitWriter output) { + // assert from != to + LongestMatchCache lmc = cookie.lmc; + lmc.init(to - from); + + LzStore store = Squeeze.optimal(cookie, options.numIterations, lmc, input, from, to); + + int nPoints = BlockSplitter.splitLz(cookie, store.litLens, store.dists, store.size); + + int[] splitPoints = cookie.splitPoints; + for (int i = 1; i <= nPoints; i++) { + int start = splitPoints[i - 1]; + int end = splitPoints[i]; + addLzBlock(cookie, BlockType.DYNAMIC, i == nPoints && flush, store.litLens, + store.dists, start, end, output); + } + } + + private static void deflateSplittingFirst(Cookie cookie, Options options, boolean flush, + byte[] input, int from, int to, BitWriter output) { + // assert from != to + int nPoints = BlockSplitter.split(cookie, input, from, to); + int[] splitPoints = cookie.splitPoints; + for (int i = 1; i <= nPoints; ++i) { + deflateDynamicBlock(cookie, options, i == nPoints && flush, input, + splitPoints[i - 1], splitPoints[i], output); + } + } + + static int calculateBlockSize(Cookie cookie, char[] litLens, char[] dists, int lStart, int lEnd) { + int[] llLengths = cookie.i288a; + System.arraycopy(Cookie.intZeroes, 0, llLengths, 0, 288); + int[] dLengths = cookie.i32a; + System.arraycopy(Cookie.intZeroes, 0, dLengths, 0, 32); + + int result = 3; + + int[] llCounts = cookie.i288b; + System.arraycopy(Cookie.intZeroes, 0, llCounts, 0, 288); + int[] dCounts = cookie.i32b; + System.arraycopy(Cookie.intZeroes, 0, dCounts, 0, 32); + + int[] lengthSymbol = Util.LENGTH_SYMBOL; + int[] cachedDistSymbol = Util.CACHED_DIST_SYMBOL; + int[] lengthExtraBits = Util.LENGTH_EXTRA_BITS; + for (int i = lStart; i < lEnd; i++) { + int d = dists[i]; + int l = litLens[i]; + if (d == 0) { + llCounts[l]++; + } else { + llCounts[lengthSymbol[l]]++; + int distSymbol = cachedDistSymbol[d]; + dCounts[distSymbol]++; + result += lengthExtraBits[l]; + if (distSymbol > 3) { + result += (distSymbol / 2) - 1; + } + } + } + llCounts[256] = 1; + + + int[] llCountsCopy = cookie.i288c; + System.arraycopy(llCounts, 0, llCountsCopy, 0, 288); + optimizeHuffmanForRle(cookie, llCountsCopy); + Katajainen.lengthLimitedCodeLengths(cookie, llCountsCopy, 15, llLengths); + + int[] dCountsCopy = cookie.i32c; + System.arraycopy(dCounts, 0, dCountsCopy, 0, 32); + optimizeHuffmanForRle(cookie, dCountsCopy); + Katajainen.lengthLimitedCodeLengths(cookie, dCountsCopy, 15, dLengths); + patchDistanceCodesForBuggyDecoders(dLengths); + + result += simulateAddDynamicTree(cookie, llLengths, dLengths); + + for (int i = 0; i < 288; ++i) { + result += llCounts[i] * llLengths[i]; + } + for (int i = 0; i < 32; ++i) { + result += dCounts[i] * dLengths[i]; + } + return result; + } + + private static int calculateFixedBlockSize(Cookie cookie, char[] litLens, char[] dists, + int size) { + int[] llLengths = cookie.i288a; + int[] dLengths = cookie.i32a; + getFixedTree(llLengths, dLengths); + + int result = 3; + + int[] cachedDistExtraBits = Util.CACHED_DIST_EXTRA_BITS; + int[] lengthExtraBits = Util.LENGTH_EXTRA_BITS; + int[] lengthSymbol = Util.LENGTH_SYMBOL; + + for (int i = 0; i < size; i++) { + int d = dists[i]; + int l = litLens[i]; + if (d == 0) { + result += llLengths[l]; + } else { + result += llLengths[lengthSymbol[l]]; + result += lengthExtraBits[l]; + result += 5; + result += d < 4097 ? cachedDistExtraBits[d] : d < 16385 ? d < 8193 ? 11 : 12 : 13; + } + } + result += llLengths[256]; + + return result; + } + + private static void lzCounts(char[] litLens, char[] dists, int start, int end, int[] llCount, + int[] dCount) { + int[] lengthSymbol = Util.LENGTH_SYMBOL; + int[] cachedDistSymbol = Util.CACHED_DIST_SYMBOL; + for (int i = start; i < end; i++) { + int d = dists[i]; + int l = litLens[i]; + if (d == 0) { + llCount[l]++; + } else { + llCount[lengthSymbol[l]]++; + dCount[cachedDistSymbol[d]]++; + } + } + + llCount[256] = 1; + } + + private static void patchDistanceCodesForBuggyDecoders(int[] dLengths) { + int numDistCodes = 0; + for (int i = 0; i < 30; i++) { + if (dLengths[i] != 0) { + numDistCodes++; + if (numDistCodes == 2) { + return; + } + } + } + + if (numDistCodes == 0) { + dLengths[0] = 1; + dLengths[1] = 1; + } else if (numDistCodes == 1) { + dLengths[dLengths[0] != 0 ? 1 : 0] = 1; + } + } + + private static void addDynamicTree(Cookie cookie, int[] llLengths, int[] dLengths, + BitWriter output) { + int best = 0; + int bestSize = Integer.MAX_VALUE; + + for (int i = 0; i < 8; i++) { + int size = simulateEncodeTree(cookie, llLengths, dLengths, (i & 1) != 0, + (i & 2) != 0, (i & 4) != 0); + if (size < bestSize) { + bestSize = size; + best = i; + } + } + + encodeTree(cookie, llLengths, dLengths, (best & 1) != 0, + (best & 2) != 0, (best & 4) != 0, output); + } + + private static void encodeTree(Cookie cookie, int[] llLengths, int[] dLengths, + boolean use16, boolean use17, boolean use18, BitWriter output) { + int hLit = 29; + int hDist = 29; + + while (hLit > 0 && llLengths[256 + hLit] == 0) { + hLit--; + } + while (hDist > 0 && dLengths[hDist] == 0) { + hDist--; + } + + int lldTotal = hLit + 258 + hDist; + int[] lldLengths = cookie.i320b; + System.arraycopy(llLengths, 0, lldLengths, 0, 257 + hLit); + System.arraycopy(dLengths, 0, lldLengths, 257 + hLit, hDist + 1); + + int rleSize = 0; + int[] rle = cookie.i320a; + int[] rleBits = cookie.i320c; + + for (int i = 0; i < lldTotal; i++) { + int count = 1; + int symbol = lldLengths[i]; + if (use16 || (symbol == 0 && (use17 || use18))) { + for (int j = i + 1; j < lldTotal && symbol == lldLengths[j]; j++) { + count++; + } + } + i += count - 1; + + if (symbol == 0 && count > 2) { + if (use18) { + while (count > 10) { + int delta = count > 138 ? 138 : count; + rle[rleSize] = 18; + rleBits[rleSize++] = delta - 11; + count -= delta; + } + } + if (use17) { + while (count > 2) { + int delta = count > 10 ? 10 : count; + rle[rleSize] = 17; + rleBits[rleSize++] = delta - 3; + count -= delta; + } + } + } + + if (use16 && count > 3) { + count--; + rle[rleSize] = symbol; + rleBits[rleSize++] = 0; + while (count > 2) { + int delta = count > 6 ? 6 : count; + rle[rleSize] = 16; + rleBits[rleSize++] = delta - 3; + count -= delta; + } + } + + while (count != 0) { + rle[rleSize] = symbol; + rleBits[rleSize++] = 0; + count--; + } + } + + int[] clCounts = cookie.i19a; + System.arraycopy(Cookie.intZeroes, 0, clCounts, 0, 19); + for (int i = 0; i < rleSize; ++i) { + clCounts[rle[i]]++; + } + + int[] clCl = cookie.i19b; + System.arraycopy(Cookie.intZeroes, 0, clCl, 0, 19); + Katajainen.lengthLimitedCodeLengths(cookie, clCounts, 7, clCl); + int[] clSymbols = cookie.i19c; + lengthsToSymbols(clCl, 19, 7, clSymbols, cookie.i16a, cookie.i16b); + + int[] order = Util.ORDER; + int hcLen = 15; + while (hcLen > 0 && clCounts[order[hcLen + 3]] == 0) { + hcLen--; + } + + output.addBits(hLit, 5); + output.addBits(hDist, 5); + output.addBits(hcLen, 4); + + for (int i = 0; i < hcLen + 4; i++) { + output.addBits(clCl[order[i]], 3); + } + + for (int i = 0; i < rleSize; i++) { + int symbol = clSymbols[rle[i]]; + output.addBits(symbol, clCl[rle[i]]); + switch (rle[i]) { + case 16: + output.addBits(rleBits[i], 2); + break; + case 17: + output.addBits(rleBits[i], 3); + break; + case 18: + output.addBits(rleBits[i], 7); + break; + default: + break; + } + } + } + + private static int simulateAddDynamicTree(Cookie cookie, int[] llLengths, int[] dLengths) { + int bestSize = Integer.MAX_VALUE; + + for (int i = 0; i < 8; i++) { + int size = simulateEncodeTree(cookie, llLengths, dLengths, (i & 1) != 0, + (i & 2) != 0, (i & 4) != 0); + if (size < bestSize) { + bestSize = size; + } + } + return bestSize; + } + + // TODO: GetRid of RLE + private static int simulateEncodeTree(Cookie cookie, int[] llLengths, int[] dLengths, + boolean use16, boolean use17, boolean use18) { + int hLit = 29; + int hDist = 29; + + while (hLit > 0 && llLengths[256 + hLit] == 0) { + hLit--; + } + while (hDist > 0 && dLengths[hDist] == 0) { + hDist--; + } + + int lldTotal = hLit + 258 + hDist; + int[] lldLengths = cookie.i320b; + System.arraycopy(llLengths, 0, lldLengths, 0, 257 + hLit); + System.arraycopy(dLengths, 0, lldLengths, 257 + hLit, hDist + 1); + + int[] rle = cookie.i320a; + int rleSize = 0; + + for (int i = 0; i < lldTotal; i++) { + int count = 1; + int symbol = lldLengths[i]; + if (use16 || (symbol == 0 && (use17 || use18))) { + for (int j = i + 1; j < lldTotal && symbol == lldLengths[j]; j++) { + count++; + } + } + i += count - 1; + + if (symbol == 0 && count > 2) { + if (use18) { + while (count > 10) { + rle[rleSize++] = 18; + count -= count > 138 ? 138 : count; + } + } + if (use17) { + while (count > 2) { + rle[rleSize++] = 17; + count -= count > 10 ? 10 : count; + } + } + } + + if (use16 && count > 3) { + count--; + rle[rleSize++] = symbol; + while (count > 2) { + rle[rleSize++] = 16; + count -= count > 6 ? 6 : count; + } + } + + while (count != 0) { + rle[rleSize++] = symbol; + count--; + } + } + + int[] clCounts = cookie.i19a; + System.arraycopy(Cookie.intZeroes, 0, clCounts, 0, 19); + for (int i = 0; i < rleSize; ++i) { + clCounts[rle[i]]++; + } + + int[] clCl = cookie.i19b; + System.arraycopy(Cookie.intZeroes, 0, clCl, 0, 19); + Katajainen.lengthLimitedCodeLengths(cookie, clCounts, 7, clCl); + clCl[16] += 2; + clCl[17] += 3; + clCl[18] += 7; + + int[] order = Util.ORDER; + int hcLen = 15; + while (hcLen > 0 && clCounts[order[hcLen + 3]] == 0) { + hcLen--; + } + + int result = 5 + 5 + 4 + (hcLen + 4) * 3; + for (int i = 0; i < 19; i++) { + result += clCl[i] * clCounts[i]; + } + + return result; + } + + private static void addLzBlock(Cookie cookie, BlockType type, boolean last, char[] litLens, + char[] dists, int lStart, int lEnd, BitWriter output) { + int[] llLengths = cookie.i288a; + System.arraycopy(Cookie.intZeroes, 0, llLengths, 0, 288); + int[] dLengths = cookie.i32a; + System.arraycopy(Cookie.intZeroes, 0, dLengths, 0, 32); + int[] llCounts = cookie.i288b; + System.arraycopy(Cookie.intZeroes, 0, llCounts, 0, 288); + int[] dCounts = cookie.i32b; + System.arraycopy(Cookie.intZeroes, 0, dCounts, 0, 32); + + output.addBits(last ? 1 : 0, 1); + if (type == BlockType.FIXED) { + output.addBits(1, 2); // 01 + } else { // DYNAMIC + output.addBits(2, 2); // 10 + } + + if (type == BlockType.FIXED) { + getFixedTree(llLengths, dLengths); + } else { // DYNAMIC + lzCounts(litLens, dists, lStart, lEnd, llCounts, dCounts); + optimizeHuffmanForRle(cookie, llCounts); + Katajainen.lengthLimitedCodeLengths(cookie, llCounts, 15, llLengths); + optimizeHuffmanForRle(cookie, dCounts); + Katajainen.lengthLimitedCodeLengths(cookie, dCounts, 15, dLengths); + patchDistanceCodesForBuggyDecoders(dLengths); + addDynamicTree(cookie, llLengths, dLengths, output); + } + + int[] llSymbols = cookie.i288c; + System.arraycopy(Cookie.intZeroes, 0, llSymbols, 0, 288); + lengthsToSymbols(llLengths, 288, 15, llSymbols, cookie.i16a, cookie.i16b); + + int[] dSymbols = cookie.i32b; + System.arraycopy(Cookie.intZeroes, 0, dSymbols, 0, 32); + lengthsToSymbols(dLengths, 32, 15, dSymbols, cookie.i16a, cookie.i16b); + + addLzData(litLens, dists, lStart, lEnd, llSymbols, llLengths, dSymbols, dLengths, output); + output.addBits(llSymbols[256], llLengths[256]); + } + + private static void addLzData(char[] litLens, char[] dists, int lStart, int lEnd, + int[] llSymbols, int[] llLengths, int[] dSymbols, int[] dLengths, BitWriter output) { + int[] cachedDistExtraBits = Util.CACHED_DIST_EXTRA_BITS; + int[] lengthExtraBits = Util.LENGTH_EXTRA_BITS; + int[] lengthExtraBitsValue = Util.LENGTH_EXTRA_BITS_VALUE; + int[] lengthSymbol = Util.LENGTH_SYMBOL; + int[] cachedDistSymbol = Util.CACHED_DIST_SYMBOL; + for (int i = lStart; i < lEnd; i++) { + int dist = dists[i]; + int litLen = litLens[i]; + if (dist == 0) { + output.addBits(llSymbols[litLen], llLengths[litLen]); + } else { + int lls = lengthSymbol[litLen]; + int ds = cachedDistSymbol[dist]; + output.addBits(llSymbols[lls], llLengths[lls]); + output.addBits(lengthExtraBitsValue[litLen], lengthExtraBits[litLen]); + output.addBits(dSymbols[ds], dLengths[ds]); + output.addBits(Util.distExtraBitsValue(dist), + dist < 4097 ? cachedDistExtraBits[dist] : dist < 16385 ? dist < 8193 ? 11 : 12 : 13); + } + } + } + + private static void lengthsToSymbols(int[] lengths, int n, int maxBits, int[] symbols, + int[] blCount, int[] nextCode) { + System.arraycopy(Cookie.intZeroes, 0, blCount, 0, maxBits + 1); + System.arraycopy(Cookie.intZeroes, 0, nextCode, 0, maxBits + 1); + for (int i = 0; i < n; ++i) { + blCount[lengths[i]]++; + } + int code = 0; + blCount[0] = 0; + for (int bits = 1; bits <= maxBits; bits++) { + code = (code + blCount[bits - 1]) << 1; + nextCode[bits] = code; + } + for (int i = 0; i < n; i++) { + int len = lengths[i]; + if (len != 0) { + symbols[i] = bitReverse(nextCode[len], len); + nextCode[len]++; + } + } + } + + private static void optimizeHuffmanForRle(Cookie cookie, int[] counts) { + int[] goodForRle = cookie.i289a; + int length = counts.length; + for (; length >= 0; --length) { + if (length == 0) { + return; + } + if (counts[length - 1] != 0) { + break; + } + } + System.arraycopy(Cookie.intZeroes, 0, goodForRle, 0, length + 1); + + int symbol = counts[0]; + int stride = 0; + for (int i = 0; i < length + 1; ++i) { + if (i == length || counts[i] != symbol) { + if ((symbol == 0 && stride >= 5) || (symbol != 0 && stride >= 7)) { + for (int k = 0; k < stride; ++k) { + goodForRle[i - k - 1] = 1; + } + } + stride = 1; + if (i != length) { + symbol = counts[i]; + } + } else { + ++stride; + } + } + + stride = 0; + int limit = counts[0]; + int sum = 0; + for (int i = 0; i < length + 1; ++i) { + if ((i == length) || (goodForRle[i] != 0) + || (counts[i] - limit >= 4) || (limit - counts[i] >= 4)) { + if ((stride >= 4) || ((stride >= 3) && (sum == 0))) { + int count = (sum + stride / 2) / stride; + if (count < 1) { + count = 1; + } + if (sum == 0) { + count = 0; + } + for (int k = 0; k < stride; ++k) { + counts[i - k - 1] = count; + } + } + stride = 0; + sum = 0; + if (i < length - 3) { + limit = (counts[i] + counts[i + 1] + counts[i + 2] + counts[i + 3] + 2) / 4; + } else if (i < length) { + limit = counts[i]; + } else { + limit = 0; + } + } + ++stride; + if (i != length) { + sum += counts[i]; + } + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/Hash.java b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/Hash.java new file mode 100644 index 000000000..c47bbc5b9 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/Hash.java @@ -0,0 +1,144 @@ +/* Copyright 2014 Google Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Author: eustas.ru@gmail.com (Eugene Klyuchnikov) +*/ + +package net.momirealms.craftengine.core.util.zopfli; + +final class Hash { + + private static final int WINDOW_SIZE = Deflate.WINDOW_SIZE; + private static final int WINDOW_MASK = Deflate.WINDOW_MASK; + + /* TODO(eustas): could/should it be different than WINDOW_SIZE? */ + private static final int HASH_SIZE = 0x8000; + private static final int HASH_MASK = 0x7FFF; + private static final int HASH_SHIFT = 5; + + private static final char[] seq = new char[WINDOW_SIZE]; + + static { + char[] seq = Hash.seq; + for (int i = 0; i < WINDOW_SIZE; ++i) { + seq[i] = (char) i; + } + } + + final int[] head = new int[HASH_SIZE]; + final char[] prev = new char[WINDOW_SIZE]; + private final int[] hashVal = new int[WINDOW_SIZE]; + final int[] same = new int[WINDOW_SIZE]; + int val; + + private final int[] head2 = new int[HASH_SIZE]; + final char[] prev2 = new char[WINDOW_SIZE]; + final int[] hashVal2 = new int[WINDOW_SIZE]; + + Hash() {} + + public void init(byte[] input, int windowStart, int from, int to) { + int[] hashVal = this.hashVal; + int[] head = this.head; + int[] same = this.same; + char[] prev = this.prev; + int[] hashVal2 = this.hashVal2; + int[] head2 = this.head2; + char[] prev2 = this.prev2; + + System.arraycopy(Cookie.intMOnes, 0, head, 0, HASH_SIZE); + System.arraycopy(Cookie.intMOnes, 0, hashVal, 0, WINDOW_SIZE); + System.arraycopy(Cookie.intZeroes, 0, same, 0, WINDOW_SIZE); + System.arraycopy(seq, 0, prev, 0, WINDOW_SIZE); + + System.arraycopy(Cookie.intMOnes, 0, head2, 0, HASH_SIZE); + System.arraycopy(Cookie.intMOnes, 0, hashVal2, 0, WINDOW_SIZE); + System.arraycopy(seq, 0, prev2, 0, WINDOW_SIZE); + + if ((windowStart + 1 >= input.length) || (from + 1 >= input.length)) { + return; + } + + int val = + (((input[windowStart] & 0xFF) << HASH_SHIFT) ^ (input[windowStart + 1] & 0xFF)) & HASH_MASK; + + for (int i = windowStart; i < from; ++i) { + int hPos = i & WINDOW_MASK; + val = ((val << HASH_SHIFT) ^ (i + 2 < to ? input[i + 2] & 0xFF : 0)) & HASH_MASK; + + hashVal[hPos] = val; + int tmp = head[val]; + prev[hPos] = (char) (((tmp != -1) && (hashVal[tmp] == val)) ? tmp : hPos); + head[val] = hPos; + + tmp = same[(i - 1) & WINDOW_MASK]; + if (tmp < 1) { + tmp = 1; + } + tmp += i; + byte b = input[i]; + while (tmp < to && b == input[tmp]) { + tmp++; + } + tmp -= i; + tmp--; + same[hPos] = tmp; + + tmp = ((tmp - 3) & 0xFF) ^ val; + hashVal2[hPos] = tmp; + int h = head2[tmp]; + prev2[hPos] = (char) (((h != -1) && (hashVal2[h] == tmp)) ? h : hPos); + head2[tmp] = hPos; + } + this.val = val; + } + + /*private void updateHashValue(int c) { + val = ((val << HASH_SHIFT) ^ c) & HASH_MASK; + }*/ + + public void updateHash(byte[] input, int pos, int end) { + // WINDOW_MASK + int hPos = pos & WINDOW_MASK; + int val = this.val; + + val = ((val << HASH_SHIFT) ^ (pos + 2 < end ? input[pos + 2] & 0xFF : 0)) & HASH_MASK; + + hashVal[hPos] = val; + int tmp = head[val]; + prev[hPos] = (char) (((tmp != -1) && (hashVal[tmp] == val)) ? tmp : hPos); + head[val] = hPos; + + tmp = same[(pos - 1) & WINDOW_MASK]; + if (tmp < 1) { + tmp = 1; + } + tmp += pos; + byte b = input[pos]; + while (tmp < end && b == input[tmp]) { + tmp++; + } + tmp -= pos; + tmp--; + same[hPos] = tmp; + + tmp = ((tmp - 3) & 0xFF) ^ val; + hashVal2[hPos] = tmp; + int h = head2[tmp]; + prev2[hPos] = (char) (((h != -1) && (hashVal2[h] == tmp)) ? h : hPos); + head2[tmp] = hPos; + + this.val = val; + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/Katajainen.java b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/Katajainen.java new file mode 100644 index 000000000..cc5c79eb1 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/Katajainen.java @@ -0,0 +1,128 @@ +/* Copyright 2014 Google Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Author: eustas.ru@gmail.com (Eugene Klyuchnikov) +*/ + +package net.momirealms.craftengine.core.util.zopfli; + +import net.momirealms.craftengine.core.util.zopfli.Cookie.Node; + +final class Katajainen { + + /* Collection of utilities / should not be instantiated. */ + Katajainen() {} + + static void lengthLimitedCodeLengths(Cookie cookie, int[] frequencies, int maxBits, + int[] bitLengths) { + cookie.resetPool(); + int n = frequencies.length; + int nn = 0; + Node[] leaves = cookie.leaves1; + for (int i = 0; i < n; i++) { + if (frequencies[i] != 0) { + leaves[nn] = cookie.node(frequencies[i], i, null); + nn++; + } + } + + if (nn == 0) { + return; + } + if (nn == 1) { + bitLengths[leaves[0].count] = 1; + return; + } + + Node[] leaves2 = cookie.leaves2; + System.arraycopy(leaves, 0, leaves2, 0, nn); + sort(leaves2, leaves, 0, nn); + + Node[] list0 = cookie.list0; + Node node0 = cookie.node(leaves[0].weight, 1, null); + + Node[] list1 = cookie.list1; + Node node1 = cookie.node(leaves[1].weight, 2, null); + + for (int i = 0; i < maxBits; ++i) { + list0[i] = node0; + list1[i] = node1; + } + + int numBoundaryPmRuns = 2 * nn - 4; + for (int i = 0; i < numBoundaryPmRuns; i++) { + boolean last = i == numBoundaryPmRuns - 1; + boundaryPm(cookie, leaves, list0, list1, nn, maxBits - 1, last); + } + + for (Node node = list1[maxBits - 1]; node != null; node = node.tail) { + for (int i = node.count - 1; i >= 0; --i) { + bitLengths[leaves[i].count]++; + } + } + } + + private static void boundaryPm(Cookie cookie, Node[] leaves, Node[] list0, Node[] list1, + int numSymbols, int index, boolean last) { + int lastCount = list1[index].count; + + if (index == 0 && lastCount >= numSymbols) { + return; + } + + list0[index] = list1[index]; + + if (index == 0) { + list1[index] = cookie.node(leaves[lastCount].weight, lastCount + 1, null); + } else { + int sum = list0[index - 1].weight + list1[index - 1].weight; + if (lastCount < numSymbols && sum > leaves[lastCount].weight) { + list1[index] = cookie.node(leaves[lastCount].weight, lastCount + 1, list1[index].tail); + } else { + list1[index] = cookie.node(sum, lastCount, list1[index - 1]); + if (!last) { + boundaryPm(cookie, leaves, list0, list1, numSymbols, index - 1, false); + boundaryPm(cookie, leaves, list0, list1, numSymbols, index - 1, false); + } + } + } + } + + private static void sort(Node[] src, Node[] dest, int low, int high) { + int length = high - low; + + if (length < 7) { + for (int i = low + 1; i < high; i++) { + for (int j = i, k = i - 1; j > low && (dest[k].weight > dest[j].weight); --j, --k) { + Node t = dest[j]; + dest[j] = dest[k]; + dest[k] = t; + } + } + return; + } + + int mid = (low + high) >>> 1; + sort(dest, src, low, mid); + sort(dest, src, mid, high); + + for (int i = low, p = low, q = mid; i < high; i++) { + if (q >= high || (p < mid && (src[p].weight <= src[q].weight))) { + dest[i] = src[p++]; + } else { + dest[i] = src[q++]; + } + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/LongestMatchCache.java b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/LongestMatchCache.java new file mode 100644 index 000000000..c607b23a4 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/LongestMatchCache.java @@ -0,0 +1,125 @@ +/* Copyright 2014 Google Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Author: eustas.ru@gmail.com (Eugene Klyuchnikov) +*/ + +package net.momirealms.craftengine.core.util.zopfli; + +final class LongestMatchCache { + + private static final int CACHE_LENGTH = 8; + + public final char[] length; + public final char[] dist; + private final char[] subLenPos; + private final byte[] subLenLen; + + LongestMatchCache(int maxBlockSize) { + length = new char[maxBlockSize]; + dist = new char[maxBlockSize]; + subLenPos = new char[CACHE_LENGTH * maxBlockSize]; + subLenLen = new byte[CACHE_LENGTH * maxBlockSize]; + } + + void init(int blockSize) { + Cookie.fill0(dist, blockSize); + int n = blockSize << 3; // * CACHE_LENGTH + char[] subLenPos = this.subLenPos; + byte[] subLenLen = this.subLenLen; + char[] length = this.length; + + char[] charZeroes = Cookie.charZeroes; + byte[] byteZeroes = Cookie.byteZeroes; + char[] charOnes = Cookie.charOnes; + + int i = 0; + while (i < n) { + int j = i + 65536; + if (j > n) { + j = n; + } + int l = j - i; + System.arraycopy(byteZeroes, 0, subLenLen, i, l); + System.arraycopy(charZeroes, 0, subLenPos, i, l); + i = j; + } + + i = 0; + while (i < blockSize) { + int j = i + 65536; + if (j > blockSize) { + j = blockSize; + } + int l = j - i; + System.arraycopy(charOnes, 0, length, i, l); + System.arraycopy(charZeroes, 0, subLenPos, i, l); + i = j; + } + } + + void subLenToCache(char[] input, int pos, int len) { + if (len < 3) { + return; + } + + int bestLength = 0; + int j = pos * CACHE_LENGTH; + int last = j + CACHE_LENGTH - 1; + for (int i = 3; i <= len; ++i) { + if (i == len || input[i] != input[i + 1]) { + subLenPos[j] = input[i]; + subLenLen[j] = (byte) (i - 3); + bestLength = i; + j++; + if (j > last) { + break; + } + } + } + if (j <= last) { + subLenLen[last] = (byte) (bestLength - 3); + } + } + + void cacheToSubLen(int pos, int len, char[] output) { + if (len < 3) { + return; + } + + int maxLength = maxCachedSubLen(pos); + int prevLength = 0; + int j = CACHE_LENGTH * pos; + int last = j + CACHE_LENGTH; + for (; j < last; ++j) { + int cLen = (subLenLen[j] & 0xFF) + 3; + char dist = subLenPos[j]; + for (int i = prevLength; i <= cLen; ++i) { + output[i] = dist; + } + if (cLen == maxLength) { + break; + } + prevLength = cLen + 1; + } + } + + int maxCachedSubLen(int pos) { + pos = pos * CACHE_LENGTH; + if (subLenPos[pos] == 0) { + return 0; + } + return (subLenLen[pos + CACHE_LENGTH - 1] & 0xFF) + 3; + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/LzStore.java b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/LzStore.java new file mode 100644 index 000000000..12a63d1d3 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/LzStore.java @@ -0,0 +1,44 @@ +/* Copyright 2014 Google Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Author: eustas.ru@gmail.com (Eugene Klyuchnikov) +*/ + +package net.momirealms.craftengine.core.util.zopfli; + +final class LzStore { + final char[] litLens; + final char[] dists; + int size; + + LzStore(final int maxBlockSize) { + litLens = new char[maxBlockSize]; + dists = new char[maxBlockSize]; + } + + final void append(final char length, final char dist) { + litLens[size] = length; + dists[size++] = dist; + } + + final void reset() { + size = 0; + } + + final void copy(final LzStore source) { + size = source.size; + System.arraycopy(source.litLens, 0, litLens, 0, size); + System.arraycopy(source.dists, 0, dists, 0, size); + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/Options.java b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/Options.java new file mode 100644 index 000000000..64a41cfcf --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/Options.java @@ -0,0 +1,57 @@ +/* Copyright 2014 Google Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Author: eustas.ru@gmail.com (Eugene Klyuchnikov) +*/ + +package net.momirealms.craftengine.core.util.zopfli; + +/** + * Zopfli engine configuration. + */ +public final class Options { + + /** + * Block splitting strategy. + */ + public enum BlockSplitting { + FIRST, + LAST, + NONE + } + + /** + * Output framing format. + */ + public enum OutputFormat { + DEFLATE, + GZIP, + ZLIB + } + + public final int numIterations; + public final BlockSplitting blockSplitting; + public final OutputFormat outputType; + + public Options(OutputFormat outputType, BlockSplitting blockSplitting, + int numIterations) { + this.outputType = outputType; + this.blockSplitting = blockSplitting; + this.numIterations = numIterations; + } + + public Options() { + this(OutputFormat.GZIP, BlockSplitting.FIRST, 15); + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/Squeeze.java b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/Squeeze.java new file mode 100644 index 000000000..8dfa8bea1 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/Squeeze.java @@ -0,0 +1,249 @@ +/* Copyright 2014 Google Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Author: eustas.ru@gmail.com (Eugene Klyuchnikov) +*/ + +package net.momirealms.craftengine.core.util.zopfli; + +final class Squeeze { + + private static final int WINDOW_SIZE = Deflate.WINDOW_SIZE; + private static final int WINDOW_MASK = Deflate.WINDOW_MASK; + + /* Collection of utilities / should not be instantiated. */ + Squeeze() {} + + static LzStore optimal(Cookie cookie, int numIterations, LongestMatchCache lmc, byte[] input, + int from, int to) { + LzStore currentStore = cookie.store1; + currentStore.reset(); + LzStore store = cookie.store2; + Deflate.greedy(cookie, lmc, input, from, to, currentStore); + SymbolStats stats = cookie.stats; + SymbolStats bestStats = cookie.bestStats; + SymbolStats lastStats = cookie.lastStats; + stats.getFreqs(currentStore); + + char[] lengthArray = cookie.lengthArray; + long[] costs = cookie.costs; + + int cost; + int bestCost = Integer.MAX_VALUE; + int lastCost = 0; + int lastRandomStep = -1; + + for (int i = 0; i < numIterations; i++) { + currentStore.reset(); + bestLengths(cookie, lmc, from, input, from, to, stats.minCost(), stats, lengthArray, costs); + optimalRun(cookie, lmc, input, from, to, lengthArray, currentStore); + cost = Deflate.calculateBlockSize(cookie, currentStore.litLens, + currentStore.dists, 0, currentStore.size); + if (cost < bestCost) { + store.copy(currentStore); + bestStats.copy(stats); + bestCost = cost; + } + lastStats.copy(stats); + stats.getFreqs(currentStore); + if (lastRandomStep != -1) { + stats.alloy(lastStats); + stats.calculate(); + } + if (i > 5 && cost == lastCost) { + stats.copy(bestStats); + cookie.rnd = stats.randomizeFreqs(cookie.rnd); + stats.calculate(); + lastRandomStep = i; + } + lastCost = cost; + } + return store; + } + + static void optimalRun(Cookie cookie, LongestMatchCache lmc, byte[] input, int from, int to, + char[] lengthArray, LzStore store) { + // assert from != to + char[] path = cookie.path; + int pathSize = 0; + int size = to - from; + do { + char las = lengthArray[size]; + path[pathSize++] = las; + size -= las; + } while (size != 0); + + int windowStart = Math.max(from - WINDOW_SIZE, 0); + Hash h = cookie.h; + h.init(input, windowStart, from, to); + int pos = from; + + do { + h.updateHash(input, pos, to); + int length = path[--pathSize]; + if (length >= 3) { + Deflate.findLongestMatch(cookie, lmc, from, h, input, pos, to, length, null); + store.append((char) length, (char) cookie.distVal); + } else { + length = 1; + store.append((char) (input[pos] & 0xFF), (char) 0); + } + + for (int j = 1; j < length; ++j) { + h.updateHash(input, pos + j, to); + } + pos += length; + } while (pathSize != 0); + } + + private static long fixedCost(int litLen, int dist) { + if (dist == 0) { + if (litLen <= 143) { + return 8; + } + return 9; + } else { + long distCost = (dist < 4097) + ? Util.CACHED_DIST_EXTRA_BITS[dist] + : (dist < 16385 ? dist < 8193 ? 11 : 12 : 13); + long cost = 12 + distCost + Util.LENGTH_EXTRA_BITS[litLen]; + if (Util.LENGTH_SYMBOL[litLen] > 279) { + return cost + 1; + } + return cost; + } + } + + private static void bestLengths(Cookie cookie, LongestMatchCache lmc, int blockStart, + byte[] input, int from, int to, long minCost, SymbolStats stats, + char[] lengthArray, long[] costs) { + //# MAX_MATCH = 258 + + int windowStart = Math.max(from - WINDOW_SIZE, 0); + Hash h = cookie.h; + h.init(input, windowStart, from, to); + Cookie.fillCostMax(costs, to - from + 1); + costs[0] = 0L; + lengthArray[0] = 0; + int[] same = h.same; + + char[] subLen = cookie.c259a; + System.arraycopy(Cookie.charZeroes, 0, subLen, 0, 259); + + long[] slLiterals = stats.lLiterals; + long[] slLengths = stats.lLengths; + long[] sdSymbols = stats.dSymbols; + long stepCost = slLengths[258] + sdSymbols[0]; + + int[] cachedDistSymbol = Util.CACHED_DIST_SYMBOL; + + int i = from; + int j = 0; + while (i < to) { + h.updateHash(input, i, to); + + if (same[i & WINDOW_MASK] > 516 && i > from + 259 && i + 517 < to + && same[(i - 258) & WINDOW_MASK] > 258) { + for (int k = 0; k < 258; ++k) { + costs[j + 258] = costs[j] + stepCost; + lengthArray[j + 258] = 258; + i++; + j++; + h.updateHash(input, i, to); + } + } + + Deflate.findLongestMatch(cookie, lmc, blockStart, h, input, i, to, 258, subLen); + + long costsJ = costs[j]; + if (i + 1 <= to) { + long newCost = costsJ + slLiterals[input[i] & 0xFF]; + if (newCost < costs[j + 1]) { + costs[j + 1] = newCost; + lengthArray[j + 1] = 1; + } + } + // TODO(eustas): prove that we don't need clamping. + int lenValue = Math.min(cookie.lenVal, to - i); + long baseCost = minCost + costsJ; + + int jpk = j + 3; + for (char k = 3; k <= lenValue; k++, jpk++) { + if (costs[jpk] > baseCost) { + long newCost = costsJ + (slLengths[k] + sdSymbols[cachedDistSymbol[subLen[k]]]); + if (costs[jpk] > newCost) { + costs[jpk] = newCost; + lengthArray[jpk] = k; + } + } + } + + i++; + j++; + } + } + + static void bestFixedLengths(Cookie cookie, LongestMatchCache lmc, byte[] input, int from, int to, + char[] lengthArray, long[] costs) { + int windowStart = Math.max(from - WINDOW_SIZE, 0); + Hash h = cookie.h; + h.init(input, windowStart, from, to); + Cookie.fillCostMax(costs, to - from + 1); + costs[0] = 0L; + lengthArray[0] = 0; + + char[] subLen = cookie.c259a; + for (int i = from; i < to; i++) { + int j = i - from; + h.updateHash(input, i, to); + + if (h.same[i & WINDOW_MASK] > 258 * 2 + && i > from + 258 + 1 + && i + 258 * 2 + 1 < to + && h.same[(i - 258) & WINDOW_MASK] + > 258) { + long symbolCost = fixedCost(258, 1); + for (int k = 0; k < 258; k++) { + costs[j + 258] = costs[j] + symbolCost; + lengthArray[j + 258] = 258; + i++; + j++; + h.updateHash(input, i, to); + } + } + + Deflate.findLongestMatch(cookie, lmc, from, h, input, i, to, 258, subLen); + + if (i + 1 <= to) { + long newCost = costs[j] + fixedCost(input[i] & 0xFF, 0); + if (newCost < costs[j + 1]) { + costs[j + 1] = newCost; + lengthArray[j + 1] = 1; + } + } + int lenValue = cookie.lenVal; + for (char k = 3; k <= lenValue && i + k <= to; k++) { + if (costs[j + k] - costs[j] <= 12.0) { + continue; + } + + long newCost = costs[j] + fixedCost(k, subLen[k]); + if (newCost < costs[j + k]) { + costs[j + k] = newCost; + lengthArray[j + k] = k; + } + } + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/SymbolStats.java b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/SymbolStats.java new file mode 100644 index 000000000..c59817a30 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/SymbolStats.java @@ -0,0 +1,174 @@ +/* Copyright 2014 Google Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Author: eustas.ru@gmail.com (Eugene Klyuchnikov) +*/ + +package net.momirealms.craftengine.core.util.zopfli; + +final class SymbolStats { + private static final double INV_LOG_2 = 1.4426950408889 * 0x10000L; /* 1.0 / log(2.0) */ + private final int[] litLens = new int[288]; + private final int[] dists = new int[32]; // Why 32? Expect 30. + final long[] lLiterals = new long[288]; + final long[] lLengths = new long[259]; + final long[] dSymbols = new long[32]; + + void getFreqs(LzStore store) { + int[] sLitLens = this.litLens; + int[] sDists = this.dists; + System.arraycopy(Cookie.intZeroes, 0, sLitLens, 0, 288); + System.arraycopy(Cookie.intZeroes, 0, sDists, 0, 32); + + int size = store.size; + char[] litLens = store.litLens; + char[] dists = store.dists; + int[] lengthSymbol = Util.LENGTH_SYMBOL; + int[] cachedDistSymbol = Util.CACHED_DIST_SYMBOL; + for (int i = 0; i < size; i++) { + int d = dists[i]; + int l = litLens[i]; + if (d == 0) { + sLitLens[l]++; + } else { + sLitLens[lengthSymbol[l]]++; + sDists[cachedDistSymbol[d]]++; + } + } + sLitLens[256] = 1; + calculate(); + } + + final void copy(final SymbolStats source) { + System.arraycopy(source.litLens, 0, litLens, 0, 288); + System.arraycopy(source.dists, 0, dists, 0, 32); + System.arraycopy(source.lLiterals, 0, lLiterals, 0, 288); + System.arraycopy(source.lLengths, 0, lLengths, 0, 259); + System.arraycopy(source.dSymbols, 0, dSymbols, 0, 32); + } + + final void calculate() { + calculateLens(); + calculateDists(); + } + + private void calculateLens() { + int sum = 0; + int[] litLens = this.litLens; + for (int i = 0; i < 288; ++i) { + sum += litLens[i]; + } + double log2sum = (sum == 0 ? Math.log(288) : Math.log(sum)) * INV_LOG_2; + long[] lLiterals = this.lLiterals; + for (int i = 0; i < 288; ++i) { + if (litLens[i] == 0) { + lLiterals[i] = (long) log2sum; + } else { + // TODO(eustas): prove that we don't need clamping. + lLiterals[i] = Math.max((long) (log2sum - Math.log(litLens[i]) * INV_LOG_2), 0L); + } + } + long[] lLengths = this.lLengths; + int[] lengthSymbol = Util.LENGTH_SYMBOL; + int[] lengthExtraBits = Util.LENGTH_EXTRA_BITS; + for (int i = 0; i < 259; ++i) { + lLengths[i] = lLiterals[lengthSymbol[i]] + (lengthExtraBits[i] * 0x10000L); + } + } + + private void calculateDists() { + int sum = 0; + int[] dists = this.dists; + for (int i = 0; i < 32; ++i) { + sum += dists[i]; + } + double log2sum = (sum == 0 ? Math.log(32) : Math.log(sum)) * INV_LOG_2; + long[] dSymbols = this.dSymbols; + for (int i = 0; i < 32; ++i) { + if (dists[i] == 0) { + dSymbols[i] = (long) log2sum; + } else { + // TODO(eustas): prove that we don't need clamping. + dSymbols[i] = Math.max((long) (log2sum - Math.log(dists[i]) * INV_LOG_2), 0L); + } + } + for (int i = 4; i < 30; ++i) { + dSymbols[i] += 0x10000L * ((i / 2) - 1); + } + } + + final void alloy(final SymbolStats ligand) { + for (int i = 0; i < 288; i++) { + litLens[i] += ligand.litLens[i] / 2; + } + litLens[256] = 1; + + for (int i = 0; i < 32; i++) { + dists[i] += ligand.dists[i] / 2; + } + } + + final int randomizeFreqs(int z) { + int[] data = litLens; + int n = data.length; + for (int i = 0; i < n; i++) { + z = 0x7FFFFFFF & (1103515245 * z + 12345); + if ((z >>> 4) % 3 == 0) { + z = 0x7FFFFFFF & (1103515245 * z + 12345); + int p = z % n; + if (data[i] < data[p]) { + data[i] = data[p]; + } + } + } + data[256] = 1; + + data = dists; + n = data.length; + for (int i = 0; i < n; i++) { + z = 0x7FFFFFFF & (1103515245 * z + 12345); + if ((z >>> 4) % 3 == 0) { + z = 0x7FFFFFFF & (1103515245 * z + 12345); + int p = z % n; + if (data[i] < data[p]) { + data[i] = data[p]; + } + } + } + + return z; + } + + final long minCost() { + long[] lLengths = this.lLengths; + long minLengthCost = lLengths[3]; + for (int i = 4; i < 259; i++) { + long c = lLengths[i]; + if (c < minLengthCost) { + minLengthCost = c; + } + } + + long[] dSymbols = this.dSymbols; + long minDistCost = dSymbols[0]; + for (int i = 1; i < 30; i++) { + long c = dSymbols[i]; + if (c < minDistCost) { + minDistCost = c; + } + } + + return minDistCost + minLengthCost; + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/Util.java b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/Util.java new file mode 100644 index 000000000..9b90b944c --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/Util.java @@ -0,0 +1,266 @@ +/* Copyright 2014 Google Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Author: eustas.ru@gmail.com (Eugene Klyuchnikov) +*/ + +package net.momirealms.craftengine.core.util.zopfli; + +final class Util { + + /* Collection of utilities / should not be instantiated. */ + Util() {} + + static final int[] LENGTH_SYMBOL = new int[]{ + 0, 0, 0, + 257, 258, 259, 260, 261, 262, 263, 264, + 265, 265, + 266, 266, + 267, 267, + 268, 268, + 269, 269, 269, 269, + 270, 270, 270, 270, + 271, 271, 271, 271, + 272, 272, 272, 272, + 273, 273, 273, 273, 273, 273, 273, 273, + 274, 274, 274, 274, 274, 274, 274, 274, + 275, 275, 275, 275, 275, 275, 275, 275, + 276, 276, 276, 276, 276, 276, 276, 276, + 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, + 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, + 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, + 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, + 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, + 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, + 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, + 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, + 285 + }; + + static final int[] LENGTH_EXTRA_BITS = new int[]{ + 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, + 1, 1, + 1, 1, + 1, 1, + 2, 2, 2, 2, + 2, 2, 2, 2, + 2, 2, 2, 2, + 2, 2, 2, 2, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 0 + }; + + static final int[] LENGTH_EXTRA_BITS_VALUE = new int[]{ + 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, + 0, 1, + 0, 1, + 0, 1, + 0, 1, 2, 3, + 0, 1, 2, 3, + 0, 1, 2, 3, + 0, 1, 2, 3, + 0, 1, 2, 3, 4, 5, 6, 7, + 0, 1, 2, 3, 4, 5, 6, 7, + 0, 1, 2, 3, 4, 5, 6, 7, + 0, 1, 2, 3, 4, 5, 6, 7, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 0 + }; + + static final int[] ORDER = new int[]{ + 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 + }; + + static final int[] CACHED_DIST_SYMBOL = cacheDistSymbol(); + + private static int[] cacheDistSymbol() { + int[] r = new int[32768]; + for (int i = 0; i < 32768; ++i) { + r[i] = distSymbol(i); + } + return r; + } + + private static int distSymbol(int dist) { + if (dist < 193) { + if (dist < 13) { /* dist 0..13. */ + if (dist < 5) { + return dist - 1; + } else if (dist < 7) { + return 4; + } else if (dist < 9) { + return 5; + } else { + return 6; + } + } else { /* dist 13..193. */ + if (dist < 17) { + return 7; + } else if (dist < 25) { + return 8; + } else if (dist < 33) { + return 9; + } else if (dist < 49) { + return 10; + } else if (dist < 65) { + return 11; + } else if (dist < 97) { + return 12; + } else if (dist < 129) { + return 13; + } else { + return 14; + } + } + } else { + if (dist < 2049) { /* dist 193..2049. */ + if (dist < 257) { + return 15; + } else if (dist < 385) { + return 16; + } else if (dist < 513) { + return 17; + } else if (dist < 769) { + return 18; + } else if (dist < 1025) { + return 19; + } else if (dist < 1537) { + return 20; + } else { + return 21; + } + } else { /* dist 2049..32768. */ + if (dist < 3073) { + return 22; + } else if (dist < 4097) { + return 23; + } else if (dist < 6145) { + return 24; + } else if (dist < 8193) { + return 25; + } else if (dist < 12289) { + return 26; + } else if (dist < 16385) { + return 27; + } else if (dist < 24577) { + return 28; + } else { + return 29; + } + } + } + } + + static final int[] CACHED_DIST_EXTRA_BITS = precacheDistExtraBits(); + + private static int[] precacheDistExtraBits() { + int[] r = new int[4097]; + for (int i = 0; i < 4097; ++i) { + r[i] = distExtraBits(i); + } + return r; + } + + private static int distExtraBits(int dist) { + if (dist < 5) { + return 0; + } else if (dist < 9) { + return 1; + } else if (dist < 17) { + return 2; + } else if (dist < 33) { + return 3; + } else if (dist < 65) { + return 4; + } else if (dist < 129) { + return 5; + } else if (dist < 257) { + return 6; + } else if (dist < 513) { + return 7; + } else if (dist < 1025) { + return 8; + } else if (dist < 2049) { + return 9; + } + /* Precondition is dist < 4097. */ + return 10; + } + + static int distExtraBitsValue(int dist) { + if (dist < 5) { + return 0; + } else if (dist < 9) { + return (dist - 5) & 1; + } else if (dist < 17) { + return (dist - 9) & 3; + } else if (dist < 33) { + return (dist - 17) & 7; + } else if (dist < 65) { + return (dist - 33) & 15; + } else if (dist < 129) { + return (dist - 65) & 31; + } else if (dist < 257) { + return (dist - 129) & 63; + } else if (dist < 513) { + return (dist - 257) & 127; + } else if (dist < 1025) { + return (dist - 513) & 255; + } else if (dist < 2049) { + return (dist - 1025) & 511; + } else if (dist < 4097) { + return (dist - 2049) & 1023; + } else if (dist < 8193) { + return (dist - 4097) & 2047; + } else if (dist < 16385) { + return (dist - 8193) & 4095; + } + return (dist - 16385) & 8191; + } + +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/Zopfli.java b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/Zopfli.java new file mode 100644 index 000000000..f92beb0d4 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/Zopfli.java @@ -0,0 +1,242 @@ +/* Copyright 2014 Google Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Author: eustas.ru@gmail.com (Eugene Klyuchnikov) +*/ + +package net.momirealms.craftengine.core.util.zopfli; + +import java.io.IOException; +import java.io.OutputStream; + +/** + * Zopfli compression and output framing facade. + */ +public final class Zopfli { + + /** + * Abstract checksum calculator; tracks input length. + */ + static class Checksum { + private int totalLength; + + void update(byte[] input, int from, int length) { + // TODO(eustas): check overflow. + totalLength += length; + } + + int checksum() { + return 0; + } + + int size() { + return totalLength; + } + } + + /** + * Calculates the CRC (with 0x04C11DB7 polynomial) checksum of the data. + */ + static final class GzipChecksum extends Checksum { + + private static final int[] table = makeTable(); + + private int value = ~0; + + private static int[] makeTable() { + int[] result = new int[256]; + + for (int n = 0; n < 256; ++n) { + int c = n; + for (int k = 0; k < 8; ++k) { + if ((c & 1) == 1) { + c = 0xEDB88320 ^ (c >>> 1); + } else { + c = c >>> 1; + } + } + result[n] = c; + } + + return result; + } + + @Override + void update(byte[] input, int from, int length) { + super.update(input, from, length); + int c = value; + for (int i = 0; i < length; ++i) { + c = table[(c ^ input[from + i]) & 0xFF] ^ (c >>> 8); + } + value = c; + } + + @Override + int checksum() { + return ~value; + } + } + + /** + * Calculates the adler32 checksum of the data. + */ + static final class ZlibChecksum extends Checksum { + private int lo = 1; + private int hi = 0; + + @Override + void update(byte[] input, int from, int length) { + super.update(input, from, length); + int s1 = lo; + int s2 = hi; + int i = 0; + while (i < length) { + int fence = Math.min(length, i + 3854); + while (i < fence) { + s1 += input[from + i++] & 0xFF; + s2 += s1; + } + s1 %= 65521; + s2 %= 65521; + } + lo = s1; + hi = s2; + } + + @Override + int checksum() { + return (hi << 16) | lo; + } + } + + private final Cookie cookie; + + public synchronized void compress(Options options, byte[] input, OutputStream output) + throws IOException { + try { + BitWriter bitWriter = new BitWriter(output); + Options.OutputFormat format = options.outputType; + + Checksum digest = createDigest(format); + writePrologue(format, bitWriter); + + if (input.length == 0) { + writeEmptyBlock(bitWriter, true); + } else { + int i = 0; + while (i < input.length) { + int j = Math.min(i + cookie.masterBlockSize, input.length); + boolean isFinal = (j == input.length); + Deflate.deflatePart(cookie, options, input, i, j, isFinal, bitWriter); + i = j; + } + } + + digest.update(input, 0, input.length); + writeEpilogue(format, bitWriter, digest); + } catch (ZopfliRuntimeException ex) { + throw new IOException(ex); + } + } + + static Checksum createDigest(Options.OutputFormat format) { + switch (format) { + case GZIP: + return new GzipChecksum(); + + case ZLIB: + return new ZlibChecksum(); + + case DEFLATE: + return new Checksum(); + } + throw new IllegalArgumentException(); // COV_NF_LINE + } + + static void writePrologue(Options.OutputFormat format, BitWriter output) throws IOException { + try { + switch (format) { + case GZIP: + output.addBits(0x8B1F, 16); + output.addBits(0x0008, 16); + output.addBits(0x0000, 16); + output.addBits(0x0000, 16); + output.addBits(0x0302, 16); + return; + + case ZLIB: + output.addBits(0xDA78, 16); + return; + + case DEFLATE: + return; + + default: + throw new IllegalArgumentException(); // COV_NF_LINE + } + } catch (ZopfliRuntimeException ex) { + throw new IOException(ex); + } + } + + /** + * Pads output to the byte boundary, writes format-specific epilogue and flushes the output. + */ + static void writeEpilogue(Options.OutputFormat format, BitWriter output, Checksum digest) + throws IOException { + try { + output.jumpToByteBoundary(); + int checksum = digest.checksum(); + int dataLength = digest.size(); + switch (format) { + case GZIP: + output.addBits(checksum & 0xFFFF, 16); + output.addBits((checksum >> 16) & 0xFFFF, 16); + output.addBits(dataLength & 0xFFFF, 16); + output.addBits((dataLength >> 16) & 0xFFFF, 16); + break; + + case ZLIB: + output.addBits((checksum >> 24) & 0xFF, 8); + output.addBits((checksum >> 16) & 0xFF, 8); + output.addBits((checksum >> 8) & 0xFF, 8); + output.addBits(checksum & 0xFF, 8); + break; + + case DEFLATE: + break; + + default: + throw new IllegalArgumentException(); // COV_NF_LINE + } + output.flush(); + } catch (ZopfliRuntimeException ex) { + throw new IOException(ex); + } + } + + static void writeEmptyBlock(BitWriter output, boolean isLast) throws IOException { + try { + output.addBits(isLast ? 1 : 0, 1); + output.addBits(1, 2); /* BTYPE = fixed */ + output.addBits(0, 7); /* 256 == end-of-block */ + } catch (ZopfliRuntimeException ex) { + throw new IOException(ex); + } + } + + public Zopfli(int masterBlockSize) { + cookie = new Cookie(masterBlockSize); + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/ZopfliOutputStream.java b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/ZopfliOutputStream.java new file mode 100644 index 000000000..1da51e079 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/ZopfliOutputStream.java @@ -0,0 +1,156 @@ +/* Copyright 2017 Google Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Author: eustas.ru@gmail.com (Eugene Klyuchnikov) +*/ + +package net.momirealms.craftengine.core.util.zopfli; + +import java.io.IOException; +import java.io.OutputStream; + +/** + * Output stream that wraps/uses zopfli encoder. + */ +public class ZopfliOutputStream extends OutputStream { + /** The default internal buffer size used by the encoder. */ + private static final int DEFAULT_MASTER_BLOCK_SIZE = 256 << 10; + + private static final int WINDOW_SIZE = Deflate.WINDOW_SIZE; + + private final OutputStream destination; + private final Options options; + private final Cookie cookie; + + private final BitWriter bitWriter; + private final byte[] buffer; + private final Zopfli.Checksum digest; + + /* Invariant: between calls offset - legacy < masterBlockSize, i.e. there is at least one byte + left in buffer. */ + private int offset; + /* Offset at which legacy data ends. Initially it is 0, but it grows, + after some data is compressed, up to WINDOW_SIZE. */ + private int legacy; + private boolean isClosed; + + /* Actually, exception is never thrown, but there is no way to prove it to compiler. */ + public ZopfliOutputStream(OutputStream destination, Options options, Cookie cookie) + throws IOException { + this.options = options; + this.destination = destination; + this.cookie = cookie; + + this.bitWriter = new BitWriter(destination); + this.buffer = new byte[WINDOW_SIZE + cookie.masterBlockSize]; + this.digest = Zopfli.createDigest(options.outputType); + + Zopfli.writePrologue(options.outputType, this.bitWriter); + } + + public ZopfliOutputStream(OutputStream destination, Options options) throws IOException { + this(destination, options, new Cookie(DEFAULT_MASTER_BLOCK_SIZE)); + } + + public ZopfliOutputStream(OutputStream destination) throws IOException { + this(destination, new Options()); + } + + @Override + public void close() throws IOException { + if (isClosed) { + return; + } + isClosed = true; + if (offset > legacy) { + compressBlock(true); + } else { + Zopfli.writeEmptyBlock(this.bitWriter, true); + } + Zopfli.writeEpilogue(this.options.outputType, bitWriter, digest); + destination.close(); + } + + @Override + public void flush() throws IOException { + if (isClosed) { + throw new IllegalStateException("write after close"); + } + if (offset > legacy) { + compressBlock(false); + } + /* Empty block is at least 10 bits -> all compressed data will be available to decoder. */ + Zopfli.writeEmptyBlock(this.bitWriter, false); + bitWriter.flush(); + destination.flush(); + } + + @Override + public void write(int b) throws IOException { + if (isClosed) { + throw new IllegalStateException("write after close"); + } + buffer[offset++] = (byte) b; + int fence = cookie.masterBlockSize + legacy; + if (offset == fence) { + compressBlock(false); + } + } + + @Override + public void write(byte[] b) throws IOException { + write(b, 0, b.length); + } + + @Override + public void write(byte[] b, int off, int len) throws IOException { + if (isClosed) { + throw new IllegalStateException("write after close"); + } + int from = off; + int toWrite = len; + while (toWrite > 0) { + int fence = cookie.masterBlockSize + legacy; + int chunk = fence - offset; + if (toWrite < chunk) { + chunk = toWrite; + } + System.arraycopy(b, from, buffer, offset, chunk); + from += chunk; + toWrite -= chunk; + offset += chunk; + if (offset == fence) { + compressBlock(false); + } + } + } + + private void compressBlock(boolean isLast) throws IOException { + try { + Deflate.deflatePart(cookie, options, buffer, legacy, offset, isLast, bitWriter); + digest.update(buffer, legacy, offset - legacy); + } catch (ZopfliRuntimeException ex) { + throw new IOException(ex); + } + if (offset > WINDOW_SIZE) { + // Move legacy to the beginning of the buffer. + System.arraycopy(buffer, offset - WINDOW_SIZE, buffer, 0, WINDOW_SIZE); + legacy = WINDOW_SIZE; + } else { + // Otherwise we can just continue filling the buffer. + legacy = offset; + } + offset = legacy; + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/ZopfliRuntimeException.java b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/ZopfliRuntimeException.java new file mode 100644 index 000000000..c6a4966de --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/util/zopfli/ZopfliRuntimeException.java @@ -0,0 +1,17 @@ +/* Copyright 2018 Google Inc. All Rights Reserved. + + Distributed under MIT license. + See file LICENSE for detail or copy at https://opensource.org/licenses/MIT +*/ + +package net.momirealms.craftengine.core.util.zopfli; + +/** + * Unchecked exception used internally. + */ +class ZopfliRuntimeException extends RuntimeException { + + ZopfliRuntimeException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/world/BlockPos.java b/core/src/main/java/net/momirealms/craftengine/core/world/BlockPos.java index 86905697d..38a9acf20 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/world/BlockPos.java +++ b/core/src/main/java/net/momirealms/craftengine/core/world/BlockPos.java @@ -40,6 +40,10 @@ public class BlockPos extends Vec3i { return new BlockPos(this.x(), this.y() + 1, this.z()); } + public BlockPos below() { + return new BlockPos(this.x(), this.y() - 1, this.z()); + } + public int toSectionBlockIndex() { return (y & 15) << 8 | (z & 15) << 4 | x & 15; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/world/ExistingBlock.java b/core/src/main/java/net/momirealms/craftengine/core/world/ExistingBlock.java index d6fac39cf..f6b8fee82 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/world/ExistingBlock.java +++ b/core/src/main/java/net/momirealms/craftengine/core/world/ExistingBlock.java @@ -37,6 +37,8 @@ public interface ExistingBlock { return new WorldPosition(world(), x(), y(), z()); } + boolean is(Key tag); + World world(); Key id(); diff --git a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/ArrayPalette.java b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/ArrayPalette.java index 94b254c65..0ace21c98 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/ArrayPalette.java +++ b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/ArrayPalette.java @@ -108,11 +108,27 @@ public class ArrayPalette implements Palette { @Override public void remap(Function function) { for (int i = 0; i < this.array.length; i++) { - if (this.array[i] == null) return; - this.array[i] = function.apply(this.array[i]); + T prev = this.array[i]; + if (prev == null) return; + this.array[i] = function.apply(prev); } } + @Override + public boolean remapAndCheck(Function function) { + boolean changed = false; + for (int i = 0; i < this.array.length; i++) { + T prev = this.array[i]; + if (prev == null) return changed; + T newV = function.apply(prev); + this.array[i] = newV; + if (!newV.equals(prev)) { + changed = true; + } + } + return changed; + } + @Override public boolean canRemap() { return true; diff --git a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/BiMapPalette.java b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/BiMapPalette.java index a9d27c98b..02d0b190d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/BiMapPalette.java +++ b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/BiMapPalette.java @@ -106,6 +106,11 @@ public class BiMapPalette implements Palette { this.map.remapValues(function); } + @Override + public boolean remapAndCheck(Function function) { + return this.map.remapValuesAndCheck(function); + } + @Override public boolean canRemap() { return true; diff --git a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/CESection.java b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/CESection.java index 344509b5c..c8c20c4ed 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/CESection.java +++ b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/CESection.java @@ -5,10 +5,6 @@ import net.momirealms.craftengine.core.world.BlockPos; import org.jetbrains.annotations.ApiStatus; public class CESection { - public static final int SECTION_WIDTH = 16; - public static final int SECTION_HEIGHT = 16; - public static final int SECTION_SIZE = SECTION_WIDTH * SECTION_WIDTH * SECTION_HEIGHT; - public final int sectionY; public final PalettedContainer statesContainer; diff --git a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/IdListPalette.java b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/IdListPalette.java index 2775ccc51..51ee07710 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/IdListPalette.java +++ b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/IdListPalette.java @@ -63,6 +63,11 @@ public class IdListPalette implements Palette { return false; } + @Override + public boolean remapAndCheck(Function function) { + return false; + } + @Override public void readPacket(FriendlyByteBuf buf) { } diff --git a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/Palette.java b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/Palette.java index c15620008..f190afaee 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/Palette.java +++ b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/Palette.java @@ -25,6 +25,8 @@ public interface Palette { void remap(Function function); + boolean remapAndCheck(Function function); + boolean canRemap(); interface Factory { diff --git a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/PalettedContainer.java b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/PalettedContainer.java index 9ce501846..302661f9c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/PalettedContainer.java +++ b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/PalettedContainer.java @@ -23,7 +23,6 @@ import java.util.function.Predicate; import java.util.stream.LongStream; public class PalettedContainer implements PaletteResizeListener, ReadableContainer { - public static boolean NEED_DOWNGRADE = true; private static final BiConsumer RAW_DATA_WRITER = VersionHelper.isOrAbove1_21_5() ? (FriendlyByteBuf::writeFixedSizeLongArray) : (FriendlyByteBuf::writeLongArray); private static final BiConsumer RAW_DATA_READER = VersionHelper.isOrAbove1_21_5() ? @@ -75,10 +74,7 @@ public class PalettedContainer implements PaletteResizeListener, ReadableC return false; } - public PalettedContainer downgradeTo(IndexedIterable idList) { - if (!NEED_DOWNGRADE) { - return this; - } + public PalettedContainer getClientCompatiblePalettedContainer(IndexedIterable idList) { Palette palette = this.data.palette; if (!(palette instanceof IdListPalette idListPalette)) { return this; diff --git a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/SingularPalette.java b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/SingularPalette.java index 35736ff09..afcfe09be 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/SingularPalette.java +++ b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/SingularPalette.java @@ -70,9 +70,18 @@ public class SingularPalette implements Palette { @Override public void remap(Function function) { + if (this.entry == null) return; this.entry = function.apply(this.entry); } + @Override + public boolean remapAndCheck(Function function) { + if (this.entry == null) return false; + T previous = this.entry; + this.entry = function.apply(previous); + return !previous.equals(this.entry); + } + @Override public boolean canRemap() { return true; diff --git a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/packet/MCSection.java b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/packet/MCSection.java index 81948b867..0837a559d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/packet/MCSection.java +++ b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/packet/MCSection.java @@ -26,7 +26,7 @@ public class MCSection { public void writePacket(FriendlyByteBuf buf) { buf.writeShort(this.nonEmptyBlockCount); - this.serverBlockStateContainer.downgradeTo(this.clientBlockStateList).writePacket(buf); + this.serverBlockStateContainer.getClientCompatiblePalettedContainer(this.clientBlockStateList).writePacket(buf); this.biomeContainer.writePacket(buf); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/serialization/DefaultBlockEntityRendererSerializer.java b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/serialization/DefaultBlockEntityRendererSerializer.java index cf89f584e..a4624340e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/serialization/DefaultBlockEntityRendererSerializer.java +++ b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/serialization/DefaultBlockEntityRendererSerializer.java @@ -11,6 +11,8 @@ import java.util.List; public final class DefaultBlockEntityRendererSerializer { + private DefaultBlockEntityRendererSerializer() {} + public static List deserialize(ChunkPos chunkPos, ListTag blockEntitiesTag) { List blockEntities = new ArrayList<>(blockEntitiesTag.size()); for (int i = 0; i < blockEntitiesTag.size(); i++) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/serialization/DefaultBlockEntitySerializer.java b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/serialization/DefaultBlockEntitySerializer.java index b72ebf984..5c2a49712 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/serialization/DefaultBlockEntitySerializer.java +++ b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/serialization/DefaultBlockEntitySerializer.java @@ -1,6 +1,7 @@ package net.momirealms.craftengine.core.world.chunk.serialization; import net.momirealms.craftengine.core.block.ImmutableBlockState; +import net.momirealms.craftengine.core.block.behavior.EntityBlockBehavior; import net.momirealms.craftengine.core.block.entity.BlockEntity; import net.momirealms.craftengine.core.block.entity.BlockEntityType; import net.momirealms.craftengine.core.plugin.logger.Debugger; @@ -14,9 +15,12 @@ import net.momirealms.sparrow.nbt.ListTag; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Optional; public final class DefaultBlockEntitySerializer { + private DefaultBlockEntitySerializer() {} + public static ListTag serialize(Collection entities) { ListTag result = new ListTag(); for (BlockEntity entity : entities) { @@ -39,9 +43,14 @@ public final class DefaultBlockEntitySerializer { BlockPos pos = BlockEntity.readPosAndVerify(data, chunk.chunkPos()); ImmutableBlockState blockState = chunk.getBlockState(pos); if (blockState.blockEntityType() == type) { - BlockEntity blockEntity = type.factory().create(pos, blockState); - blockEntity.loadCustomData(data); - blockEntities.add(blockEntity); + Optional entityBlockBehavior = blockState.behavior().getAs(EntityBlockBehavior.class); + if (entityBlockBehavior.isPresent()) { + BlockEntity blockEntity = entityBlockBehavior.get().createBlockEntity(pos, blockState); + if (blockEntity != null) { + blockEntity.loadCustomData(data); + blockEntities.add(blockEntity); + } + } } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/serialization/DefaultChunkSerializer.java b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/serialization/DefaultChunkSerializer.java index 5c4395082..ef1357235 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/serialization/DefaultChunkSerializer.java +++ b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/serialization/DefaultChunkSerializer.java @@ -11,6 +11,8 @@ import org.jetbrains.annotations.Nullable; public final class DefaultChunkSerializer { + private DefaultChunkSerializer() {} + @Nullable public static CompoundTag serialize(@NotNull CEChunk chunk) { ListTag sections = new ListTag(); diff --git a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/serialization/DefaultSectionSerializer.java b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/serialization/DefaultSectionSerializer.java index 991797da3..9f6368cd6 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/world/chunk/serialization/DefaultSectionSerializer.java +++ b/core/src/main/java/net/momirealms/craftengine/core/world/chunk/serialization/DefaultSectionSerializer.java @@ -27,6 +27,8 @@ import java.util.stream.LongStream; public final class DefaultSectionSerializer { + private DefaultSectionSerializer() {} + @Nullable public static CompoundTag serialize(@NotNull CESection section) { ReadableContainer.Serialized serialized = section.statesContainer().serialize(null, PalettedContainer.PaletteProvider.CUSTOM_BLOCK_STATE); diff --git a/gradle.properties b/gradle.properties index 0623c52af..25deb2efa 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,9 +2,9 @@ org.gradle.jvmargs=-Xmx1G # Project settings # Rule: [major update].[feature update].[bug fix] -project_version=0.0.64 -config_version=47 -lang_version=33 +project_version=0.0.65 +config_version=52 +lang_version=36 project_group=net.momirealms latest_supported_version=1.21.10 @@ -12,21 +12,21 @@ latest_supported_version=1.21.10 supported_languages=en,zh_cn,zh_tw,es,tr,de,ru_ru # Dependency settings -paper_version=1.21.9 +paper_version=1.21.10 jetbrains_annotations_version=26.0.2 slf4j_version=2.0.17 log4j_version=2.25.2 gson_version=2.13.2 -asm_version=9.8 -asm_commons_version=9.8 +asm_version=9.9 +asm_commons_version=9.9 jar_relocator_version=1.7 -adventure_bundle_version=4.23.0 +adventure_bundle_version=4.25.0 cloud_core_version=2.0.0 cloud_services_version=2.0.0 -cloud_brigadier_version=2.0.0-beta.11 -cloud_bukkit_version=2.0.0-beta.11 -cloud_paper_version=2.0.0-beta.11 -cloud_minecraft_extras_version=2.0.0-beta.11 +cloud_brigadier_version=2.0.0-beta.13 +cloud_bukkit_version=2.0.0-beta.13 +cloud_paper_version=2.0.0-beta.13 +cloud_minecraft_extras_version=2.0.0-beta.13 boosted_yaml_version=1.3.7 bstats_version=3.1.0 caffeine_version=3.2.2 @@ -37,20 +37,19 @@ lz4_version=1.8.0 geantyref_version=1.3.16 zstd_version=1.5.7-4 commons_io_version=2.20.0 -commons_imaging_version=1.0.0-alpha6 commons_lang3_version=3.19.0 -sparrow_nbt_version=0.9.9 -sparrow_util_version=0.51 -fastutil_version=8.5.16 +sparrow_nbt_version=0.10.6 +sparrow_util_version=0.60 +fastutil_version=8.5.18 netty_version=4.1.127.Final joml_version=1.10.8 datafixerupper_version=8.0.16 mojang_brigadier_version=1.0.18 -byte_buddy_version=1.17.5 +byte_buddy_version=1.17.8 ahocorasick_version=0.6.3 snake_yaml_version=2.5 -anti_grief_version=1.0.2 -nms_helper_version=1.0.104 +anti_grief_version=1.0.4 +nms_helper_version=1.0.123 evalex_version=3.5.0 reactive_streams_version=1.0.4 amazon_awssdk_version=2.34.5 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3c44eb1b6..ab521aa07 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists