From 63d40dcad76feed562b77eb1abcfd72109e2f1c4 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Wed, 17 Nov 2021 18:57:41 +0100 Subject: [PATCH] more tints --- .../minosoft/data/assets/AssetsManager.kt | 2 +- .../minosoft/data/player/LocalPlayerEntity.kt | 8 +- .../data/registries/blocks/DefaultBlocks.kt | 36 - .../data/registries/blocks/MinecraftBlocks.kt | 917 ++++++++++++++++++ .../data/registries/items/tools/SwordItem.kt | 4 +- .../minosoft/data/tags/DefaultBlockTags.kt | 4 +- .../advanced/block/BlockDustParticle.kt | 6 +- .../rendering/tint/FoliageTintCalculator.kt | 23 + .../gui/rendering/tint/GrassTintCalculator.kt | 5 +- .../gui/rendering/tint/MultiTintProvider.kt | 5 + .../tint/RedstoneWireTintCalculator.kt | 23 + .../gui/rendering/tint/StaticTintProvider.kt | 11 + .../gui/rendering/tint/StemTintCalculator.kt | 16 + .../gui/rendering/tint/TintManager.kt | 38 +- .../gui/rendering/tint/TintProvider.java | 10 + .../gui/rendering/tint/TintProvider.kt | 10 - 16 files changed, 1048 insertions(+), 70 deletions(-) delete mode 100644 src/main/java/de/bixilon/minosoft/data/registries/blocks/DefaultBlocks.kt create mode 100644 src/main/java/de/bixilon/minosoft/data/registries/blocks/MinecraftBlocks.kt create mode 100644 src/main/java/de/bixilon/minosoft/gui/rendering/tint/FoliageTintCalculator.kt create mode 100644 src/main/java/de/bixilon/minosoft/gui/rendering/tint/MultiTintProvider.kt create mode 100644 src/main/java/de/bixilon/minosoft/gui/rendering/tint/RedstoneWireTintCalculator.kt create mode 100644 src/main/java/de/bixilon/minosoft/gui/rendering/tint/StaticTintProvider.kt create mode 100644 src/main/java/de/bixilon/minosoft/gui/rendering/tint/StemTintCalculator.kt create mode 100644 src/main/java/de/bixilon/minosoft/gui/rendering/tint/TintProvider.java delete mode 100644 src/main/java/de/bixilon/minosoft/gui/rendering/tint/TintProvider.kt diff --git a/src/main/java/de/bixilon/minosoft/data/assets/AssetsManager.kt b/src/main/java/de/bixilon/minosoft/data/assets/AssetsManager.kt index cbc5aa31f..b5023122d 100644 --- a/src/main/java/de/bixilon/minosoft/data/assets/AssetsManager.kt +++ b/src/main/java/de/bixilon/minosoft/data/assets/AssetsManager.kt @@ -58,7 +58,7 @@ interface AssetsManager { return Util.readReader(readAssetAsReader(resourceLocation), true) } - fun readAGBArrayAsset(resourceLocation: ResourceLocation): IntArray { + fun readRGBArrayAsset(resourceLocation: ResourceLocation): IntArray { val decoder = PNGDecoder(readAssetAsStream(resourceLocation)) val buffer = BufferUtils.createByteBuffer(decoder.width * decoder.height * PNGDecoder.Format.RGB.numComponents) diff --git a/src/main/java/de/bixilon/minosoft/data/player/LocalPlayerEntity.kt b/src/main/java/de/bixilon/minosoft/data/player/LocalPlayerEntity.kt index 6ee8c52c1..5e05b0804 100644 --- a/src/main/java/de/bixilon/minosoft/data/player/LocalPlayerEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/player/LocalPlayerEntity.kt @@ -25,7 +25,7 @@ import de.bixilon.minosoft.data.inventory.InventorySlots import de.bixilon.minosoft.data.inventory.ItemStack import de.bixilon.minosoft.data.physics.PhysicsConstants import de.bixilon.minosoft.data.registries.AABB -import de.bixilon.minosoft.data.registries.blocks.DefaultBlocks +import de.bixilon.minosoft.data.registries.blocks.MinecraftBlocks import de.bixilon.minosoft.data.registries.blocks.types.Block import de.bixilon.minosoft.data.registries.effects.DefaultStatusEffects import de.bixilon.minosoft.data.registries.effects.attributes.DefaultStatusEffectAttributeNames @@ -185,7 +185,7 @@ class LocalPlayerEntity( val blockStateBelow = connection.world[positionInfo.blockPosition] ?: return 1.0 - if (blockStateBelow.block.resourceLocation == DefaultBlocks.WATER || blockStateBelow.block.resourceLocation == DefaultBlocks.BUBBLE_COLUMN) { + if (blockStateBelow.block.resourceLocation == MinecraftBlocks.WATER || blockStateBelow.block.resourceLocation == MinecraftBlocks.BUBBLE_COLUMN) { if (blockStateBelow.block.velocityMultiplier == 1.0) { return connection.world[positionInfo.blockPosition]?.block?.velocityMultiplier ?: 1.0 } @@ -308,7 +308,7 @@ class LocalPlayerEntity( y = max(velocity.y, -CLIMBING_CLAMP_VALUE), z = MMath.clamp(velocity.z, -CLIMBING_CLAMP_VALUE, CLIMBING_CLAMP_VALUE) ) - if (returnVelocity.y < 0.0 && connection.world[positionInfo.blockPosition]?.block?.resourceLocation != DefaultBlocks.SCAFFOLDING && isSneaking) { + if (returnVelocity.y < 0.0 && connection.world[positionInfo.blockPosition]?.block?.resourceLocation != MinecraftBlocks.SCAFFOLDING && isSneaking) { returnVelocity.y = 0.0 } return returnVelocity @@ -334,7 +334,7 @@ class LocalPlayerEntity( } private fun adjustVelocityForClimbing(velocity: Vec3d): Vec3d { - if ((this.horizontalCollision || isJumping) && (isClimbing || connection.world[positionInfo.blockPosition]?.block == DefaultBlocks.POWDER_SNOW && equipment[InventorySlots.EquipmentSlots.FEET]?.item?.resourceLocation == DefaultItems.LEATHER_BOOTS)) { + if ((this.horizontalCollision || isJumping) && (isClimbing || connection.world[positionInfo.blockPosition]?.block == MinecraftBlocks.POWDER_SNOW && equipment[InventorySlots.EquipmentSlots.FEET]?.item?.resourceLocation == DefaultItems.LEATHER_BOOTS)) { return Vec3d(velocity.x, 0.2, velocity.z) } return velocity diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/DefaultBlocks.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/DefaultBlocks.kt deleted file mode 100644 index 94dc9812c..000000000 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/DefaultBlocks.kt +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2021 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. If not, see . - * - * This software is not affiliated with Mojang AB, the original developer of Minecraft. - */ - -package de.bixilon.minosoft.data.registries.blocks - -import de.bixilon.minosoft.util.KUtil.toResourceLocation - -object DefaultBlocks { - val SCAFFOLDING = "minecraft:scaffolding".toResourceLocation() - val LADDER = "minecraft:ladder".toResourceLocation() - val VINE = "minecraft:vine".toResourceLocation() - val WEEPING_VINES = "minecraft:weeping_vines".toResourceLocation() - val WEEPING_VINES_PLANT = "minecraft:weeping_vines_plant".toResourceLocation() - val TWISTING_VINES = "minecraft:twisting_vines".toResourceLocation() - val TWISTING_VINES_PLANT = "minecraft:twisting_vines_plant".toResourceLocation() - val CAVE_VINES = "minecraft:cave_vines".toResourceLocation() - val CAVE_VINES_PLANT = "minecraft:cave_vines_plant".toResourceLocation() - - val POWDER_SNOW = "minecraft:powder_snow".toResourceLocation() - val GRASS_BLOCK = "minecraft:grass_block".toResourceLocation() - val MOVING_PISTON = "minecraft:moving_piston".toResourceLocation() - val COBWEB = "minecraft:cobweb".toResourceLocation() - - val WATER = "minecraft:water".toResourceLocation() - val BUBBLE_COLUMN = "minecraft:bubble_column".toResourceLocation() -} diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/MinecraftBlocks.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/MinecraftBlocks.kt new file mode 100644 index 000000000..0cb76366a --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/MinecraftBlocks.kt @@ -0,0 +1,917 @@ +/* + * Minosoft + * Copyright (C) 2021 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ + +package de.bixilon.minosoft.data.registries.blocks + +import de.bixilon.minosoft.util.KUtil.toResourceLocation + +object MinecraftBlocks { + // taken from 1.17.1 + val STONE = "minecraft:stone".toResourceLocation() + val GRANITE = "minecraft:granite".toResourceLocation() + val POLISHED_GRANITE = "minecraft:polished_granite".toResourceLocation() + val DIORITE = "minecraft:diorite".toResourceLocation() + val POLISHED_DIORITE = "minecraft:polished_diorite".toResourceLocation() + val ANDESITE = "minecraft:andesite".toResourceLocation() + val POLISHED_ANDESITE = "minecraft:polished_andesite".toResourceLocation() + val GRASS_BLOCK = "minecraft:grass_block".toResourceLocation() + val DIRT = "minecraft:dirt".toResourceLocation() + val COARSE_DIRT = "minecraft:coarse_dirt".toResourceLocation() + val PODZOL = "minecraft:podzol".toResourceLocation() + val COBBLESTONE = "minecraft:cobblestone".toResourceLocation() + val OAK_PLANKS = "minecraft:oak_planks".toResourceLocation() + val SPRUCE_PLANKS = "minecraft:spruce_planks".toResourceLocation() + val BIRCH_PLANKS = "minecraft:birch_planks".toResourceLocation() + val JUNGLE_PLANKS = "minecraft:jungle_planks".toResourceLocation() + val ACACIA_PLANKS = "minecraft:acacia_planks".toResourceLocation() + val DARK_OAK_PLANKS = "minecraft:dark_oak_planks".toResourceLocation() + val OAK_SAPLING = "minecraft:oak_sapling".toResourceLocation() + val SPRUCE_SAPLING = "minecraft:spruce_sapling".toResourceLocation() + val BIRCH_SAPLING = "minecraft:birch_sapling".toResourceLocation() + val JUNGLE_SAPLING = "minecraft:jungle_sapling".toResourceLocation() + val ACACIA_SAPLING = "minecraft:acacia_sapling".toResourceLocation() + val DARK_OAK_SAPLING = "minecraft:dark_oak_sapling".toResourceLocation() + val BEDROCK = "minecraft:bedrock".toResourceLocation() + val WATER = "minecraft:water".toResourceLocation() + val LAVA = "minecraft:lava".toResourceLocation() + val SAND = "minecraft:sand".toResourceLocation() + val RED_SAND = "minecraft:red_sand".toResourceLocation() + val GRAVEL = "minecraft:gravel".toResourceLocation() + val GOLD_ORE = "minecraft:gold_ore".toResourceLocation() + val DEEPSLATE_GOLD_ORE = "minecraft:deepslate_gold_ore".toResourceLocation() + val IRON_ORE = "minecraft:iron_ore".toResourceLocation() + val DEEPSLATE_IRON_ORE = "minecraft:deepslate_iron_ore".toResourceLocation() + val COAL_ORE = "minecraft:coal_ore".toResourceLocation() + val DEEPSLATE_COAL_ORE = "minecraft:deepslate_coal_ore".toResourceLocation() + val NETHER_GOLD_ORE = "minecraft:nether_gold_ore".toResourceLocation() + val OAK_LOG = "minecraft:oak_log".toResourceLocation() + val SPRUCE_LOG = "minecraft:spruce_log".toResourceLocation() + val BIRCH_LOG = "minecraft:birch_log".toResourceLocation() + val JUNGLE_LOG = "minecraft:jungle_log".toResourceLocation() + val ACACIA_LOG = "minecraft:acacia_log".toResourceLocation() + val DARK_OAK_LOG = "minecraft:dark_oak_log".toResourceLocation() + val STRIPPED_SPRUCE_LOG = "minecraft:stripped_spruce_log".toResourceLocation() + val STRIPPED_BIRCH_LOG = "minecraft:stripped_birch_log".toResourceLocation() + val STRIPPED_JUNGLE_LOG = "minecraft:stripped_jungle_log".toResourceLocation() + val STRIPPED_ACACIA_LOG = "minecraft:stripped_acacia_log".toResourceLocation() + val STRIPPED_DARK_OAK_LOG = "minecraft:stripped_dark_oak_log".toResourceLocation() + val STRIPPED_OAK_LOG = "minecraft:stripped_oak_log".toResourceLocation() + val OAK_WOOD = "minecraft:oak_wood".toResourceLocation() + val SPRUCE_WOOD = "minecraft:spruce_wood".toResourceLocation() + val BIRCH_WOOD = "minecraft:birch_wood".toResourceLocation() + val JUNGLE_WOOD = "minecraft:jungle_wood".toResourceLocation() + val ACACIA_WOOD = "minecraft:acacia_wood".toResourceLocation() + val DARK_OAK_WOOD = "minecraft:dark_oak_wood".toResourceLocation() + val STRIPPED_OAK_WOOD = "minecraft:stripped_oak_wood".toResourceLocation() + val STRIPPED_SPRUCE_WOOD = "minecraft:stripped_spruce_wood".toResourceLocation() + val STRIPPED_BIRCH_WOOD = "minecraft:stripped_birch_wood".toResourceLocation() + val STRIPPED_JUNGLE_WOOD = "minecraft:stripped_jungle_wood".toResourceLocation() + val STRIPPED_ACACIA_WOOD = "minecraft:stripped_acacia_wood".toResourceLocation() + val STRIPPED_DARK_OAK_WOOD = "minecraft:stripped_dark_oak_wood".toResourceLocation() + val OAK_LEAVES = "minecraft:oak_leaves".toResourceLocation() + val SPRUCE_LEAVES = "minecraft:spruce_leaves".toResourceLocation() + val BIRCH_LEAVES = "minecraft:birch_leaves".toResourceLocation() + val JUNGLE_LEAVES = "minecraft:jungle_leaves".toResourceLocation() + val ACACIA_LEAVES = "minecraft:acacia_leaves".toResourceLocation() + val DARK_OAK_LEAVES = "minecraft:dark_oak_leaves".toResourceLocation() + val AZALEA_LEAVES = "minecraft:azalea_leaves".toResourceLocation() + val FLOWERING_AZALEA_LEAVES = "minecraft:flowering_azalea_leaves".toResourceLocation() + val SPONGE = "minecraft:sponge".toResourceLocation() + val WET_SPONGE = "minecraft:wet_sponge".toResourceLocation() + val GLASS = "minecraft:glass".toResourceLocation() + val LAPIS_ORE = "minecraft:lapis_ore".toResourceLocation() + val DEEPSLATE_LAPIS_ORE = "minecraft:deepslate_lapis_ore".toResourceLocation() + val LAPIS_BLOCK = "minecraft:lapis_block".toResourceLocation() + val DISPENSER = "minecraft:dispenser".toResourceLocation() + val SANDSTONE = "minecraft:sandstone".toResourceLocation() + val CHISELED_SANDSTONE = "minecraft:chiseled_sandstone".toResourceLocation() + val CUT_SANDSTONE = "minecraft:cut_sandstone".toResourceLocation() + val NOTE_BLOCK = "minecraft:note_block".toResourceLocation() + val WHITE_BED = "minecraft:white_bed".toResourceLocation() + val ORANGE_BED = "minecraft:orange_bed".toResourceLocation() + val MAGENTA_BED = "minecraft:magenta_bed".toResourceLocation() + val LIGHT_BLUE_BED = "minecraft:light_blue_bed".toResourceLocation() + val YELLOW_BED = "minecraft:yellow_bed".toResourceLocation() + val LIME_BED = "minecraft:lime_bed".toResourceLocation() + val PINK_BED = "minecraft:pink_bed".toResourceLocation() + val GRAY_BED = "minecraft:gray_bed".toResourceLocation() + val LIGHT_GRAY_BED = "minecraft:light_gray_bed".toResourceLocation() + val CYAN_BED = "minecraft:cyan_bed".toResourceLocation() + val PURPLE_BED = "minecraft:purple_bed".toResourceLocation() + val BLUE_BED = "minecraft:blue_bed".toResourceLocation() + val BROWN_BED = "minecraft:brown_bed".toResourceLocation() + val GREEN_BED = "minecraft:green_bed".toResourceLocation() + val RED_BED = "minecraft:red_bed".toResourceLocation() + val BLACK_BED = "minecraft:black_bed".toResourceLocation() + val POWERED_RAIL = "minecraft:powered_rail".toResourceLocation() + val DETECTOR_RAIL = "minecraft:detector_rail".toResourceLocation() + val STICKY_PISTON = "minecraft:sticky_piston".toResourceLocation() + val COBWEB = "minecraft:cobweb".toResourceLocation() + val GRASS = "minecraft:grass".toResourceLocation() + val FERN = "minecraft:fern".toResourceLocation() + val DEAD_BUSH = "minecraft:dead_bush".toResourceLocation() + val SEAGRASS = "minecraft:seagrass".toResourceLocation() + val TALL_SEAGRASS = "minecraft:tall_seagrass".toResourceLocation() + val PISTON = "minecraft:piston".toResourceLocation() + val PISTON_HEAD = "minecraft:piston_head".toResourceLocation() + val WHITE_WOOL = "minecraft:white_wool".toResourceLocation() + val ORANGE_WOOL = "minecraft:orange_wool".toResourceLocation() + val MAGENTA_WOOL = "minecraft:magenta_wool".toResourceLocation() + val LIGHT_BLUE_WOOL = "minecraft:light_blue_wool".toResourceLocation() + val YELLOW_WOOL = "minecraft:yellow_wool".toResourceLocation() + val LIME_WOOL = "minecraft:lime_wool".toResourceLocation() + val PINK_WOOL = "minecraft:pink_wool".toResourceLocation() + val GRAY_WOOL = "minecraft:gray_wool".toResourceLocation() + val LIGHT_GRAY_WOOL = "minecraft:light_gray_wool".toResourceLocation() + val CYAN_WOOL = "minecraft:cyan_wool".toResourceLocation() + val PURPLE_WOOL = "minecraft:purple_wool".toResourceLocation() + val BLUE_WOOL = "minecraft:blue_wool".toResourceLocation() + val BROWN_WOOL = "minecraft:brown_wool".toResourceLocation() + val GREEN_WOOL = "minecraft:green_wool".toResourceLocation() + val RED_WOOL = "minecraft:red_wool".toResourceLocation() + val BLACK_WOOL = "minecraft:black_wool".toResourceLocation() + val MOVING_PISTON = "minecraft:moving_piston".toResourceLocation() + val DANDELION = "minecraft:dandelion".toResourceLocation() + val POPPY = "minecraft:poppy".toResourceLocation() + val BLUE_ORCHID = "minecraft:blue_orchid".toResourceLocation() + val ALLIUM = "minecraft:allium".toResourceLocation() + val AZURE_BLUET = "minecraft:azure_bluet".toResourceLocation() + val RED_TULIP = "minecraft:red_tulip".toResourceLocation() + val ORANGE_TULIP = "minecraft:orange_tulip".toResourceLocation() + val WHITE_TULIP = "minecraft:white_tulip".toResourceLocation() + val PINK_TULIP = "minecraft:pink_tulip".toResourceLocation() + val OXEYE_DAISY = "minecraft:oxeye_daisy".toResourceLocation() + val CORNFLOWER = "minecraft:cornflower".toResourceLocation() + val WITHER_ROSE = "minecraft:wither_rose".toResourceLocation() + val LILY_OF_THE_VALLEY = "minecraft:lily_of_the_valley".toResourceLocation() + val BROWN_MUSHROOM = "minecraft:brown_mushroom".toResourceLocation() + val RED_MUSHROOM = "minecraft:red_mushroom".toResourceLocation() + val GOLD_BLOCK = "minecraft:gold_block".toResourceLocation() + val IRON_BLOCK = "minecraft:iron_block".toResourceLocation() + val BRICKS = "minecraft:bricks".toResourceLocation() + val TNT = "minecraft:tnt".toResourceLocation() + val BOOKSHELF = "minecraft:bookshelf".toResourceLocation() + val MOSSY_COBBLESTONE = "minecraft:mossy_cobblestone".toResourceLocation() + val OBSIDIAN = "minecraft:obsidian".toResourceLocation() + val TORCH = "minecraft:torch".toResourceLocation() + val WALL_TORCH = "minecraft:wall_torch".toResourceLocation() + val FIRE = "minecraft:fire".toResourceLocation() + val SOUL_FIRE = "minecraft:soul_fire".toResourceLocation() + val SPAWNER = "minecraft:spawner".toResourceLocation() + val OAK_STAIRS = "minecraft:oak_stairs".toResourceLocation() + val CHEST = "minecraft:chest".toResourceLocation() + val REDSTONE_WIRE = "minecraft:redstone_wire".toResourceLocation() + val DIAMOND_ORE = "minecraft:diamond_ore".toResourceLocation() + val DEEPSLATE_DIAMOND_ORE = "minecraft:deepslate_diamond_ore".toResourceLocation() + val DIAMOND_BLOCK = "minecraft:diamond_block".toResourceLocation() + val CRAFTING_TABLE = "minecraft:crafting_table".toResourceLocation() + val WHEAT = "minecraft:wheat".toResourceLocation() + val FARMLAND = "minecraft:farmland".toResourceLocation() + val FURNACE = "minecraft:furnace".toResourceLocation() + val OAK_SIGN = "minecraft:oak_sign".toResourceLocation() + val SPRUCE_SIGN = "minecraft:spruce_sign".toResourceLocation() + val BIRCH_SIGN = "minecraft:birch_sign".toResourceLocation() + val ACACIA_SIGN = "minecraft:acacia_sign".toResourceLocation() + val JUNGLE_SIGN = "minecraft:jungle_sign".toResourceLocation() + val DARK_OAK_SIGN = "minecraft:dark_oak_sign".toResourceLocation() + val OAK_DOOR = "minecraft:oak_door".toResourceLocation() + val LADDER = "minecraft:ladder".toResourceLocation() + val RAIL = "minecraft:rail".toResourceLocation() + val COBBLESTONE_STAIRS = "minecraft:cobblestone_stairs".toResourceLocation() + val OAK_WALL_SIGN = "minecraft:oak_wall_sign".toResourceLocation() + val SPRUCE_WALL_SIGN = "minecraft:spruce_wall_sign".toResourceLocation() + val BIRCH_WALL_SIGN = "minecraft:birch_wall_sign".toResourceLocation() + val ACACIA_WALL_SIGN = "minecraft:acacia_wall_sign".toResourceLocation() + val JUNGLE_WALL_SIGN = "minecraft:jungle_wall_sign".toResourceLocation() + val DARK_OAK_WALL_SIGN = "minecraft:dark_oak_wall_sign".toResourceLocation() + val LEVER = "minecraft:lever".toResourceLocation() + val STONE_PRESSURE_PLATE = "minecraft:stone_pressure_plate".toResourceLocation() + val IRON_DOOR = "minecraft:iron_door".toResourceLocation() + val OAK_PRESSURE_PLATE = "minecraft:oak_pressure_plate".toResourceLocation() + val SPRUCE_PRESSURE_PLATE = "minecraft:spruce_pressure_plate".toResourceLocation() + val BIRCH_PRESSURE_PLATE = "minecraft:birch_pressure_plate".toResourceLocation() + val JUNGLE_PRESSURE_PLATE = "minecraft:jungle_pressure_plate".toResourceLocation() + val ACACIA_PRESSURE_PLATE = "minecraft:acacia_pressure_plate".toResourceLocation() + val DARK_OAK_PRESSURE_PLATE = "minecraft:dark_oak_pressure_plate".toResourceLocation() + val REDSTONE_ORE = "minecraft:redstone_ore".toResourceLocation() + val DEEPSLATE_REDSTONE_ORE = "minecraft:deepslate_redstone_ore".toResourceLocation() + val REDSTONE_TORCH = "minecraft:redstone_torch".toResourceLocation() + val REDSTONE_WALL_TORCH = "minecraft:redstone_wall_torch".toResourceLocation() + val STONE_BUTTON = "minecraft:stone_button".toResourceLocation() + val SNOW = "minecraft:snow".toResourceLocation() + val ICE = "minecraft:ice".toResourceLocation() + val SNOW_BLOCK = "minecraft:snow_block".toResourceLocation() + val CACTUS = "minecraft:cactus".toResourceLocation() + val CLAY = "minecraft:clay".toResourceLocation() + val SUGAR_CANE = "minecraft:sugar_cane".toResourceLocation() + val JUKEBOX = "minecraft:jukebox".toResourceLocation() + val OAK_FENCE = "minecraft:oak_fence".toResourceLocation() + val PUMPKIN = "minecraft:pumpkin".toResourceLocation() + val NETHERRACK = "minecraft:netherrack".toResourceLocation() + val SOUL_SAND = "minecraft:soul_sand".toResourceLocation() + val SOUL_SOIL = "minecraft:soul_soil".toResourceLocation() + val BASALT = "minecraft:basalt".toResourceLocation() + val POLISHED_BASALT = "minecraft:polished_basalt".toResourceLocation() + val SOUL_TORCH = "minecraft:soul_torch".toResourceLocation() + val SOUL_WALL_TORCH = "minecraft:soul_wall_torch".toResourceLocation() + val GLOWSTONE = "minecraft:glowstone".toResourceLocation() + val NETHER_PORTAL = "minecraft:nether_portal".toResourceLocation() + val CARVED_PUMPKIN = "minecraft:carved_pumpkin".toResourceLocation() + val JACK_O_LANTERN = "minecraft:jack_o_lantern".toResourceLocation() + val CAKE = "minecraft:cake".toResourceLocation() + val REPEATER = "minecraft:repeater".toResourceLocation() + val WHITE_STAINED_GLASS = "minecraft:white_stained_glass".toResourceLocation() + val ORANGE_STAINED_GLASS = "minecraft:orange_stained_glass".toResourceLocation() + val MAGENTA_STAINED_GLASS = "minecraft:magenta_stained_glass".toResourceLocation() + val LIGHT_BLUE_STAINED_GLASS = "minecraft:light_blue_stained_glass".toResourceLocation() + val YELLOW_STAINED_GLASS = "minecraft:yellow_stained_glass".toResourceLocation() + val LIME_STAINED_GLASS = "minecraft:lime_stained_glass".toResourceLocation() + val PINK_STAINED_GLASS = "minecraft:pink_stained_glass".toResourceLocation() + val GRAY_STAINED_GLASS = "minecraft:gray_stained_glass".toResourceLocation() + val LIGHT_GRAY_STAINED_GLASS = "minecraft:light_gray_stained_glass".toResourceLocation() + val CYAN_STAINED_GLASS = "minecraft:cyan_stained_glass".toResourceLocation() + val PURPLE_STAINED_GLASS = "minecraft:purple_stained_glass".toResourceLocation() + val BLUE_STAINED_GLASS = "minecraft:blue_stained_glass".toResourceLocation() + val BROWN_STAINED_GLASS = "minecraft:brown_stained_glass".toResourceLocation() + val GREEN_STAINED_GLASS = "minecraft:green_stained_glass".toResourceLocation() + val RED_STAINED_GLASS = "minecraft:red_stained_glass".toResourceLocation() + val BLACK_STAINED_GLASS = "minecraft:black_stained_glass".toResourceLocation() + val OAK_TRAPDOOR = "minecraft:oak_trapdoor".toResourceLocation() + val SPRUCE_TRAPDOOR = "minecraft:spruce_trapdoor".toResourceLocation() + val BIRCH_TRAPDOOR = "minecraft:birch_trapdoor".toResourceLocation() + val JUNGLE_TRAPDOOR = "minecraft:jungle_trapdoor".toResourceLocation() + val ACACIA_TRAPDOOR = "minecraft:acacia_trapdoor".toResourceLocation() + val DARK_OAK_TRAPDOOR = "minecraft:dark_oak_trapdoor".toResourceLocation() + val STONE_BRICKS = "minecraft:stone_bricks".toResourceLocation() + val MOSSY_STONE_BRICKS = "minecraft:mossy_stone_bricks".toResourceLocation() + val CRACKED_STONE_BRICKS = "minecraft:cracked_stone_bricks".toResourceLocation() + val CHISELED_STONE_BRICKS = "minecraft:chiseled_stone_bricks".toResourceLocation() + val INFESTED_STONE = "minecraft:infested_stone".toResourceLocation() + val INFESTED_COBBLESTONE = "minecraft:infested_cobblestone".toResourceLocation() + val INFESTED_STONE_BRICKS = "minecraft:infested_stone_bricks".toResourceLocation() + val INFESTED_MOSSY_STONE_BRICKS = "minecraft:infested_mossy_stone_bricks".toResourceLocation() + val INFESTED_CRACKED_STONE_BRICKS = "minecraft:infested_cracked_stone_bricks".toResourceLocation() + val INFESTED_CHISELED_STONE_BRICKS = "minecraft:infested_chiseled_stone_bricks".toResourceLocation() + val BROWN_MUSHROOM_BLOCK = "minecraft:brown_mushroom_block".toResourceLocation() + val RED_MUSHROOM_BLOCK = "minecraft:red_mushroom_block".toResourceLocation() + val MUSHROOM_STEM = "minecraft:mushroom_stem".toResourceLocation() + val IRON_BARS = "minecraft:iron_bars".toResourceLocation() + val CHAIN = "minecraft:chain".toResourceLocation() + val GLASS_PANE = "minecraft:glass_pane".toResourceLocation() + val MELON = "minecraft:melon".toResourceLocation() + val ATTACHED_PUMPKIN_STEM = "minecraft:attached_pumpkin_stem".toResourceLocation() + val ATTACHED_MELON_STEM = "minecraft:attached_melon_stem".toResourceLocation() + val PUMPKIN_STEM = "minecraft:pumpkin_stem".toResourceLocation() + val MELON_STEM = "minecraft:melon_stem".toResourceLocation() + val VINE = "minecraft:vine".toResourceLocation() + val GLOW_LICHEN = "minecraft:glow_lichen".toResourceLocation() + val OAK_FENCE_GATE = "minecraft:oak_fence_gate".toResourceLocation() + val BRICK_STAIRS = "minecraft:brick_stairs".toResourceLocation() + val STONE_BRICK_STAIRS = "minecraft:stone_brick_stairs".toResourceLocation() + val MYCELIUM = "minecraft:mycelium".toResourceLocation() + val LILY_PAD = "minecraft:lily_pad".toResourceLocation() + val NETHER_BRICKS = "minecraft:nether_bricks".toResourceLocation() + val NETHER_BRICK_FENCE = "minecraft:nether_brick_fence".toResourceLocation() + val NETHER_BRICK_STAIRS = "minecraft:nether_brick_stairs".toResourceLocation() + val NETHER_WART = "minecraft:nether_wart".toResourceLocation() + val ENCHANTING_TABLE = "minecraft:enchanting_table".toResourceLocation() + val BREWING_STAND = "minecraft:brewing_stand".toResourceLocation() + val CAULDRON = "minecraft:cauldron".toResourceLocation() + val WATER_CAULDRON = "minecraft:water_cauldron".toResourceLocation() + val LAVA_CAULDRON = "minecraft:lava_cauldron".toResourceLocation() + val POWDER_SNOW_CAULDRON = "minecraft:powder_snow_cauldron".toResourceLocation() + val END_PORTAL = "minecraft:end_portal".toResourceLocation() + val END_PORTAL_FRAME = "minecraft:end_portal_frame".toResourceLocation() + val END_STONE = "minecraft:end_stone".toResourceLocation() + val DRAGON_EGG = "minecraft:dragon_egg".toResourceLocation() + val REDSTONE_LAMP = "minecraft:redstone_lamp".toResourceLocation() + val COCOA = "minecraft:cocoa".toResourceLocation() + val SANDSTONE_STAIRS = "minecraft:sandstone_stairs".toResourceLocation() + val EMERALD_ORE = "minecraft:emerald_ore".toResourceLocation() + val DEEPSLATE_EMERALD_ORE = "minecraft:deepslate_emerald_ore".toResourceLocation() + val ENDER_CHEST = "minecraft:ender_chest".toResourceLocation() + val TRIPWIRE_HOOK = "minecraft:tripwire_hook".toResourceLocation() + val TRIPWIRE = "minecraft:tripwire".toResourceLocation() + val EMERALD_BLOCK = "minecraft:emerald_block".toResourceLocation() + val SPRUCE_STAIRS = "minecraft:spruce_stairs".toResourceLocation() + val BIRCH_STAIRS = "minecraft:birch_stairs".toResourceLocation() + val JUNGLE_STAIRS = "minecraft:jungle_stairs".toResourceLocation() + val COMMAND_BLOCK = "minecraft:command_block".toResourceLocation() + val BEACON = "minecraft:beacon".toResourceLocation() + val COBBLESTONE_WALL = "minecraft:cobblestone_wall".toResourceLocation() + val MOSSY_COBBLESTONE_WALL = "minecraft:mossy_cobblestone_wall".toResourceLocation() + val FLOWER_POT = "minecraft:flower_pot".toResourceLocation() + val POTTED_OAK_SAPLING = "minecraft:potted_oak_sapling".toResourceLocation() + val POTTED_SPRUCE_SAPLING = "minecraft:potted_spruce_sapling".toResourceLocation() + val POTTED_BIRCH_SAPLING = "minecraft:potted_birch_sapling".toResourceLocation() + val POTTED_JUNGLE_SAPLING = "minecraft:potted_jungle_sapling".toResourceLocation() + val POTTED_ACACIA_SAPLING = "minecraft:potted_acacia_sapling".toResourceLocation() + val POTTED_DARK_OAK_SAPLING = "minecraft:potted_dark_oak_sapling".toResourceLocation() + val POTTED_FERN = "minecraft:potted_fern".toResourceLocation() + val POTTED_DANDELION = "minecraft:potted_dandelion".toResourceLocation() + val POTTED_POPPY = "minecraft:potted_poppy".toResourceLocation() + val POTTED_BLUE_ORCHID = "minecraft:potted_blue_orchid".toResourceLocation() + val POTTED_ALLIUM = "minecraft:potted_allium".toResourceLocation() + val POTTED_AZURE_BLUET = "minecraft:potted_azure_bluet".toResourceLocation() + val POTTED_RED_TULIP = "minecraft:potted_red_tulip".toResourceLocation() + val POTTED_ORANGE_TULIP = "minecraft:potted_orange_tulip".toResourceLocation() + val POTTED_WHITE_TULIP = "minecraft:potted_white_tulip".toResourceLocation() + val POTTED_PINK_TULIP = "minecraft:potted_pink_tulip".toResourceLocation() + val POTTED_OXEYE_DAISY = "minecraft:potted_oxeye_daisy".toResourceLocation() + val POTTED_CORNFLOWER = "minecraft:potted_cornflower".toResourceLocation() + val POTTED_LILY_OF_THE_VALLEY = "minecraft:potted_lily_of_the_valley".toResourceLocation() + val POTTED_WITHER_ROSE = "minecraft:potted_wither_rose".toResourceLocation() + val POTTED_RED_MUSHROOM = "minecraft:potted_red_mushroom".toResourceLocation() + val POTTED_BROWN_MUSHROOM = "minecraft:potted_brown_mushroom".toResourceLocation() + val POTTED_DEAD_BUSH = "minecraft:potted_dead_bush".toResourceLocation() + val POTTED_CACTUS = "minecraft:potted_cactus".toResourceLocation() + val CARROTS = "minecraft:carrots".toResourceLocation() + val POTATOES = "minecraft:potatoes".toResourceLocation() + val OAK_BUTTON = "minecraft:oak_button".toResourceLocation() + val SPRUCE_BUTTON = "minecraft:spruce_button".toResourceLocation() + val BIRCH_BUTTON = "minecraft:birch_button".toResourceLocation() + val JUNGLE_BUTTON = "minecraft:jungle_button".toResourceLocation() + val ACACIA_BUTTON = "minecraft:acacia_button".toResourceLocation() + val DARK_OAK_BUTTON = "minecraft:dark_oak_button".toResourceLocation() + val SKELETON_SKULL = "minecraft:skeleton_skull".toResourceLocation() + val SKELETON_WALL_SKULL = "minecraft:skeleton_wall_skull".toResourceLocation() + val WITHER_SKELETON_SKULL = "minecraft:wither_skeleton_skull".toResourceLocation() + val WITHER_SKELETON_WALL_SKULL = "minecraft:wither_skeleton_wall_skull".toResourceLocation() + val ZOMBIE_HEAD = "minecraft:zombie_head".toResourceLocation() + val ZOMBIE_WALL_HEAD = "minecraft:zombie_wall_head".toResourceLocation() + val PLAYER_HEAD = "minecraft:player_head".toResourceLocation() + val PLAYER_WALL_HEAD = "minecraft:player_wall_head".toResourceLocation() + val CREEPER_HEAD = "minecraft:creeper_head".toResourceLocation() + val CREEPER_WALL_HEAD = "minecraft:creeper_wall_head".toResourceLocation() + val DRAGON_HEAD = "minecraft:dragon_head".toResourceLocation() + val DRAGON_WALL_HEAD = "minecraft:dragon_wall_head".toResourceLocation() + val ANVIL = "minecraft:anvil".toResourceLocation() + val CHIPPED_ANVIL = "minecraft:chipped_anvil".toResourceLocation() + val DAMAGED_ANVIL = "minecraft:damaged_anvil".toResourceLocation() + val TRAPPED_CHEST = "minecraft:trapped_chest".toResourceLocation() + val LIGHT_WEIGHTED_PRESSURE_PLATE = "minecraft:light_weighted_pressure_plate".toResourceLocation() + val HEAVY_WEIGHTED_PRESSURE_PLATE = "minecraft:heavy_weighted_pressure_plate".toResourceLocation() + val COMPARATOR = "minecraft:comparator".toResourceLocation() + val DAYLIGHT_DETECTOR = "minecraft:daylight_detector".toResourceLocation() + val REDSTONE_BLOCK = "minecraft:redstone_block".toResourceLocation() + val NETHER_QUARTZ_ORE = "minecraft:nether_quartz_ore".toResourceLocation() + val HOPPER = "minecraft:hopper".toResourceLocation() + val QUARTZ_BLOCK = "minecraft:quartz_block".toResourceLocation() + val CHISELED_QUARTZ_BLOCK = "minecraft:chiseled_quartz_block".toResourceLocation() + val QUARTZ_PILLAR = "minecraft:quartz_pillar".toResourceLocation() + val QUARTZ_STAIRS = "minecraft:quartz_stairs".toResourceLocation() + val ACTIVATOR_RAIL = "minecraft:activator_rail".toResourceLocation() + val DROPPER = "minecraft:dropper".toResourceLocation() + val WHITE_TERRACOTTA = "minecraft:white_terracotta".toResourceLocation() + val ORANGE_TERRACOTTA = "minecraft:orange_terracotta".toResourceLocation() + val MAGENTA_TERRACOTTA = "minecraft:magenta_terracotta".toResourceLocation() + val LIGHT_BLUE_TERRACOTTA = "minecraft:light_blue_terracotta".toResourceLocation() + val YELLOW_TERRACOTTA = "minecraft:yellow_terracotta".toResourceLocation() + val LIME_TERRACOTTA = "minecraft:lime_terracotta".toResourceLocation() + val PINK_TERRACOTTA = "minecraft:pink_terracotta".toResourceLocation() + val GRAY_TERRACOTTA = "minecraft:gray_terracotta".toResourceLocation() + val LIGHT_GRAY_TERRACOTTA = "minecraft:light_gray_terracotta".toResourceLocation() + val CYAN_TERRACOTTA = "minecraft:cyan_terracotta".toResourceLocation() + val PURPLE_TERRACOTTA = "minecraft:purple_terracotta".toResourceLocation() + val BLUE_TERRACOTTA = "minecraft:blue_terracotta".toResourceLocation() + val BROWN_TERRACOTTA = "minecraft:brown_terracotta".toResourceLocation() + val GREEN_TERRACOTTA = "minecraft:green_terracotta".toResourceLocation() + val RED_TERRACOTTA = "minecraft:red_terracotta".toResourceLocation() + val BLACK_TERRACOTTA = "minecraft:black_terracotta".toResourceLocation() + val WHITE_STAINED_GLASS_PANE = "minecraft:white_stained_glass_pane".toResourceLocation() + val ORANGE_STAINED_GLASS_PANE = "minecraft:orange_stained_glass_pane".toResourceLocation() + val MAGENTA_STAINED_GLASS_PANE = "minecraft:magenta_stained_glass_pane".toResourceLocation() + val LIGHT_BLUE_STAINED_GLASS_PANE = "minecraft:light_blue_stained_glass_pane".toResourceLocation() + val YELLOW_STAINED_GLASS_PANE = "minecraft:yellow_stained_glass_pane".toResourceLocation() + val LIME_STAINED_GLASS_PANE = "minecraft:lime_stained_glass_pane".toResourceLocation() + val PINK_STAINED_GLASS_PANE = "minecraft:pink_stained_glass_pane".toResourceLocation() + val GRAY_STAINED_GLASS_PANE = "minecraft:gray_stained_glass_pane".toResourceLocation() + val LIGHT_GRAY_STAINED_GLASS_PANE = "minecraft:light_gray_stained_glass_pane".toResourceLocation() + val CYAN_STAINED_GLASS_PANE = "minecraft:cyan_stained_glass_pane".toResourceLocation() + val PURPLE_STAINED_GLASS_PANE = "minecraft:purple_stained_glass_pane".toResourceLocation() + val BLUE_STAINED_GLASS_PANE = "minecraft:blue_stained_glass_pane".toResourceLocation() + val BROWN_STAINED_GLASS_PANE = "minecraft:brown_stained_glass_pane".toResourceLocation() + val GREEN_STAINED_GLASS_PANE = "minecraft:green_stained_glass_pane".toResourceLocation() + val RED_STAINED_GLASS_PANE = "minecraft:red_stained_glass_pane".toResourceLocation() + val BLACK_STAINED_GLASS_PANE = "minecraft:black_stained_glass_pane".toResourceLocation() + val ACACIA_STAIRS = "minecraft:acacia_stairs".toResourceLocation() + val DARK_OAK_STAIRS = "minecraft:dark_oak_stairs".toResourceLocation() + val SLIME_BLOCK = "minecraft:slime_block".toResourceLocation() + val BARRIER = "minecraft:barrier".toResourceLocation() + val LIGHT = "minecraft:light".toResourceLocation() + val IRON_TRAPDOOR = "minecraft:iron_trapdoor".toResourceLocation() + val PRISMARINE = "minecraft:prismarine".toResourceLocation() + val PRISMARINE_BRICKS = "minecraft:prismarine_bricks".toResourceLocation() + val DARK_PRISMARINE = "minecraft:dark_prismarine".toResourceLocation() + val PRISMARINE_STAIRS = "minecraft:prismarine_stairs".toResourceLocation() + val PRISMARINE_BRICK_STAIRS = "minecraft:prismarine_brick_stairs".toResourceLocation() + val DARK_PRISMARINE_STAIRS = "minecraft:dark_prismarine_stairs".toResourceLocation() + val PRISMARINE_SLAB = "minecraft:prismarine_slab".toResourceLocation() + val PRISMARINE_BRICK_SLAB = "minecraft:prismarine_brick_slab".toResourceLocation() + val DARK_PRISMARINE_SLAB = "minecraft:dark_prismarine_slab".toResourceLocation() + val SEA_LANTERN = "minecraft:sea_lantern".toResourceLocation() + val HAY_BLOCK = "minecraft:hay_block".toResourceLocation() + val WHITE_CARPET = "minecraft:white_carpet".toResourceLocation() + val ORANGE_CARPET = "minecraft:orange_carpet".toResourceLocation() + val MAGENTA_CARPET = "minecraft:magenta_carpet".toResourceLocation() + val LIGHT_BLUE_CARPET = "minecraft:light_blue_carpet".toResourceLocation() + val YELLOW_CARPET = "minecraft:yellow_carpet".toResourceLocation() + val LIME_CARPET = "minecraft:lime_carpet".toResourceLocation() + val PINK_CARPET = "minecraft:pink_carpet".toResourceLocation() + val GRAY_CARPET = "minecraft:gray_carpet".toResourceLocation() + val LIGHT_GRAY_CARPET = "minecraft:light_gray_carpet".toResourceLocation() + val CYAN_CARPET = "minecraft:cyan_carpet".toResourceLocation() + val PURPLE_CARPET = "minecraft:purple_carpet".toResourceLocation() + val BLUE_CARPET = "minecraft:blue_carpet".toResourceLocation() + val BROWN_CARPET = "minecraft:brown_carpet".toResourceLocation() + val GREEN_CARPET = "minecraft:green_carpet".toResourceLocation() + val RED_CARPET = "minecraft:red_carpet".toResourceLocation() + val BLACK_CARPET = "minecraft:black_carpet".toResourceLocation() + val TERRACOTTA = "minecraft:terracotta".toResourceLocation() + val COAL_BLOCK = "minecraft:coal_block".toResourceLocation() + val PACKED_ICE = "minecraft:packed_ice".toResourceLocation() + val SUNFLOWER = "minecraft:sunflower".toResourceLocation() + val LILAC = "minecraft:lilac".toResourceLocation() + val ROSE_BUSH = "minecraft:rose_bush".toResourceLocation() + val PEONY = "minecraft:peony".toResourceLocation() + val TALL_GRASS = "minecraft:tall_grass".toResourceLocation() + val LARGE_FERN = "minecraft:large_fern".toResourceLocation() + val WHITE_BANNER = "minecraft:white_banner".toResourceLocation() + val ORANGE_BANNER = "minecraft:orange_banner".toResourceLocation() + val MAGENTA_BANNER = "minecraft:magenta_banner".toResourceLocation() + val LIGHT_BLUE_BANNER = "minecraft:light_blue_banner".toResourceLocation() + val YELLOW_BANNER = "minecraft:yellow_banner".toResourceLocation() + val LIME_BANNER = "minecraft:lime_banner".toResourceLocation() + val PINK_BANNER = "minecraft:pink_banner".toResourceLocation() + val GRAY_BANNER = "minecraft:gray_banner".toResourceLocation() + val LIGHT_GRAY_BANNER = "minecraft:light_gray_banner".toResourceLocation() + val CYAN_BANNER = "minecraft:cyan_banner".toResourceLocation() + val PURPLE_BANNER = "minecraft:purple_banner".toResourceLocation() + val BLUE_BANNER = "minecraft:blue_banner".toResourceLocation() + val BROWN_BANNER = "minecraft:brown_banner".toResourceLocation() + val GREEN_BANNER = "minecraft:green_banner".toResourceLocation() + val RED_BANNER = "minecraft:red_banner".toResourceLocation() + val BLACK_BANNER = "minecraft:black_banner".toResourceLocation() + val WHITE_WALL_BANNER = "minecraft:white_wall_banner".toResourceLocation() + val ORANGE_WALL_BANNER = "minecraft:orange_wall_banner".toResourceLocation() + val MAGENTA_WALL_BANNER = "minecraft:magenta_wall_banner".toResourceLocation() + val LIGHT_BLUE_WALL_BANNER = "minecraft:light_blue_wall_banner".toResourceLocation() + val YELLOW_WALL_BANNER = "minecraft:yellow_wall_banner".toResourceLocation() + val LIME_WALL_BANNER = "minecraft:lime_wall_banner".toResourceLocation() + val PINK_WALL_BANNER = "minecraft:pink_wall_banner".toResourceLocation() + val GRAY_WALL_BANNER = "minecraft:gray_wall_banner".toResourceLocation() + val LIGHT_GRAY_WALL_BANNER = "minecraft:light_gray_wall_banner".toResourceLocation() + val CYAN_WALL_BANNER = "minecraft:cyan_wall_banner".toResourceLocation() + val PURPLE_WALL_BANNER = "minecraft:purple_wall_banner".toResourceLocation() + val BLUE_WALL_BANNER = "minecraft:blue_wall_banner".toResourceLocation() + val BROWN_WALL_BANNER = "minecraft:brown_wall_banner".toResourceLocation() + val GREEN_WALL_BANNER = "minecraft:green_wall_banner".toResourceLocation() + val RED_WALL_BANNER = "minecraft:red_wall_banner".toResourceLocation() + val BLACK_WALL_BANNER = "minecraft:black_wall_banner".toResourceLocation() + val RED_SANDSTONE = "minecraft:red_sandstone".toResourceLocation() + val CHISELED_RED_SANDSTONE = "minecraft:chiseled_red_sandstone".toResourceLocation() + val CUT_RED_SANDSTONE = "minecraft:cut_red_sandstone".toResourceLocation() + val RED_SANDSTONE_STAIRS = "minecraft:red_sandstone_stairs".toResourceLocation() + val OAK_SLAB = "minecraft:oak_slab".toResourceLocation() + val SPRUCE_SLAB = "minecraft:spruce_slab".toResourceLocation() + val BIRCH_SLAB = "minecraft:birch_slab".toResourceLocation() + val JUNGLE_SLAB = "minecraft:jungle_slab".toResourceLocation() + val ACACIA_SLAB = "minecraft:acacia_slab".toResourceLocation() + val DARK_OAK_SLAB = "minecraft:dark_oak_slab".toResourceLocation() + val STONE_SLAB = "minecraft:stone_slab".toResourceLocation() + val SMOOTH_STONE_SLAB = "minecraft:smooth_stone_slab".toResourceLocation() + val SANDSTONE_SLAB = "minecraft:sandstone_slab".toResourceLocation() + val CUT_SANDSTONE_SLAB = "minecraft:cut_sandstone_slab".toResourceLocation() + val PETRIFIED_OAK_SLAB = "minecraft:petrified_oak_slab".toResourceLocation() + val COBBLESTONE_SLAB = "minecraft:cobblestone_slab".toResourceLocation() + val BRICK_SLAB = "minecraft:brick_slab".toResourceLocation() + val STONE_BRICK_SLAB = "minecraft:stone_brick_slab".toResourceLocation() + val NETHER_BRICK_SLAB = "minecraft:nether_brick_slab".toResourceLocation() + val QUARTZ_SLAB = "minecraft:quartz_slab".toResourceLocation() + val RED_SANDSTONE_SLAB = "minecraft:red_sandstone_slab".toResourceLocation() + val CUT_RED_SANDSTONE_SLAB = "minecraft:cut_red_sandstone_slab".toResourceLocation() + val PURPUR_SLAB = "minecraft:purpur_slab".toResourceLocation() + val SMOOTH_STONE = "minecraft:smooth_stone".toResourceLocation() + val SMOOTH_SANDSTONE = "minecraft:smooth_sandstone".toResourceLocation() + val SMOOTH_QUARTZ = "minecraft:smooth_quartz".toResourceLocation() + val SMOOTH_RED_SANDSTONE = "minecraft:smooth_red_sandstone".toResourceLocation() + val SPRUCE_FENCE_GATE = "minecraft:spruce_fence_gate".toResourceLocation() + val BIRCH_FENCE_GATE = "minecraft:birch_fence_gate".toResourceLocation() + val JUNGLE_FENCE_GATE = "minecraft:jungle_fence_gate".toResourceLocation() + val ACACIA_FENCE_GATE = "minecraft:acacia_fence_gate".toResourceLocation() + val DARK_OAK_FENCE_GATE = "minecraft:dark_oak_fence_gate".toResourceLocation() + val SPRUCE_FENCE = "minecraft:spruce_fence".toResourceLocation() + val BIRCH_FENCE = "minecraft:birch_fence".toResourceLocation() + val JUNGLE_FENCE = "minecraft:jungle_fence".toResourceLocation() + val ACACIA_FENCE = "minecraft:acacia_fence".toResourceLocation() + val DARK_OAK_FENCE = "minecraft:dark_oak_fence".toResourceLocation() + val SPRUCE_DOOR = "minecraft:spruce_door".toResourceLocation() + val BIRCH_DOOR = "minecraft:birch_door".toResourceLocation() + val JUNGLE_DOOR = "minecraft:jungle_door".toResourceLocation() + val ACACIA_DOOR = "minecraft:acacia_door".toResourceLocation() + val DARK_OAK_DOOR = "minecraft:dark_oak_door".toResourceLocation() + val END_ROD = "minecraft:end_rod".toResourceLocation() + val CHORUS_PLANT = "minecraft:chorus_plant".toResourceLocation() + val CHORUS_FLOWER = "minecraft:chorus_flower".toResourceLocation() + val PURPUR_BLOCK = "minecraft:purpur_block".toResourceLocation() + val PURPUR_PILLAR = "minecraft:purpur_pillar".toResourceLocation() + val PURPUR_STAIRS = "minecraft:purpur_stairs".toResourceLocation() + val END_STONE_BRICKS = "minecraft:end_stone_bricks".toResourceLocation() + val BEETROOTS = "minecraft:beetroots".toResourceLocation() + val DIRT_PATH = "minecraft:dirt_path".toResourceLocation() + val END_GATEWAY = "minecraft:end_gateway".toResourceLocation() + val REPEATING_COMMAND_BLOCK = "minecraft:repeating_command_block".toResourceLocation() + val CHAIN_COMMAND_BLOCK = "minecraft:chain_command_block".toResourceLocation() + val FROSTED_ICE = "minecraft:frosted_ice".toResourceLocation() + val MAGMA_BLOCK = "minecraft:magma_block".toResourceLocation() + val NETHER_WART_BLOCK = "minecraft:nether_wart_block".toResourceLocation() + val RED_NETHER_BRICKS = "minecraft:red_nether_bricks".toResourceLocation() + val BONE_BLOCK = "minecraft:bone_block".toResourceLocation() + val STRUCTURE_VOID = "minecraft:structure_void".toResourceLocation() + val OBSERVER = "minecraft:observer".toResourceLocation() + val SHULKER_BOX = "minecraft:shulker_box".toResourceLocation() + val WHITE_SHULKER_BOX = "minecraft:white_shulker_box".toResourceLocation() + val ORANGE_SHULKER_BOX = "minecraft:orange_shulker_box".toResourceLocation() + val MAGENTA_SHULKER_BOX = "minecraft:magenta_shulker_box".toResourceLocation() + val LIGHT_BLUE_SHULKER_BOX = "minecraft:light_blue_shulker_box".toResourceLocation() + val YELLOW_SHULKER_BOX = "minecraft:yellow_shulker_box".toResourceLocation() + val LIME_SHULKER_BOX = "minecraft:lime_shulker_box".toResourceLocation() + val PINK_SHULKER_BOX = "minecraft:pink_shulker_box".toResourceLocation() + val GRAY_SHULKER_BOX = "minecraft:gray_shulker_box".toResourceLocation() + val LIGHT_GRAY_SHULKER_BOX = "minecraft:light_gray_shulker_box".toResourceLocation() + val CYAN_SHULKER_BOX = "minecraft:cyan_shulker_box".toResourceLocation() + val PURPLE_SHULKER_BOX = "minecraft:purple_shulker_box".toResourceLocation() + val BLUE_SHULKER_BOX = "minecraft:blue_shulker_box".toResourceLocation() + val BROWN_SHULKER_BOX = "minecraft:brown_shulker_box".toResourceLocation() + val GREEN_SHULKER_BOX = "minecraft:green_shulker_box".toResourceLocation() + val RED_SHULKER_BOX = "minecraft:red_shulker_box".toResourceLocation() + val BLACK_SHULKER_BOX = "minecraft:black_shulker_box".toResourceLocation() + val WHITE_GLAZED_TERRACOTTA = "minecraft:white_glazed_terracotta".toResourceLocation() + val ORANGE_GLAZED_TERRACOTTA = "minecraft:orange_glazed_terracotta".toResourceLocation() + val MAGENTA_GLAZED_TERRACOTTA = "minecraft:magenta_glazed_terracotta".toResourceLocation() + val LIGHT_BLUE_GLAZED_TERRACOTTA = "minecraft:light_blue_glazed_terracotta".toResourceLocation() + val YELLOW_GLAZED_TERRACOTTA = "minecraft:yellow_glazed_terracotta".toResourceLocation() + val LIME_GLAZED_TERRACOTTA = "minecraft:lime_glazed_terracotta".toResourceLocation() + val PINK_GLAZED_TERRACOTTA = "minecraft:pink_glazed_terracotta".toResourceLocation() + val GRAY_GLAZED_TERRACOTTA = "minecraft:gray_glazed_terracotta".toResourceLocation() + val LIGHT_GRAY_GLAZED_TERRACOTTA = "minecraft:light_gray_glazed_terracotta".toResourceLocation() + val CYAN_GLAZED_TERRACOTTA = "minecraft:cyan_glazed_terracotta".toResourceLocation() + val PURPLE_GLAZED_TERRACOTTA = "minecraft:purple_glazed_terracotta".toResourceLocation() + val BLUE_GLAZED_TERRACOTTA = "minecraft:blue_glazed_terracotta".toResourceLocation() + val BROWN_GLAZED_TERRACOTTA = "minecraft:brown_glazed_terracotta".toResourceLocation() + val GREEN_GLAZED_TERRACOTTA = "minecraft:green_glazed_terracotta".toResourceLocation() + val RED_GLAZED_TERRACOTTA = "minecraft:red_glazed_terracotta".toResourceLocation() + val BLACK_GLAZED_TERRACOTTA = "minecraft:black_glazed_terracotta".toResourceLocation() + val WHITE_CONCRETE = "minecraft:white_concrete".toResourceLocation() + val ORANGE_CONCRETE = "minecraft:orange_concrete".toResourceLocation() + val MAGENTA_CONCRETE = "minecraft:magenta_concrete".toResourceLocation() + val LIGHT_BLUE_CONCRETE = "minecraft:light_blue_concrete".toResourceLocation() + val YELLOW_CONCRETE = "minecraft:yellow_concrete".toResourceLocation() + val LIME_CONCRETE = "minecraft:lime_concrete".toResourceLocation() + val PINK_CONCRETE = "minecraft:pink_concrete".toResourceLocation() + val GRAY_CONCRETE = "minecraft:gray_concrete".toResourceLocation() + val LIGHT_GRAY_CONCRETE = "minecraft:light_gray_concrete".toResourceLocation() + val CYAN_CONCRETE = "minecraft:cyan_concrete".toResourceLocation() + val PURPLE_CONCRETE = "minecraft:purple_concrete".toResourceLocation() + val BLUE_CONCRETE = "minecraft:blue_concrete".toResourceLocation() + val BROWN_CONCRETE = "minecraft:brown_concrete".toResourceLocation() + val GREEN_CONCRETE = "minecraft:green_concrete".toResourceLocation() + val RED_CONCRETE = "minecraft:red_concrete".toResourceLocation() + val BLACK_CONCRETE = "minecraft:black_concrete".toResourceLocation() + val WHITE_CONCRETE_POWDER = "minecraft:white_concrete_powder".toResourceLocation() + val ORANGE_CONCRETE_POWDER = "minecraft:orange_concrete_powder".toResourceLocation() + val MAGENTA_CONCRETE_POWDER = "minecraft:magenta_concrete_powder".toResourceLocation() + val LIGHT_BLUE_CONCRETE_POWDER = "minecraft:light_blue_concrete_powder".toResourceLocation() + val YELLOW_CONCRETE_POWDER = "minecraft:yellow_concrete_powder".toResourceLocation() + val LIME_CONCRETE_POWDER = "minecraft:lime_concrete_powder".toResourceLocation() + val PINK_CONCRETE_POWDER = "minecraft:pink_concrete_powder".toResourceLocation() + val GRAY_CONCRETE_POWDER = "minecraft:gray_concrete_powder".toResourceLocation() + val LIGHT_GRAY_CONCRETE_POWDER = "minecraft:light_gray_concrete_powder".toResourceLocation() + val CYAN_CONCRETE_POWDER = "minecraft:cyan_concrete_powder".toResourceLocation() + val PURPLE_CONCRETE_POWDER = "minecraft:purple_concrete_powder".toResourceLocation() + val BLUE_CONCRETE_POWDER = "minecraft:blue_concrete_powder".toResourceLocation() + val BROWN_CONCRETE_POWDER = "minecraft:brown_concrete_powder".toResourceLocation() + val GREEN_CONCRETE_POWDER = "minecraft:green_concrete_powder".toResourceLocation() + val RED_CONCRETE_POWDER = "minecraft:red_concrete_powder".toResourceLocation() + val BLACK_CONCRETE_POWDER = "minecraft:black_concrete_powder".toResourceLocation() + val KELP = "minecraft:kelp".toResourceLocation() + val KELP_PLANT = "minecraft:kelp_plant".toResourceLocation() + val DRIED_KELP_BLOCK = "minecraft:dried_kelp_block".toResourceLocation() + val TURTLE_EGG = "minecraft:turtle_egg".toResourceLocation() + val DEAD_TUBE_CORAL_BLOCK = "minecraft:dead_tube_coral_block".toResourceLocation() + val DEAD_BRAIN_CORAL_BLOCK = "minecraft:dead_brain_coral_block".toResourceLocation() + val DEAD_BUBBLE_CORAL_BLOCK = "minecraft:dead_bubble_coral_block".toResourceLocation() + val DEAD_FIRE_CORAL_BLOCK = "minecraft:dead_fire_coral_block".toResourceLocation() + val DEAD_HORN_CORAL_BLOCK = "minecraft:dead_horn_coral_block".toResourceLocation() + val TUBE_CORAL_BLOCK = "minecraft:tube_coral_block".toResourceLocation() + val BRAIN_CORAL_BLOCK = "minecraft:brain_coral_block".toResourceLocation() + val BUBBLE_CORAL_BLOCK = "minecraft:bubble_coral_block".toResourceLocation() + val FIRE_CORAL_BLOCK = "minecraft:fire_coral_block".toResourceLocation() + val HORN_CORAL_BLOCK = "minecraft:horn_coral_block".toResourceLocation() + val DEAD_TUBE_CORAL = "minecraft:dead_tube_coral".toResourceLocation() + val DEAD_BRAIN_CORAL = "minecraft:dead_brain_coral".toResourceLocation() + val DEAD_BUBBLE_CORAL = "minecraft:dead_bubble_coral".toResourceLocation() + val DEAD_FIRE_CORAL = "minecraft:dead_fire_coral".toResourceLocation() + val DEAD_HORN_CORAL = "minecraft:dead_horn_coral".toResourceLocation() + val TUBE_CORAL = "minecraft:tube_coral".toResourceLocation() + val BRAIN_CORAL = "minecraft:brain_coral".toResourceLocation() + val BUBBLE_CORAL = "minecraft:bubble_coral".toResourceLocation() + val FIRE_CORAL = "minecraft:fire_coral".toResourceLocation() + val HORN_CORAL = "minecraft:horn_coral".toResourceLocation() + val DEAD_TUBE_CORAL_FAN = "minecraft:dead_tube_coral_fan".toResourceLocation() + val DEAD_BRAIN_CORAL_FAN = "minecraft:dead_brain_coral_fan".toResourceLocation() + val DEAD_BUBBLE_CORAL_FAN = "minecraft:dead_bubble_coral_fan".toResourceLocation() + val DEAD_FIRE_CORAL_FAN = "minecraft:dead_fire_coral_fan".toResourceLocation() + val DEAD_HORN_CORAL_FAN = "minecraft:dead_horn_coral_fan".toResourceLocation() + val TUBE_CORAL_FAN = "minecraft:tube_coral_fan".toResourceLocation() + val BRAIN_CORAL_FAN = "minecraft:brain_coral_fan".toResourceLocation() + val BUBBLE_CORAL_FAN = "minecraft:bubble_coral_fan".toResourceLocation() + val FIRE_CORAL_FAN = "minecraft:fire_coral_fan".toResourceLocation() + val HORN_CORAL_FAN = "minecraft:horn_coral_fan".toResourceLocation() + val DEAD_TUBE_CORAL_WALL_FAN = "minecraft:dead_tube_coral_wall_fan".toResourceLocation() + val DEAD_BRAIN_CORAL_WALL_FAN = "minecraft:dead_brain_coral_wall_fan".toResourceLocation() + val DEAD_BUBBLE_CORAL_WALL_FAN = "minecraft:dead_bubble_coral_wall_fan".toResourceLocation() + val DEAD_FIRE_CORAL_WALL_FAN = "minecraft:dead_fire_coral_wall_fan".toResourceLocation() + val DEAD_HORN_CORAL_WALL_FAN = "minecraft:dead_horn_coral_wall_fan".toResourceLocation() + val TUBE_CORAL_WALL_FAN = "minecraft:tube_coral_wall_fan".toResourceLocation() + val BRAIN_CORAL_WALL_FAN = "minecraft:brain_coral_wall_fan".toResourceLocation() + val BUBBLE_CORAL_WALL_FAN = "minecraft:bubble_coral_wall_fan".toResourceLocation() + val FIRE_CORAL_WALL_FAN = "minecraft:fire_coral_wall_fan".toResourceLocation() + val HORN_CORAL_WALL_FAN = "minecraft:horn_coral_wall_fan".toResourceLocation() + val SEA_PICKLE = "minecraft:sea_pickle".toResourceLocation() + val BLUE_ICE = "minecraft:blue_ice".toResourceLocation() + val CONDUIT = "minecraft:conduit".toResourceLocation() + val BAMBOO_SAPLING = "minecraft:bamboo_sapling".toResourceLocation() + val BAMBOO = "minecraft:bamboo".toResourceLocation() + val POTTED_BAMBOO = "minecraft:potted_bamboo".toResourceLocation() + val VOID_AIR = "minecraft:void_air".toResourceLocation() + val CAVE_AIR = "minecraft:cave_air".toResourceLocation() + val BUBBLE_COLUMN = "minecraft:bubble_column".toResourceLocation() + val POLISHED_GRANITE_STAIRS = "minecraft:polished_granite_stairs".toResourceLocation() + val SMOOTH_RED_SANDSTONE_STAIRS = "minecraft:smooth_red_sandstone_stairs".toResourceLocation() + val MOSSY_STONE_BRICK_STAIRS = "minecraft:mossy_stone_brick_stairs".toResourceLocation() + val POLISHED_DIORITE_STAIRS = "minecraft:polished_diorite_stairs".toResourceLocation() + val MOSSY_COBBLESTONE_STAIRS = "minecraft:mossy_cobblestone_stairs".toResourceLocation() + val END_STONE_BRICK_STAIRS = "minecraft:end_stone_brick_stairs".toResourceLocation() + val STONE_STAIRS = "minecraft:stone_stairs".toResourceLocation() + val SMOOTH_SANDSTONE_STAIRS = "minecraft:smooth_sandstone_stairs".toResourceLocation() + val SMOOTH_QUARTZ_STAIRS = "minecraft:smooth_quartz_stairs".toResourceLocation() + val GRANITE_STAIRS = "minecraft:granite_stairs".toResourceLocation() + val ANDESITE_STAIRS = "minecraft:andesite_stairs".toResourceLocation() + val RED_NETHER_BRICK_STAIRS = "minecraft:red_nether_brick_stairs".toResourceLocation() + val POLISHED_ANDESITE_STAIRS = "minecraft:polished_andesite_stairs".toResourceLocation() + val DIORITE_STAIRS = "minecraft:diorite_stairs".toResourceLocation() + val POLISHED_GRANITE_SLAB = "minecraft:polished_granite_slab".toResourceLocation() + val SMOOTH_RED_SANDSTONE_SLAB = "minecraft:smooth_red_sandstone_slab".toResourceLocation() + val MOSSY_STONE_BRICK_SLAB = "minecraft:mossy_stone_brick_slab".toResourceLocation() + val POLISHED_DIORITE_SLAB = "minecraft:polished_diorite_slab".toResourceLocation() + val MOSSY_COBBLESTONE_SLAB = "minecraft:mossy_cobblestone_slab".toResourceLocation() + val END_STONE_BRICK_SLAB = "minecraft:end_stone_brick_slab".toResourceLocation() + val SMOOTH_SANDSTONE_SLAB = "minecraft:smooth_sandstone_slab".toResourceLocation() + val SMOOTH_QUARTZ_SLAB = "minecraft:smooth_quartz_slab".toResourceLocation() + val GRANITE_SLAB = "minecraft:granite_slab".toResourceLocation() + val ANDESITE_SLAB = "minecraft:andesite_slab".toResourceLocation() + val RED_NETHER_BRICK_SLAB = "minecraft:red_nether_brick_slab".toResourceLocation() + val POLISHED_ANDESITE_SLAB = "minecraft:polished_andesite_slab".toResourceLocation() + val DIORITE_SLAB = "minecraft:diorite_slab".toResourceLocation() + val BRICK_WALL = "minecraft:brick_wall".toResourceLocation() + val PRISMARINE_WALL = "minecraft:prismarine_wall".toResourceLocation() + val RED_SANDSTONE_WALL = "minecraft:red_sandstone_wall".toResourceLocation() + val MOSSY_STONE_BRICK_WALL = "minecraft:mossy_stone_brick_wall".toResourceLocation() + val GRANITE_WALL = "minecraft:granite_wall".toResourceLocation() + val STONE_BRICK_WALL = "minecraft:stone_brick_wall".toResourceLocation() + val NETHER_BRICK_WALL = "minecraft:nether_brick_wall".toResourceLocation() + val ANDESITE_WALL = "minecraft:andesite_wall".toResourceLocation() + val RED_NETHER_BRICK_WALL = "minecraft:red_nether_brick_wall".toResourceLocation() + val SANDSTONE_WALL = "minecraft:sandstone_wall".toResourceLocation() + val END_STONE_BRICK_WALL = "minecraft:end_stone_brick_wall".toResourceLocation() + val DIORITE_WALL = "minecraft:diorite_wall".toResourceLocation() + val SCAFFOLDING = "minecraft:scaffolding".toResourceLocation() + val LOOM = "minecraft:loom".toResourceLocation() + val BARREL = "minecraft:barrel".toResourceLocation() + val SMOKER = "minecraft:smoker".toResourceLocation() + val BLAST_FURNACE = "minecraft:blast_furnace".toResourceLocation() + val CARTOGRAPHY_TABLE = "minecraft:cartography_table".toResourceLocation() + val FLETCHING_TABLE = "minecraft:fletching_table".toResourceLocation() + val GRINDSTONE = "minecraft:grindstone".toResourceLocation() + val LECTERN = "minecraft:lectern".toResourceLocation() + val SMITHING_TABLE = "minecraft:smithing_table".toResourceLocation() + val STONECUTTER = "minecraft:stonecutter".toResourceLocation() + val BELL = "minecraft:bell".toResourceLocation() + val LANTERN = "minecraft:lantern".toResourceLocation() + val SOUL_LANTERN = "minecraft:soul_lantern".toResourceLocation() + val CAMPFIRE = "minecraft:campfire".toResourceLocation() + val SOUL_CAMPFIRE = "minecraft:soul_campfire".toResourceLocation() + val SWEET_BERRY_BUSH = "minecraft:sweet_berry_bush".toResourceLocation() + val WARPED_STEM = "minecraft:warped_stem".toResourceLocation() + val STRIPPED_WARPED_STEM = "minecraft:stripped_warped_stem".toResourceLocation() + val WARPED_HYPHAE = "minecraft:warped_hyphae".toResourceLocation() + val STRIPPED_WARPED_HYPHAE = "minecraft:stripped_warped_hyphae".toResourceLocation() + val WARPED_NYLIUM = "minecraft:warped_nylium".toResourceLocation() + val WARPED_FUNGUS = "minecraft:warped_fungus".toResourceLocation() + val WARPED_WART_BLOCK = "minecraft:warped_wart_block".toResourceLocation() + val WARPED_ROOTS = "minecraft:warped_roots".toResourceLocation() + val NETHER_SPROUTS = "minecraft:nether_sprouts".toResourceLocation() + val CRIMSON_STEM = "minecraft:crimson_stem".toResourceLocation() + val STRIPPED_CRIMSON_STEM = "minecraft:stripped_crimson_stem".toResourceLocation() + val CRIMSON_HYPHAE = "minecraft:crimson_hyphae".toResourceLocation() + val STRIPPED_CRIMSON_HYPHAE = "minecraft:stripped_crimson_hyphae".toResourceLocation() + val CRIMSON_NYLIUM = "minecraft:crimson_nylium".toResourceLocation() + val CRIMSON_FUNGUS = "minecraft:crimson_fungus".toResourceLocation() + val SHROOMLIGHT = "minecraft:shroomlight".toResourceLocation() + val WEEPING_VINES = "minecraft:weeping_vines".toResourceLocation() + val WEEPING_VINES_PLANT = "minecraft:weeping_vines_plant".toResourceLocation() + val TWISTING_VINES = "minecraft:twisting_vines".toResourceLocation() + val TWISTING_VINES_PLANT = "minecraft:twisting_vines_plant".toResourceLocation() + val CRIMSON_ROOTS = "minecraft:crimson_roots".toResourceLocation() + val CRIMSON_PLANKS = "minecraft:crimson_planks".toResourceLocation() + val WARPED_PLANKS = "minecraft:warped_planks".toResourceLocation() + val CRIMSON_SLAB = "minecraft:crimson_slab".toResourceLocation() + val WARPED_SLAB = "minecraft:warped_slab".toResourceLocation() + val CRIMSON_PRESSURE_PLATE = "minecraft:crimson_pressure_plate".toResourceLocation() + val WARPED_PRESSURE_PLATE = "minecraft:warped_pressure_plate".toResourceLocation() + val CRIMSON_FENCE = "minecraft:crimson_fence".toResourceLocation() + val WARPED_FENCE = "minecraft:warped_fence".toResourceLocation() + val CRIMSON_TRAPDOOR = "minecraft:crimson_trapdoor".toResourceLocation() + val WARPED_TRAPDOOR = "minecraft:warped_trapdoor".toResourceLocation() + val CRIMSON_FENCE_GATE = "minecraft:crimson_fence_gate".toResourceLocation() + val WARPED_FENCE_GATE = "minecraft:warped_fence_gate".toResourceLocation() + val CRIMSON_STAIRS = "minecraft:crimson_stairs".toResourceLocation() + val WARPED_STAIRS = "minecraft:warped_stairs".toResourceLocation() + val CRIMSON_BUTTON = "minecraft:crimson_button".toResourceLocation() + val WARPED_BUTTON = "minecraft:warped_button".toResourceLocation() + val CRIMSON_DOOR = "minecraft:crimson_door".toResourceLocation() + val WARPED_DOOR = "minecraft:warped_door".toResourceLocation() + val CRIMSON_SIGN = "minecraft:crimson_sign".toResourceLocation() + val WARPED_SIGN = "minecraft:warped_sign".toResourceLocation() + val CRIMSON_WALL_SIGN = "minecraft:crimson_wall_sign".toResourceLocation() + val WARPED_WALL_SIGN = "minecraft:warped_wall_sign".toResourceLocation() + val STRUCTURE_BLOCK = "minecraft:structure_block".toResourceLocation() + val JIGSAW = "minecraft:jigsaw".toResourceLocation() + val COMPOSTER = "minecraft:composter".toResourceLocation() + val TARGET = "minecraft:target".toResourceLocation() + val BEE_NEST = "minecraft:bee_nest".toResourceLocation() + val BEEHIVE = "minecraft:beehive".toResourceLocation() + val HONEY_BLOCK = "minecraft:honey_block".toResourceLocation() + val HONEYCOMB_BLOCK = "minecraft:honeycomb_block".toResourceLocation() + val NETHERITE_BLOCK = "minecraft:netherite_block".toResourceLocation() + val ANCIENT_DEBRIS = "minecraft:ancient_debris".toResourceLocation() + val CRYING_OBSIDIAN = "minecraft:crying_obsidian".toResourceLocation() + val RESPAWN_ANCHOR = "minecraft:respawn_anchor".toResourceLocation() + val POTTED_CRIMSON_FUNGUS = "minecraft:potted_crimson_fungus".toResourceLocation() + val POTTED_WARPED_FUNGUS = "minecraft:potted_warped_fungus".toResourceLocation() + val POTTED_CRIMSON_ROOTS = "minecraft:potted_crimson_roots".toResourceLocation() + val POTTED_WARPED_ROOTS = "minecraft:potted_warped_roots".toResourceLocation() + val LODESTONE = "minecraft:lodestone".toResourceLocation() + val BLACKSTONE = "minecraft:blackstone".toResourceLocation() + val BLACKSTONE_STAIRS = "minecraft:blackstone_stairs".toResourceLocation() + val BLACKSTONE_WALL = "minecraft:blackstone_wall".toResourceLocation() + val BLACKSTONE_SLAB = "minecraft:blackstone_slab".toResourceLocation() + val POLISHED_BLACKSTONE = "minecraft:polished_blackstone".toResourceLocation() + val POLISHED_BLACKSTONE_BRICKS = "minecraft:polished_blackstone_bricks".toResourceLocation() + val CRACKED_POLISHED_BLACKSTONE_BRICKS = "minecraft:cracked_polished_blackstone_bricks".toResourceLocation() + val CHISELED_POLISHED_BLACKSTONE = "minecraft:chiseled_polished_blackstone".toResourceLocation() + val POLISHED_BLACKSTONE_BRICK_SLAB = "minecraft:polished_blackstone_brick_slab".toResourceLocation() + val POLISHED_BLACKSTONE_BRICK_STAIRS = "minecraft:polished_blackstone_brick_stairs".toResourceLocation() + val POLISHED_BLACKSTONE_BRICK_WALL = "minecraft:polished_blackstone_brick_wall".toResourceLocation() + val GILDED_BLACKSTONE = "minecraft:gilded_blackstone".toResourceLocation() + val POLISHED_BLACKSTONE_STAIRS = "minecraft:polished_blackstone_stairs".toResourceLocation() + val POLISHED_BLACKSTONE_SLAB = "minecraft:polished_blackstone_slab".toResourceLocation() + val POLISHED_BLACKSTONE_PRESSURE_PLATE = "minecraft:polished_blackstone_pressure_plate".toResourceLocation() + val POLISHED_BLACKSTONE_BUTTON = "minecraft:polished_blackstone_button".toResourceLocation() + val POLISHED_BLACKSTONE_WALL = "minecraft:polished_blackstone_wall".toResourceLocation() + val CHISELED_NETHER_BRICKS = "minecraft:chiseled_nether_bricks".toResourceLocation() + val CRACKED_NETHER_BRICKS = "minecraft:cracked_nether_bricks".toResourceLocation() + val QUARTZ_BRICKS = "minecraft:quartz_bricks".toResourceLocation() + val CANDLE = "minecraft:candle".toResourceLocation() + val WHITE_CANDLE = "minecraft:white_candle".toResourceLocation() + val ORANGE_CANDLE = "minecraft:orange_candle".toResourceLocation() + val MAGENTA_CANDLE = "minecraft:magenta_candle".toResourceLocation() + val LIGHT_BLUE_CANDLE = "minecraft:light_blue_candle".toResourceLocation() + val YELLOW_CANDLE = "minecraft:yellow_candle".toResourceLocation() + val LIME_CANDLE = "minecraft:lime_candle".toResourceLocation() + val PINK_CANDLE = "minecraft:pink_candle".toResourceLocation() + val GRAY_CANDLE = "minecraft:gray_candle".toResourceLocation() + val LIGHT_GRAY_CANDLE = "minecraft:light_gray_candle".toResourceLocation() + val CYAN_CANDLE = "minecraft:cyan_candle".toResourceLocation() + val PURPLE_CANDLE = "minecraft:purple_candle".toResourceLocation() + val BLUE_CANDLE = "minecraft:blue_candle".toResourceLocation() + val BROWN_CANDLE = "minecraft:brown_candle".toResourceLocation() + val GREEN_CANDLE = "minecraft:green_candle".toResourceLocation() + val RED_CANDLE = "minecraft:red_candle".toResourceLocation() + val BLACK_CANDLE = "minecraft:black_candle".toResourceLocation() + val CANDLE_CAKE = "minecraft:candle_cake".toResourceLocation() + val WHITE_CANDLE_CAKE = "minecraft:white_candle_cake".toResourceLocation() + val ORANGE_CANDLE_CAKE = "minecraft:orange_candle_cake".toResourceLocation() + val MAGENTA_CANDLE_CAKE = "minecraft:magenta_candle_cake".toResourceLocation() + val LIGHT_BLUE_CANDLE_CAKE = "minecraft:light_blue_candle_cake".toResourceLocation() + val YELLOW_CANDLE_CAKE = "minecraft:yellow_candle_cake".toResourceLocation() + val LIME_CANDLE_CAKE = "minecraft:lime_candle_cake".toResourceLocation() + val PINK_CANDLE_CAKE = "minecraft:pink_candle_cake".toResourceLocation() + val GRAY_CANDLE_CAKE = "minecraft:gray_candle_cake".toResourceLocation() + val LIGHT_GRAY_CANDLE_CAKE = "minecraft:light_gray_candle_cake".toResourceLocation() + val CYAN_CANDLE_CAKE = "minecraft:cyan_candle_cake".toResourceLocation() + val PURPLE_CANDLE_CAKE = "minecraft:purple_candle_cake".toResourceLocation() + val BLUE_CANDLE_CAKE = "minecraft:blue_candle_cake".toResourceLocation() + val BROWN_CANDLE_CAKE = "minecraft:brown_candle_cake".toResourceLocation() + val GREEN_CANDLE_CAKE = "minecraft:green_candle_cake".toResourceLocation() + val RED_CANDLE_CAKE = "minecraft:red_candle_cake".toResourceLocation() + val BLACK_CANDLE_CAKE = "minecraft:black_candle_cake".toResourceLocation() + val AMETHYST_BLOCK = "minecraft:amethyst_block".toResourceLocation() + val BUDDING_AMETHYST = "minecraft:budding_amethyst".toResourceLocation() + val AMETHYST_CLUSTER = "minecraft:amethyst_cluster".toResourceLocation() + val LARGE_AMETHYST_BUD = "minecraft:large_amethyst_bud".toResourceLocation() + val MEDIUM_AMETHYST_BUD = "minecraft:medium_amethyst_bud".toResourceLocation() + val SMALL_AMETHYST_BUD = "minecraft:small_amethyst_bud".toResourceLocation() + val TUFF = "minecraft:tuff".toResourceLocation() + val CALCITE = "minecraft:calcite".toResourceLocation() + val TINTED_GLASS = "minecraft:tinted_glass".toResourceLocation() + val POWDER_SNOW = "minecraft:powder_snow".toResourceLocation() + val SCULK_SENSOR = "minecraft:sculk_sensor".toResourceLocation() + val OXIDIZED_COPPER = "minecraft:oxidized_copper".toResourceLocation() + val WEATHERED_COPPER = "minecraft:weathered_copper".toResourceLocation() + val EXPOSED_COPPER = "minecraft:exposed_copper".toResourceLocation() + val COPPER_BLOCK = "minecraft:copper_block".toResourceLocation() + val COPPER_ORE = "minecraft:copper_ore".toResourceLocation() + val DEEPSLATE_COPPER_ORE = "minecraft:deepslate_copper_ore".toResourceLocation() + val OXIDIZED_CUT_COPPER = "minecraft:oxidized_cut_copper".toResourceLocation() + val WEATHERED_CUT_COPPER = "minecraft:weathered_cut_copper".toResourceLocation() + val EXPOSED_CUT_COPPER = "minecraft:exposed_cut_copper".toResourceLocation() + val CUT_COPPER = "minecraft:cut_copper".toResourceLocation() + val OXIDIZED_CUT_COPPER_STAIRS = "minecraft:oxidized_cut_copper_stairs".toResourceLocation() + val WEATHERED_CUT_COPPER_STAIRS = "minecraft:weathered_cut_copper_stairs".toResourceLocation() + val EXPOSED_CUT_COPPER_STAIRS = "minecraft:exposed_cut_copper_stairs".toResourceLocation() + val CUT_COPPER_STAIRS = "minecraft:cut_copper_stairs".toResourceLocation() + val OXIDIZED_CUT_COPPER_SLAB = "minecraft:oxidized_cut_copper_slab".toResourceLocation() + val WEATHERED_CUT_COPPER_SLAB = "minecraft:weathered_cut_copper_slab".toResourceLocation() + val EXPOSED_CUT_COPPER_SLAB = "minecraft:exposed_cut_copper_slab".toResourceLocation() + val CUT_COPPER_SLAB = "minecraft:cut_copper_slab".toResourceLocation() + val WAXED_COPPER_BLOCK = "minecraft:waxed_copper_block".toResourceLocation() + val WAXED_WEATHERED_COPPER = "minecraft:waxed_weathered_copper".toResourceLocation() + val WAXED_EXPOSED_COPPER = "minecraft:waxed_exposed_copper".toResourceLocation() + val WAXED_OXIDIZED_COPPER = "minecraft:waxed_oxidized_copper".toResourceLocation() + val WAXED_OXIDIZED_CUT_COPPER = "minecraft:waxed_oxidized_cut_copper".toResourceLocation() + val WAXED_WEATHERED_CUT_COPPER = "minecraft:waxed_weathered_cut_copper".toResourceLocation() + val WAXED_EXPOSED_CUT_COPPER = "minecraft:waxed_exposed_cut_copper".toResourceLocation() + val WAXED_CUT_COPPER = "minecraft:waxed_cut_copper".toResourceLocation() + val WAXED_OXIDIZED_CUT_COPPER_STAIRS = "minecraft:waxed_oxidized_cut_copper_stairs".toResourceLocation() + val WAXED_WEATHERED_CUT_COPPER_STAIRS = "minecraft:waxed_weathered_cut_copper_stairs".toResourceLocation() + val WAXED_EXPOSED_CUT_COPPER_STAIRS = "minecraft:waxed_exposed_cut_copper_stairs".toResourceLocation() + val WAXED_CUT_COPPER_STAIRS = "minecraft:waxed_cut_copper_stairs".toResourceLocation() + val WAXED_OXIDIZED_CUT_COPPER_SLAB = "minecraft:waxed_oxidized_cut_copper_slab".toResourceLocation() + val WAXED_WEATHERED_CUT_COPPER_SLAB = "minecraft:waxed_weathered_cut_copper_slab".toResourceLocation() + val WAXED_EXPOSED_CUT_COPPER_SLAB = "minecraft:waxed_exposed_cut_copper_slab".toResourceLocation() + val WAXED_CUT_COPPER_SLAB = "minecraft:waxed_cut_copper_slab".toResourceLocation() + val LIGHTNING_ROD = "minecraft:lightning_rod".toResourceLocation() + val POINTED_DRIPSTONE = "minecraft:pointed_dripstone".toResourceLocation() + val DRIPSTONE_BLOCK = "minecraft:dripstone_block".toResourceLocation() + val CAVE_VINES = "minecraft:cave_vines".toResourceLocation() + val CAVE_VINES_PLANT = "minecraft:cave_vines_plant".toResourceLocation() + val SPORE_BLOSSOM = "minecraft:spore_blossom".toResourceLocation() + val AZALEA = "minecraft:azalea".toResourceLocation() + val FLOWERING_AZALEA = "minecraft:flowering_azalea".toResourceLocation() + val MOSS_CARPET = "minecraft:moss_carpet".toResourceLocation() + val MOSS_BLOCK = "minecraft:moss_block".toResourceLocation() + val BIG_DRIPLEAF = "minecraft:big_dripleaf".toResourceLocation() + val BIG_DRIPLEAF_STEM = "minecraft:big_dripleaf_stem".toResourceLocation() + val SMALL_DRIPLEAF = "minecraft:small_dripleaf".toResourceLocation() + val HANGING_ROOTS = "minecraft:hanging_roots".toResourceLocation() + val ROOTED_DIRT = "minecraft:rooted_dirt".toResourceLocation() + val DEEPSLATE = "minecraft:deepslate".toResourceLocation() + val COBBLED_DEEPSLATE = "minecraft:cobbled_deepslate".toResourceLocation() + val COBBLED_DEEPSLATE_STAIRS = "minecraft:cobbled_deepslate_stairs".toResourceLocation() + val COBBLED_DEEPSLATE_SLAB = "minecraft:cobbled_deepslate_slab".toResourceLocation() + val COBBLED_DEEPSLATE_WALL = "minecraft:cobbled_deepslate_wall".toResourceLocation() + val POLISHED_DEEPSLATE = "minecraft:polished_deepslate".toResourceLocation() + val POLISHED_DEEPSLATE_STAIRS = "minecraft:polished_deepslate_stairs".toResourceLocation() + val POLISHED_DEEPSLATE_SLAB = "minecraft:polished_deepslate_slab".toResourceLocation() + val POLISHED_DEEPSLATE_WALL = "minecraft:polished_deepslate_wall".toResourceLocation() + val DEEPSLATE_TILES = "minecraft:deepslate_tiles".toResourceLocation() + val DEEPSLATE_TILE_STAIRS = "minecraft:deepslate_tile_stairs".toResourceLocation() + val DEEPSLATE_TILE_SLAB = "minecraft:deepslate_tile_slab".toResourceLocation() + val DEEPSLATE_TILE_WALL = "minecraft:deepslate_tile_wall".toResourceLocation() + val DEEPSLATE_BRICKS = "minecraft:deepslate_bricks".toResourceLocation() + val DEEPSLATE_BRICK_STAIRS = "minecraft:deepslate_brick_stairs".toResourceLocation() + val DEEPSLATE_BRICK_SLAB = "minecraft:deepslate_brick_slab".toResourceLocation() + val DEEPSLATE_BRICK_WALL = "minecraft:deepslate_brick_wall".toResourceLocation() + val CHISELED_DEEPSLATE = "minecraft:chiseled_deepslate".toResourceLocation() + val CRACKED_DEEPSLATE_BRICKS = "minecraft:cracked_deepslate_bricks".toResourceLocation() + val CRACKED_DEEPSLATE_TILES = "minecraft:cracked_deepslate_tiles".toResourceLocation() + val INFESTED_DEEPSLATE = "minecraft:infested_deepslate".toResourceLocation() + val SMOOTH_BASALT = "minecraft:smooth_basalt".toResourceLocation() + val RAW_IRON_BLOCK = "minecraft:raw_iron_block".toResourceLocation() + val RAW_COPPER_BLOCK = "minecraft:raw_copper_block".toResourceLocation() + val RAW_GOLD_BLOCK = "minecraft:raw_gold_block".toResourceLocation() + val POTTED_AZALEA_BUSH = "minecraft:potted_azalea_bush".toResourceLocation() + val POTTED_FLOWERING_AZALEA_BUSH = "minecraft:potted_flowering_azalea_bush".toResourceLocation() +} diff --git a/src/main/java/de/bixilon/minosoft/data/registries/items/tools/SwordItem.kt b/src/main/java/de/bixilon/minosoft/data/registries/items/tools/SwordItem.kt index 30434f7d3..37734082c 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/items/tools/SwordItem.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/items/tools/SwordItem.kt @@ -16,7 +16,7 @@ package de.bixilon.minosoft.data.registries.items.tools import de.bixilon.minosoft.data.inventory.ItemStack import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.blocks.BlockState -import de.bixilon.minosoft.data.registries.blocks.DefaultBlocks +import de.bixilon.minosoft.data.registries.blocks.MinecraftBlocks import de.bixilon.minosoft.data.registries.registries.Registries import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.KUtil.unsafeCast @@ -30,7 +30,7 @@ open class SwordItem( override val attackDamage = data["attack_damage"]?.unsafeCast() ?: -1.0f override fun getMiningSpeedMultiplier(connection: PlayConnection, blockState: BlockState, itemStack: ItemStack): Float { - if (blockState.block.resourceLocation == DefaultBlocks.COBWEB) { + if (blockState.block.resourceLocation == MinecraftBlocks.COBWEB) { return 15.0f } return super.getMiningSpeedMultiplier(connection, blockState, itemStack) diff --git a/src/main/java/de/bixilon/minosoft/data/tags/DefaultBlockTags.kt b/src/main/java/de/bixilon/minosoft/data/tags/DefaultBlockTags.kt index e8239fb53..51235b59e 100644 --- a/src/main/java/de/bixilon/minosoft/data/tags/DefaultBlockTags.kt +++ b/src/main/java/de/bixilon/minosoft/data/tags/DefaultBlockTags.kt @@ -13,8 +13,8 @@ package de.bixilon.minosoft.data.tags -import de.bixilon.minosoft.data.registries.blocks.DefaultBlocks +import de.bixilon.minosoft.data.registries.blocks.MinecraftBlocks object DefaultBlockTags { - val CLIMBABLE = setOf(DefaultBlocks.LADDER, DefaultBlocks.VINE, DefaultBlocks.SCAFFOLDING, DefaultBlocks.WEEPING_VINES, DefaultBlocks.WEEPING_VINES_PLANT, DefaultBlocks.TWISTING_VINES, DefaultBlocks.WEEPING_VINES_PLANT, DefaultBlocks.CAVE_VINES, DefaultBlocks.CAVE_VINES_PLANT) + val CLIMBABLE = setOf(MinecraftBlocks.LADDER, MinecraftBlocks.VINE, MinecraftBlocks.SCAFFOLDING, MinecraftBlocks.WEEPING_VINES, MinecraftBlocks.WEEPING_VINES_PLANT, MinecraftBlocks.TWISTING_VINES, MinecraftBlocks.WEEPING_VINES_PLANT, MinecraftBlocks.CAVE_VINES, MinecraftBlocks.CAVE_VINES_PLANT) } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/advanced/block/BlockDustParticle.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/advanced/block/BlockDustParticle.kt index 9b7f96a85..60fd7380a 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/advanced/block/BlockDustParticle.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/advanced/block/BlockDustParticle.kt @@ -14,7 +14,7 @@ package de.bixilon.minosoft.gui.rendering.particle.types.render.texture.advanced.block import de.bixilon.minosoft.data.registries.ResourceLocation -import de.bixilon.minosoft.data.registries.blocks.DefaultBlocks +import de.bixilon.minosoft.data.registries.blocks.MinecraftBlocks import de.bixilon.minosoft.data.registries.particle.data.BlockParticleData import de.bixilon.minosoft.data.registries.particle.data.ParticleData import de.bixilon.minosoft.data.text.RGBColor @@ -38,7 +38,7 @@ class BlockDustParticle(connection: PlayConnection, position: Vec3d, velocity: V gravityStrength = 1.0f color = 0.6f.asGray() - if (data.blockState.block.resourceLocation != DefaultBlocks.GRASS_BLOCK) { + if (data.blockState.block.resourceLocation != MinecraftBlocks.GRASS_BLOCK) { val tintColor = connection.rendering!!.renderWindow.tintManager.getTint(data.blockState, null, blockPosition)?.asRGBColor() tintColor?.let { @@ -60,7 +60,7 @@ class BlockDustParticle(connection: PlayConnection, position: Vec3d, velocity: V override fun build(connection: PlayConnection, position: Vec3d, velocity: Vec3d, data: ParticleData): BlockDustParticle? { check(data is BlockParticleData) - if (data.blockState == null || data.blockState.block.resourceLocation == DefaultBlocks.MOVING_PISTON) { + if (data.blockState == null || data.blockState.block.resourceLocation == MinecraftBlocks.MOVING_PISTON) { return null } return BlockDustParticle(connection, position, velocity, data) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/tint/FoliageTintCalculator.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/tint/FoliageTintCalculator.kt new file mode 100644 index 000000000..58be221ba --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/tint/FoliageTintCalculator.kt @@ -0,0 +1,23 @@ +package de.bixilon.minosoft.gui.rendering.tint + +import de.bixilon.minosoft.data.assets.AssetsManager +import de.bixilon.minosoft.data.registries.biomes.Biome +import de.bixilon.minosoft.data.registries.blocks.BlockState +import de.bixilon.minosoft.gui.rendering.textures.TextureUtil.texture +import de.bixilon.minosoft.util.KUtil.toResourceLocation + +class FoliageTintCalculator : TintProvider { + private lateinit var colorMap: IntArray + + fun init(assetsManager: AssetsManager) { + colorMap = assetsManager.readRGBArrayAsset("minecraft:colormap/foliage".toResourceLocation().texture()) + } + + override fun getColor(blockState: BlockState?, biome: Biome?, x: Int, y: Int, z: Int, tintIndex: Int): Int { + if (blockState == null || biome == null) { + return 0x48B518 + } + // ToDo: Override + return colorMap[biome.downfallColorMapCoordinate shl 8 or biome.getClampedTemperature(y)] + } +} diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/tint/GrassTintCalculator.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/tint/GrassTintCalculator.kt index 0951df02d..e7fe6bb3d 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/tint/GrassTintCalculator.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/tint/GrassTintCalculator.kt @@ -7,11 +7,10 @@ import de.bixilon.minosoft.gui.rendering.textures.TextureUtil.texture import de.bixilon.minosoft.util.KUtil.toResourceLocation class GrassTintCalculator : TintProvider { - override val indices: Int = 1 private lateinit var colorMap: IntArray fun init(assetsManager: AssetsManager) { - colorMap = assetsManager.readAGBArrayAsset("minecraft:colormap/grass".toResourceLocation().texture()) + colorMap = assetsManager.readRGBArrayAsset("minecraft:colormap/grass".toResourceLocation().texture()) } fun getColor(downfall: Int, temperature: Int): Int { @@ -27,7 +26,7 @@ class GrassTintCalculator : TintProvider { return color } - override fun getColor(blockState: BlockState, biome: Biome?, x: Int, y: Int, z: Int, tintIndex: Int): Int { + override fun getColor(blockState: BlockState?, biome: Biome?, x: Int, y: Int, z: Int, tintIndex: Int): Int { if (biome == null) { return getColor(127, 127) } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/tint/MultiTintProvider.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/tint/MultiTintProvider.kt new file mode 100644 index 000000000..fef7992a6 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/tint/MultiTintProvider.kt @@ -0,0 +1,5 @@ +package de.bixilon.minosoft.gui.rendering.tint + +interface MultiTintProvider { + val tints: Int +} diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/tint/RedstoneWireTintCalculator.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/tint/RedstoneWireTintCalculator.kt new file mode 100644 index 000000000..8e21509fa --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/tint/RedstoneWireTintCalculator.kt @@ -0,0 +1,23 @@ +package de.bixilon.minosoft.gui.rendering.tint + +import de.bixilon.minosoft.data.registries.biomes.Biome +import de.bixilon.minosoft.data.registries.blocks.BlockState +import de.bixilon.minosoft.data.registries.blocks.properties.BlockProperties +import de.bixilon.minosoft.data.text.RGBColor +import de.bixilon.minosoft.util.KUtil.toInt +import de.bixilon.minosoft.util.MMath + +object RedstoneWireTintCalculator : TintProvider { + private val COLORS = IntArray(16) { + val level = it / 15.0f + val red = level * 0.6f + (if (it > 0) 0.4f else 0.3f) + val green = MMath.clamp(level * level * 0.7f - 0.5f, 0.0f, 1.0f) + val blue = MMath.clamp(level * level * 0.6f - 0.7f, 0.0f, 1.0f) + return@IntArray ((red * RGBColor.COLOR_FLOAT_DIVIDER).toInt() shl 16) or ((green * RGBColor.COLOR_FLOAT_DIVIDER).toInt() shl 8) or ((blue * RGBColor.COLOR_FLOAT_DIVIDER).toInt()) + } + + + override fun getColor(blockState: BlockState?, biome: Biome?, x: Int, y: Int, z: Int, tintIndex: Int): Int { + return COLORS[blockState?.properties?.get(BlockProperties.REDSTONE_POWER)?.toInt() ?: return -1] + } +} diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/tint/StaticTintProvider.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/tint/StaticTintProvider.kt new file mode 100644 index 000000000..6bad3d205 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/tint/StaticTintProvider.kt @@ -0,0 +1,11 @@ +package de.bixilon.minosoft.gui.rendering.tint + +import de.bixilon.minosoft.data.registries.biomes.Biome +import de.bixilon.minosoft.data.registries.blocks.BlockState + +class StaticTintProvider(val color: Int) : TintProvider { + + override fun getColor(blockState: BlockState?, biome: Biome?, x: Int, y: Int, z: Int, tintIndex: Int): Int { + return color + } +} diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/tint/StemTintCalculator.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/tint/StemTintCalculator.kt new file mode 100644 index 000000000..0bcd01970 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/tint/StemTintCalculator.kt @@ -0,0 +1,16 @@ +package de.bixilon.minosoft.gui.rendering.tint + +import de.bixilon.minosoft.data.registries.biomes.Biome +import de.bixilon.minosoft.data.registries.blocks.BlockState +import de.bixilon.minosoft.data.registries.blocks.properties.BlockProperties +import de.bixilon.minosoft.util.KUtil.toInt + +object StemTintCalculator : TintProvider { + + + override fun getColor(blockState: BlockState?, biome: Biome?, x: Int, y: Int, z: Int, tintIndex: Int): Int { + val age = blockState?.properties?.get(BlockProperties.AGE)?.toInt() ?: return -1 + + return ((age * 32) shl 16) or ((0xFF - age * 8) shl 8) or (age * 4) + } +} diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/tint/TintManager.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/tint/TintManager.kt index bcac44ab1..63f18f394 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/tint/TintManager.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/tint/TintManager.kt @@ -17,22 +17,22 @@ import de.bixilon.minosoft.data.assets.AssetsManager import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.biomes.Biome import de.bixilon.minosoft.data.registries.blocks.BlockState -import de.bixilon.minosoft.data.registries.blocks.DefaultBlocks +import de.bixilon.minosoft.data.registries.blocks.MinecraftBlocks +import de.bixilon.minosoft.data.registries.blocks.properties.BlockProperties +import de.bixilon.minosoft.data.registries.blocks.properties.Halves import de.bixilon.minosoft.data.text.RGBColor import de.bixilon.minosoft.data.text.RGBColor.Companion.asRGBColor import de.bixilon.minosoft.data.world.Chunk -import de.bixilon.minosoft.gui.rendering.textures.TextureUtil.texture import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.util.KUtil.toResourceLocation import glm_.vec3.Vec3i class TintManager(private val connection: PlayConnection) { private val grassTintCalculator = GrassTintCalculator() - private lateinit var foliageColorMap: IntArray + private val foliageTintCalculator = FoliageTintCalculator() fun init(assetsManager: AssetsManager) { grassTintCalculator.init(assetsManager) - foliageColorMap = assetsManager.readAGBArrayAsset("minecraft:colormap/foliage".toResourceLocation().texture()) + foliageTintCalculator.init(assetsManager) val blockRegistry = connection.registries.blockRegistry for ((blockNames, provider) in createDefaultTints()) { @@ -48,7 +48,7 @@ class TintManager(private val connection: PlayConnection) { val inChunkX = x and 0x0F val inChunkZ = z and 0x0F val biome = chunk.getBiome(inChunkX, y, inChunkZ) - val tints = IntArray(tintProvider.indices) + val tints = IntArray(if (tintProvider is MultiTintProvider) tintProvider.tints else 1) for (tintIndex in tints.indices) { tints[tintIndex] = tintProvider.getColor(blockState, biome, x, y, z, tintIndex) @@ -66,10 +66,30 @@ class TintManager(private val connection: PlayConnection) { private fun createDefaultTints(): Map, TintProvider> { - val defaultTints: Map, TintProvider> = mapOf( - setOf(DefaultBlocks.GRASS_BLOCK) to grassTintCalculator + return mapOf( + setOf(MinecraftBlocks.GRASS_BLOCK, MinecraftBlocks.FERN, MinecraftBlocks.GRASS, MinecraftBlocks.POTTED_FERN) to grassTintCalculator, + setOf(MinecraftBlocks.LARGE_FERN, MinecraftBlocks.TALL_GRASS) to TintProvider { blockState: BlockState?, biome: Biome?, x: Int, y: Int, z: Int, tintIndex: Int -> + return@TintProvider if (blockState?.properties?.get(BlockProperties.STAIR_HALF) == Halves.UPPER) { + grassTintCalculator.getColor(blockState, biome, x, y - 1, z, tintIndex) + } else { + grassTintCalculator.getColor(blockState, biome, x, y, z, tintIndex) + } + }, + setOf(MinecraftBlocks.SPRUCE_LEAVES) to StaticTintProvider(0x619961), + setOf(MinecraftBlocks.BIRCH_LEAVES) to StaticTintProvider(0x80A755), + setOf(MinecraftBlocks.OAK_LEAVES, MinecraftBlocks.JUNGLE_LEAVES, MinecraftBlocks.ACACIA_LEAVES, MinecraftBlocks.DARK_OAK_LEAVES, MinecraftBlocks.VINE) to foliageTintCalculator, + // ToDo: Water + setOf(MinecraftBlocks.REDSTONE_WIRE) to RedstoneWireTintCalculator, + setOf(MinecraftBlocks.SUGAR_CANE) to TintProvider { blockState: BlockState?, biome: Biome?, x: Int, y: Int, z: Int, tintIndex: Int -> + if (blockState == null || biome == null) { + return@TintProvider -1 + } + return@TintProvider grassTintCalculator.getColor(blockState, biome, x, y, z, tintIndex) + }, + setOf(MinecraftBlocks.ATTACHED_MELON_STEM, MinecraftBlocks.ATTACHED_PUMPKIN_STEM) to StaticTintProvider(0xE0C71C), + setOf(MinecraftBlocks.MELON_STEM, MinecraftBlocks.PUMPKIN_STEM) to StemTintCalculator, + setOf(MinecraftBlocks.LILY_PAD) to TintProvider { blockState: BlockState?, biome: Biome?, _: Int, _: Int, _: Int, _: Int -> if (blockState == null || biome == null) 0x71C35C else 0x208030 }, ) - return defaultTints } companion object { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/tint/TintProvider.java b/src/main/java/de/bixilon/minosoft/gui/rendering/tint/TintProvider.java new file mode 100644 index 000000000..ec7ed5f99 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/tint/TintProvider.java @@ -0,0 +1,10 @@ +package de.bixilon.minosoft.gui.rendering.tint; + +import de.bixilon.minosoft.data.registries.biomes.Biome; +import de.bixilon.minosoft.data.registries.blocks.BlockState; + +import javax.annotation.Nullable; + +public interface TintProvider { + int getColor(@Nullable BlockState blockState, @Nullable Biome biome, int x, int y, int z, int tintIndex); +} diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/tint/TintProvider.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/tint/TintProvider.kt deleted file mode 100644 index 38e308a46..000000000 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/tint/TintProvider.kt +++ /dev/null @@ -1,10 +0,0 @@ -package de.bixilon.minosoft.gui.rendering.tint - -import de.bixilon.minosoft.data.registries.biomes.Biome -import de.bixilon.minosoft.data.registries.blocks.BlockState - -interface TintProvider { - val indices: Int - - fun getColor(blockState: BlockState, biome: Biome?, x: Int, y: Int, z: Int, tintIndex: Int): Int -}