From e3535c235df12836e608415902201227f4607ee5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=86=AC=E7=85=9C?= <10185101162@stu.ecnu.edu.cn> Date: Tue, 31 May 2022 11:51:58 +0800 Subject: [PATCH] Upload source code for EC 1.1 --- .gitattributes | 5 + .gitignore | 25 + build.gradle | 217 ++++++++ .../hexgram2021/emeraldcraft/api/ECTags.java | 5 + .../api/crafting/ECRecipeSerializer.java | 52 ++ .../api/crafting/ECSerializableRecipe.java | 72 +++ .../IIngredientWithSizeSerializer.java | 13 + .../api/crafting/IngredientWithSize.java | 103 ++++ .../api/util/SetRestrictedField.java | 93 ++++ .../emeraldcraft/data/ECDataGenerator.java | 27 + .../emeraldcraft/data/Recipes.java | 153 +++++ .../emeraldcraft/data/RunCompleteHelper.java | 23 + .../emeraldcraft/data/StructureUpdater.java | 95 ++++ .../emeraldcraft/EmeraldCraft.java | 130 +++++ .../client/ClientEventHandler.java | 13 + .../client/ClientMobEventSubscriber.java | 29 + .../emeraldcraft/client/ClientProxy.java | 40 ++ .../models/entities/NetherLambmanEntity.java | 191 +++++++ .../models/entities/NetherLambmanModel.java | 22 + .../entities/NetherLambmanRenderer.java | 21 + .../models/entities/NetherPigmanEntity.java | 191 +++++++ .../models/entities/NetherPigmanModel.java | 20 + .../models/entities/NetherPigmanRenderer.java | 21 + .../models/entities/PiglinCuteyData.java | 35 ++ .../entities/PiglinCuteyDataHolder.java | 7 + .../models/entities/PiglinCuteyEntity.java | 512 +++++++++++++++++ .../models/entities/PiglinCuteyModel.java | 287 ++++++++++ .../models/entities/PiglinCuteyRenderer.java | 18 + .../emeraldcraft/common/CommonProxy.java | 38 ++ .../emeraldcraft/common/ECContent.java | 60 ++ .../emeraldcraft/common/ECSaveData.java | 56 ++ .../common/MobAttributeEventSubscriber.java | 22 + .../entity/ContinuousMinerBlockEntity.java | 354 ++++++++++++ .../blocks/entity/GlassKilnBlockEntity.java | 34 ++ .../blocks/entity/IceMakerBlockEntity.java | 377 +++++++++++++ .../blocks/entity/MelterBlockEntity.java | 402 ++++++++++++++ .../entity/MineralTableBlockEntity.java | 50 ++ .../common/blocks/plant/WarpedWartBlock.java | 100 ++++ .../blocks/sculpture/SculptureBlock.java | 48 ++ .../workstation/CarpentryTableBlock.java | 92 +++ .../workstation/ContinuousMinerBlock.java | 139 +++++ .../workstation/CrystalballTableBlock.java | 89 +++ .../blocks/workstation/GlassKilnBlock.java | 95 ++++ .../blocks/workstation/IceMakerBlock.java | 102 ++++ .../blocks/workstation/MelterBlock.java | 101 ++++ .../blocks/workstation/MineralTableBlock.java | 101 ++++ .../blocks/workstation/SqueezerBlock.java | 152 +++++ .../common/crafting/CarpentryTableMenu.java | 234 ++++++++ .../common/crafting/CarpentryTableRecipe.java | 39 ++ .../common/crafting/ContinuousMinerMenu.java | 142 +++++ .../common/crafting/FluidType.java | 59 ++ .../common/crafting/GlassKilnMenu.java | 204 +++++++ .../common/crafting/GlassKilnRecipe.java | 35 ++ .../common/crafting/IceMakerMenu.java | 229 ++++++++ .../common/crafting/IceMakerRecipe.java | 97 ++++ .../common/crafting/MelterMenu.java | 221 ++++++++ .../common/crafting/MelterRecipe.java | 102 ++++ .../common/crafting/MineralTableMenu.java | 217 ++++++++ .../common/crafting/MineralTableRecipe.java | 37 ++ .../crafting/RecipeCachingReloadListener.java | 20 + .../common/crafting/RecipeReloadListener.java | 76 +++ .../compat/CarpentryTableCategory.java | 78 +++ .../compat/GlassKilnRecipeCategory.java | 141 +++++ .../compat/IceMakerRecipeCategory.java | 136 +++++ .../common/crafting/compat/JEIHelper.java | 124 +++++ .../crafting/compat/MelterRecipeCategory.java | 143 +++++ .../compat/MineralTableRecipeCategory.java | 123 ++++ .../common/crafting/compat/package-info.java | 8 + .../recipebook/CarpentryTableScreen.java | 182 ++++++ .../recipebook/ContinuousMinerScreen.java | 49 ++ .../GlassKilnRecipeBookComponent.java | 82 +++ .../crafting/recipebook/GlassKilnScreen.java | 131 +++++ .../crafting/recipebook/IceMakerScreen.java | 58 ++ .../crafting/recipebook/MelterScreen.java | 56 ++ .../recipebook/MineralTableScreen.java | 64 +++ .../CarpentryTableRecipeSerializer.java | 58 ++ .../serializer/GlassKilnRecipeSerializer.java | 76 +++ .../serializer/IceMakerRecipeSerializer.java | 81 +++ .../serializer/MelterRecipeSerializer.java | 71 +++ .../MineralTableRecipeSerializer.java | 76 +++ .../common/items/EmeraldArmorItem.java | 73 +++ .../common/items/LapisArmorItem.java | 73 +++ .../common/register/ECBiomes.java | 269 +++++++++ .../common/register/ECBlockEntity.java | 45 ++ .../common/register/ECBlocks.java | 466 ++++++++++++++++ .../common/register/ECConfiguredFeatures.java | 38 ++ .../register/ECConfiguredStructures.java | 23 + .../register/ECConfiguredSurfaceBuilder.java | 34 ++ .../common/register/ECContainerTypes.java | 37 ++ .../common/register/ECEntities.java | 45 ++ .../common/register/ECFeatures.java | 17 + .../emeraldcraft/common/register/ECItems.java | 191 +++++++ .../common/register/ECProperty.java | 8 + .../common/register/ECRecipeSerializer.java | 35 ++ .../common/register/ECRecipes.java | 31 ++ .../common/register/ECStructures.java | 76 +++ .../common/register/ECSurfaceBuilder.java | 28 + .../emeraldcraft/common/util/ECFoods.java | 17 + .../emeraldcraft/common/util/ECLogger.java | 49 ++ .../emeraldcraft/common/util/ECSounds.java | 72 +++ .../emeraldcraft/common/world/ECTrades.java | 523 ++++++++++++++++++ .../emeraldcraft/common/world/ECWorldGen.java | 13 + .../common/world/NetherWarfieldFeature.java | 40 ++ .../common/world/ShelterFeature.java | 64 +++ .../common/world/ShelterPieces.java | 58 ++ .../emeraldcraft/common/world/Villages.java | 321 +++++++++++ .../world/ZombieVillagerRoomFeature.java | 134 +++++ .../world/pools/NetherWarfieldPools.java | 163 ++++++ .../surface/AzureDesertSurfaceBuilder.java | 30 + .../surface/EmeryDesertSurfaceBuilder.java | 30 + .../surface/JadeiteDesertSurfaceBuilder.java | 30 + .../surface/QuartzDesertSurfaceBuilder.java | 30 + .../mixin/AbstractSkeletonMixin.java | 18 + .../mixin/HeroGiftsTaskAccess.java | 17 + .../emeraldcraft/mixin/MobEntityAccess.java | 12 + .../mixin/MultiNoiseBiomeSourceAccess.java | 21 + .../mixin/NetherBiomesAccess.java | 16 + .../mixin/StructureFeatureAccess.java | 17 + .../mixin/StructureSettingsAccess.java | 18 + .../mixin/StructureSettingsConfigAccess.java | 15 + src/main/resources/META-INF/mods.toml | 64 +++ .../emeraldcraft/blockstates/azure_sand.json | 21 + .../blockstates/azure_sandstone.json | 7 + .../blockstates/azure_sandstone_slab.json | 13 + .../blockstates/azure_sandstone_stairs.json | 209 +++++++ .../blockstates/azure_sandstone_wall.json | 90 +++ .../blockstates/blue_nether_brick_slab.json | 13 + .../blockstates/blue_nether_brick_stairs.json | 209 +++++++ .../blockstates/blue_nether_brick_wall.json | 90 +++ .../blockstates/blue_nether_bricks.json | 7 + .../blockstates/carpentry_table.json | 19 + .../blockstates/continuous_miner.json | 19 + .../blockstates/crimson_cobblestone.json | 7 + .../blockstates/crimson_cobblestone_slab.json | 13 + .../crimson_cobblestone_stairs.json | 209 +++++++ .../blockstates/crimson_cobblestone_wall.json | 90 +++ .../blockstates/crimson_stone.json | 20 + .../blockstates/crimson_stone_slab.json | 13 + .../blockstates/crimson_stone_stairs.json | 209 +++++++ .../blockstates/crimson_stone_wall.json | 90 +++ .../blockstates/crystalball_table.json | 52 ++ .../blockstates/cut_azure_sandstone.json | 7 + .../blockstates/cut_azure_sandstone_slab.json | 13 + .../blockstates/cut_emery_sandstone.json | 7 + .../blockstates/cut_emery_sandstone_slab.json | 13 + .../blockstates/cut_jadeite_sandstone.json | 7 + .../cut_jadeite_sandstone_slab.json | 13 + .../blockstates/cut_quartz_sandstone.json | 7 + .../cut_quartz_sandstone_slab.json | 13 + .../blockstates/diamond_slab.json | 13 + .../blockstates/diamond_stairs.json | 209 +++++++ .../blockstates/diamond_wall.json | 90 +++ .../blockstates/emerald_slab.json | 13 + .../blockstates/emerald_stairs.json | 209 +++++++ .../blockstates/emerald_wall.json | 90 +++ .../emeraldcraft/blockstates/emery_sand.json | 21 + .../blockstates/emery_sandstone.json | 7 + .../blockstates/emery_sandstone_slab.json | 13 + .../blockstates/emery_sandstone_stairs.json | 209 +++++++ .../blockstates/emery_sandstone_wall.json | 90 +++ .../emeraldcraft/blockstates/glass_kiln.json | 34 ++ .../emeraldcraft/blockstates/gold_slab.json | 13 + .../emeraldcraft/blockstates/gold_stairs.json | 209 +++++++ .../emeraldcraft/blockstates/gold_wall.json | 90 +++ .../emeraldcraft/blockstates/ice_maker.json | 7 + .../emeraldcraft/blockstates/iron_slab.json | 13 + .../emeraldcraft/blockstates/iron_stairs.json | 209 +++++++ .../emeraldcraft/blockstates/iron_wall.json | 90 +++ .../blockstates/jadeite_sand.json | 21 + .../blockstates/jadeite_sandstone.json | 7 + .../blockstates/jadeite_sandstone_slab.json | 13 + .../blockstates/jadeite_sandstone_stairs.json | 209 +++++++ .../blockstates/jadeite_sandstone_wall.json | 90 +++ .../emeraldcraft/blockstates/lapis_slab.json | 13 + .../blockstates/lapis_stairs.json | 209 +++++++ .../emeraldcraft/blockstates/lapis_wall.json | 90 +++ .../emeraldcraft/blockstates/melter.json | 7 + .../blockstates/mineral_table.json | 7 + .../blockstates/netherite_slab.json | 13 + .../blockstates/netherite_stairs.json | 209 +++++++ .../blockstates/netherite_wall.json | 90 +++ .../emeraldcraft/blockstates/quartz_sand.json | 21 + .../blockstates/quartz_sandstone.json | 7 + .../blockstates/quartz_sandstone_slab.json | 13 + .../blockstates/quartz_sandstone_stairs.json | 209 +++++++ .../blockstates/quartz_sandstone_wall.json | 90 +++ .../blockstates/smooth_azure_sandstone.json | 7 + .../smooth_azure_sandstone_slab.json | 13 + .../smooth_azure_sandstone_stairs.json | 209 +++++++ .../blockstates/smooth_emery_sandstone.json | 7 + .../smooth_emery_sandstone_slab.json | 13 + .../smooth_emery_sandstone_stairs.json | 209 +++++++ .../blockstates/smooth_jadeite_sandstone.json | 7 + .../smooth_jadeite_sandstone_slab.json | 13 + .../smooth_jadeite_sandstone_stairs.json | 209 +++++++ .../blockstates/smooth_quartz_sandstone.json | 7 + .../smooth_quartz_sandstone_slab.json | 13 + .../smooth_quartz_sandstone_stairs.json | 209 +++++++ .../emeraldcraft/blockstates/squeezer.json | 28 + .../blockstates/warped_cobblestone.json | 7 + .../blockstates/warped_cobblestone_slab.json | 13 + .../warped_cobblestone_stairs.json | 209 +++++++ .../blockstates/warped_cobblestone_wall.json | 90 +++ .../blockstates/warped_stone.json | 20 + .../blockstates/warped_stone_slab.json | 13 + .../blockstates/warped_stone_stairs.json | 209 +++++++ .../blockstates/warped_stone_wall.json | 90 +++ .../emeraldcraft/blockstates/warped_wart.json | 16 + .../assets/emeraldcraft/lang/en_us.json | 199 +++++++ .../assets/emeraldcraft/lang/zh_cn.json | 199 +++++++ .../emeraldcraft/models/block/azure_sand.json | 6 + .../models/block/azure_sandstone.json | 8 + .../models/block/azure_sandstone_slab.json | 8 + .../block/azure_sandstone_slab_top.json | 8 + .../models/block/azure_sandstone_stairs.json | 8 + .../block/azure_sandstone_stairs_inner.json | 8 + .../block/azure_sandstone_stairs_outer.json | 8 + .../block/azure_sandstone_wall_inventory.json | 6 + .../block/azure_sandstone_wall_post.json | 6 + .../block/azure_sandstone_wall_side.json | 6 + .../block/azure_sandstone_wall_side_tall.json | 6 + .../models/block/blue_nether_brick_slab.json | 8 + .../block/blue_nether_brick_slab_top.json | 8 + .../block/blue_nether_brick_stairs.json | 8 + .../block/blue_nether_brick_stairs_inner.json | 8 + .../block/blue_nether_brick_stairs_outer.json | 8 + .../blue_nether_brick_wall_inventory.json | 6 + .../block/blue_nether_brick_wall_post.json | 6 + .../block/blue_nether_brick_wall_side.json | 6 + .../blue_nether_brick_wall_side_tall.json | 6 + .../models/block/blue_nether_bricks.json | 6 + .../models/block/carpentry_table.json | 32 ++ .../models/block/continuous_miner.json | 99 ++++ .../models/block/crimson_cobblestone.json | 6 + .../block/crimson_cobblestone_slab.json | 8 + .../block/crimson_cobblestone_slab_top.json | 8 + .../block/crimson_cobblestone_stairs.json | 8 + .../crimson_cobblestone_stairs_inner.json | 8 + .../crimson_cobblestone_stairs_outer.json | 8 + .../crimson_cobblestone_wall_inventory.json | 6 + .../block/crimson_cobblestone_wall_post.json | 6 + .../block/crimson_cobblestone_wall_side.json | 6 + .../crimson_cobblestone_wall_side_tall.json | 6 + .../models/block/crimson_stone.json | 6 + .../models/block/crimson_stone_mirrored.json | 6 + .../models/block/crimson_stone_slab.json | 8 + .../models/block/crimson_stone_slab_top.json | 8 + .../models/block/crimson_stone_stairs.json | 8 + .../block/crimson_stone_stairs_inner.json | 8 + .../block/crimson_stone_stairs_outer.json | 8 + .../block/crimson_stone_wall_inventory.json | 6 + .../models/block/crimson_stone_wall_post.json | 6 + .../models/block/crimson_stone_wall_side.json | 6 + .../block/crimson_stone_wall_side_tall.json | 6 + .../models/block/crystalball_table.json | 37 ++ .../models/block/cut_azure_sandstone.json | 7 + .../block/cut_azure_sandstone_slab.json | 8 + .../block/cut_azure_sandstone_slab_top.json | 8 + .../models/block/cut_emery_sandstone.json | 7 + .../block/cut_emery_sandstone_slab.json | 8 + .../block/cut_emery_sandstone_slab_top.json | 8 + .../models/block/cut_jadeite_sandstone.json | 7 + .../block/cut_jadeite_sandstone_slab.json | 8 + .../block/cut_jadeite_sandstone_slab_top.json | 8 + .../models/block/cut_quartz_sandstone.json | 7 + .../block/cut_quartz_sandstone_slab.json | 8 + .../block/cut_quartz_sandstone_slab_top.json | 8 + .../models/block/diamond_slab.json | 8 + .../models/block/diamond_slab_top.json | 8 + .../models/block/diamond_stairs.json | 8 + .../models/block/diamond_stairs_inner.json | 8 + .../models/block/diamond_stairs_outer.json | 8 + .../models/block/diamond_wall_inventory.json | 6 + .../models/block/diamond_wall_post.json | 6 + .../models/block/diamond_wall_side.json | 6 + .../models/block/diamond_wall_side_tall.json | 6 + .../models/block/emerald_slab.json | 8 + .../models/block/emerald_slab_top.json | 8 + .../models/block/emerald_stairs.json | 8 + .../models/block/emerald_stairs_inner.json | 8 + .../models/block/emerald_stairs_outer.json | 8 + .../models/block/emerald_wall_inventory.json | 6 + .../models/block/emerald_wall_post.json | 6 + .../models/block/emerald_wall_side.json | 6 + .../models/block/emerald_wall_side_tall.json | 6 + .../emeraldcraft/models/block/emery_sand.json | 6 + .../models/block/emery_sandstone.json | 8 + .../models/block/emery_sandstone_slab.json | 8 + .../block/emery_sandstone_slab_top.json | 8 + .../models/block/emery_sandstone_stairs.json | 8 + .../block/emery_sandstone_stairs_inner.json | 8 + .../block/emery_sandstone_stairs_outer.json | 8 + .../block/emery_sandstone_wall_inventory.json | 6 + .../block/emery_sandstone_wall_post.json | 6 + .../block/emery_sandstone_wall_side.json | 6 + .../block/emery_sandstone_wall_side_tall.json | 6 + .../emeraldcraft/models/block/glass_kiln.json | 8 + .../models/block/glass_kiln_on.json | 8 + .../emeraldcraft/models/block/gold_slab.json | 8 + .../models/block/gold_slab_top.json | 8 + .../models/block/gold_stairs.json | 8 + .../models/block/gold_stairs_inner.json | 8 + .../models/block/gold_stairs_outer.json | 8 + .../models/block/gold_wall_inventory.json | 6 + .../models/block/gold_wall_post.json | 6 + .../models/block/gold_wall_side.json | 6 + .../models/block/gold_wall_side_tall.json | 6 + .../emeraldcraft/models/block/ice_maker.json | 8 + .../emeraldcraft/models/block/iron_slab.json | 8 + .../models/block/iron_slab_top.json | 8 + .../models/block/iron_stairs.json | 8 + .../models/block/iron_stairs_inner.json | 8 + .../models/block/iron_stairs_outer.json | 8 + .../models/block/iron_wall_inventory.json | 6 + .../models/block/iron_wall_post.json | 6 + .../models/block/iron_wall_side.json | 6 + .../models/block/iron_wall_side_tall.json | 6 + .../models/block/jadeite_sand.json | 6 + .../models/block/jadeite_sandstone.json | 8 + .../models/block/jadeite_sandstone_slab.json | 8 + .../block/jadeite_sandstone_slab_top.json | 8 + .../block/jadeite_sandstone_stairs.json | 8 + .../block/jadeite_sandstone_stairs_inner.json | 8 + .../block/jadeite_sandstone_stairs_outer.json | 8 + .../jadeite_sandstone_wall_inventory.json | 6 + .../block/jadeite_sandstone_wall_post.json | 6 + .../block/jadeite_sandstone_wall_side.json | 6 + .../jadeite_sandstone_wall_side_tall.json | 6 + .../emeraldcraft/models/block/lapis_slab.json | 8 + .../models/block/lapis_slab_top.json | 8 + .../models/block/lapis_stairs.json | 8 + .../models/block/lapis_stairs_inner.json | 8 + .../models/block/lapis_stairs_outer.json | 8 + .../models/block/lapis_wall_inventory.json | 6 + .../models/block/lapis_wall_post.json | 6 + .../models/block/lapis_wall_side.json | 6 + .../models/block/lapis_wall_side_tall.json | 6 + .../emeraldcraft/models/block/melter.json | 8 + .../models/block/mineral_table.json | 12 + .../models/block/netherite_slab.json | 8 + .../models/block/netherite_slab_top.json | 8 + .../models/block/netherite_stairs.json | 8 + .../models/block/netherite_stairs_inner.json | 8 + .../models/block/netherite_stairs_outer.json | 8 + .../block/netherite_wall_inventory.json | 6 + .../models/block/netherite_wall_post.json | 6 + .../models/block/netherite_wall_side.json | 6 + .../block/netherite_wall_side_tall.json | 6 + .../models/block/quartz_sand.json | 6 + .../models/block/quartz_sandstone.json | 8 + .../models/block/quartz_sandstone_slab.json | 8 + .../block/quartz_sandstone_slab_top.json | 8 + .../models/block/quartz_sandstone_stairs.json | 8 + .../block/quartz_sandstone_stairs_inner.json | 8 + .../block/quartz_sandstone_stairs_outer.json | 8 + .../quartz_sandstone_wall_inventory.json | 6 + .../block/quartz_sandstone_wall_post.json | 6 + .../block/quartz_sandstone_wall_side.json | 6 + .../quartz_sandstone_wall_side_tall.json | 6 + .../models/block/smooth_azure_sandstone.json | 6 + .../block/smooth_azure_sandstone_slab.json | 8 + .../smooth_azure_sandstone_slab_top.json | 8 + .../block/smooth_azure_sandstone_stairs.json | 8 + .../smooth_azure_sandstone_stairs_inner.json | 8 + .../smooth_azure_sandstone_stairs_outer.json | 8 + .../models/block/smooth_emery_sandstone.json | 6 + .../block/smooth_emery_sandstone_slab.json | 8 + .../smooth_emery_sandstone_slab_top.json | 8 + .../block/smooth_emery_sandstone_stairs.json | 8 + .../smooth_emery_sandstone_stairs_inner.json | 8 + .../smooth_emery_sandstone_stairs_outer.json | 8 + .../block/smooth_jadeite_sandstone.json | 6 + .../block/smooth_jadeite_sandstone_slab.json | 8 + .../smooth_jadeite_sandstone_slab_top.json | 8 + .../smooth_jadeite_sandstone_stairs.json | 8 + ...smooth_jadeite_sandstone_stairs_inner.json | 8 + ...smooth_jadeite_sandstone_stairs_outer.json | 8 + .../models/block/smooth_quartz_sandstone.json | 6 + .../block/smooth_quartz_sandstone_slab.json | 8 + .../smooth_quartz_sandstone_slab_top.json | 8 + .../block/smooth_quartz_sandstone_stairs.json | 8 + .../smooth_quartz_sandstone_stairs_inner.json | 8 + .../smooth_quartz_sandstone_stairs_outer.json | 8 + .../emeraldcraft/models/block/squeezer_0.json | 8 + .../emeraldcraft/models/block/squeezer_1.json | 8 + .../emeraldcraft/models/block/squeezer_2.json | 8 + .../emeraldcraft/models/block/squeezer_3.json | 8 + .../emeraldcraft/models/block/squeezer_4.json | 8 + .../models/block/warped_cobblestone.json | 6 + .../models/block/warped_cobblestone_slab.json | 8 + .../block/warped_cobblestone_slab_top.json | 8 + .../block/warped_cobblestone_stairs.json | 8 + .../warped_cobblestone_stairs_inner.json | 8 + .../warped_cobblestone_stairs_outer.json | 8 + .../warped_cobblestone_wall_inventory.json | 6 + .../block/warped_cobblestone_wall_post.json | 6 + .../block/warped_cobblestone_wall_side.json | 6 + .../warped_cobblestone_wall_side_tall.json | 6 + .../models/block/warped_stone.json | 6 + .../models/block/warped_stone_mirrored.json | 6 + .../models/block/warped_stone_slab.json | 8 + .../models/block/warped_stone_slab_top.json | 8 + .../models/block/warped_stone_stairs.json | 8 + .../block/warped_stone_stairs_inner.json | 8 + .../block/warped_stone_stairs_outer.json | 8 + .../block/warped_stone_wall_inventory.json | 6 + .../models/block/warped_stone_wall_post.json | 6 + .../models/block/warped_stone_wall_side.json | 6 + .../block/warped_stone_wall_side_tall.json | 6 + .../models/block/warped_wart_stage0.json | 6 + .../models/block/warped_wart_stage1.json | 6 + .../models/block/warped_wart_stage2.json | 6 + .../emeraldcraft/models/item/agate_apple.json | 6 + .../emeraldcraft/models/item/azure_sand.json | 3 + .../models/item/azure_sandstone.json | 3 + .../models/item/azure_sandstone_slab.json | 3 + .../models/item/azure_sandstone_stairs.json | 3 + .../models/item/azure_sandstone_wall.json | 3 + .../models/item/bee_banner_pattern.json | 6 + .../models/item/blue_nether_brick_slab.json | 3 + .../models/item/blue_nether_brick_stairs.json | 3 + .../models/item/blue_nether_brick_wall.json | 3 + .../models/item/blue_nether_bricks.json | 3 + .../models/item/bottle_banner_pattern.json | 6 + .../models/item/carpentry_table.json | 3 + .../models/item/continuous_miner.json | 3 + .../models/item/copper_concentrate.json | 6 + .../models/item/crimson_cobblestone.json | 3 + .../models/item/crimson_cobblestone_slab.json | 3 + .../item/crimson_cobblestone_stairs.json | 3 + .../models/item/crimson_cobblestone_wall.json | 3 + .../models/item/crimson_stone.json | 3 + .../models/item/crimson_stone_slab.json | 3 + .../models/item/crimson_stone_stairs.json | 3 + .../models/item/crimson_stone_wall.json | 3 + .../models/item/crystalball_table.json | 3 + .../models/item/cut_azure_sandstone.json | 3 + .../models/item/cut_azure_sandstone_slab.json | 3 + .../models/item/cut_emery_sandstone.json | 3 + .../models/item/cut_emery_sandstone_slab.json | 3 + .../models/item/cut_jadeite_sandstone.json | 3 + .../item/cut_jadeite_sandstone_slab.json | 3 + .../models/item/cut_quartz_sandstone.json | 3 + .../item/cut_quartz_sandstone_slab.json | 3 + .../models/item/diamond_nugget.json | 6 + .../models/item/diamond_slab.json | 3 + .../models/item/diamond_stairs.json | 3 + .../models/item/diamond_wall.json | 3 + .../models/item/emerald_chest.json | 6 + .../models/item/emerald_feet.json | 6 + .../models/item/emerald_head.json | 6 + .../models/item/emerald_legs.json | 6 + .../models/item/emerald_nugget.json | 6 + .../models/item/emerald_slab.json | 3 + .../models/item/emerald_stairs.json | 3 + .../models/item/emerald_wall.json | 3 + .../emeraldcraft/models/item/emery_sand.json | 3 + .../models/item/emery_sandstone.json | 3 + .../models/item/emery_sandstone_slab.json | 3 + .../models/item/emery_sandstone_stairs.json | 3 + .../models/item/emery_sandstone_wall.json | 3 + .../emeraldcraft/models/item/glass_kiln.json | 3 + .../models/item/gold_concentrate.json | 6 + .../emeraldcraft/models/item/gold_slab.json | 3 + .../emeraldcraft/models/item/gold_stairs.json | 3 + .../emeraldcraft/models/item/gold_wall.json | 3 + .../emeraldcraft/models/item/ice_maker.json | 3 + .../models/item/iron_concentrate.json | 6 + .../emeraldcraft/models/item/iron_slab.json | 3 + .../emeraldcraft/models/item/iron_stairs.json | 3 + .../emeraldcraft/models/item/iron_wall.json | 3 + .../emeraldcraft/models/item/jade_apple.json | 6 + .../models/item/jadeite_sand.json | 3 + .../models/item/jadeite_sandstone.json | 3 + .../models/item/jadeite_sandstone_slab.json | 3 + .../models/item/jadeite_sandstone_stairs.json | 3 + .../models/item/jadeite_sandstone_wall.json | 3 + .../emeraldcraft/models/item/lapis_chest.json | 6 + .../emeraldcraft/models/item/lapis_feet.json | 6 + .../emeraldcraft/models/item/lapis_head.json | 6 + .../emeraldcraft/models/item/lapis_legs.json | 6 + .../models/item/lapis_nugget.json | 6 + .../emeraldcraft/models/item/lapis_slab.json | 3 + .../models/item/lapis_stairs.json | 3 + .../emeraldcraft/models/item/lapis_wall.json | 3 + .../models/item/melted_copper_bucket.json | 6 + .../models/item/melted_emerald_bucket.json | 6 + .../models/item/melted_gold_bucket.json | 6 + .../models/item/melted_iron_bucket.json | 6 + .../emeraldcraft/models/item/melter.json | 3 + .../models/item/mineral_table.json | 3 + .../models/item/nether_lambman_spawn_egg.json | 3 + .../models/item/nether_pigman_spawn_egg.json | 3 + .../models/item/netherite_slab.json | 3 + .../models/item/netherite_stairs.json | 3 + .../models/item/netherite_wall.json | 3 + .../models/item/piglin_cutey_spawn_egg.json | 3 + .../models/item/potion_banner_pattern.json | 6 + .../emeraldcraft/models/item/quartz_sand.json | 3 + .../models/item/quartz_sandstone.json | 3 + .../models/item/quartz_sandstone_slab.json | 3 + .../models/item/quartz_sandstone_stairs.json | 3 + .../models/item/quartz_sandstone_wall.json | 3 + .../models/item/rock_breaker.json | 22 + .../models/item/smooth_azure_sandstone.json | 3 + .../item/smooth_azure_sandstone_slab.json | 3 + .../item/smooth_azure_sandstone_stairs.json | 3 + .../models/item/smooth_emery_sandstone.json | 3 + .../item/smooth_emery_sandstone_slab.json | 3 + .../item/smooth_emery_sandstone_stairs.json | 3 + .../models/item/smooth_jadeite_sandstone.json | 3 + .../item/smooth_jadeite_sandstone_slab.json | 3 + .../item/smooth_jadeite_sandstone_stairs.json | 3 + .../models/item/smooth_quartz_sandstone.json | 3 + .../item/smooth_quartz_sandstone_slab.json | 3 + .../item/smooth_quartz_sandstone_stairs.json | 3 + .../models/item/snow_banner_pattern.json | 6 + .../emeraldcraft/models/item/squeezer.json | 3 + .../models/item/warped_cobblestone.json | 3 + .../models/item/warped_cobblestone_slab.json | 3 + .../item/warped_cobblestone_stairs.json | 3 + .../models/item/warped_cobblestone_wall.json | 3 + .../models/item/warped_stone.json | 3 + .../models/item/warped_stone_slab.json | 3 + .../models/item/warped_stone_stairs.json | 3 + .../models/item/warped_stone_wall.json | 3 + .../emeraldcraft/models/item/warped_wart.json | 6 + .../resources/assets/emeraldcraft/sounds.json | 212 +++++++ .../sounds/nether_lambman/lambman1.ogg | Bin 0 -> 10285 bytes .../sounds/nether_lambman/lambman2.ogg | Bin 0 -> 10820 bytes .../sounds/nether_pigman/pigman1.ogg | Bin 0 -> 11757 bytes .../sounds/nether_pigman/pigman2.ogg | Bin 0 -> 11252 bytes .../sounds/piglin_cutey/ambient1.ogg | Bin 0 -> 24516 bytes .../sounds/piglin_cutey/ambient2.ogg | Bin 0 -> 19469 bytes .../sounds/piglin_cutey/celebrate.ogg | Bin 0 -> 19937 bytes .../sounds/piglin_cutey/death.ogg | Bin 0 -> 52584 bytes .../sounds/piglin_cutey/hurt1.ogg | Bin 0 -> 28117 bytes .../sounds/piglin_cutey/hurt2.ogg | Bin 0 -> 9378 bytes .../emeraldcraft/sounds/piglin_cutey/no.ogg | Bin 0 -> 25203 bytes .../sounds/piglin_cutey/trade.ogg | Bin 0 -> 9111 bytes .../emeraldcraft/sounds/piglin_cutey/yes.ogg | Bin 0 -> 9424 bytes .../sounds/villager/work_astrologist.ogg | Bin 0 -> 189785 bytes .../sounds/villager/work_beekeeper.ogg | Bin 0 -> 114754 bytes .../sounds/villager/work_carpenter.ogg | Bin 0 -> 20786 bytes .../villager/work_chemical_engineer.ogg | Bin 0 -> 42548 bytes .../sounds/villager/work_geologist.ogg | Bin 0 -> 223598 bytes .../sounds/villager/work_glazier.ogg | Bin 0 -> 27182 bytes .../sounds/villager/work_grower.ogg | Bin 0 -> 50764 bytes .../sounds/villager/work_icer.ogg | Bin 0 -> 21988 bytes .../sounds/villager/work_miner.ogg | Bin 0 -> 26254 bytes .../textures/block/azure_sand.png | Bin 0 -> 1715 bytes .../textures/block/azure_sandstone.png | Bin 0 -> 1845 bytes .../textures/block/azure_sandstone_bottom.png | Bin 0 -> 1855 bytes .../textures/block/azure_sandstone_top.png | Bin 0 -> 1699 bytes .../textures/block/blue_nether_bricks.png | Bin 0 -> 1734 bytes .../textures/block/carpentry_table_bottom.png | Bin 0 -> 1628 bytes .../textures/block/carpentry_table_saw.png | Bin 0 -> 2009 bytes .../textures/block/carpentry_table_side.png | Bin 0 -> 1656 bytes .../textures/block/carpentry_table_top.png | Bin 0 -> 1742 bytes .../block/continuous_miner_holder.png | Bin 0 -> 2037 bytes .../block/continuous_miner_main_sideh.png | Bin 0 -> 2123 bytes .../block/continuous_miner_main_sidev.png | Bin 0 -> 2179 bytes .../textures/block/continuous_miner_wheel.png | Bin 0 -> 2064 bytes .../block/continuous_miner_wheel_side.png | Bin 0 -> 1978 bytes .../textures/block/crimson_cobblestone.png | Bin 0 -> 2003 bytes .../textures/block/crimson_stone.png | Bin 0 -> 1680 bytes .../textures/block/crystalball_bottom.png | Bin 0 -> 440 bytes .../textures/block/crystalball_side.png | Bin 0 -> 1851 bytes .../block/crystalball_table_bottom.png | Bin 0 -> 394 bytes .../textures/block/crystalball_table_side.png | Bin 0 -> 160 bytes .../textures/block/crystalball_top.png | Bin 0 -> 152 bytes .../textures/block/cut_azure_sandstone.png | Bin 0 -> 1683 bytes .../textures/block/cut_emery_sandstone.png | Bin 0 -> 1620 bytes .../textures/block/cut_jadeite_sandstone.png | Bin 0 -> 1683 bytes .../textures/block/cut_quartz_sandstone.png | Bin 0 -> 1658 bytes .../textures/block/emery_sand.png | Bin 0 -> 1681 bytes .../textures/block/emery_sandstone.png | Bin 0 -> 1772 bytes .../textures/block/emery_sandstone_bottom.png | Bin 0 -> 1789 bytes .../textures/block/emery_sandstone_top.png | Bin 0 -> 1648 bytes .../textures/block/glass_kiln_front.png | Bin 0 -> 1951 bytes .../textures/block/glass_kiln_front_on.png | Bin 0 -> 2366 bytes .../textures/block/glass_kiln_side.png | Bin 0 -> 1931 bytes .../textures/block/glass_kiln_top.png | Bin 0 -> 1973 bytes .../textures/block/ice_maker_side.png | Bin 0 -> 2007 bytes .../textures/block/ice_maker_top.png | Bin 0 -> 1880 bytes .../textures/block/jadeite_sand.png | Bin 0 -> 1961 bytes .../textures/block/jadeite_sandstone.png | Bin 0 -> 2081 bytes .../block/jadeite_sandstone_bottom.png | Bin 0 -> 1886 bytes .../textures/block/jadeite_sandstone_top.png | Bin 0 -> 1705 bytes .../textures/block/melter_side.png | Bin 0 -> 2186 bytes .../textures/block/melter_top.png | Bin 0 -> 1906 bytes .../textures/block/mineral_table_bottom.png | Bin 0 -> 654 bytes .../textures/block/mineral_table_front.png | Bin 0 -> 723 bytes .../textures/block/mineral_table_side.png | Bin 0 -> 732 bytes .../textures/block/mineral_table_top.png | Bin 0 -> 289 bytes .../textures/block/quartz_sand.png | Bin 0 -> 2143 bytes .../textures/block/quartz_sandstone.png | Bin 0 -> 2214 bytes .../block/quartz_sandstone_bottom.png | Bin 0 -> 2240 bytes .../textures/block/quartz_sandstone_top.png | Bin 0 -> 2118 bytes .../textures/block/squeezer_bottom.png | Bin 0 -> 1647 bytes .../textures/block/squeezer_side0.png | Bin 0 -> 445 bytes .../textures/block/squeezer_side1.png | Bin 0 -> 450 bytes .../textures/block/squeezer_side2.png | Bin 0 -> 464 bytes .../textures/block/squeezer_side3.png | Bin 0 -> 462 bytes .../textures/block/squeezer_side4.png | Bin 0 -> 464 bytes .../textures/block/squeezer_top.png | Bin 0 -> 2134 bytes .../textures/block/warped_cobblestone.png | Bin 0 -> 2017 bytes .../textures/block/warped_stone.png | Bin 0 -> 1691 bytes .../textures/block/warped_wart_stage0.png | Bin 0 -> 1717 bytes .../textures/block/warped_wart_stage1.png | Bin 0 -> 1746 bytes .../textures/block/warped_wart_stage2.png | Bin 0 -> 1756 bytes .../entity/nether_lambman/nether_lambman.png | Bin 0 -> 4637 bytes .../entity/nether_pigman/nether_pigman.png | Bin 0 -> 4888 bytes .../entity/piglin_cutey/piglin_cutey.png | Bin 0 -> 4875 bytes .../villager/profession/astrologist.png | Bin 0 -> 2314 bytes .../entity/villager/profession/beekeeper.png | Bin 0 -> 3780 bytes .../entity/villager/profession/carpenter.png | Bin 0 -> 3580 bytes .../villager/profession/chemical_engineer.png | Bin 0 -> 2600 bytes .../entity/villager/profession/geologist.png | Bin 0 -> 1273 bytes .../entity/villager/profession/glazier.png | Bin 0 -> 4705 bytes .../entity/villager/profession/grower.png | Bin 0 -> 2910 bytes .../entity/villager/profession/icer.png | Bin 0 -> 2387 bytes .../entity/villager/profession/miner.png | Bin 0 -> 3982 bytes .../profession/astrologist.png | Bin 0 -> 2314 bytes .../zombie_villager/profession/beekeeper.png | Bin 0 -> 3780 bytes .../zombie_villager/profession/carpenter.png | Bin 0 -> 3580 bytes .../profession/chemical_engineer.png | Bin 0 -> 2600 bytes .../zombie_villager/profession/geologist.png | Bin 0 -> 1273 bytes .../zombie_villager/profession/glazier.png | Bin 0 -> 4705 bytes .../zombie_villager/profession/grower.png | Bin 0 -> 2910 bytes .../zombie_villager/profession/icer.png | Bin 0 -> 2387 bytes .../zombie_villager/profession/miner.png | Bin 0 -> 3982 bytes .../textures/gui/container/carpentry.png | Bin 0 -> 1432 bytes .../gui/container/continuous_miner.png | Bin 0 -> 3534 bytes .../textures/gui/container/glass_kiln.png | Bin 0 -> 1432 bytes .../textures/gui/container/ice_maker.png | Bin 0 -> 7034 bytes .../textures/gui/container/melter.png | Bin 0 -> 6542 bytes .../textures/gui/container/mineral_table.png | Bin 0 -> 3799 bytes .../textures/gui/gui_ice_maker.png | Bin 0 -> 7057 bytes .../emeraldcraft/textures/gui/gui_melter.png | Bin 0 -> 6576 bytes .../textures/gui/gui_mineral_table.png | Bin 0 -> 2713 bytes .../emeraldcraft/textures/gui/gui_vanilla.png | Bin 0 -> 9709 bytes .../textures/item/agate_apple.png | Bin 0 -> 1743 bytes .../textures/item/banner_pattern.png | Bin 0 -> 191 bytes .../textures/item/copper_concentrate.png | Bin 0 -> 1731 bytes .../textures/item/diamond_nugget.png | Bin 0 -> 1800 bytes .../textures/item/emerald_chest.png | Bin 0 -> 1553 bytes .../textures/item/emerald_feet.png | Bin 0 -> 1533 bytes .../textures/item/emerald_head.png | Bin 0 -> 1527 bytes .../textures/item/emerald_legs.png | Bin 0 -> 1537 bytes .../textures/item/emerald_nugget.png | Bin 0 -> 1579 bytes .../textures/item/gold_concentrate.png | Bin 0 -> 1699 bytes .../textures/item/iron_concentrate.png | Bin 0 -> 1738 bytes .../emeraldcraft/textures/item/jade_apple.png | Bin 0 -> 1749 bytes .../textures/item/lapis_chest.png | Bin 0 -> 1761 bytes .../emeraldcraft/textures/item/lapis_feet.png | Bin 0 -> 1741 bytes .../emeraldcraft/textures/item/lapis_head.png | Bin 0 -> 1735 bytes .../emeraldcraft/textures/item/lapis_legs.png | Bin 0 -> 1745 bytes .../textures/item/lapis_nugget.png | Bin 0 -> 1796 bytes .../textures/item/melted_copper_bucket.png | Bin 0 -> 2098 bytes .../textures/item/melted_emerald_bucket.png | Bin 0 -> 1754 bytes .../textures/item/melted_gold_bucket.png | Bin 0 -> 1963 bytes .../textures/item/melted_iron_bucket.png | Bin 0 -> 2091 bytes .../textures/item/warped_wart.png | Bin 0 -> 1825 bytes .../textures/models/armor_emerald.png | Bin 0 -> 2629 bytes .../textures/models/armor_emerald_legs.png | Bin 0 -> 2002 bytes .../textures/models/armor_lapis.png | Bin 0 -> 2850 bytes .../textures/models/armor_lapis_legs.png | Bin 0 -> 2218 bytes .../entity/banner/emeraldcraft_bee.png | Bin 0 -> 2387 bytes .../entity/banner/emeraldcraft_bottle.png | Bin 0 -> 1665 bytes .../entity/banner/emeraldcraft_potion.png | Bin 0 -> 1607 bytes .../entity/banner/emeraldcraft_snow.png | Bin 0 -> 2255 bytes .../entity/shield/emeraldcraft_bee.png | Bin 0 -> 2211 bytes .../entity/shield/emeraldcraft_bottle.png | Bin 0 -> 1810 bytes .../entity/shield/emeraldcraft_potion.png | Bin 0 -> 1997 bytes .../entity/shield/emeraldcraft_snow.png | Bin 0 -> 2213 bytes .../emeraldcraft/green_light.json | 56 ++ .../emeraldcraft/hard_currency.json | 77 +++ .../advancements/emeraldcraft/root.json | 37 ++ .../loot_tables/blocks/azure_sand.json | 20 + .../loot_tables/blocks/azure_sandstone.json | 20 + .../blocks/azure_sandstone_slab.json | 34 ++ .../blocks/azure_sandstone_stairs.json | 20 + .../blocks/azure_sandstone_wall.json | 20 + .../blocks/blue_nether_brick_slab.json | 34 ++ .../blocks/blue_nether_brick_stairs.json | 20 + .../blocks/blue_nether_brick_wall.json | 20 + .../blocks/blue_nether_bricks.json | 20 + .../loot_tables/blocks/carpentry_table.json | 20 + .../loot_tables/blocks/continuous_miner.json | 20 + .../blocks/crimson_cobblestone.json | 20 + .../blocks/crimson_cobblestone_slab.json | 34 ++ .../blocks/crimson_cobblestone_stairs.json | 20 + .../blocks/crimson_cobblestone_wall.json | 20 + .../loot_tables/blocks/crimson_stone.json | 44 ++ .../blocks/crimson_stone_slab.json | 34 ++ .../blocks/crimson_stone_stairs.json | 20 + .../blocks/crimson_stone_wall.json | 20 + .../loot_tables/blocks/crystalball_table.json | 30 + .../blocks/cut_azure_sandstone.json | 20 + .../blocks/cut_azure_sandstone_slab.json | 34 ++ .../blocks/cut_emery_sandstone.json | 20 + .../blocks/cut_emery_sandstone_slab.json | 34 ++ .../blocks/cut_jadeite_sandstone.json | 20 + .../blocks/cut_jadeite_sandstone_slab.json | 34 ++ .../blocks/cut_quartz_sandstone.json | 20 + .../blocks/cut_quartz_sandstone_slab.json | 34 ++ .../loot_tables/blocks/diamond_slab.json | 34 ++ .../loot_tables/blocks/diamond_stairs.json | 20 + .../loot_tables/blocks/diamond_wall.json | 20 + .../loot_tables/blocks/emerald_slab.json | 34 ++ .../loot_tables/blocks/emerald_stairs.json | 20 + .../loot_tables/blocks/emerald_wall.json | 20 + .../loot_tables/blocks/emery_sand.json | 20 + .../loot_tables/blocks/emery_sandstone.json | 20 + .../blocks/emery_sandstone_slab.json | 34 ++ .../blocks/emery_sandstone_stairs.json | 20 + .../blocks/emery_sandstone_wall.json | 20 + .../loot_tables/blocks/glass_kiln.json | 20 + .../loot_tables/blocks/gold_slab.json | 34 ++ .../loot_tables/blocks/gold_stairs.json | 20 + .../loot_tables/blocks/gold_wall.json | 20 + .../loot_tables/blocks/ice_maker.json | 20 + .../loot_tables/blocks/iron_slab.json | 34 ++ .../loot_tables/blocks/iron_stairs.json | 20 + .../loot_tables/blocks/iron_wall.json | 20 + .../loot_tables/blocks/jadeite_sand.json | 20 + .../loot_tables/blocks/jadeite_sandstone.json | 20 + .../blocks/jadeite_sandstone_slab.json | 34 ++ .../blocks/jadeite_sandstone_stairs.json | 20 + .../blocks/jadeite_sandstone_wall.json | 20 + .../loot_tables/blocks/lapis_slab.json | 34 ++ .../loot_tables/blocks/lapis_stairs.json | 20 + .../loot_tables/blocks/lapis_wall.json | 20 + .../loot_tables/blocks/melter.json | 20 + .../loot_tables/blocks/mineral_table.json | 20 + .../loot_tables/blocks/netherite_slab.json | 34 ++ .../loot_tables/blocks/netherite_stairs.json | 20 + .../loot_tables/blocks/netherite_wall.json | 20 + .../loot_tables/blocks/quartz_sand.json | 20 + .../loot_tables/blocks/quartz_sandstone.json | 20 + .../blocks/quartz_sandstone_slab.json | 34 ++ .../blocks/quartz_sandstone_stairs.json | 20 + .../blocks/quartz_sandstone_wall.json | 20 + .../blocks/smooth_azure_sandstone.json | 20 + .../blocks/smooth_azure_sandstone_slab.json | 34 ++ .../blocks/smooth_azure_sandstone_stairs.json | 20 + .../blocks/smooth_emery_sandstone.json | 20 + .../blocks/smooth_emery_sandstone_slab.json | 34 ++ .../blocks/smooth_emery_sandstone_stairs.json | 20 + .../blocks/smooth_jadeite_sandstone.json | 20 + .../blocks/smooth_jadeite_sandstone_slab.json | 34 ++ .../smooth_jadeite_sandstone_stairs.json | 20 + .../blocks/smooth_quartz_sandstone.json | 20 + .../blocks/smooth_quartz_sandstone_slab.json | 34 ++ .../smooth_quartz_sandstone_stairs.json | 20 + .../loot_tables/blocks/squeezer.json | 20 + .../blocks/warped_cobblestone.json | 20 + .../blocks/warped_cobblestone_slab.json | 34 ++ .../blocks/warped_cobblestone_stairs.json | 20 + .../blocks/warped_cobblestone_wall.json | 20 + .../loot_tables/blocks/warped_stone.json | 44 ++ .../loot_tables/blocks/warped_stone_slab.json | 34 ++ .../blocks/warped_stone_stairs.json | 20 + .../loot_tables/blocks/warped_stone_wall.json | 20 + .../loot_tables/blocks/warped_wart.json | 57 ++ .../chests/crimson_trench/medium_house.json | 100 ++++ .../chests/crimson_trench/small_house.json | 127 +++++ .../chests/warped_trench/medium_house.json | 100 ++++ .../chests/warped_trench/small_house.json | 127 +++++ .../chests/zombie_villager_room.json | 290 ++++++++++ .../nylium/crimson_nylium.json | 41 ++ .../nylium/warped_nylium.json | 51 ++ .../continuous_miner/ores/flint.json | 36 ++ .../continuous_miner/ores/nether.json | 56 ++ .../continuous_miner/ores/obsidian.json | 36 ++ .../continuous_miner/ores/overworld.json | 116 ++++ .../continuous_miner/wood/acacia_logs.json | 41 ++ .../continuous_miner/wood/birch_logs.json | 36 ++ .../continuous_miner/wood/crimson_stems.json | 46 ++ .../continuous_miner/wood/dark_oak_logs.json | 36 ++ .../continuous_miner/wood/jungle_logs.json | 41 ++ .../continuous_miner/wood/oak_logs.json | 41 ++ .../continuous_miner/wood/spruce_logs.json | 36 ++ .../continuous_miner/wood/warped_stems.json | 46 ++ .../hero_of_the_village/astrologist_gift.json | 27 + .../hero_of_the_village/beekeeper_gift.json | 19 + .../hero_of_the_village/carpenter_gift.json | 27 + .../chemical_engineer_gift.json | 27 + .../hero_of_the_village/geologist_gift.json | 39 ++ .../hero_of_the_village/glazier_gift.json | 27 + .../hero_of_the_village/grower_gift.json | 23 + .../hero_of_the_village/icer_gift.json | 31 ++ .../hero_of_the_village/miner_gift.json | 23 + .../recipes/acacia_boat_from_carpentry.json | 11 + .../recipes/acacia_button_from_carpentry.json | 11 + .../recipes/acacia_door_from_carpentry.json | 11 + .../recipes/acacia_fence_from_carpentry.json | 11 + .../acacia_fence_gate_from_carpentry.json | 11 + .../recipes/acacia_planks_from_carpentry.json | 11 + .../acacia_pressure_plate_from_carpentry.json | 11 + .../recipes/acacia_sign_from_carpentry.json | 11 + .../recipes/acacia_slab_from_carpentry.json | 11 + .../recipes/acacia_stairs_from_carpentry.json | 11 + .../acacia_trapdoor_from_carpentry.json | 11 + .../recipes/acacia_wood_from_carpentry.json | 11 + .../emeraldcraft/recipes/agate_apple.json | 19 + .../data/emeraldcraft/recipes/azure_sand.json | 20 + .../recipes/azure_sand_shapeless.json | 15 + .../emeraldcraft/recipes/azure_sandstone.json | 15 + .../recipes/azure_sandstone_slab.json | 17 + ...lab_from_azure_sandstone_stonecutting.json | 8 + .../recipes/azure_sandstone_stairs.json | 22 + ...irs_from_azure_sandstone_stonecutting.json | 8 + .../recipes/azure_sandstone_wall.json | 16 + ...all_from_azure_sandstone_stonecutting.json | 8 + .../recipes/barrel_from_carpentry.json | 10 + .../recipes/birch_boat_from_carpentry.json | 11 + .../recipes/birch_button_from_carpentry.json | 11 + .../recipes/birch_door_from_carpentry.json | 11 + .../recipes/birch_fence_from_carpentry.json | 11 + .../birch_fence_gate_from_carpentry.json | 11 + .../recipes/birch_planks_from_carpentry.json | 11 + .../birch_pressure_plate_from_carpentry.json | 11 + .../recipes/birch_sign_from_carpentry.json | 11 + .../recipes/birch_slab_from_carpentry.json | 11 + .../recipes/birch_stairs_from_carpentry.json | 11 + .../birch_trapdoor_from_carpentry.json | 11 + .../recipes/birch_wood_from_carpentry.json | 11 + ...lack_glazed_terracotta_from_glasskiln.json | 9 + ...blue_glazed_terracotta_from_glasskiln.json | 9 + .../recipes/blue_nether_brick_slab.json | 15 + ...b_from_red_nether_bricks_stonecutting.json | 8 + .../recipes/blue_nether_brick_stairs.json | 17 + ...s_from_red_nether_bricks_stonecutting.json | 8 + .../recipes/blue_nether_brick_wall.json | 16 + ...l_from_red_nether_bricks_stonecutting.json | 8 + .../recipes/blue_nether_bricks.json | 18 + .../recipes/bowl_from_carpentry.json | 10 + .../recipes/brick_from_glasskiln.json | 9 + ...rown_glazed_terracotta_from_glasskiln.json | 9 + .../emeraldcraft/recipes/carpentry_table.json | 21 + .../recipes/chest_from_carpentry.json | 10 + .../recipes/continuous_miner.json | 28 + ...per_block_from_copper_fluid_ice_maker.json | 9 + .../recipes/copper_concentrate.json | 16 + .../crafting_table_from_carpentry.json | 10 + .../crimson_button_from_carpentry.json | 11 + .../recipes/crimson_cobblestone.json | 14 + .../recipes/crimson_cobblestone_slab.json | 17 + ...from_crimson_cobblestone_stonecutting.json | 8 + .../recipes/crimson_cobblestone_stairs.json | 19 + ...from_crimson_cobblestone_stonecutting.json | 8 + .../recipes/crimson_cobblestone_wall.json | 16 + ...from_crimson_cobblestone_stonecutting.json | 8 + .../recipes/crimson_door_from_carpentry.json | 11 + .../recipes/crimson_fence_from_carpentry.json | 11 + .../crimson_fence_gate_from_carpentry.json | 11 + .../crimson_hyphae_from_carpentry.json | 11 + .../crimson_planks_from_carpentry.json | 11 + ...crimson_pressure_plate_from_carpentry.json | 11 + .../recipes/crimson_sign_from_carpentry.json | 11 + .../recipes/crimson_slab_from_carpentry.json | 11 + .../crimson_stairs_from_carpentry.json | 11 + .../emeraldcraft/recipes/crimson_stone.json | 14 + .../recipes/crimson_stone_slab.json | 17 + ..._slab_from_crimson_stone_stonecutting.json | 8 + .../recipes/crimson_stone_stairs.json | 19 + ...tairs_from_crimson_stone_stonecutting.json | 8 + .../recipes/crimson_stone_wall.json | 16 + ..._wall_from_crimson_stone_stonecutting.json | 8 + .../crimson_trapdoor_from_carpentry.json | 11 + .../recipes/crystalball_table.json | 22 + .../recipes/cut_azure_sandstone.json | 16 + ...one_from_azure_sandstone_stonecutting.json | 8 + .../recipes/cut_azure_sandstone_slab.json | 15 + ...lab_from_azure_sandstone_stonecutting.json | 8 + ...from_cut_azure_sandstone_stonecutting.json | 8 + .../recipes/cut_emery_sandstone.json | 16 + ...one_from_emery_sandstone_stonecutting.json | 8 + .../recipes/cut_emery_sandstone_slab.json | 15 + ...from_cut_emery_sandstone_stonecutting.json | 8 + ...lab_from_emery_sandstone_stonecutting.json | 8 + .../recipes/cut_jadeite_sandstone.json | 16 + ...e_from_jadeite_sandstone_stonecutting.json | 8 + .../recipes/cut_jadeite_sandstone_slab.json | 15 + ...om_cut_jadeite_sandstone_stonecutting.json | 8 + ...b_from_jadeite_sandstone_stonecutting.json | 8 + .../recipes/cut_quartz_sandstone.json | 16 + ...ne_from_quartz_sandstone_stonecutting.json | 8 + .../recipes/cut_quartz_sandstone_slab.json | 15 + ...rom_cut_quartz_sandstone_stonecutting.json | 8 + ...ab_from_quartz_sandstone_stonecutting.json | 8 + ...cyan_glazed_terracotta_from_glasskiln.json | 9 + .../recipes/dark_oak_boat_from_carpentry.json | 11 + .../dark_oak_button_from_carpentry.json | 11 + .../recipes/dark_oak_door_from_carpentry.json | 11 + .../dark_oak_fence_from_carpentry.json | 11 + .../dark_oak_fence_gate_from_carpentry.json | 11 + .../dark_oak_planks_from_carpentry.json | 11 + ...ark_oak_pressure_plate_from_carpentry.json | 11 + .../recipes/dark_oak_sign_from_carpentry.json | 11 + .../recipes/dark_oak_slab_from_carpentry.json | 11 + .../dark_oak_stairs_from_carpentry.json | 11 + .../dark_oak_trapdoor_from_carpentry.json | 11 + .../recipes/dark_oak_wood_from_carpentry.json | 11 + .../recipes/diamond_from_nuggets.json | 16 + .../emeraldcraft/recipes/diamond_nugget.json | 12 + .../diamond_nugget_from_mineraltable.json | 9 + .../emeraldcraft/recipes/diamond_slab.json | 17 + ..._slab_from_diamond_block_stonecutting.json | 8 + .../emeraldcraft/recipes/diamond_stairs.json | 19 + ...mond_stairs_from_diamond_stonecutting.json | 8 + .../emeraldcraft/recipes/diamond_wall.json | 16 + ..._wall_from_diamond_block_stonecutting.json | 8 + ...ld_block_from_emerald_fluid_ice_maker.json | 9 + .../emeraldcraft/recipes/emerald_chest.json | 16 + .../emeraldcraft/recipes/emerald_feet.json | 15 + .../recipes/emerald_from_nuggets.json | 16 + .../emeraldcraft/recipes/emerald_head.json | 15 + .../emeraldcraft/recipes/emerald_legs.json | 16 + .../emeraldcraft/recipes/emerald_nugget.json | 12 + .../emerald_nugget_from_mineraltable.json | 9 + .../emeraldcraft/recipes/emerald_slab.json | 17 + ..._slab_from_emerald_block_stonecutting.json | 8 + .../emeraldcraft/recipes/emerald_stairs.json | 19 + ...rald_stairs_from_emerald_stonecutting.json | 8 + .../emeraldcraft/recipes/emerald_wall.json | 16 + ..._wall_from_emerald_block_stonecutting.json | 8 + .../data/emeraldcraft/recipes/emery_sand.json | 20 + .../recipes/emery_sand_shapeless.json | 15 + .../emeraldcraft/recipes/emery_sandstone.json | 15 + .../recipes/emery_sandstone_slab.json | 17 + ...lab_from_emery_sandstone_stonecutting.json | 8 + .../recipes/emery_sandstone_stairs.json | 22 + ...irs_from_emery_sandstone_stonecutting.json | 8 + .../recipes/emery_sandstone_wall.json | 16 + ...all_from_emery_sandstone_stonecutting.json | 8 + .../recipes/glass_from_glasskiln.json | 9 + .../data/emeraldcraft/recipes/glass_kiln.json | 22 + .../gold_block_from_gold_fluid_ice_maker.json | 9 + .../recipes/gold_concentrate.json | 16 + .../gold_nugget_from_mineraltable.json | 9 + .../data/emeraldcraft/recipes/gold_slab.json | 17 + ...old_slab_from_gold_block_stonecutting.json | 8 + .../emeraldcraft/recipes/gold_stairs.json | 19 + .../gold_stairs_from_gold_stonecutting.json | 8 + .../data/emeraldcraft/recipes/gold_wall.json | 16 + ...old_wall_from_gold_block_stonecutting.json | 8 + ...gray_glazed_terracotta_from_glasskiln.json | 9 + ...reen_glazed_terracotta_from_glasskiln.json | 9 + .../ice_from_water_fluid_ice_maker.json | 9 + .../data/emeraldcraft/recipes/ice_maker.json | 26 + .../iron_block_from_iron_fluid_ice_maker.json | 9 + .../recipes/iron_concentrate.json | 16 + .../iron_nugget_from_mineraltable.json | 9 + .../data/emeraldcraft/recipes/iron_slab.json | 17 + ...ron_slab_from_iron_block_stonecutting.json | 8 + .../emeraldcraft/recipes/iron_stairs.json | 19 + .../iron_stairs_from_iron_stonecutting.json | 8 + .../data/emeraldcraft/recipes/iron_wall.json | 16 + ...ron_wall_from_iron_block_stonecutting.json | 8 + .../data/emeraldcraft/recipes/jade_apple.json | 19 + .../emeraldcraft/recipes/jadeite_sand.json | 20 + .../recipes/jadeite_sand_shapeless.json | 15 + .../recipes/jadeite_sandstone.json | 15 + .../recipes/jadeite_sandstone_slab.json | 17 + ...b_from_jadeite_sandstone_stonecutting.json | 8 + .../recipes/jadeite_sandstone_stairs.json | 22 + ...s_from_jadeite_sandstone_stonecutting.json | 8 + .../recipes/jadeite_sandstone_wall.json | 16 + ...l_from_jadeite_sandstone_stonecutting.json | 8 + .../recipes/jungle_boat_from_carpentry.json | 11 + .../recipes/jungle_button_from_carpentry.json | 11 + .../recipes/jungle_door_from_carpentry.json | 11 + .../recipes/jungle_fence_from_carpentry.json | 11 + .../jungle_fence_gate_from_carpentry.json | 11 + .../recipes/jungle_planks_from_carpentry.json | 11 + .../jungle_pressure_plate_from_carpentry.json | 11 + .../recipes/jungle_sign_from_carpentry.json | 11 + .../recipes/jungle_slab_from_carpentry.json | 11 + .../recipes/jungle_stairs_from_carpentry.json | 11 + .../jungle_trapdoor_from_carpentry.json | 11 + .../recipes/jungle_wood_from_carpentry.json | 11 + .../emeraldcraft/recipes/lapis_chest.json | 16 + .../data/emeraldcraft/recipes/lapis_feet.json | 15 + .../data/emeraldcraft/recipes/lapis_head.json | 15 + .../recipes/lapis_lazuli_from_nuggets.json | 16 + .../data/emeraldcraft/recipes/lapis_legs.json | 16 + .../emeraldcraft/recipes/lapis_nugget.json | 12 + .../lapis_nugget_from_mineraltable.json | 9 + .../data/emeraldcraft/recipes/lapis_slab.json | 17 + ...is_slab_from_lapis_block_stonecutting.json | 8 + .../emeraldcraft/recipes/lapis_stairs.json | 19 + .../lapis_stairs_from_lapis_stonecutting.json | 8 + .../data/emeraldcraft/recipes/lapis_wall.json | 16 + ...is_wall_from_lapis_block_stonecutting.json | 8 + .../lava_fluid_from_blackstone_melter.json | 11 + .../lava_fluid_from_cobblestone_melter.json | 11 + .../lava_fluid_from_magma_block_melter.json | 11 + .../lava_fluid_from_magma_cream_melter.json | 11 + ...blue_glazed_terracotta_from_glasskiln.json | 9 + ...gray_glazed_terracotta_from_glasskiln.json | 9 + ...lime_glazed_terracotta_from_glasskiln.json | 9 + ...enta_glazed_terracotta_from_glasskiln.json | 9 + ...elted_copper_from_copper_block_melter.json | 11 + ...copper_from_copper_concentrate_melter.json | 11 + .../melted_copper_from_cut_copper_melter.json | 11 + ...ted_copper_from_exposed_copper_melter.json | 11 + ...copper_from_exposed_cut_copper_melter.json | 11 + ...ed_copper_from_oxidized_copper_melter.json | 11 + ...opper_from_oxidized_cut_copper_melter.json | 11 + ...copper_from_waxed_copper_block_melter.json | 11 + ...d_copper_from_waxed_cut_copper_melter.json | 11 + ...pper_from_waxed_exposed_copper_melter.json | 11 + ..._from_waxed_exposed_cut_copper_melter.json | 11 + ...per_from_waxed_oxidized_copper_melter.json | 11 + ...from_waxed_oxidized_cut_copper_melter.json | 11 + ...er_from_waxed_weathered_copper_melter.json | 11 + ...rom_waxed_weathered_cut_copper_melter.json | 11 + ...d_copper_from_weathered_copper_melter.json | 11 + ...pper_from_weathered_cut_copper_melter.json | 11 + ...ted_emerald_from_emerald_block_melter.json | 11 + .../melted_gold_from_gold_block_melter.json | 11 + ...ted_gold_from_gold_concentrate_melter.json | 11 + .../melted_iron_from_iron_block_melter.json | 11 + ...ted_iron_from_iron_concentrate_melter.json | 11 + .../data/emeraldcraft/recipes/melter.json | 23 + .../emeraldcraft/recipes/mineral_table.json | 22 + .../recipes/nether_brick_from_glasskiln.json | 9 + .../emeraldcraft/recipes/netherite_slab.json | 17 + ...lab_from_netherite_block_stonecutting.json | 8 + .../recipes/netherite_stairs.json | 19 + ...te_stairs_from_netherite_stonecutting.json | 8 + .../emeraldcraft/recipes/netherite_wall.json | 16 + ...all_from_netherite_block_stonecutting.json | 8 + .../recipes/oak_boat_from_carpentry.json | 11 + .../recipes/oak_button_from_carpentry.json | 11 + .../recipes/oak_door_from_carpentry.json | 11 + .../recipes/oak_fence_from_carpentry.json | 11 + .../oak_fence_gate_from_carpentry.json | 11 + .../recipes/oak_planks_from_carpentry.json | 11 + .../oak_pressure_plate_from_carpentry.json | 11 + .../recipes/oak_sign_from_carpentry.json | 11 + .../recipes/oak_slab_from_carpentry.json | 11 + .../recipes/oak_stairs_from_carpentry.json | 11 + .../recipes/oak_trapdoor_from_carpentry.json | 11 + .../recipes/oak_wood_from_carpentry.json | 11 + .../obsidian_from_lava_fluid_ice_maker.json | 9 + ...ange_glazed_terracotta_from_glasskiln.json | 9 + ...pink_glazed_terracotta_from_glasskiln.json | 9 + ...rple_glazed_terracotta_from_glasskiln.json | 9 + .../emeraldcraft/recipes/quartz_sand.json | 20 + .../recipes/quartz_sand_shapeless.json | 15 + .../recipes/quartz_sandstone.json | 15 + .../recipes/quartz_sandstone_slab.json | 17 + ...ab_from_quartz_sandstone_stonecutting.json | 8 + .../recipes/quartz_sandstone_stairs.json | 22 + ...rs_from_quartz_sandstone_stonecutting.json | 8 + .../recipes/quartz_sandstone_wall.json | 16 + ...ll_from_quartz_sandstone_stonecutting.json | 8 + .../red_glazed_terracotta_from_glasskiln.json | 9 + .../emeraldcraft/recipes/rock_breaker.json | 26 + .../recipes/smooth_azure_sandstone.json | 9 + .../recipes/smooth_azure_sandstone_slab.json | 15 + ...m_smooth_azure_sandstone_stonecutting.json | 8 + .../smooth_azure_sandstone_stairs.json | 17 + ...m_smooth_azure_sandstone_stonecutting.json | 8 + .../recipes/smooth_emery_sandstone.json | 9 + .../recipes/smooth_emery_sandstone_slab.json | 15 + ...m_smooth_emery_sandstone_stonecutting.json | 8 + .../smooth_emery_sandstone_stairs.json | 17 + ...m_smooth_emery_sandstone_stonecutting.json | 8 + .../recipes/smooth_jadeite_sandstone.json | 9 + .../smooth_jadeite_sandstone_slab.json | 15 + ...smooth_jadeite_sandstone_stonecutting.json | 8 + .../smooth_jadeite_sandstone_stairs.json | 17 + ...smooth_jadeite_sandstone_stonecutting.json | 8 + .../recipes/smooth_quartz_sandstone.json | 9 + .../recipes/smooth_quartz_sandstone_slab.json | 15 + ..._smooth_quartz_sandstone_stonecutting.json | 8 + .../smooth_quartz_sandstone_stairs.json | 17 + ..._smooth_quartz_sandstone_stonecutting.json | 8 + .../recipes/spruce_boat_from_carpentry.json | 11 + .../recipes/spruce_button_from_carpentry.json | 11 + .../recipes/spruce_door_from_carpentry.json | 11 + .../recipes/spruce_fence_from_carpentry.json | 11 + .../spruce_fence_gate_from_carpentry.json | 11 + .../recipes/spruce_planks_from_carpentry.json | 11 + .../spruce_pressure_plate_from_carpentry.json | 11 + .../recipes/spruce_sign_from_carpentry.json | 11 + .../recipes/spruce_slab_from_carpentry.json | 11 + .../recipes/spruce_stairs_from_carpentry.json | 11 + .../spruce_trapdoor_from_carpentry.json | 11 + .../recipes/spruce_wood_from_carpentry.json | 11 + .../data/emeraldcraft/recipes/squeezer.json | 22 + .../recipes/stick_from_carpentry.json | 11 + .../stripped_acacia_log_from_carpentry.json | 11 + .../stripped_acacia_wood_from_carpentry.json | 11 + .../stripped_birch_log_from_carpentry.json | 11 + .../stripped_birch_wood_from_carpentry.json | 11 + .../stripped_crimson_log_from_carpentry.json | 11 + .../stripped_crimson_wood_from_carpentry.json | 11 + .../stripped_dark_oak_log_from_carpentry.json | 11 + ...stripped_dark_oak_wood_from_carpentry.json | 11 + .../stripped_jungle_log_from_carpentry.json | 11 + .../stripped_jungle_wood_from_carpentry.json | 11 + .../stripped_oak_log_from_carpentry.json | 11 + .../stripped_oak_wood_from_carpentry.json | 11 + .../stripped_spruce_log_from_carpentry.json | 11 + .../stripped_spruce_wood_from_carpentry.json | 11 + .../stripped_warped_log_from_carpentry.json | 11 + .../stripped_warped_wood_from_carpentry.json | 11 + .../recipes/terracotta_from_glasskiln.json | 9 + .../recipes/warped_button_from_carpentry.json | 11 + .../recipes/warped_cobblestone.json | 14 + .../recipes/warped_cobblestone_slab.json | 17 + ..._from_warped_cobblestone_stonecutting.json | 8 + .../recipes/warped_cobblestone_stairs.json | 19 + ..._from_warped_cobblestone_stonecutting.json | 8 + .../recipes/warped_cobblestone_wall.json | 16 + ..._from_warped_cobblestone_stonecutting.json | 8 + .../recipes/warped_door_from_carpentry.json | 11 + .../recipes/warped_fence_from_carpentry.json | 11 + .../warped_fence_gate_from_carpentry.json | 11 + .../recipes/warped_hyphae_from_carpentry.json | 11 + .../recipes/warped_planks_from_carpentry.json | 11 + .../warped_pressure_plate_from_carpentry.json | 11 + .../recipes/warped_sign_from_carpentry.json | 11 + .../recipes/warped_slab_from_carpentry.json | 11 + .../recipes/warped_stairs_from_carpentry.json | 11 + .../emeraldcraft/recipes/warped_stone.json | 14 + .../recipes/warped_stone_slab.json | 17 + ...e_slab_from_warped_stone_stonecutting.json | 8 + .../recipes/warped_stone_stairs.json | 19 + ...stairs_from_warped_stone_stonecutting.json | 8 + .../recipes/warped_stone_wall.json | 16 + ...e_wall_from_warped_stone_stonecutting.json | 8 + .../warped_trapdoor_from_carpentry.json | 11 + .../recipes/warped_wart_block.json | 16 + .../recipes/water_fluid_from_ice_melter.json | 11 + .../water_fluid_from_snow_block_melter.json | 11 + .../water_fluid_from_snowball_melter.json | 11 + ...hite_glazed_terracotta_from_glasskiln.json | 9 + ...llow_glazed_terracotta_from_glasskiln.json | 9 + .../center/nether_warfield1.nbt | Bin 0 -> 3058 bytes .../center/nether_warfield2.nbt | Bin 0 -> 3224 bytes .../center/nether_warfield3.nbt | Bin 0 -> 3142 bytes .../nether_warfield/crimson/center/spring.nbt | Bin 0 -> 4508 bytes .../nether_warfield/crimson/decor/candles.nbt | Bin 0 -> 258 bytes .../nether_warfield/crimson/decor/lamp.nbt | Bin 0 -> 480 bytes .../nether_warfield/crimson/houses/farm1.nbt | Bin 0 -> 840 bytes .../crimson/houses/medium1.nbt | Bin 0 -> 5179 bytes .../nether_warfield/crimson/houses/plant.nbt | Bin 0 -> 766 bytes .../nether_warfield/crimson/houses/small1.nbt | Bin 0 -> 1800 bytes .../nether_warfield/crimson/houses/small2.nbt | Bin 0 -> 1600 bytes .../crimson/streets/straight1.nbt | Bin 0 -> 1880 bytes .../crimson/streets/straight2.nbt | Bin 0 -> 1837 bytes .../crimson/streets/straight3.nbt | Bin 0 -> 1215 bytes .../crimson/streets/straight4.nbt | Bin 0 -> 950 bytes .../crimson/striders/strider1.nbt | Bin 0 -> 703 bytes .../crimson/striders/strider2.nbt | Bin 0 -> 688 bytes .../nether_warfield/crimson/villager.nbt | Bin 0 -> 699 bytes .../nether_warfield/warped/center/spring.nbt | Bin 0 -> 4404 bytes .../nether_warfield/warped/decor/candles.nbt | Bin 0 -> 260 bytes .../nether_warfield/warped/decor/lamp.nbt | Bin 0 -> 485 bytes .../nether_warfield/warped/houses/farm1.nbt | Bin 0 -> 856 bytes .../nether_warfield/warped/houses/medium1.nbt | Bin 0 -> 4318 bytes .../nether_warfield/warped/houses/plant.nbt | Bin 0 -> 766 bytes .../nether_warfield/warped/houses/small1.nbt | Bin 0 -> 1637 bytes .../nether_warfield/warped/houses/small2.nbt | Bin 0 -> 1614 bytes .../warped/streets/straight1.nbt | Bin 0 -> 1879 bytes .../warped/streets/straight2.nbt | Bin 0 -> 1838 bytes .../warped/streets/straight3.nbt | Bin 0 -> 1216 bytes .../warped/streets/straight4.nbt | Bin 0 -> 951 bytes .../warped/striders/strider1.nbt | Bin 0 -> 703 bytes .../warped/striders/strider2.nbt | Bin 0 -> 688 bytes .../nether_warfield/warped/villager.nbt | Bin 0 -> 713 bytes .../shelter/piglin_cutey_shelter.nbt | Bin 0 -> 5429 bytes .../piglin_cutey_shelter_no_piglin_cutey.nbt | Bin 0 -> 4773 bytes .../loot_modifiers/global_loot_modifiers.json | 6 + .../data/forge/tags/items/cobblestone.json | 7 + .../data/forge/tags/items/nuggets.json | 8 + .../forge/tags/items/nuggets/diamond.json | 6 + .../forge/tags/items/nuggets/emerald.json | 6 + .../data/forge/tags/items/nuggets/lapis.json | 6 + .../data/forge/tags/items/stone.json | 7 + .../tags/blocks/guarded_by_piglins.json | 8 + .../minecraft/tags/blocks/mineable/axe.json | 8 + .../tags/blocks/mineable/pickaxe.json | 94 ++++ .../tags/blocks/mineable/shovel.json | 9 + .../tags/blocks/needs_diamond_tool.json | 8 + .../tags/blocks/needs_iron_tool.json | 14 + .../tags/blocks/needs_stone_tool.json | 13 + .../data/minecraft/tags/blocks/sand.json | 9 + .../data/minecraft/tags/blocks/slabs.json | 28 + .../data/minecraft/tags/blocks/stairs.json | 24 + .../data/minecraft/tags/blocks/walls.json | 20 + .../minecraft/tags/items/piglin_loved.json | 8 + .../data/minecraft/tags/items/sand.json | 9 + .../data/minecraft/tags/items/slabs.json | 28 + .../data/minecraft/tags/items/stairs.json | 24 + .../data/minecraft/tags/items/walls.json | 20 + src/main/resources/emeraldcraft.mixins.json | 17 + src/main/resources/logo.png | Bin 0 -> 24964 bytes src/main/resources/pack.mcmeta | 6 + 1206 files changed, 28850 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 build.gradle create mode 100644 src/api/java/com/hexgram2021/emeraldcraft/api/ECTags.java create mode 100644 src/api/java/com/hexgram2021/emeraldcraft/api/crafting/ECRecipeSerializer.java create mode 100644 src/api/java/com/hexgram2021/emeraldcraft/api/crafting/ECSerializableRecipe.java create mode 100644 src/api/java/com/hexgram2021/emeraldcraft/api/crafting/IIngredientWithSizeSerializer.java create mode 100644 src/api/java/com/hexgram2021/emeraldcraft/api/crafting/IngredientWithSize.java create mode 100644 src/api/java/com/hexgram2021/emeraldcraft/api/util/SetRestrictedField.java create mode 100644 src/datagen/java/com/hexgram2021/emeraldcraft/data/ECDataGenerator.java create mode 100644 src/datagen/java/com/hexgram2021/emeraldcraft/data/Recipes.java create mode 100644 src/datagen/java/com/hexgram2021/emeraldcraft/data/RunCompleteHelper.java create mode 100644 src/datagen/java/com/hexgram2021/emeraldcraft/data/StructureUpdater.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/EmeraldCraft.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/ClientEventHandler.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/ClientMobEventSubscriber.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/ClientProxy.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/NetherLambmanEntity.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/NetherLambmanModel.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/NetherLambmanRenderer.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/NetherPigmanEntity.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/NetherPigmanModel.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/NetherPigmanRenderer.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/PiglinCuteyData.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/PiglinCuteyDataHolder.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/PiglinCuteyEntity.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/PiglinCuteyModel.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/PiglinCuteyRenderer.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/CommonProxy.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/ECContent.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/ECSaveData.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/MobAttributeEventSubscriber.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/ContinuousMinerBlockEntity.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/GlassKilnBlockEntity.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/IceMakerBlockEntity.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/MelterBlockEntity.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/MineralTableBlockEntity.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/blocks/plant/WarpedWartBlock.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/blocks/sculpture/SculptureBlock.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/CarpentryTableBlock.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/ContinuousMinerBlock.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/CrystalballTableBlock.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/GlassKilnBlock.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/IceMakerBlock.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/MelterBlock.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/MineralTableBlock.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/SqueezerBlock.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/CarpentryTableMenu.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/CarpentryTableRecipe.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/ContinuousMinerMenu.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/FluidType.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/GlassKilnMenu.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/GlassKilnRecipe.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/IceMakerMenu.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/IceMakerRecipe.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MelterMenu.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MelterRecipe.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MineralTableMenu.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MineralTableRecipe.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/RecipeCachingReloadListener.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/RecipeReloadListener.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/CarpentryTableCategory.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/GlassKilnRecipeCategory.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/IceMakerRecipeCategory.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/JEIHelper.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/MelterRecipeCategory.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/MineralTableRecipeCategory.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/package-info.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/CarpentryTableScreen.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/ContinuousMinerScreen.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/GlassKilnRecipeBookComponent.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/GlassKilnScreen.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/IceMakerScreen.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/MelterScreen.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/MineralTableScreen.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/CarpentryTableRecipeSerializer.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/GlassKilnRecipeSerializer.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/IceMakerRecipeSerializer.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/MelterRecipeSerializer.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/MineralTableRecipeSerializer.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/items/EmeraldArmorItem.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/items/LapisArmorItem.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBiomes.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBlockEntity.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBlocks.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECConfiguredFeatures.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECConfiguredStructures.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECConfiguredSurfaceBuilder.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECContainerTypes.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECEntities.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECFeatures.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECItems.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECProperty.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECRecipeSerializer.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECRecipes.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructures.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECSurfaceBuilder.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/util/ECFoods.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/util/ECLogger.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/util/ECSounds.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/ECTrades.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/ECWorldGen.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/NetherWarfieldFeature.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/ShelterFeature.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/ShelterPieces.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/Villages.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/ZombieVillagerRoomFeature.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/pools/NetherWarfieldPools.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/surface/AzureDesertSurfaceBuilder.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/surface/EmeryDesertSurfaceBuilder.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/surface/JadeiteDesertSurfaceBuilder.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/surface/QuartzDesertSurfaceBuilder.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/AbstractSkeletonMixin.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/HeroGiftsTaskAccess.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/MobEntityAccess.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/MultiNoiseBiomeSourceAccess.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/NetherBiomesAccess.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/StructureFeatureAccess.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/StructureSettingsAccess.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/StructureSettingsConfigAccess.java create mode 100644 src/main/resources/META-INF/mods.toml create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/azure_sand.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/blue_nether_brick_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/blue_nether_brick_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/blue_nether_brick_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/blue_nether_bricks.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/carpentry_table.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/continuous_miner.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/crimson_stone.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/crimson_stone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/crimson_stone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/crimson_stone_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/crystalball_table.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/cut_azure_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/cut_azure_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/cut_emery_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/cut_emery_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/cut_jadeite_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/cut_jadeite_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/cut_quartz_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/cut_quartz_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/diamond_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/diamond_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/diamond_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/emerald_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/emerald_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/emerald_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/emery_sand.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/glass_kiln.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/gold_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/gold_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/gold_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/ice_maker.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/iron_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/iron_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/iron_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/jadeite_sand.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/lapis_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/lapis_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/lapis_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/melter.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/mineral_table.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/netherite_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/netherite_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/netherite_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/quartz_sand.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/smooth_azure_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/smooth_azure_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/smooth_azure_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/smooth_emery_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/smooth_emery_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/smooth_emery_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/smooth_jadeite_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/smooth_jadeite_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/smooth_jadeite_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/smooth_quartz_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/smooth_quartz_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/smooth_quartz_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/squeezer.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/warped_stone.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/warped_stone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/warped_stone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/warped_stone_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/warped_wart.json create mode 100644 src/main/resources/assets/emeraldcraft/lang/en_us.json create mode 100644 src/main/resources/assets/emeraldcraft/lang/zh_cn.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/azure_sand.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/azure_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_side_tall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_side_tall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/blue_nether_bricks.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/carpentry_table.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/continuous_miner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_side_tall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/crimson_stone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/crimson_stone_mirrored.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/crimson_stone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/crimson_stone_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/crimson_stone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/crimson_stone_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/crimson_stone_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_side_tall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/crystalball_table.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/cut_azure_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/cut_azure_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/cut_azure_sandstone_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/cut_emery_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/cut_emery_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/cut_emery_sandstone_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/cut_jadeite_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/cut_jadeite_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/cut_jadeite_sandstone_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/cut_quartz_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/cut_quartz_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/cut_quartz_sandstone_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/diamond_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/diamond_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/diamond_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/diamond_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/diamond_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/diamond_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/diamond_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/diamond_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/diamond_wall_side_tall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/emerald_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/emerald_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/emerald_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/emerald_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/emerald_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/emerald_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/emerald_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/emerald_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/emerald_wall_side_tall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/emery_sand.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/emery_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_side_tall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/glass_kiln.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/glass_kiln_on.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/gold_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/gold_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/gold_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/gold_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/gold_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/gold_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/gold_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/gold_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/gold_wall_side_tall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ice_maker.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/iron_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/iron_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/iron_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/iron_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/iron_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/iron_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/iron_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/iron_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/iron_wall_side_tall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/jadeite_sand.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_side_tall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/lapis_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/lapis_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/lapis_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/lapis_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/lapis_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/lapis_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/lapis_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/lapis_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/lapis_wall_side_tall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/melter.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/mineral_table.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/netherite_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/netherite_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/netherite_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/netherite_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/netherite_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/netherite_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/netherite_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/netherite_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/netherite_wall_side_tall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/quartz_sand.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_side_tall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/squeezer_0.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/squeezer_1.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/squeezer_2.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/squeezer_3.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/squeezer_4.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_side_tall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/warped_stone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/warped_stone_mirrored.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/warped_stone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/warped_stone_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/warped_stone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/warped_stone_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/warped_stone_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_side_tall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/warped_wart_stage0.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/warped_wart_stage1.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/warped_wart_stage2.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/agate_apple.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/azure_sand.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/azure_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/azure_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/azure_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/azure_sandstone_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/bee_banner_pattern.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/blue_nether_brick_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/blue_nether_brick_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/blue_nether_brick_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/blue_nether_bricks.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/bottle_banner_pattern.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/carpentry_table.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/continuous_miner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/copper_concentrate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/crimson_stone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/crimson_stone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/crimson_stone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/crimson_stone_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/crystalball_table.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/cut_azure_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/cut_azure_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/cut_emery_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/cut_emery_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/cut_jadeite_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/cut_jadeite_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/cut_quartz_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/cut_quartz_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/diamond_nugget.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/diamond_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/diamond_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/diamond_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/emerald_chest.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/emerald_feet.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/emerald_head.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/emerald_legs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/emerald_nugget.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/emerald_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/emerald_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/emerald_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/emery_sand.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/emery_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/emery_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/emery_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/emery_sandstone_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/glass_kiln.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/gold_concentrate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/gold_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/gold_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/gold_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/ice_maker.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/iron_concentrate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/iron_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/iron_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/iron_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/jade_apple.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/jadeite_sand.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/lapis_chest.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/lapis_feet.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/lapis_head.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/lapis_legs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/lapis_nugget.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/lapis_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/lapis_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/lapis_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/melted_copper_bucket.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/melted_emerald_bucket.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/melted_gold_bucket.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/melted_iron_bucket.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/melter.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/mineral_table.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/nether_lambman_spawn_egg.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/nether_pigman_spawn_egg.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/netherite_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/netherite_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/netherite_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/piglin_cutey_spawn_egg.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/potion_banner_pattern.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/quartz_sand.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/rock_breaker.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/smooth_azure_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/smooth_azure_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/smooth_azure_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/smooth_emery_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/smooth_emery_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/smooth_emery_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/smooth_jadeite_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/smooth_jadeite_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/smooth_jadeite_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/smooth_quartz_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/smooth_quartz_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/smooth_quartz_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/snow_banner_pattern.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/squeezer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/warped_stone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/warped_stone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/warped_stone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/warped_stone_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/warped_wart.json create mode 100644 src/main/resources/assets/emeraldcraft/sounds.json create mode 100644 src/main/resources/assets/emeraldcraft/sounds/nether_lambman/lambman1.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/nether_lambman/lambman2.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/nether_pigman/pigman1.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/nether_pigman/pigman2.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/ambient1.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/ambient2.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/celebrate.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/death.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/hurt1.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/hurt2.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/no.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/trade.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/yes.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/villager/work_astrologist.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/villager/work_beekeeper.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/villager/work_carpenter.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/villager/work_chemical_engineer.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/villager/work_geologist.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/villager/work_glazier.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/villager/work_grower.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/villager/work_icer.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/villager/work_miner.ogg create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/azure_sand.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/azure_sandstone.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/azure_sandstone_bottom.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/azure_sandstone_top.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/blue_nether_bricks.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/carpentry_table_bottom.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/carpentry_table_saw.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/carpentry_table_side.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/carpentry_table_top.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_holder.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_main_sideh.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_main_sidev.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_wheel.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_wheel_side.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/crimson_cobblestone.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/crimson_stone.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/crystalball_bottom.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/crystalball_side.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/crystalball_table_bottom.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/crystalball_table_side.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/crystalball_top.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/cut_azure_sandstone.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/cut_emery_sandstone.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/cut_jadeite_sandstone.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/cut_quartz_sandstone.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/emery_sand.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/emery_sandstone.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/emery_sandstone_bottom.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/emery_sandstone_top.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/glass_kiln_front.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/glass_kiln_front_on.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/glass_kiln_side.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/glass_kiln_top.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/ice_maker_side.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/ice_maker_top.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/jadeite_sand.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/jadeite_sandstone.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/jadeite_sandstone_bottom.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/jadeite_sandstone_top.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/melter_side.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/melter_top.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/mineral_table_bottom.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/mineral_table_front.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/mineral_table_side.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/mineral_table_top.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/quartz_sand.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/quartz_sandstone.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/quartz_sandstone_bottom.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/quartz_sandstone_top.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/squeezer_bottom.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/squeezer_side0.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/squeezer_side1.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/squeezer_side2.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/squeezer_side3.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/squeezer_side4.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/squeezer_top.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/warped_cobblestone.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/warped_stone.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/warped_wart_stage0.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/warped_wart_stage1.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/warped_wart_stage2.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/nether_lambman/nether_lambman.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/nether_pigman/nether_pigman.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/piglin_cutey/piglin_cutey.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/astrologist.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/beekeeper.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/carpenter.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/chemical_engineer.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/geologist.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/glazier.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/grower.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/icer.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/miner.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/astrologist.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/beekeeper.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/carpenter.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/chemical_engineer.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/geologist.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/glazier.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/grower.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/icer.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/miner.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/gui/container/carpentry.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/gui/container/continuous_miner.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/gui/container/glass_kiln.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/gui/container/ice_maker.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/gui/container/melter.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/gui/container/mineral_table.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/gui/gui_ice_maker.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/gui/gui_melter.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/gui/gui_mineral_table.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/gui/gui_vanilla.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/agate_apple.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/banner_pattern.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/copper_concentrate.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/diamond_nugget.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/emerald_chest.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/emerald_feet.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/emerald_head.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/emerald_legs.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/emerald_nugget.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/gold_concentrate.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/iron_concentrate.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/jade_apple.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/lapis_chest.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/lapis_feet.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/lapis_head.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/lapis_legs.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/lapis_nugget.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/melted_copper_bucket.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/melted_emerald_bucket.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/melted_gold_bucket.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/melted_iron_bucket.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/warped_wart.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/models/armor_emerald.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/models/armor_emerald_legs.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/models/armor_lapis.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/models/armor_lapis_legs.png create mode 100644 src/main/resources/assets/minecraft/textures/entity/banner/emeraldcraft_bee.png create mode 100644 src/main/resources/assets/minecraft/textures/entity/banner/emeraldcraft_bottle.png create mode 100644 src/main/resources/assets/minecraft/textures/entity/banner/emeraldcraft_potion.png create mode 100644 src/main/resources/assets/minecraft/textures/entity/banner/emeraldcraft_snow.png create mode 100644 src/main/resources/assets/minecraft/textures/entity/shield/emeraldcraft_bee.png create mode 100644 src/main/resources/assets/minecraft/textures/entity/shield/emeraldcraft_bottle.png create mode 100644 src/main/resources/assets/minecraft/textures/entity/shield/emeraldcraft_potion.png create mode 100644 src/main/resources/assets/minecraft/textures/entity/shield/emeraldcraft_snow.png create mode 100644 src/main/resources/data/emeraldcraft/advancements/emeraldcraft/green_light.json create mode 100644 src/main/resources/data/emeraldcraft/advancements/emeraldcraft/hard_currency.json create mode 100644 src/main/resources/data/emeraldcraft/advancements/emeraldcraft/root.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sand.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_brick_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_brick_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_brick_wall.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_bricks.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/carpentry_table.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/continuous_miner.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/crystalball_table.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_azure_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_azure_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_emery_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_emery_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_jadeite_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_jadeite_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_quartz_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_quartz_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/diamond_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/diamond_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/diamond_wall.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/emerald_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/emerald_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/emerald_wall.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sand.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/glass_kiln.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/gold_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/gold_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/gold_wall.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/ice_maker.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/iron_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/iron_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/iron_wall.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sand.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/lapis_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/lapis_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/lapis_wall.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/melter.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/mineral_table.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/netherite_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/netherite_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/netherite_wall.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sand.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_azure_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_azure_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_azure_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_emery_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_emery_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_emery_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_jadeite_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_jadeite_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_jadeite_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_quartz_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_quartz_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_quartz_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/squeezer.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_wart.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/chests/crimson_trench/medium_house.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/chests/crimson_trench/small_house.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/chests/warped_trench/medium_house.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/chests/warped_trench/small_house.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/chests/zombie_villager_room.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/nylium/crimson_nylium.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/nylium/warped_nylium.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/flint.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/nether.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/obsidian.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/overworld.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/acacia_logs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/birch_logs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/crimson_stems.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/dark_oak_logs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/jungle_logs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/oak_logs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/spruce_logs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/warped_stems.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/astrologist_gift.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/beekeeper_gift.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/carpenter_gift.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/chemical_engineer_gift.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/geologist_gift.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/glazier_gift.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/grower_gift.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/icer_gift.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/miner_gift.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/acacia_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/acacia_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/acacia_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/acacia_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/acacia_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/acacia_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/acacia_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/acacia_sign_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/acacia_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/acacia_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/acacia_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/acacia_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/agate_apple.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/azure_sand.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/azure_sand_shapeless.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/azure_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/azure_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/azure_sandstone_slab_from_azure_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/azure_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/azure_sandstone_stairs_from_azure_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/azure_sandstone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/azure_sandstone_wall_from_azure_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/barrel_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/birch_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/birch_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/birch_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/birch_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/birch_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/birch_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/birch_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/birch_sign_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/birch_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/birch_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/birch_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/birch_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/black_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/blue_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/blue_nether_brick_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/blue_nether_brick_slab_from_red_nether_bricks_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/blue_nether_brick_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/blue_nether_brick_stairs_from_red_nether_bricks_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/blue_nether_brick_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/blue_nether_brick_wall_from_red_nether_bricks_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/blue_nether_bricks.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/bowl_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/brick_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/brown_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry_table.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/chest_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/continuous_miner.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/copper_block_from_copper_fluid_ice_maker.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/copper_concentrate.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_table_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_cobblestone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_cobblestone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_cobblestone_slab_from_crimson_cobblestone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_cobblestone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_cobblestone_stairs_from_crimson_cobblestone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_cobblestone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_cobblestone_wall_from_crimson_cobblestone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_hyphae_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_sign_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_stone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_stone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_stone_slab_from_crimson_stone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_stone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_stone_stairs_from_crimson_stone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_stone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_stone_wall_from_crimson_stone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crimson_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crystalball_table.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/cut_azure_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/cut_azure_sandstone_from_azure_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/cut_azure_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/cut_azure_sandstone_slab_from_azure_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/cut_azure_sandstone_slab_from_cut_azure_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/cut_emery_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/cut_emery_sandstone_from_emery_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/cut_emery_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/cut_emery_sandstone_slab_from_cut_emery_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/cut_emery_sandstone_slab_from_emery_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/cut_jadeite_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/cut_jadeite_sandstone_from_jadeite_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/cut_jadeite_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/cut_jadeite_sandstone_slab_from_cut_jadeite_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/cut_jadeite_sandstone_slab_from_jadeite_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/cut_quartz_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/cut_quartz_sandstone_from_quartz_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/cut_quartz_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/cut_quartz_sandstone_slab_from_cut_quartz_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/cut_quartz_sandstone_slab_from_quartz_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/cyan_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/dark_oak_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/dark_oak_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/dark_oak_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/dark_oak_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/dark_oak_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/dark_oak_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/dark_oak_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/dark_oak_sign_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/dark_oak_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/dark_oak_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/dark_oak_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/dark_oak_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/diamond_from_nuggets.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/diamond_nugget.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/diamond_nugget_from_mineraltable.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/diamond_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/diamond_slab_from_diamond_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/diamond_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/diamond_stairs_from_diamond_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/diamond_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/diamond_wall_from_diamond_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/emerald_block_from_emerald_fluid_ice_maker.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/emerald_chest.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/emerald_feet.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/emerald_from_nuggets.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/emerald_head.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/emerald_legs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/emerald_nugget.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/emerald_nugget_from_mineraltable.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/emerald_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/emerald_slab_from_emerald_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/emerald_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/emerald_stairs_from_emerald_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/emerald_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/emerald_wall_from_emerald_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/emery_sand.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/emery_sand_shapeless.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/emery_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/emery_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/emery_sandstone_slab_from_emery_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/emery_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/emery_sandstone_stairs_from_emery_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/emery_sandstone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/emery_sandstone_wall_from_emery_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/glass_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/glass_kiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/gold_block_from_gold_fluid_ice_maker.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/gold_concentrate.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/gold_nugget_from_mineraltable.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/gold_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/gold_slab_from_gold_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/gold_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/gold_stairs_from_gold_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/gold_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/gold_wall_from_gold_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/gray_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/green_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/ice_from_water_fluid_ice_maker.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/ice_maker.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/iron_block_from_iron_fluid_ice_maker.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/iron_concentrate.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/iron_nugget_from_mineraltable.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/iron_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/iron_slab_from_iron_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/iron_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/iron_stairs_from_iron_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/iron_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/iron_wall_from_iron_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/jade_apple.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/jadeite_sand.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/jadeite_sand_shapeless.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/jadeite_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/jadeite_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/jadeite_sandstone_slab_from_jadeite_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/jadeite_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/jadeite_sandstone_stairs_from_jadeite_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/jadeite_sandstone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/jadeite_sandstone_wall_from_jadeite_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/jungle_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/jungle_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/jungle_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/jungle_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/jungle_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/jungle_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/jungle_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/jungle_sign_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/jungle_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/jungle_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/jungle_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/jungle_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/lapis_chest.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/lapis_feet.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/lapis_head.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/lapis_lazuli_from_nuggets.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/lapis_legs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/lapis_nugget.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/lapis_nugget_from_mineraltable.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/lapis_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/lapis_slab_from_lapis_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/lapis_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/lapis_stairs_from_lapis_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/lapis_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/lapis_wall_from_lapis_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/lava_fluid_from_blackstone_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/lava_fluid_from_cobblestone_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/lava_fluid_from_magma_block_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/lava_fluid_from_magma_cream_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/light_blue_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/light_gray_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/lime_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/magenta_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melted_copper_from_copper_block_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melted_copper_from_copper_concentrate_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melted_copper_from_cut_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melted_copper_from_exposed_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melted_copper_from_exposed_cut_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melted_copper_from_oxidized_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melted_copper_from_oxidized_cut_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melted_copper_from_waxed_copper_block_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melted_copper_from_waxed_cut_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melted_copper_from_waxed_exposed_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melted_copper_from_waxed_exposed_cut_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melted_copper_from_waxed_oxidized_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melted_copper_from_waxed_oxidized_cut_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melted_copper_from_waxed_weathered_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melted_copper_from_waxed_weathered_cut_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melted_copper_from_weathered_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melted_copper_from_weathered_cut_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melted_emerald_from_emerald_block_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melted_gold_from_gold_block_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melted_gold_from_gold_concentrate_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melted_iron_from_iron_block_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melted_iron_from_iron_concentrate_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/mineral_table.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/nether_brick_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/netherite_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/netherite_slab_from_netherite_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/netherite_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/netherite_stairs_from_netherite_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/netherite_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/netherite_wall_from_netherite_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/oak_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/oak_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/oak_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/oak_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/oak_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/oak_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/oak_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/oak_sign_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/oak_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/oak_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/oak_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/oak_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/obsidian_from_lava_fluid_ice_maker.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/orange_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/pink_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/purple_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/quartz_sand.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/quartz_sand_shapeless.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/quartz_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/quartz_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/quartz_sandstone_slab_from_quartz_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/quartz_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/quartz_sandstone_stairs_from_quartz_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/quartz_sandstone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/quartz_sandstone_wall_from_quartz_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/red_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/rock_breaker.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smooth_azure_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smooth_azure_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smooth_azure_sandstone_slab_from_smooth_azure_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smooth_azure_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smooth_azure_sandstone_stairs_from_smooth_azure_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smooth_emery_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smooth_emery_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smooth_emery_sandstone_slab_from_smooth_emery_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smooth_emery_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smooth_emery_sandstone_stairs_from_smooth_emery_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smooth_jadeite_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smooth_jadeite_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smooth_jadeite_sandstone_slab_from_smooth_jadeite_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smooth_jadeite_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smooth_jadeite_sandstone_stairs_from_smooth_jadeite_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smooth_quartz_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smooth_quartz_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smooth_quartz_sandstone_slab_from_smooth_quartz_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smooth_quartz_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smooth_quartz_sandstone_stairs_from_smooth_quartz_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/spruce_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/spruce_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/spruce_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/spruce_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/spruce_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/spruce_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/spruce_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/spruce_sign_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/spruce_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/spruce_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/spruce_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/spruce_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/squeezer.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stick_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stripped_acacia_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stripped_acacia_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stripped_birch_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stripped_birch_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stripped_crimson_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stripped_crimson_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stripped_dark_oak_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stripped_dark_oak_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stripped_jungle_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stripped_jungle_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stripped_oak_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stripped_oak_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stripped_spruce_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stripped_spruce_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stripped_warped_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stripped_warped_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_cobblestone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_cobblestone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_cobblestone_slab_from_warped_cobblestone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_cobblestone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_cobblestone_stairs_from_warped_cobblestone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_cobblestone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_cobblestone_wall_from_warped_cobblestone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_hyphae_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_sign_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_stone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_stone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_stone_slab_from_warped_stone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_stone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_stone_stairs_from_warped_stone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_stone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_stone_wall_from_warped_stone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/warped_wart_block.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/water_fluid_from_ice_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/water_fluid_from_snow_block_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/water_fluid_from_snowball_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/white_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/yellow_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/center/nether_warfield1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/center/nether_warfield2.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/center/nether_warfield3.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/center/spring.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/decor/candles.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/decor/lamp.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/farm1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/medium1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/plant.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/small1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/small2.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/streets/straight1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/streets/straight2.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/streets/straight3.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/streets/straight4.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/striders/strider1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/striders/strider2.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/villager.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/center/spring.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/decor/candles.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/decor/lamp.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/farm1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/medium1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/plant.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/small1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/small2.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/streets/straight1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/streets/straight2.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/streets/straight3.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/streets/straight4.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/striders/strider1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/striders/strider2.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/villager.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/shelter/piglin_cutey_shelter.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/shelter/piglin_cutey_shelter_no_piglin_cutey.nbt create mode 100644 src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json create mode 100644 src/main/resources/data/forge/tags/items/cobblestone.json create mode 100644 src/main/resources/data/forge/tags/items/nuggets.json create mode 100644 src/main/resources/data/forge/tags/items/nuggets/diamond.json create mode 100644 src/main/resources/data/forge/tags/items/nuggets/emerald.json create mode 100644 src/main/resources/data/forge/tags/items/nuggets/lapis.json create mode 100644 src/main/resources/data/forge/tags/items/stone.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/guarded_by_piglins.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/mineable/axe.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/mineable/pickaxe.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/mineable/shovel.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/needs_diamond_tool.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/needs_iron_tool.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/needs_stone_tool.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/sand.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/slabs.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/stairs.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/walls.json create mode 100644 src/main/resources/data/minecraft/tags/items/piglin_loved.json create mode 100644 src/main/resources/data/minecraft/tags/items/sand.json create mode 100644 src/main/resources/data/minecraft/tags/items/slabs.json create mode 100644 src/main/resources/data/minecraft/tags/items/stairs.json create mode 100644 src/main/resources/data/minecraft/tags/items/walls.json create mode 100644 src/main/resources/emeraldcraft.mixins.json create mode 100644 src/main/resources/logo.png create mode 100644 src/main/resources/pack.mcmeta diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..f811f6ae --- /dev/null +++ b/.gitattributes @@ -0,0 +1,5 @@ +# Disable autocrlf on generated files, they always generate with LF +# Add any extra files or paths here to make git stop saying they +# are changed when only line endings change. +src/generated/**/.cache/cache text eol=lf +src/generated/**/*.json text eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..12f86447 --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +# eclipse +bin +*.launch +.settings +.metadata +.classpath +.project + +# idea +out +*.ipr +*.iws +*.iml +.idea + +# gradle +build +.gradle + +# other +eclipse +run + +# Files from Forge MDK +forge*changelog.txt diff --git a/build.gradle b/build.gradle new file mode 100644 index 00000000..d637f1d7 --- /dev/null +++ b/build.gradle @@ -0,0 +1,217 @@ +buildscript { + repositories { + // These repositories are only for Gradle plugins, put any other repositories in the repository block further below + maven { url = 'https://maven.minecraftforge.net' } + jcenter() + mavenCentral() + maven { name="sponge"; url 'https://repo.spongepowered.org/repository/maven-public/' } + } + dependencies { + classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true + classpath 'org.spongepowered:mixingradle:0.7-SNAPSHOT' + } +} +apply plugin: 'net.minecraftforge.gradle' +// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. +apply plugin: 'eclipse' +apply plugin: 'maven-publish' + +apply plugin: 'org.spongepowered.mixin' + +version = '1.2' +group = 'com.hexagram2021.emeraldcraft' // http://maven.apache.org/guides/mini/guide-naming-conventions.html +archivesBaseName = 'emeraldcraft' + +// Mojang ships Java 16 to end users in 1.17+ instead of Java 8 in 1.16 or lower, so your mod should target Java 16. +java.toolchain.languageVersion = JavaLanguageVersion.of(16) + +println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch')) +minecraft { + // The mappings can be changed at any time and must be in the following format. + // Channel: Version: + // snapshot YYYYMMDD Snapshot are built nightly. + // stable # Stables are built at the discretion of the MCP team. + // official MCVersion Official field/method names from Mojang mapping files + // + // You must be aware of the Mojang license when using the 'official' mappings. + // See more information here: https://github.com/MinecraftForge/MCPConfig/blob/master/Mojang.md + // + // Use non-default mappings at your own risk. They may not always work. + // Simply re-run your setup task after changing the mappings to update your workspace. + mappings channel: 'official', version: '1.17.1' + + //accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') + + // Default run configurations. + // These can be tweaked, removed, or duplicated as needed. + runs { + client { + workingDirectory project.file('run') + + // Recommended logging data for a userdev environment + // The markers can be added/remove as needed separated by commas. + // "SCAN": For mods scan. + // "REGISTRIES": For firing of registry events. + // "REGISTRYDUMP": For getting the contents of all registries. + property 'forge.logging.markers', 'REGISTRIES' + property 'mixin.env.remapRefMap', 'true' + property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg" + + // Recommended logging level for the console + // You can set various levels here. + // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels + property 'forge.logging.console.level', 'debug' + arg "-mixin.config=emeraldcraft.mixins.json" + + mods { + emeraldcraft { + source sourceSets.main + } + } + } + + server { + workingDirectory project.file('run') + + // Recommended logging data for a userdev environment + // The markers can be added/remove as needed separated by commas. + // "SCAN": For mods scan. + // "REGISTRIES": For firing of registry events. + // "REGISTRYDUMP": For getting the contents of all registries. + property 'forge.logging.markers', 'REGISTRIES' + property 'mixin.env.remapRefMap', 'true' + property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg" + + // Recommended logging level for the console + // You can set various levels here. + // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels + property 'forge.logging.console.level', 'debug' + arg "-mixin.config=emeraldcraft.mixins.json" + + mods { + emeraldcraft { + source sourceSets.main + } + } + } + + data { + workingDirectory project.file('run') + + // Recommended logging data for a userdev environment + // The markers can be added/remove as needed separated by commas. + // "SCAN": For mods scan. + // "REGISTRIES": For firing of registry events. + // "REGISTRYDUMP": For getting the contents of all registries. + property 'forge.logging.markers', 'REGISTRIES' + property 'mixin.env.remapRefMap', 'true' + property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg" + + // Recommended logging level for the console + // You can set various levels here. + // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels + property 'forge.logging.console.level', 'debug' + + // Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources. + args '--mod', 'examplemod', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') + arg "-mixin.config=emeraldcraft.mixins.json" + + mods { + emeraldcraft { + source sourceSets.main + } + } + } + } +} + +// Include resources generated by data generators. +sourceSets.main.resources { srcDir 'src/generated/resources' } + +repositories { + // Put repositories for dependencies here + // ForgeGradle automatically adds the Forge maven and Maven Central for you + + // If you have mod jar dependencies in ./libs, you can declare them as a repository like so: + // flatDir { + // dir 'libs' + // } + maven { // TOP + url "https://cursemaven.com" + } + maven { // JEI + name 'DVS1 Maven FS' + url 'https://dvs1.progwml6.com/files/maven' + } + maven { //mirror + name = "ModMaven" + url = "https://modmaven.dev" + } +} + +dependencies { + implementation 'org.jetbrains:annotations:20.1.0' + + // Specify the version of Minecraft to use. If this is any group other than 'net.minecraft', it is assumed + // that the dep is a ForgeGradle 'patcher' dependency, and its patches will be applied. + // The userdev artifact is a special name and will get all sorts of transformations applied to it. + minecraft 'net.minecraftforge:forge:1.17.1-37.1.1' + + // Real mod deobf dependency examples - these get remapped to your current mappings + compileOnly fg.deobf("mezz.jei:jei-1.17.1:8.3.1.62:api") // Adds JEI API as a compile dependency + + annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' + // runtimeOnly fg.deobf("mezz.jei:jei-${mc_version}:${jei_version}") // Adds the full JEI mod as a runtime dependency + // implementation fg.deobf("com.tterrag.registrate:Registrate:MC${mc_version}-${registrate_version}") // Adds registrate as a dependency + + // Examples using mod jars from ./libs + // implementation fg.deobf("blank:coolmod-${mc_version}:${coolmod_version}") + + // For more info... + // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html + // http://www.gradle.org/docs/current/userguide/dependency_management.html +} + +// Example for how to get properties into the manifest for reading at runtime. +jar { + manifest { + attributes([ + "Specification-Title" : "Emerald Craft Mod", + "Specification-Vendor" : "Hexagram", + "Specification-Version" : "1", // We are version 1 of ourselves + "Implementation-Title" : project.name, + "Implementation-Version" : project.jar.archiveVersion, + "Implementation-Vendor" : "Hexagram", + "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), + 'FMLCorePluginContainsFMLMod': 'true' + ]) + } +} + +// Example configuration to allow publishing using the maven-publish plugin +// This is the preferred method to reobfuscate your jar file +jar.finalizedBy('reobfJar') +// However if you are in a multi-project build, dev time needs unobfed jar files, so you can delay the obfuscation until publishing by doing +// publish.dependsOn('reobfJar') + +publishing { + publications { + mavenJava(MavenPublication) { + artifact jar + } + } + repositories { + maven { + url "file://${project.projectDir}/mcmodsrepo" + } + } +} + +mixin { + // MixinGradle Settings + add sourceSets.main, 'emeraldcraft.refmap.json' + config 'emeraldcraft.mixins.json' + + debug.verbose = true + debug.export = true +} diff --git a/src/api/java/com/hexgram2021/emeraldcraft/api/ECTags.java b/src/api/java/com/hexgram2021/emeraldcraft/api/ECTags.java new file mode 100644 index 00000000..956ff380 --- /dev/null +++ b/src/api/java/com/hexgram2021/emeraldcraft/api/ECTags.java @@ -0,0 +1,5 @@ +package com.hexgram2021.emeraldcraft.api; + +public class ECTags { + +} \ No newline at end of file diff --git a/src/api/java/com/hexgram2021/emeraldcraft/api/crafting/ECRecipeSerializer.java b/src/api/java/com/hexgram2021/emeraldcraft/api/crafting/ECRecipeSerializer.java new file mode 100644 index 00000000..345fc35c --- /dev/null +++ b/src/api/java/com/hexgram2021/emeraldcraft/api/crafting/ECRecipeSerializer.java @@ -0,0 +1,52 @@ +package com.hexgram2021.emeraldcraft.api.crafting; + +import com.google.common.base.Preconditions; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.item.crafting.ShapedRecipe; +import net.minecraftforge.common.crafting.CraftingHelper; +import net.minecraftforge.registries.ForgeRegistryEntry; + +import java.util.function.Function; + +public abstract class ECRecipeSerializer > extends ForgeRegistryEntry> implements RecipeSerializer { + public abstract ItemStack getIcon(); + + @Override + public final R fromJson(ResourceLocation recipeId, JsonObject json) { + if(CraftingHelper.processConditions(json, "conditions")) + return readFromJson(recipeId, json); + return null; + } + + protected ItemStack readOutput(JsonElement outputObject) { + if(outputObject.isJsonObject()&&outputObject.getAsJsonObject().has("item")) + return ShapedRecipe.itemStackFromJson(outputObject.getAsJsonObject()); + IngredientWithSize outgredient = IngredientWithSize.deserialize(outputObject); + return getPreferredStack(outgredient.getMatchingStacks()); + } + + private ItemStack getPreferredStack(ItemStack[] matchingStacks) { + ItemStack preferredStack = null; + Function getName = stack -> stack.getItem().getRegistryName(); + + for(ItemStack stack : matchingStacks) + { + ResourceLocation rl = getName.apply(stack); + if(rl==null) + continue; + if(preferredStack==null) + preferredStack = stack; + else if(rl.compareTo(getName.apply(preferredStack)) < 0) + preferredStack = stack; + } + Preconditions.checkNotNull(preferredStack, "No entry found in %s", matchingStacks); + return preferredStack; + } + + public abstract R readFromJson(ResourceLocation recipeId, JsonObject json); +} diff --git a/src/api/java/com/hexgram2021/emeraldcraft/api/crafting/ECSerializableRecipe.java b/src/api/java/com/hexgram2021/emeraldcraft/api/crafting/ECSerializableRecipe.java new file mode 100644 index 00000000..3470db98 --- /dev/null +++ b/src/api/java/com/hexgram2021/emeraldcraft/api/crafting/ECSerializableRecipe.java @@ -0,0 +1,72 @@ +package com.hexgram2021.emeraldcraft.api.crafting; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.Container; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.level.Level; + +public abstract class ECSerializableRecipe implements Recipe { + protected final ItemStack outputDummy; + protected final RecipeType type; + protected final ResourceLocation id; + + protected ECSerializableRecipe(ItemStack outputDummy, RecipeType type, ResourceLocation id) + { + this.outputDummy = outputDummy; + this.type = type; + this.id = id; + } + + @Override + public boolean isSpecial() + { + return true; + } + + @Override + public ItemStack getToastSymbol() + { + return getECSerializer().getIcon(); + } + + @Override + public boolean matches(Container inv, Level worldIn) + { + return false; + } + + @Override + public ItemStack assemble(Container inv) + { + return this.outputDummy; + } + + @Override + public boolean canCraftInDimensions(int width, int height) + { + return false; + } + + @Override + public ResourceLocation getId() + { + return this.id; + } + + @Override + public RecipeSerializer getSerializer() + { + return getECSerializer(); + } + + protected abstract ECRecipeSerializer getECSerializer(); + + @Override + public RecipeType getType() + { + return this.type; + } +} diff --git a/src/api/java/com/hexgram2021/emeraldcraft/api/crafting/IIngredientWithSizeSerializer.java b/src/api/java/com/hexgram2021/emeraldcraft/api/crafting/IIngredientWithSizeSerializer.java new file mode 100644 index 00000000..326ceb63 --- /dev/null +++ b/src/api/java/com/hexgram2021/emeraldcraft/api/crafting/IIngredientWithSizeSerializer.java @@ -0,0 +1,13 @@ +package com.hexgram2021.emeraldcraft.api.crafting; + +import com.google.gson.JsonElement; +import net.minecraft.network.FriendlyByteBuf; + +import javax.annotation.Nonnull; + +public interface IIngredientWithSizeSerializer { + IngredientWithSize parse(@Nonnull FriendlyByteBuf buffer); + void write(@Nonnull FriendlyByteBuf buffer, @Nonnull IngredientWithSize ingredient); + IngredientWithSize parse(@Nonnull JsonElement json); + JsonElement write(@Nonnull IngredientWithSize ingredient); +} diff --git a/src/api/java/com/hexgram2021/emeraldcraft/api/crafting/IngredientWithSize.java b/src/api/java/com/hexgram2021/emeraldcraft/api/crafting/IngredientWithSize.java new file mode 100644 index 00000000..6fded242 --- /dev/null +++ b/src/api/java/com/hexgram2021/emeraldcraft/api/crafting/IngredientWithSize.java @@ -0,0 +1,103 @@ +package com.hexgram2021.emeraldcraft.api.crafting; + +import com.google.gson.JsonElement; +import com.hexgram2021.emeraldcraft.api.util.SetRestrictedField; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.tags.Tag; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraftforge.items.ItemHandlerHelper; + +import java.util.function.Predicate; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +public class IngredientWithSize implements Predicate { + public static final SetRestrictedField SERIALIZER = SetRestrictedField.common(); + protected final Ingredient basePredicate; + protected final int count; + + public IngredientWithSize(Ingredient basePredicate, int count) { + this.basePredicate = basePredicate; + this.count = count; + } + + public IngredientWithSize(Ingredient basePredicate) { + this(basePredicate, 1); + } + + public IngredientWithSize(Tag basePredicate, int count) { + this(Ingredient.of(basePredicate), count); + } + + public IngredientWithSize(Tag basePredicate) { + this(basePredicate, 1); + } + + public static IngredientWithSize deserialize(JsonElement input) { + return SERIALIZER.getValue().parse(input); + } + + public static IngredientWithSize read(FriendlyByteBuf input) { + return SERIALIZER.getValue().parse(input); + } + + @Override + public boolean test(@Nullable ItemStack itemStack) { + if(itemStack==null) + return false; + return basePredicate.test(itemStack)&&itemStack.getCount() >= this.count; + } + + @Nonnull + public ItemStack[] getMatchingStacks() { + ItemStack[] baseStacks = basePredicate.getItems(); + ItemStack[] ret = new ItemStack[baseStacks.length]; + for(int i = 0; i < baseStacks.length; ++i) + ret[i] = ItemHandlerHelper.copyStackWithSize(baseStacks[i], this.count); + return ret; + } + + @Nonnull + public JsonElement serialize() { + return SERIALIZER.getValue().write(this); + } + + public boolean hasNoMatchingItems() { + return basePredicate.isEmpty(); + } + + public int getCount() { + return count; + } + + public Ingredient getBaseIngredient() { + return basePredicate; + } + + public IngredientWithSize withSize(int size) { + return new IngredientWithSize(this.basePredicate, size); + } + + public static IngredientWithSize of(ItemStack stack) { + return new IngredientWithSize(Ingredient.of(stack), stack.getCount()); + } + + public ItemStack getRandomizedExampleStack(int rand) { + ItemStack[] all = getMatchingStacks(); + if (all.length == 0) + return ItemStack.EMPTY; + else + return all[(rand/20)%all.length]; + } + + public boolean testIgnoringSize(ItemStack itemstack) { + return basePredicate.test(itemstack); + } + + public void write(FriendlyByteBuf out) { + SERIALIZER.getValue().write(out, this); + } +} \ No newline at end of file diff --git a/src/api/java/com/hexgram2021/emeraldcraft/api/util/SetRestrictedField.java b/src/api/java/com/hexgram2021/emeraldcraft/api/util/SetRestrictedField.java new file mode 100644 index 00000000..1d36abf6 --- /dev/null +++ b/src/api/java/com/hexgram2021/emeraldcraft/api/util/SetRestrictedField.java @@ -0,0 +1,93 @@ +package com.hexgram2021.emeraldcraft.api.util; + +import com.google.common.base.Preconditions; +import com.mojang.datafixers.util.Pair; +import net.minecraftforge.fml.ModLoadingContext; + +import java.util.ArrayList; +import java.util.List; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class SetRestrictedField { + private static final InitializationTracker CLIENT_FIELDS = new InitializationTracker(); + private static final InitializationTracker COMMON_FIELDS = new InitializationTracker(); + + private final InitializationTracker tracker; + private T value; + + private SetRestrictedField(InitializationTracker tracker) { + this.tracker = tracker; + } + + public static SetRestrictedField client() { + return CLIENT_FIELDS.make(); + } + + public static SetRestrictedField common() { + return COMMON_FIELDS.make(); + } + + public static void lock(boolean client) { + if(client) + CLIENT_FIELDS.lock(); + else + COMMON_FIELDS.lock(); + } + + public static void startInitializing(boolean client) { + if(client) + CLIENT_FIELDS.startInitialization(); + else + COMMON_FIELDS.startInitialization(); + } + + public void setValue(T value) { + Preconditions.checkState(tracker.state==TrackerState.INITIALIZING); + String currentMod = ModLoadingContext.get().getActiveNamespace(); + Preconditions.checkState( + MODID.equals(currentMod), + "Restricted fields may only be set by Emerald Craft, current mod is %s", currentMod + ); + this.value = value; + } + + public T getValue() { + return Preconditions.checkNotNull(value); + } + + public boolean isInitialized() { + return value!=null; + } + + private static class InitializationTracker { + private final List>> fields = new ArrayList<>(); + private TrackerState state = TrackerState.OPEN; + + SetRestrictedField make() { + Preconditions.checkState(state!=TrackerState.LOCKED); + SetRestrictedField result = new SetRestrictedField<>(this); + fields.add(Pair.of(new RuntimeException("Field created here"), result)); + return result; + } + + public void startInitialization() { + Preconditions.checkState(state==TrackerState.OPEN); + state = TrackerState.INITIALIZING; + } + + void lock() { + Preconditions.checkState(state==TrackerState.INITIALIZING); + for(Pair> field : fields) + if(!field.getSecond().isInitialized()) + throw new RuntimeException(field.getFirst()); + state = TrackerState.LOCKED; + } + } + + private enum TrackerState { + OPEN, + INITIALIZING, + LOCKED + } +} \ No newline at end of file diff --git a/src/datagen/java/com/hexgram2021/emeraldcraft/data/ECDataGenerator.java b/src/datagen/java/com/hexgram2021/emeraldcraft/data/ECDataGenerator.java new file mode 100644 index 00000000..66fdc1df --- /dev/null +++ b/src/datagen/java/com/hexgram2021/emeraldcraft/data/ECDataGenerator.java @@ -0,0 +1,27 @@ +package com.hexgram2021.emeraldcraft.data; + +import com.hexagram2021.emeraldcraft.EmeraldCraft; +import net.minecraft.data.DataGenerator; +import net.minecraft.data.tags.BlockTagsProvider; +import net.minecraftforge.common.data.ExistingFileHelper; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; +import net.minecraftforge.forge.event.lifecycle.GatherDataEvent; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@EventBusSubscriber(modid = MODID, bus = Bus.MOD) +public class ECDataGenerator { + @SubscribeEvent + public static void gatherData(GatherDataEvent event) { + ExistingFileHelper exHelper = event.getExistingFileHelper(); + DataGenerator gen = event.getGenerator(); + if(event.includeServer()) { + gen.addProvider(new Recipes(gen)); + gen.addProvider(new StructureUpdater("structures/village", MODID, exHelper, gen)); + // Always keep this as the last provider! + gen.addProvider(new RunCompleteHelper()); + } + } +} diff --git a/src/datagen/java/com/hexgram2021/emeraldcraft/data/Recipes.java b/src/datagen/java/com/hexgram2021/emeraldcraft/data/Recipes.java new file mode 100644 index 00000000..cd291132 --- /dev/null +++ b/src/datagen/java/com/hexgram2021/emeraldcraft/data/Recipes.java @@ -0,0 +1,153 @@ +package com.hexgram2021.emeraldcraft.data; + +import com.google.gson.JsonObject; +import com.hexagram2021.emeraldcraft.EmeraldCraft; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks.*; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import net.minecraft.data.DataGenerator; +import net.minecraft.data.HashCache; +import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeProvider; +import net.minecraft.data.recipes.ShapedRecipeBuilder; +import net.minecraft.data.recipes.ShapelessRecipeBuilder; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.Tag; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.block.SlabBlock; +import net.minecraft.world.level.block.StairBlock; +import net.minecraft.world.level.block.WallBlock; +import net.minecraftforge.registries.ForgeRegistries; + +import javax.annotation.Nonnull; +import java.nio.file.Path; +import java.util.HashMap; +import java.util.Map; +import java.util.function.Consumer; + +public class Recipes extends RecipeProvider { + private final Path ADV_ROOT; + private final HashMap PATH_COUNT = new HashMap<>(); + + public Recipes(DataGenerator gen) { + super(gen); + ADV_ROOT = gen.getOutputFolder().resolve("data/minecraft/advancements/recipes/root.json"); + } + + @Override + protected void saveAdvancement(HashCache cache, JsonObject json, Path path) { + if(path.equals(ADV_ROOT)) return; //We NEVER care about this. + super.saveAdvancement(cache, json, path); + } + + private String toPath(ItemLike src) { + return src.asItem().getRegistryName().getPath(); + } + + private ResourceLocation toRL(String s) { + if(!s.contains("/")) + s = "crafting/"+s; + if(PATH_COUNT.containsKey(s)) + { + int count = PATH_COUNT.get(s)+1; + PATH_COUNT.put(s, count); + return new ResourceLocation(EmeraldCraft.MODID, s+count); + } + PATH_COUNT.put(s, 1); + return new ResourceLocation(EmeraldCraft.MODID, s); + } + + private void addArmor(ItemLike input, Map items, String name, Consumer out) { + ItemLike feet = items.get(EquipmentSlot.FEET); + ItemLike legs = items.get(EquipmentSlot.LEGS); + ItemLike chest = items.get(EquipmentSlot.CHEST); + ItemLike head = items.get(EquipmentSlot.HEAD); + ShapedRecipeBuilder.shaped(feet) + .pattern("x x") + .pattern("x x") + .define('x', input) + .unlockedBy("has_"+name, has(input)) + .save(out, toRL(toPath(feet))); + ShapedRecipeBuilder.shaped(legs) + .pattern("xxx") + .pattern("x x") + .pattern("x x") + .define('x', input) + .unlockedBy("has_"+name, has(input)) + .save(out, toRL(toPath(legs))); + ShapedRecipeBuilder.shaped(chest) + .pattern("x x") + .pattern("xxx") + .pattern("xxx") + .define('x', input) + .unlockedBy("has_"+name, has(input)) + .save(out, toRL(toPath(chest))); + ShapedRecipeBuilder.shaped(head) + .pattern("xxx") + .pattern("x x") + .define('x', input) + .unlockedBy("has_"+name, has(input)) + .save(out, toRL(toPath(head))); + } + + private void add3x3Conversion(ItemLike bigItem, ItemLike smallItem, Consumer out) { + ShapedRecipeBuilder.shaped(bigItem) + .define('s', smallItem) + .pattern("sss") + .pattern("sss") + .pattern("sss") + .unlockedBy("has_"+toPath(smallItem), has(smallItem)) + .save(out, toRL(toPath(smallItem)+"_to_")+toPath(bigItem)); + } + + private void addSlab(ItemLike block, ItemLike slab, Consumer out) { + ShapedRecipeBuilder.shaped(slab, 6) + .define('s', block) + .pattern("sss") + .unlockedBy("has_"+toPath(block), has(block)) + .save(out, toRL(toPath(block)+"_to_slab")); + } + + private void addStairs(ItemLike block, ItemLike stair, Consumer out) { + ShapedRecipeBuilder.shaped(stair, 4) + .define('s', block) + .pattern("s ") + .pattern("ss ") + .pattern("sss") + .unlockedBy("has_"+toPath(block), has(block)) + .save(out, toRL(toPath(block)+"_to_stair")); + } + + private void addWall(ItemLike block, ItemLike stair, Consumer out) { + ShapedRecipeBuilder.shaped(stair, 6) + .define('w', block) + .pattern("www") + .pattern("www") + .unlockedBy("has_"+toPath(block), has(block)) + .save(out, toRL(toPath(block)+"_to_wall")); + } + + @Override + protected void buildCraftingRecipes(Consumer out) { + recipesDecorations(out); + addArmor(Items.EMERALD, ECItems.EMERALD_ARMOR, "emerald", out); + addArmor(Items.LAPIS_LAZULI, ECItems.LAPIS_ARMOR, "lapis", out); + } + + private void recipesDecorations(@Nonnull Consumer out) { + for(Map.Entry> blockSlab : ECBlocks.TO_SLAB.entrySet()) { + addSlab(ForgeRegistries.BLOCKS.getValue(blockSlab.getKey()), blockSlab.getValue(), out); + } + for(Map.Entry> blockStairs : ECBlocks.TO_STAIRS.entrySet()) { + addStairs(ForgeRegistries.BLOCKS.getValue(blockStairs.getKey()), blockStairs.getValue(), out); + } + for(Map.Entry> blockWall : ECBlocks.TO_WALL.entrySet()) { + addWall(ForgeRegistries.BLOCKS.getValue(blockWall.getKey()), blockWall.getValue(), out); + } + + add3x3Conversion(Items.WARPED_WART_BLOCK, ECItems.WARPED_WART, out); + } +} diff --git a/src/datagen/java/com/hexgram2021/emeraldcraft/data/RunCompleteHelper.java b/src/datagen/java/com/hexgram2021/emeraldcraft/data/RunCompleteHelper.java new file mode 100644 index 00000000..d1e13f6e --- /dev/null +++ b/src/datagen/java/com/hexgram2021/emeraldcraft/data/RunCompleteHelper.java @@ -0,0 +1,23 @@ +package com.hexgram2021.emeraldcraft.data; + +import net.minecraft.data.DataProvider; +import net.minecraft.data.HashCache; + +import javax.annotation.Nonnull; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +public class RunCompleteHelper implements DataProvider { + @Override + public void run(HashCache cache) throws IOException { + Path toCreate = Paths.get("ec_data_gen_done"); + if(!Files.exists(toCreate)) + Files.createFile(toCreate); + } + + @Nonnull + @Override + public String getName() { return "Create a file to allow crashes in datagen to be detected"; } +} diff --git a/src/datagen/java/com/hexgram2021/emeraldcraft/data/StructureUpdater.java b/src/datagen/java/com/hexgram2021/emeraldcraft/data/StructureUpdater.java new file mode 100644 index 00000000..01e8f04d --- /dev/null +++ b/src/datagen/java/com/hexgram2021/emeraldcraft/data/StructureUpdater.java @@ -0,0 +1,95 @@ +package com.hexgram2021.emeraldcraft.data; + +import net.minecraft.data.DataGenerator; +import net.minecraft.data.DataProvider; +import net.minecraft.data.HashCache; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtIo; +import net.minecraft.nbt.NbtUtils; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.resources.SimpleReloadableResourceManager; +import net.minecraft.util.datafix.DataFixTypes; +import net.minecraft.util.datafix.DataFixers; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; +import net.minecraftforge.common.data.ExistingFileHelper; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import javax.annotation.Nonnull; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.lang.reflect.Field; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Objects; + +public class StructureUpdater implements DataProvider { + private static final Logger LOGGER = LogManager.getLogger(); + + private final String basePath; + private final String modid; + private final DataGenerator gen; + private final SimpleReloadableResourceManager resources; + + public StructureUpdater(String basePath, String modid, ExistingFileHelper helper, DataGenerator gen) { + this.basePath = basePath; + this.modid = modid; + this.gen = gen; + try { + Field serverData = ExistingFileHelper.class.getDeclaredField("serverData"); + serverData.setAccessible(true); + resources = (SimpleReloadableResourceManager)serverData.get(helper); + } catch(NoSuchFieldException|IllegalAccessException e) { + throw new RuntimeException(e); + } + } + + @Override + public void run(@Nonnull HashCache cache) throws IOException { + for(ResourceLocation loc : resources.listResources(basePath, $ -> true)) + if(loc.getNamespace().equals(modid)) + process(loc, cache); + } + + private void process(ResourceLocation loc, HashCache cache) throws IOException { + CompoundTag inputNBT = NbtIo.readCompressed( + resources.getResource(loc).getInputStream() + ); + CompoundTag converted = updateNBT(inputNBT); + if(!converted.equals(inputNBT)) + writeNBTTo(loc, converted, cache); + } + + private void writeNBTTo(ResourceLocation loc, CompoundTag data, HashCache cache) throws IOException { + ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream(); + NbtIo.writeCompressed(data, bytearrayoutputstream); + byte[] bytes = bytearrayoutputstream.toByteArray(); + String hashString = SHA1.hashBytes(bytes).toString(); + Path outputPath = gen.getOutputFolder().resolve("data/"+loc.getNamespace()+"/"+loc.getPath()); + + if(!Objects.equals(cache.getHash(outputPath), hashString)||!Files.exists(outputPath)) { + Files.createDirectories(outputPath.getParent()); + try(OutputStream outputstream = Files.newOutputStream(outputPath)) { + outputstream.write(bytes); + } + } + cache.putNew(outputPath, hashString); + } + + private static CompoundTag updateNBT(CompoundTag nbt) { + final CompoundTag updatedNBT = NbtUtils.update( + DataFixers.getDataFixer(), DataFixTypes.STRUCTURE, nbt, nbt.getInt("DataVersion") + ); + StructureTemplate template = new StructureTemplate(); + template.load(updatedNBT); + return template.save(new CompoundTag()); + } + + @Nonnull + @Override + public String getName() + { + return "Update structure files in "+basePath; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/EmeraldCraft.java b/src/main/java/com/hexagram2021/emeraldcraft/EmeraldCraft.java new file mode 100644 index 00000000..32292421 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/EmeraldCraft.java @@ -0,0 +1,130 @@ +package com.hexagram2021.emeraldcraft; + +import com.hexagram2021.emeraldcraft.client.ClientProxy; +import com.hexagram2021.emeraldcraft.common.CommonProxy; +import com.hexagram2021.emeraldcraft.common.ECContent; +import com.hexagram2021.emeraldcraft.common.ECSaveData; +import com.hexagram2021.emeraldcraft.common.crafting.RecipeCachingReloadListener; +import com.hexagram2021.emeraldcraft.common.crafting.RecipeReloadListener; +import com.hexagram2021.emeraldcraft.common.register.ECBiomes; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import com.hexagram2021.emeraldcraft.common.util.ECLogger; +import com.hexagram2021.emeraldcraft.common.world.ECWorldGen; +import com.hexagram2021.emeraldcraft.common.world.Villages; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.ServerResources; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.item.*; +import net.minecraft.world.level.Level; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.AddReloadListenerEvent; +import net.minecraftforge.eventbus.api.EventPriority; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fml.*; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.minecraftforge.fml.loading.FMLLoader; +import net.minecraftforge.fmllegacy.network.NetworkRegistry; +import net.minecraftforge.fmllegacy.network.simple.SimpleChannel; +import net.minecraftforge.fmlserverevents.FMLServerStartedEvent; +import org.apache.logging.log4j.LogManager; + +import javax.annotation.Nonnull; +import java.util.Optional; +import java.util.function.Consumer; +import java.util.function.Supplier; + +@Mod(EmeraldCraft.MODID) +public class EmeraldCraft { + public static final String MODID = "emeraldcraft"; + public static final String MODNAME = "Emerald Craft"; + public static final String VERSION = "${version}"; + + public static final CommonProxy proxy = DistExecutor.safeRunForDist(bootstrapErrorToXCPInDev(() -> ClientProxy::new), bootstrapErrorToXCPInDev(() -> CommonProxy::new)); + + public static final SimpleChannel packetHandler = NetworkRegistry.ChannelBuilder + .named(new ResourceLocation(MODID, "main")) + .networkProtocolVersion(() -> VERSION) + .serverAcceptedVersions(VERSION::equals) + .clientAcceptedVersions(VERSION::equals) + .simpleChannel(); + + // Complete hack: DistExecutor::safeRunForDist intentionally tries to access the "wrong" supplier in dev, which + // throws an error (rather than an exception) on J16 due to trying to load a client-only class. So we need to + // replace the error with an exception in dev. + //* + public static + Supplier bootstrapErrorToXCPInDev(Supplier in) + { + if(FMLLoader.isProduction()) + return in; + return () -> { + try + { + return in.get(); + } catch(BootstrapMethodError e) + { + throw new RuntimeException(e); + } + }; + } + //*/ + + public EmeraldCraft() { + ECLogger.logger = LogManager.getLogger(MODID); + IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus(); + // bus.addListener(this::enqueueIMCs); + // MinecraftForge.EVENT_BUS.addListener(this::registerCommands); + MinecraftForge.EVENT_BUS.addListener(this::addReloadListeners); + MinecraftForge.EVENT_BUS.addListener(EventPriority.LOWEST, this::addReloadListenersLowest); + MinecraftForge.EVENT_BUS.addListener(this::serverStarted); + // ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, ECCommonConfig.CONFIG_SPEC.getBaseSpec()); + // ModLoadingContext.get().registerConfig(ModConfig.Type.CLIENT, ECClientConfig.CONFIG_SPEC.getBaseSpec()); + // ModLoadingContext.get().registerConfig(ModConfig.Type.SERVER, ECServerConfig.CONFIG_SPEC.getBaseSpec()); + DeferredWorkQueue queue = DeferredWorkQueue.lookup(Optional.of(ModLoadingStage.CONSTRUCT)).orElseThrow(); + Consumer runLater = job -> queue.enqueueWork( + ModLoadingContext.get().getActiveContainer(), job + ); + ECContent.modConstruction(bus, runLater); + DistExecutor.safeRunWhenOn(Dist.CLIENT, bootstrapErrorToXCPInDev(() -> ClientProxy::modConstruction)); + + MinecraftForge.EVENT_BUS.addListener(EventPriority.HIGH, ECWorldGen::biomeModification); + runLater.accept(ECRecipes::registerRecipeTypes); + bus.addListener(this::setup); + MinecraftForge.EVENT_BUS.register(this); + } + + public void setup(FMLCommonSetupEvent event) { + ECContent.init(event); + event.enqueueWork(Villages::init); + event.enqueueWork(ECBiomes::registerBiomes); + } + + public void addReloadListeners(AddReloadListenerEvent event) { + ServerResources dataPackRegistries = event.getDataPackRegistries(); + event.addListener(new RecipeReloadListener(dataPackRegistries)); + } + + public void addReloadListenersLowest(AddReloadListenerEvent event) { + event.addListener(new RecipeCachingReloadListener(event.getDataPackRegistries())); + } + + public void serverStarted(FMLServerStartedEvent event) { + ServerLevel world = event.getServer().getLevel(Level.OVERWORLD); + if(!world.isClientSide) { + ECSaveData worldData = world.getDataStorage().computeIfAbsent(ECSaveData::new, ECSaveData::new, ECSaveData.dataName); + ECSaveData.setInstance(worldData); + } + } + + public static final CreativeModeTab ITEM_GROUP = new CreativeModeTab(MODID) { + @Override + @Nonnull + public ItemStack makeIcon() { + return new ItemStack(ECBlocks.TO_STAIRS.get(new ResourceLocation(ResourceLocation.DEFAULT_NAMESPACE, "emerald_block"))); + } + }; +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/ClientEventHandler.java b/src/main/java/com/hexagram2021/emeraldcraft/client/ClientEventHandler.java new file mode 100644 index 00000000..0d6ba8a7 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/ClientEventHandler.java @@ -0,0 +1,13 @@ +package com.hexagram2021.emeraldcraft.client; + +import com.hexagram2021.emeraldcraft.EmeraldCraft; +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.server.packs.resources.ResourceManagerReloadListener; + + +public class ClientEventHandler implements ResourceManagerReloadListener { + @Override + public void onResourceManagerReload(ResourceManager resourceManager) { + EmeraldCraft.proxy.clearRenderCaches(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/ClientMobEventSubscriber.java b/src/main/java/com/hexagram2021/emeraldcraft/client/ClientMobEventSubscriber.java new file mode 100644 index 00000000..7458b55b --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/ClientMobEventSubscriber.java @@ -0,0 +1,29 @@ +package com.hexagram2021.emeraldcraft.client; + + +import com.hexagram2021.emeraldcraft.client.models.entities.*; +import com.hexagram2021.emeraldcraft.common.register.ECEntities; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.client.event.EntityRenderersEvent; +import net.minecraftforge.event.entity.EntityAttributeCreationEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@EventBusSubscriber(modid = MODID, value = Dist.CLIENT, bus = EventBusSubscriber.Bus.MOD) +public class ClientMobEventSubscriber { + @SubscribeEvent + public static void onRegisterLayers(EntityRenderersEvent.RegisterLayerDefinitions event) { + event.registerLayerDefinition(PiglinCuteyModel.LAYER_LOCATION, PiglinCuteyModel::createBodyLayer); + event.registerLayerDefinition(NetherPigmanModel.LAYER_LOCATION, NetherPigmanModel::createBodyLayer); + event.registerLayerDefinition(NetherLambmanModel.LAYER_LOCATION, NetherLambmanModel::createBodyLayer); + } + + @SubscribeEvent + public static void onRegisterRenderer(EntityRenderersEvent.RegisterRenderers event) { + event.registerEntityRenderer(ECEntities.PIGLIN_CUTEY.get(), PiglinCuteyRenderer::new); + event.registerEntityRenderer(ECEntities.NETHER_PIGMAN.get(), NetherPigmanRenderer::new); + event.registerEntityRenderer(ECEntities.NETHER_LAMBMAN.get(), NetherLambmanRenderer::new); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/ClientProxy.java b/src/main/java/com/hexagram2021/emeraldcraft/client/ClientProxy.java new file mode 100644 index 00000000..5631798e --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/ClientProxy.java @@ -0,0 +1,40 @@ +package com.hexagram2021.emeraldcraft.client; + +import com.hexagram2021.emeraldcraft.common.CommonProxy; +import com.hexagram2021.emeraldcraft.common.crafting.recipebook.*; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECContainerTypes; +import net.minecraft.client.gui.screens.MenuScreens; +import net.minecraft.client.renderer.ItemBlockRenderTypes; +import net.minecraft.client.renderer.RenderType; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + + +@Mod.EventBusSubscriber(value = Dist.CLIENT, modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD) +public class ClientProxy extends CommonProxy { + public static void modConstruction() { + + } + + @SubscribeEvent + public static void setup(final FMLClientSetupEvent event) { + ItemBlockRenderTypes.setRenderLayer(ECBlocks.Plant.WARPED_WART.get(), RenderType.cutoutMipped()); + ItemBlockRenderTypes.setRenderLayer(ECBlocks.WorkStation.CARPENTRY_TABLE.get(), RenderType.cutoutMipped()); + ItemBlockRenderTypes.setRenderLayer(ECBlocks.WorkStation.CRYSTALBALL_TABLE.get(), RenderType.translucent()); + registerContainersAndScreens(); + } + + private static void registerContainersAndScreens() { + MenuScreens.register(ECContainerTypes.CARPENTRY_TABLE_MENU.get(), CarpentryTableScreen::new); + MenuScreens.register(ECContainerTypes.GLASS_KILN_MENU.get(), GlassKilnScreen::new); + MenuScreens.register(ECContainerTypes.MINERAL_TABLE_MENU.get(), MineralTableScreen::new); + MenuScreens.register(ECContainerTypes.CONTINUOUS_MINER_MENU.get(), ContinuousMinerScreen::new); + MenuScreens.register(ECContainerTypes.ICE_MAKER_MENU.get(), IceMakerScreen::new); + MenuScreens.register(ECContainerTypes.MELTER_MENU.get(), MelterScreen::new); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/NetherLambmanEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/NetherLambmanEntity.java new file mode 100644 index 00000000..bc6d8544 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/NetherLambmanEntity.java @@ -0,0 +1,191 @@ +package com.hexagram2021.emeraldcraft.client.models.entities; + +import com.google.common.collect.ImmutableSet; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import com.hexagram2021.emeraldcraft.common.util.ECSounds; +import com.hexagram2021.emeraldcraft.common.world.ECTrades; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.goal.*; +import net.minecraft.world.entity.ai.navigation.GroundPathNavigation; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.monster.*; +import net.minecraft.world.entity.npc.AbstractVillager; +import net.minecraft.world.entity.npc.VillagerTrades; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.trading.MerchantOffer; +import net.minecraft.world.item.trading.MerchantOffers; +import net.minecraft.world.level.Level; + +import javax.annotation.Nullable; +import java.util.Set; + +public class NetherLambmanEntity extends AbstractVillager { + private static final int NUMBER_OF_TRADE_OFFERS = 2; + + private static final Set WANTED_ITEMS = ImmutableSet.of( + Items.COOKED_MUTTON, Items.MUTTON, + Items.WOODEN_HOE, Items.GOLDEN_HOE, Items.IRON_HOE, + Items.GRASS_BLOCK, Items.GRASS, Items.TALL_GRASS, + Items.FERN, Items.LARGE_FERN + ); + + public NetherLambmanEntity(EntityType entityType, Level level) { + super(entityType, level); + ((GroundPathNavigation)this.getNavigation()).setCanOpenDoors(true); + this.setCanPickUpLoot(true); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(0, new FloatGoal(this)); + this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); + this.goalSelector.addGoal(1, new OpenDoorGoal(this, true)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zombie.class, 8.0F, 0.5D, 0.5D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, AbstractSkeleton.class, 8.0F, 0.5D, 0.5D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Evoker.class, 12.0F, 0.5D, 0.5D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Vindicator.class, 8.0F, 0.5D, 0.5D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Vex.class, 8.0F, 0.5D, 0.5D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Pillager.class, 15.0F, 0.5D, 0.5D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Illusioner.class, 12.0F, 0.5D, 0.5D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zoglin.class, 10.0F, 0.5D, 0.5D)); + this.goalSelector.addGoal(1, new LookAtTradingPlayerGoal(this)); + this.goalSelector.addGoal(4, new MoveTowardsRestrictionGoal(this, 0.35D)); + this.goalSelector.addGoal(8, new WaterAvoidingRandomStrollGoal(this, 0.35D)); + this.goalSelector.addGoal(9, new InteractGoal(this, Player.class, 3.0F, 1.0F)); + this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Mob.class, 8.0F)); + } + + @Override + @Nullable + public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob mob) { + return null; + } + + @Override + public boolean showProgressBar() { + return false; + } + + @Override + public boolean wantsToPickUp(ItemStack itemStack) { + Item item = itemStack.getItem(); + return WANTED_ITEMS.contains(item) && this.getInventory().canAddItem(itemStack); + } + + @Override + public InteractionResult mobInteract(Player player, InteractionHand hand) { + ItemStack itemstack = player.getItemInHand(hand); + if (!itemstack.is(ECItems.NETHER_LAMBMAN_SPAWN_EGG.get()) && this.isAlive() && !this.isTrading() && !this.isBaby()) { + //if (hand == InteractionHand.MAIN_HAND) { + // player.awardStat(Stats.TALKED_TO_VILLAGER); + //} + + if (this.getOffers().isEmpty()) { + return InteractionResult.sidedSuccess(this.level.isClientSide); + } + if (!this.level.isClientSide) { + this.setTradingPlayer(player); + this.openTradingScreen(player, this.getDisplayName(), 1); + } + + return InteractionResult.sidedSuccess(this.level.isClientSide); + } + return super.mobInteract(player, hand); + } + + @Override + public void readAdditionalSaveData(CompoundTag pCompound) { + super.readAdditionalSaveData(pCompound); + this.setCanPickUpLoot(true); + } + + @Override + protected void updateTrades() { + VillagerTrades.ItemListing[] list1 = ECTrades.NETHER_LAMBMAN_TRADES.get(1); + VillagerTrades.ItemListing[] list2 = ECTrades.NETHER_LAMBMAN_TRADES.get(2); + VillagerTrades.ItemListing[] list3 = ECTrades.NETHER_LAMBMAN_TRADES.get(3); + if (list1 != null && list2 != null) { + MerchantOffers merchantoffers = this.getOffers(); + this.addOffersFromItemListings(merchantoffers, list1, NUMBER_OF_TRADE_OFFERS); + int i = this.random.nextInt(list2.length); + VillagerTrades.ItemListing itemListing1 = list2[i]; + int j = this.random.nextInt(list3.length); + VillagerTrades.ItemListing itemListing2 = list3[j]; + MerchantOffer merchantoffer1 = itemListing1.getOffer(this, this.random); + if (merchantoffer1 != null) { + merchantoffers.add(merchantoffer1); + } + MerchantOffer merchantoffer2 = itemListing2.getOffer(this, this.random); + if (merchantoffer2 != null) { + merchantoffers.add(merchantoffer2); + } + } + } + + @Override + public boolean removeWhenFarAway(double p_35886_) { + return false; + } + + @Override + protected void rewardTradeXp(MerchantOffer offer) { + if (offer.shouldRewardExp()) { + int i = 3 + this.random.nextInt(4); + this.level.addFreshEntity(new ExperienceOrb(this.level, this.getX(), this.getY() + 0.5D, this.getZ(), i)); + } + } + + @Override + public void setLastHurtByMob(@Nullable LivingEntity entity) { + if (entity != null && this.level instanceof ServerLevel) { + if (this.isAlive() && entity instanceof Player) { + for(int i = 0; i < this.getInventory().getContainerSize(); ++i) { + ItemStack itemStack = this.getInventory().getItem(i); + if(itemStack.getCount() != 0) { + int cnt = Math.max(itemStack.getCount(), this.random.nextInt(3)); + this.level.addFreshEntity(new ItemEntity( + this.level, (this.getX() + entity.getX() * 2) / 3, this.getY() + 0.5D, (this.getZ() + entity.getZ() * 2) / 3, new ItemStack(itemStack.getItem(), cnt) + )); + itemStack.shrink(cnt); + } + } + } + } + + super.setLastHurtByMob(entity); + } + + protected SoundEvent getAmbientSound() { + return this.isTrading() ? ECSounds.NETHER_LAMBMAN_TRADE : ECSounds.NETHER_LAMBMAN_AMBIENT; + } + + protected SoundEvent getHurtSound(DamageSource damageSource) { + return ECSounds.NETHER_LAMBMAN_HURT; + } + + protected SoundEvent getDeathSound() { + return ECSounds.NETHER_LAMBMAN_DEATH; + } + + protected SoundEvent getTradeUpdatedSound(boolean correct) { + return correct ? ECSounds.NETHER_LAMBMAN_YES : ECSounds.NETHER_LAMBMAN_NO; + } + + public static AttributeSupplier.Builder createAttributes() { + return Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, 25.0D) + .add(Attributes.MOVEMENT_SPEED, 0.5D) + .add(Attributes.FOLLOW_RANGE, 48.0D); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/NetherLambmanModel.java b/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/NetherLambmanModel.java new file mode 100644 index 00000000..00a6c3fa --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/NetherLambmanModel.java @@ -0,0 +1,22 @@ +package com.hexagram2021.emeraldcraft.client.models.entities; + +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.model.PlayerModel; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.resources.ResourceLocation; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class NetherLambmanModel extends PlayerModel { + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation(MODID, "nether_lambman"), "main"); + public NetherLambmanModel(ModelPart root) { + super(root, false); + } + + public static LayerDefinition createBodyLayer() { + return LayerDefinition.create(PlayerModel.createMesh(new CubeDeformation(0.0F), false), 64, 64); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/NetherLambmanRenderer.java b/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/NetherLambmanRenderer.java new file mode 100644 index 00000000..6355d5b0 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/NetherLambmanRenderer.java @@ -0,0 +1,21 @@ +package com.hexagram2021.emeraldcraft.client.models.entities; + +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class NetherLambmanRenderer extends MobRenderer> { + public static final ResourceLocation TEXTURE = new ResourceLocation(MODID, "textures/entity/nether_lambman/nether_lambman.png"); + + public NetherLambmanRenderer(EntityRendererProvider.Context manager) { + super(manager, new NetherLambmanModel<>(manager.bakeLayer(NetherLambmanModel.LAYER_LOCATION)), 0.7F); + } + + @Override + public ResourceLocation getTextureLocation(NetherLambmanEntity entity) { return TEXTURE; } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/NetherPigmanEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/NetherPigmanEntity.java new file mode 100644 index 00000000..c8ccf804 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/NetherPigmanEntity.java @@ -0,0 +1,191 @@ +package com.hexagram2021.emeraldcraft.client.models.entities; + +import com.google.common.collect.ImmutableSet; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import com.hexagram2021.emeraldcraft.common.util.ECSounds; +import com.hexagram2021.emeraldcraft.common.world.ECTrades; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.goal.*; +import net.minecraft.world.entity.ai.navigation.GroundPathNavigation; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.monster.*; +import net.minecraft.world.entity.npc.AbstractVillager; +import net.minecraft.world.entity.npc.VillagerTrades; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.trading.MerchantOffer; +import net.minecraft.world.item.trading.MerchantOffers; +import net.minecraft.world.level.Level; + +import javax.annotation.Nullable; +import java.util.Set; + +public class NetherPigmanEntity extends AbstractVillager { + private static final int NUMBER_OF_TRADE_OFFERS = 2; + + private static final Set WANTED_ITEMS = ImmutableSet.of( + Items.COOKED_PORKCHOP, Items.PORKCHOP, + Items.IRON_PICKAXE, Items.DIAMOND_PICKAXE, Items.NETHERITE_PICKAXE, + Items.POTATO, Items.BAKED_POTATO, Items.POISONOUS_POTATO, + Items.DIAMOND, ECItems.DIAMOND_NUGGET.get() + ); + + public NetherPigmanEntity(EntityType entityType, Level level) { + super(entityType, level); + ((GroundPathNavigation)this.getNavigation()).setCanOpenDoors(true); + this.setCanPickUpLoot(true); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(0, new FloatGoal(this)); + this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); + this.goalSelector.addGoal(1, new OpenDoorGoal(this, false)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zombie.class, 8.0F, 0.5D, 0.5D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, AbstractSkeleton.class, 8.0F, 0.5D, 0.5D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Evoker.class, 12.0F, 0.5D, 0.5D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Vindicator.class, 8.0F, 0.5D, 0.5D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Vex.class, 8.0F, 0.5D, 0.5D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Pillager.class, 15.0F, 0.5D, 0.5D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Illusioner.class, 12.0F, 0.5D, 0.5D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zoglin.class, 10.0F, 0.5D, 0.5D)); + this.goalSelector.addGoal(1, new LookAtTradingPlayerGoal(this)); + this.goalSelector.addGoal(4, new MoveTowardsRestrictionGoal(this, 0.35D)); + this.goalSelector.addGoal(8, new WaterAvoidingRandomStrollGoal(this, 0.35D)); + this.goalSelector.addGoal(9, new InteractGoal(this, Player.class, 3.0F, 1.0F)); + this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Mob.class, 8.0F)); + } + + @Override + @Nullable + public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob mob) { + return null; + } + + @Override + public boolean showProgressBar() { + return false; + } + + @Override + public boolean wantsToPickUp(ItemStack itemStack) { + Item item = itemStack.getItem(); + return WANTED_ITEMS.contains(item) && this.getInventory().canAddItem(itemStack); + } + + @Override + public InteractionResult mobInteract(Player player, InteractionHand hand) { + ItemStack itemstack = player.getItemInHand(hand); + if (!itemstack.is(ECItems.NETHER_PIGMAN_SPAWN_EGG.get()) && this.isAlive() && !this.isTrading() && !this.isBaby()) { + //if (hand == InteractionHand.MAIN_HAND) { + // player.awardStat(Stats.TALKED_TO_VILLAGER); + //} + + if (this.getOffers().isEmpty()) { + return InteractionResult.sidedSuccess(this.level.isClientSide); + } + if (!this.level.isClientSide) { + this.setTradingPlayer(player); + this.openTradingScreen(player, this.getDisplayName(), 1); + } + + return InteractionResult.sidedSuccess(this.level.isClientSide); + } + return super.mobInteract(player, hand); + } + + @Override + public void readAdditionalSaveData(CompoundTag pCompound) { + super.readAdditionalSaveData(pCompound); + this.setCanPickUpLoot(true); + } + + @Override + protected void updateTrades() { + VillagerTrades.ItemListing[] list1 = ECTrades.NETHER_PIGMAN_TRADES.get(1); + VillagerTrades.ItemListing[] list2 = ECTrades.NETHER_PIGMAN_TRADES.get(2); + VillagerTrades.ItemListing[] list3 = ECTrades.NETHER_PIGMAN_TRADES.get(3); + if (list1 != null && list2 != null) { + MerchantOffers merchantoffers = this.getOffers(); + this.addOffersFromItemListings(merchantoffers, list1, NUMBER_OF_TRADE_OFFERS); + int i = this.random.nextInt(list2.length); + VillagerTrades.ItemListing itemListing1 = list2[i]; + int j = this.random.nextInt(list3.length); + VillagerTrades.ItemListing itemListing2 = list3[j]; + MerchantOffer merchantoffer1 = itemListing1.getOffer(this, this.random); + if (merchantoffer1 != null) { + merchantoffers.add(merchantoffer1); + } + MerchantOffer merchantoffer2 = itemListing2.getOffer(this, this.random); + if (merchantoffer2 != null) { + merchantoffers.add(merchantoffer2); + } + } + } + + @Override + public boolean removeWhenFarAway(double p_35886_) { + return false; + } + + @Override + protected void rewardTradeXp(MerchantOffer offer) { + if (offer.shouldRewardExp()) { + int i = 3 + this.random.nextInt(4); + this.level.addFreshEntity(new ExperienceOrb(this.level, this.getX(), this.getY() + 0.5D, this.getZ(), i)); + } + } + + @Override + public void setLastHurtByMob(@Nullable LivingEntity entity) { + if (entity != null && this.level instanceof ServerLevel) { + if (this.isAlive() && entity instanceof Player) { + for(int i = 0; i < this.getInventory().getContainerSize(); ++i) { + ItemStack itemStack = this.getInventory().getItem(i); + if(itemStack.getCount() != 0) { + int cnt = Math.max(itemStack.getCount(), this.random.nextInt(3)); + this.level.addFreshEntity(new ItemEntity( + this.level, (this.getX() + entity.getX() * 2) / 3, this.getY() + 0.5D, (this.getZ() + entity.getZ() * 2) / 3, new ItemStack(itemStack.getItem(), cnt) + )); + itemStack.shrink(cnt); + } + } + } + } + + super.setLastHurtByMob(entity); + } + + protected SoundEvent getAmbientSound() { + return this.isTrading() ? ECSounds.NETHER_PIGMAN_TRADE : ECSounds.NETHER_PIGMAN_AMBIENT; + } + + protected SoundEvent getHurtSound(DamageSource damageSource) { + return ECSounds.NETHER_PIGMAN_HURT; + } + + protected SoundEvent getDeathSound() { + return ECSounds.NETHER_PIGMAN_DEATH; + } + + protected SoundEvent getTradeUpdatedSound(boolean correct) { + return correct ? ECSounds.NETHER_PIGMAN_YES : ECSounds.NETHER_PIGMAN_NO; + } + + public static AttributeSupplier.Builder createAttributes() { + return Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, 25.0D) + .add(Attributes.MOVEMENT_SPEED, 0.5D) + .add(Attributes.FOLLOW_RANGE, 48.0D); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/NetherPigmanModel.java b/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/NetherPigmanModel.java new file mode 100644 index 00000000..8fd7b261 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/NetherPigmanModel.java @@ -0,0 +1,20 @@ +package com.hexagram2021.emeraldcraft.client.models.entities; + +import net.minecraft.client.model.PlayerModel; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.resources.ResourceLocation; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class NetherPigmanModel extends PlayerModel { + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation(MODID, "nether_pigman"), "main"); + public NetherPigmanModel(ModelPart root) { + super(root, false); + } + + public static LayerDefinition createBodyLayer() { + return LayerDefinition.create(PlayerModel.createMesh(new CubeDeformation(0.0F), false), 64, 64); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/NetherPigmanRenderer.java b/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/NetherPigmanRenderer.java new file mode 100644 index 00000000..e91da7a5 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/NetherPigmanRenderer.java @@ -0,0 +1,21 @@ +package com.hexagram2021.emeraldcraft.client.models.entities; + +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class NetherPigmanRenderer extends MobRenderer> { + public static final ResourceLocation TEXTURE = new ResourceLocation(MODID, "textures/entity/nether_pigman/nether_pigman.png"); + + public NetherPigmanRenderer(EntityRendererProvider.Context manager) { + super(manager, new NetherPigmanModel<>(manager.bakeLayer(NetherPigmanModel.LAYER_LOCATION)), 0.7F); + } + + @Override + public ResourceLocation getTextureLocation(NetherPigmanEntity entity) { return TEXTURE; } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/PiglinCuteyData.java b/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/PiglinCuteyData.java new file mode 100644 index 00000000..c7645912 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/PiglinCuteyData.java @@ -0,0 +1,35 @@ +package com.hexagram2021.emeraldcraft.client.models.entities; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; + +public class PiglinCuteyData { + public static final int MIN_LEVEL = 1; + public static final int MAX_LEVEL = 5; + private static final int[] NEXT_LEVEL_XP_THRESHOLDS = new int[]{0, 15, 75, 180, 300}; + public static final Codec CODEC = RecordCodecBuilder.create( + (in) -> in.group(Codec.INT.fieldOf("level").orElse(1).forGetter( + (data) -> data.level) + ).apply(in, PiglinCuteyData::new) + ); + + private final int level; + + public PiglinCuteyData(int level) { + this.level = Math.max(MIN_LEVEL, level); + } + + public int getLevel() { return this.level; } + + public PiglinCuteyData setLevel(int newLevel) { return new PiglinCuteyData(newLevel); } + + public static int getMinXpPerLevel(int level) { + return canLevelUp(level) ? NEXT_LEVEL_XP_THRESHOLDS[level - 1] : 0; + } + + public static int getMaxXpPerLevel(int level) { + return canLevelUp(level) ? NEXT_LEVEL_XP_THRESHOLDS[level] : 0; + } + + public static boolean canLevelUp(int level) { return level >= MIN_LEVEL && level < MAX_LEVEL; } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/PiglinCuteyDataHolder.java b/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/PiglinCuteyDataHolder.java new file mode 100644 index 00000000..f8d40eb1 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/PiglinCuteyDataHolder.java @@ -0,0 +1,7 @@ +package com.hexagram2021.emeraldcraft.client.models.entities; + +public interface PiglinCuteyDataHolder { + PiglinCuteyData getPiglinCuteyData(); + + void setPiglinCuteyData(PiglinCuteyData data); +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/PiglinCuteyEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/PiglinCuteyEntity.java new file mode 100644 index 00000000..e78b06f9 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/PiglinCuteyEntity.java @@ -0,0 +1,512 @@ +package com.hexagram2021.emeraldcraft.client.models.entities; + +import com.google.common.annotations.VisibleForTesting; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import com.hexagram2021.emeraldcraft.common.util.ECSounds; +import com.hexagram2021.emeraldcraft.common.world.ECTrades; +import com.mojang.serialization.DataResult; +import com.mojang.serialization.Dynamic; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtOps; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializer; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.util.Mth; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.SimpleContainer; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.goal.*; +import net.minecraft.world.entity.ai.navigation.GroundPathNavigation; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.monster.Zoglin; +import net.minecraft.world.entity.monster.ZombifiedPiglin; +import net.minecraft.world.entity.monster.hoglin.Hoglin; +import net.minecraft.world.entity.npc.*; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.raid.Raid; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.trading.MerchantOffer; +import net.minecraft.world.item.trading.MerchantOffers; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.phys.Vec3; + +import javax.annotation.Nullable; +import java.util.Map; +import java.util.Set; + +public class PiglinCuteyEntity extends AbstractVillager implements PiglinCuteyDataHolder { + public static final EntityDataSerializer PIGLIN_CUTEY_DATA = new EntityDataSerializer<>() { + @Override + public void write(FriendlyByteBuf buf, PiglinCuteyData data) { + buf.writeVarInt(data.getLevel()); + } + + @Override + public PiglinCuteyData read(FriendlyByteBuf buf) { + return new PiglinCuteyData(buf.readVarInt()); + } + + @Override + public PiglinCuteyData copy(PiglinCuteyData data) { + return data; + } + }; + + private static final EntityDataAccessor DATA_PIGLIN_CUTEY_DATA = SynchedEntityData.defineId( + PiglinCuteyEntity.class, PIGLIN_CUTEY_DATA + ); + private static final EntityDataAccessor DATA_IMMUNE_TO_DESPAWN = SynchedEntityData.defineId(PiglinCuteyEntity.class, EntityDataSerializers.BOOLEAN); + public static final int MULTIPLIER_FOOD_THRESHOLD = 200; + public static final Map FOOD_POINTS = ImmutableMap.of(Items.COOKED_PORKCHOP, 4, Items.PORKCHOP, 1); + private static final int TRADES_PER_LEVEL = 3; + private static final Set WANTED_ITEMS = ImmutableSet.of(Items.COOKED_PORKCHOP, Items.PORKCHOP); + @VisibleForTesting + public static final double SPEED_MODIFIER = 0.8D; + private int updateMerchantTimer; + private boolean increaseProfessionLevelOnUpdate; + @Nullable + private Player lastTradedPlayer; + private int foodLevel; + private int cuteyXp; + + @Nullable + protected BlockPos portalTarget = null; + + public PiglinCuteyEntity(EntityType entityType, Level level) { + super(entityType, level); + ((GroundPathNavigation)this.getNavigation()).setCanOpenDoors(true); + this.setCanPickUpLoot(true); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(0, new PiglinCuteyEntity.RushToPortalGoal(this, 1.0D, 50.0D, SPEED_MODIFIER)); + this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); + this.goalSelector.addGoal(1, new LookAtTradingPlayerGoal(this)); + this.goalSelector.addGoal(1, new OpenDoorGoal(this, true)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zoglin.class, 12.0F, SPEED_MODIFIER, SPEED_MODIFIER)); + this.goalSelector.addGoal(1, new PanicGoal(this, SPEED_MODIFIER)); + this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, ZombifiedPiglin.class, 8.0F, SPEED_MODIFIER, SPEED_MODIFIER)); + this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Hoglin.class, 8.0F, SPEED_MODIFIER, SPEED_MODIFIER)); + this.goalSelector.addGoal(3, new FloatGoal(this)); + this.goalSelector.addGoal(4, new MoveTowardsRestrictionGoal(this, SPEED_MODIFIER * 0.6D)); + this.goalSelector.addGoal(5, new RandomStrollGoal(this, SPEED_MODIFIER * 0.5D)); + this.goalSelector.addGoal(6, new InteractGoal(this, Player.class, 3.0F, 1.0F)); + this.goalSelector.addGoal(7, new LookAtPlayerGoal(this, Mob.class, 8.0F)); + } + + @Override + protected void customServerAiStep() { + if (!this.isTrading() && this.updateMerchantTimer > 0) { + --this.updateMerchantTimer; + if (this.updateMerchantTimer <= 0) { + if (this.increaseProfessionLevelOnUpdate) { + this.increaseMerchantCareer(); + this.increaseProfessionLevelOnUpdate = false; + } + + this.addEffect(new MobEffectInstance(MobEffects.REGENERATION, 200, 0)); + } + } + + if (!this.isNoAi() && this.random.nextInt(100) == 0) { + Raid raid = ((ServerLevel)this.level).getRaidAt(this.blockPosition()); + if (raid != null && raid.isActive() && !raid.isOver()) { + this.level.broadcastEntityEvent(this, (byte)42); + } + } + + super.customServerAiStep(); + } + + @Nullable + @Override + public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob mob) { return null; } + + @Override + protected void defineSynchedData() { + super.defineSynchedData(); + this.entityData.define(DATA_PIGLIN_CUTEY_DATA, new PiglinCuteyData(1)); + this.entityData.define(DATA_IMMUNE_TO_DESPAWN, false); + } + + @Override + public InteractionResult mobInteract(Player player, InteractionHand hand) { + ItemStack itemstack = player.getItemInHand(hand); + if (!itemstack.is(ECItems.PIGLIN_CUTEY_SPAWN_EGG.asItem()) && this.isAlive() && !this.isTrading() && !this.isBaby()) { + //TODO: player.awardStat + if (this.getOffers().isEmpty()) { + return InteractionResult.sidedSuccess(this.level.isClientSide); + } + if (!this.level.isClientSide) { + this.startTrading(player); + } + return InteractionResult.sidedSuccess(this.level.isClientSide); + } + return super.mobInteract(player, hand); + } + + private boolean shouldIncreaseLevel() { + int i = this.getPiglinCuteyData().getLevel(); + return PiglinCuteyData.canLevelUp(i) && this.cuteyXp >= PiglinCuteyData.getMaxXpPerLevel(i); + } + + private void increaseMerchantCareer() { + this.setPiglinCuteyData(this.getPiglinCuteyData().setLevel(this.getPiglinCuteyData().getLevel() + 1)); + this.updateTrades(); + } + + @Override + public int getVillagerXp() { + return this.cuteyXp; + } + + @Override + protected void rewardTradeXp(MerchantOffer merchantOffer) { + int i = 3 + this.random.nextInt(4); + this.cuteyXp += merchantOffer.getXp(); + this.lastTradedPlayer = this.getTradingPlayer(); + if (this.shouldIncreaseLevel()) { + this.updateMerchantTimer = 40; + this.increaseProfessionLevelOnUpdate = true; + i += 5; + } + + if (merchantOffer.shouldRewardExp()) { + this.level.addFreshEntity(new ExperienceOrb(this.level, this.getX(), this.getY() + 0.5D, this.getZ(), i)); + } + } + + @Override + protected void updateTrades() { + PiglinCuteyData cuteyData = this.getPiglinCuteyData(); + Int2ObjectMap allTrades = ECTrades.PIGLIN_CUTEY_TRADES; + if (!allTrades.isEmpty()) { + VillagerTrades.ItemListing[] trades = allTrades.get(cuteyData.getLevel()); + if (trades != null) { + MerchantOffers merchantoffers = this.getOffers(); + this.addOffersFromItemListings(merchantoffers, trades, TRADES_PER_LEVEL); + } + } + } + + @Override + public PiglinCuteyData getPiglinCuteyData() { + return this.entityData.get(DATA_PIGLIN_CUTEY_DATA); + } + + @Override + public void setPiglinCuteyData(PiglinCuteyData data) { + this.entityData.set(DATA_PIGLIN_CUTEY_DATA, data); + } + + @Override + public boolean wantsToPickUp(ItemStack itemStack) { + Item item = itemStack.getItem(); + return WANTED_ITEMS.contains(item) && this.getInventory().canAddItem(itemStack); + } + + private boolean hungry() { return this.foodLevel < MULTIPLIER_FOOD_THRESHOLD; } + + private int countFoodPointsInInventory() { + SimpleContainer simplecontainer = this.getInventory(); + return FOOD_POINTS.entrySet().stream().mapToInt((food) -> simplecontainer.countItem(food.getKey()) * food.getValue()).sum(); + } + + @Override + public void aiStep() { + super.aiStep(); + if (!this.level.isClientSide) { + this.maybeDespawn(); + } + } + + private boolean isImmuneToDespawn() { + return this.getEntityData().get(DATA_IMMUNE_TO_DESPAWN); + } + + private void maybeDespawn() { + if (!this.level.dimensionType().piglinSafe() && !isImmuneToDespawn() && !this.isNoAi()) { + this.discard(); + } + } + + private void startTrading(Player player) { + this.eatUntilFull(); + this.updateSpecialPrices(player); + this.setTradingPlayer(player); + this.openTradingScreen(player, this.getDisplayName(), this.getPiglinCuteyData().getLevel()); + } + + @Override + public void setTradingPlayer(@Nullable Player player) { + boolean flag = this.getTradingPlayer() != null && player == null; + super.setTradingPlayer(player); + if (flag) { + this.stopTrading(); + } + } + + @Override + protected void stopTrading() { + super.stopTrading(); + this.resetSpecialPrices(); + } + + private void resetSpecialPrices() { + for(MerchantOffer merchantoffer : this.getOffers()) { + merchantoffer.resetSpecialPriceDiff(); + } + } + + @Override + protected SoundEvent getAmbientSound() { + return this.isTrading() ? ECSounds.PIGLIN_CUTEY_TRADE : ECSounds.PIGLIN_CUTEY_AMBIENT; + } + + @Override + public void playCelebrateSound() { + this.playSound(ECSounds.PIGLIN_CUTEY_CELEBRATE, this.getSoundVolume(), this.getVoicePitch()); + } + + @Override + protected SoundEvent getHurtSound(DamageSource damageSource) { + return ECSounds.PIGLIN_CUTEY_HURT; + } + + @Override + protected SoundEvent getDeathSound() { + return ECSounds.PIGLIN_CUTEY_DEATH; + } + + @Override + protected SoundEvent getTradeUpdatedSound(boolean correct) { + return correct ? ECSounds.PIGLIN_CUTEY_YES : ECSounds.PIGLIN_CUTEY_NO; + } + + @Override + public SoundEvent getNotifyTradeSound() { + return ECSounds.PIGLIN_CUTEY_YES; + } + + private void eatUntilFull() { + if (this.hungry() && this.countFoodPointsInInventory() != 0) { + for(int i = 0; i < this.getInventory().getContainerSize(); ++i) { + ItemStack itemstack = this.getInventory().getItem(i); + if (!itemstack.isEmpty()) { + Integer integer = FOOD_POINTS.get(itemstack.getItem()); + if (integer != null) { + int j = itemstack.getCount(); + + for(int k = j; k > 0; --k) { + this.foodLevel = this.foodLevel + integer; + this.getInventory().removeItem(i, 1); + if (!this.hungry()) { + return; + } + } + } + } + } + } + } + + private void updateSpecialPrices(Player pPlayer) { + int i = this.getPlayerReputation(pPlayer); + if (i != 0) { + for(MerchantOffer merchantoffer : this.getOffers()) { + merchantoffer.addToSpecialPriceDiff(-Mth.floor((float)i * merchantoffer.getPriceMultiplier())); + } + } + + if (pPlayer.hasEffect(MobEffects.HERO_OF_THE_VILLAGE)) { + MobEffectInstance mobeffectinstance = pPlayer.getEffect(MobEffects.HERO_OF_THE_VILLAGE); + int k = mobeffectinstance.getAmplifier(); + + for(MerchantOffer merchantoffer : this.getOffers()) { + double d0 = 0.1D + 0.05D * (double)k; + int j = (int)Math.floor(d0 * (double)merchantoffer.getBaseCostA().getCount()); + merchantoffer.addToSpecialPriceDiff(-Math.max(j, 1)); + } + } + } + + public int getPlayerReputation(Player player) { + return (int)Math.floor(foodLevel / (MULTIPLIER_FOOD_THRESHOLD * 0.025D)); + } + + private static final int SearchRange = 30; + private static final int VerticalSearchRange = 10; + protected boolean findNearestPortal() { + BlockPos blockpos = this.blockPosition(); + BlockPos.MutableBlockPos mutableblockpos = new BlockPos.MutableBlockPos(); + + for(int k = 0; k <= VerticalSearchRange; k = k > 0 ? -k : 1 - k) { + for(int l = 0; l < SearchRange; ++l) { + for(int i1 = 0; i1 <= l; i1 = i1 > 0 ? -i1 : 1 - i1) { + for(int j1 = 0; j1 <= l; j1 = j1 > 0 ? -j1 : 1 - j1) { + mutableblockpos.setWithOffset(blockpos, i1, k, j1); + if (this.isWithinRestriction(mutableblockpos) && level.getBlockState(mutableblockpos).is(Blocks.NETHER_PORTAL)) { + this.portalTarget = mutableblockpos; + return true; + } + } + } + } + } + + this.portalTarget = null; + return false; + } + + private BlockPos getPortalTarget() { + return portalTarget; + } + + @Override + public void addAdditionalSaveData(CompoundTag pCompound) { + super.addAdditionalSaveData(pCompound); + PiglinCuteyData.CODEC.encodeStart(NbtOps.INSTANCE, this.getPiglinCuteyData()).resultOrPartial(LOGGER::error).ifPresent( + (p_35454_) -> pCompound.put("PiglinCuteyData", p_35454_) + ); + pCompound.putInt("FoodLevel", this.foodLevel); + pCompound.putInt("Xp", this.cuteyXp); + } + + @Override + public void readAdditionalSaveData(CompoundTag pCompound) { + super.readAdditionalSaveData(pCompound); + if (pCompound.contains("PiglinCuteyData", 10)) { + DataResult dataResult = PiglinCuteyData.CODEC.parse(new Dynamic<>(NbtOps.INSTANCE, pCompound.get("PiglinCuteyData"))); + dataResult.resultOrPartial(LOGGER::error).ifPresent(this::setPiglinCuteyData); + } + + if (pCompound.contains("FoodLevel", 1)) { + this.foodLevel = pCompound.getInt("FoodLevel"); + } + + if (pCompound.contains("Xp", 3)) { + this.cuteyXp = pCompound.getInt("Xp"); + } + + this.setCanPickUpLoot(true); + } + + @Override + public boolean removeWhenFarAway(double pDistanceToClosestPlayer) { return false; } + + class RushToPortalGoal extends Goal { + final PiglinCuteyEntity cutey; + final double stopDistance; + final double giveupDistance; + final double speedModifier; + private static final int INTERVAL_TICKS = 20; + protected int nextStartTick; + + RushToPortalGoal(PiglinCuteyEntity cutey, double stopDistance, double giveupDistance, double speedModifier) { + this.cutey = cutey; + this.stopDistance = stopDistance; + this.giveupDistance = giveupDistance; + this.speedModifier = speedModifier; + } + + @Override + public void start() { + this.cutey.playCelebrateSound(); + } + + @Override + public void stop() { + this.cutey.navigation.stop(); + + if(this.cutey.lastTradedPlayer != null && !isTooFarAway(this.cutey.lastTradedPlayer, this.giveupDistance)) { + this.cutey.level.addFreshEntity(new ItemEntity( + this.cutey.level, + this.cutey.lastTradedPlayer.getX(), + this.cutey.lastTradedPlayer.getY() + 0.5D, + this.cutey.lastTradedPlayer.getZ(), + new ItemStack(Items.GOLD_BLOCK, 16) + )); + } + + this.cutey.discard(); + } + + @Override + public boolean canUse() { + if (this.nextStartTick > 0) { + --this.nextStartTick; + return false; + } + + this.nextStartTick = this.nextStartTick(this.cutey); + this.cutey.findNearestPortal(); + BlockPos blockpos = this.cutey.getPortalTarget(); + return blockpos != null && this.isTooFarAway(blockpos, this.stopDistance); + } + + protected int nextStartTick(PathfinderMob mob) { return INTERVAL_TICKS + mob.getRandom().nextInt(INTERVAL_TICKS); } + + @Override + public boolean canContinueToUse() { + return true; + } + + @Override + public void tick() { + BlockPos blockpos = this.cutey.getPortalTarget(); + if (blockpos != null && PiglinCuteyEntity.this.navigation.isDone()) { + if (this.isTooFarAway(blockpos, 10.0D)) { + Vec3 vec3 = (new Vec3( + (double)blockpos.getX() - this.cutey.getX(), + (double)blockpos.getY() - this.cutey.getY(), + (double)blockpos.getZ() - this.cutey.getZ() + )).normalize(); + Vec3 vec31 = vec3.scale(10.0D).add(this.cutey.getX(), this.cutey.getY(), this.cutey.getZ()); + PiglinCuteyEntity.this.navigation.moveTo(vec31.x, vec31.y, vec31.z, this.speedModifier); + } else if(this.isTooFarAway(blockpos, this.stopDistance)) { + PiglinCuteyEntity.this.navigation.moveTo(blockpos.getX(), blockpos.getY(), blockpos.getZ(), this.speedModifier); + } else { + this.stop(); + } + } + } + + private boolean isTooFarAway(BlockPos blockpos, double dist) { + Vec3 targetPos = new Vec3(blockpos.getX(), this.cutey.position().y, blockpos.getZ()); + return !targetPos.closerThan(this.cutey.position(), dist); + } + + private boolean isTooFarAway(Entity entity, double dist) { + return !entity.closerThan(this.cutey, dist); + } + } + + public static AttributeSupplier.Builder createAttributes() { + return Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, 25.0D) + .add(Attributes.MOVEMENT_SPEED, 0.5D) + .add(Attributes.FOLLOW_RANGE, 48.0D); + } + + static { + EntityDataSerializers.registerSerializer(PIGLIN_CUTEY_DATA); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/PiglinCuteyModel.java b/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/PiglinCuteyModel.java new file mode 100644 index 00000000..dcb00c48 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/PiglinCuteyModel.java @@ -0,0 +1,287 @@ +// Made with Blockbench 4.1.4 +// Exported for Minecraft version 1.17 with Mojang mappings +// Paste this class into your mod and generate all required imports +package com.hexagram2021.emeraldcraft.client.models.entities; + +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.model.*; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.HumanoidArm; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class PiglinCuteyModel extends HierarchicalModel implements ArmedModel, HeadedModel { + // This layer location should be baked with EntityRendererProvider.Context in the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation(MODID, "piglin_cutey"), "main"); + private final ModelPart root; + private final ModelPart body; + private final ModelPart head; + private final ModelPart LeftEar; + private final ModelPart RightEar; + private final ModelPart LeftArm; + private final ModelPart RightArm; + private final ModelPart LeftLeg; + private final ModelPart RightLeg; + + public HumanoidModel.ArmPose leftArmPose = HumanoidModel.ArmPose.EMPTY; + public HumanoidModel.ArmPose rightArmPose = HumanoidModel.ArmPose.EMPTY; + + public PiglinCuteyModel(ModelPart root) { + this.root = root; + this.body = root.getChild("body"); + this.head = root.getChild("head"); + this.LeftEar = this.head.getChild("left_ear"); + this.RightEar = this.head.getChild("right_ear"); + this.LeftArm = root.getChild("left_arm"); + this.RightArm = root.getChild("right_arm"); + this.LeftLeg = root.getChild("left_leg"); + this.RightLeg = root.getChild("right_leg"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + + PartDefinition bodyDef = partdefinition.addOrReplaceChild("body", CubeListBuilder.create().texOffs(16, 16).addBox(-4.0F, 1.0F, -2.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(16, 32).addBox(-4.0F, 1.0F, -2.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.25F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition headDef = partdefinition.addOrReplaceChild("head", CubeListBuilder.create().texOffs(0, 0).addBox(-5.0F, -7.0F, -4.0F, 10.0F, 8.0F, 8.0F, new CubeDeformation(0.24F)) + .texOffs(29, 1).addBox(-4.0F, -3.0F, -4.0F, 8.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(2, 4).addBox(3.0F, -4.0F, -5.0F, 1.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(2, 0).addBox(-4.0F, -4.0F, -5.0F, 1.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition leftEar = headDef.addOrReplaceChild( + "left_ear", + CubeListBuilder.create().texOffs(51, 6) + .addBox(-0.5F, 1.0F, -2.0F, 1.0F, 5.0F, 4.0F, + new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(5.0F, -6.0F, 0.0F, 0.0F, 0.0F, -0.3491F) + ); + PartDefinition rightEar = headDef.addOrReplaceChild( + "right_ear", + CubeListBuilder.create().texOffs(39, 6) + .addBox(-0.5F, 1.0F, -2.0F, 1.0F, 5.0F, 4.0F, + new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-5.0F, -6.0F, 0.0F, 0.0F, 0.0F, 0.3491F) + ); + PartDefinition LeftArm = partdefinition.addOrReplaceChild( + "left_arm", CubeListBuilder.create().texOffs(34, 48) + .addBox(-1.0F, -1.0F, -2.0F, 3.0F, 10.0F, 3.0F, + new CubeDeformation(0.0F)), + PartPose.offset(5.0F, 2.0F, 0.0F) + ); + PartDefinition RightArm = partdefinition.addOrReplaceChild( + "right_arm", + CubeListBuilder.create().texOffs(42, 16) + .addBox(-2.0F, -1.0F, -2.0F, 3.0F, 10.0F, 3.0F, + new CubeDeformation(0.0F)), + PartPose.offset(-5.0F, 2.0F, 0.0F) + ); + PartDefinition LeftLeg = partdefinition.addOrReplaceChild( + "left_leg", + CubeListBuilder.create().texOffs(18, 48) + .addBox(-1.4F, 1.0F, -2.0F, 3.0F, 11.0F, 3.0F, + new CubeDeformation(0.0F)), + PartPose.offset(1.9F, 11.0F, 0.0F) + ); + PartDefinition RightLeg = partdefinition.addOrReplaceChild( + "right_leg", + CubeListBuilder.create().texOffs(2, 16) + .addBox(-1.6F, 1.0F, -2.0F, 3.0F, 11.0F, 3.0F, + new CubeDeformation(0.0F)), + PartPose.offset(-1.9F, 11.0F, 0.0F) + ); + + return LayerDefinition.create(meshdefinition, 64, 64); + } + + @Override + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + this.head.yRot = netHeadYaw * ((float)Math.PI / 180F); + this.head.xRot = headPitch * ((float)Math.PI / 180F); + + this.body.yRot = 0.0F; + this.LeftArm.z = 0.0F; + this.LeftArm.x = 5.0F; + this.RightArm.z = 0.0F; + this.RightArm.x = -5.0F; + + this.LeftArm.xRot = Mth.cos(limbSwing * 0.6662F) * 2.0F * limbSwingAmount * 0.5F; + this.RightArm.xRot = Mth.cos(limbSwing * 0.6662F + (float)Math.PI) * 2.0F * limbSwingAmount * 0.5F; + this.LeftArm.zRot = 0.0F; + this.RightArm.zRot = 0.0F; + this.LeftLeg.xRot = Mth.cos(limbSwing * 0.6662F + (float)Math.PI) * 1.4F * limbSwingAmount; + this.RightLeg.xRot = Mth.cos(limbSwing * 0.6662F) * 1.4F * limbSwingAmount; + this.LeftLeg.yRot = 0.0F; + this.RightLeg.yRot = 0.0F; + this.LeftLeg.zRot = 0.0F; + this.RightLeg.zRot = 0.0F; + if (this.riding) { + this.LeftArm.xRot += (-(float)Math.PI / 5F); + this.RightArm.xRot += (-(float)Math.PI / 5F); + this.LeftLeg.xRot = -1.4137167F; + this.LeftLeg.yRot = (-(float)Math.PI / 10F); + this.LeftLeg.zRot = -0.07853982F; + this.RightLeg.xRot = -1.4137167F; + this.RightLeg.yRot = ((float)Math.PI / 10F); + this.RightLeg.zRot = 0.07853982F; + } + + this.LeftArm.yRot = 0.0F; + this.RightArm.yRot = 0.0F; + + boolean rightHanded = entity.getMainArm() == HumanoidArm.RIGHT; + if (entity.isUsingItem()) { + boolean mainHandUseItem = entity.getUsedItemHand() == InteractionHand.MAIN_HAND; + if (mainHandUseItem == rightHanded) { + this.poseRightArm(entity); + } else { + this.poseLeftArm(entity); + } + } else { + boolean oppositeTwoHanded = rightHanded ? this.leftArmPose.isTwoHanded() : this.rightArmPose.isTwoHanded(); + if (rightHanded != oppositeTwoHanded) { + this.poseLeftArm(entity); + this.poseRightArm(entity); + } else { + this.poseRightArm(entity); + this.poseLeftArm(entity); + } + } + + this.body.xRot = 0.0F; + this.LeftLeg.z = 0.1F; + this.RightLeg.z = 0.1F; + this.LeftLeg.y = 12.0F; + this.RightLeg.y = 12.0F; + this.head.y = 0.0F; + this.body.y = 0.0F; + this.LeftArm.y = 2.0F; + this.RightArm.y = 2.0F; + + if (this.rightArmPose != HumanoidModel.ArmPose.SPYGLASS) { + AnimationUtils.bobModelPart(this.RightArm, ageInTicks, 1.0F); + } + + if (this.leftArmPose != HumanoidModel.ArmPose.SPYGLASS) { + AnimationUtils.bobModelPart(this.LeftArm, ageInTicks, -1.0F); + } + } + + public void copyPropertiesTo(PiglinCuteyModel model) { + super.copyPropertiesTo(model); + model.leftArmPose = this.leftArmPose; + model.rightArmPose = this.rightArmPose; + model.head.copyFrom(this.head); + model.body.copyFrom(this.body); + model.LeftArm.copyFrom(this.LeftArm); + model.RightArm.copyFrom(this.RightArm); + model.LeftLeg.copyFrom(this.LeftLeg); + model.RightLeg.copyFrom(this.RightLeg); + } + + private void poseRightArm(T entity) { + switch(this.rightArmPose) { + case EMPTY: + this.RightArm.yRot = 0.0F; + break; + case BLOCK: + this.RightArm.xRot = this.RightArm.xRot * 0.5F - 0.9424779F; + this.RightArm.yRot = (-(float)Math.PI / 6F); + break; + case ITEM: + this.RightArm.xRot = this.RightArm.xRot * 0.5F - ((float)Math.PI / 10F); + this.RightArm.yRot = 0.0F; + break; + case THROW_SPEAR: + this.RightArm.xRot = this.RightArm.xRot * 0.5F - (float)Math.PI; + this.RightArm.yRot = 0.0F; + break; + case BOW_AND_ARROW: + this.RightArm.yRot = -0.1F + this.head.yRot; + this.LeftArm.yRot = 0.1F + this.head.yRot + 0.4F; + this.RightArm.xRot = (-(float)Math.PI / 2F) + this.head.xRot; + this.LeftArm.xRot = (-(float)Math.PI / 2F) + this.head.xRot; + break; + case CROSSBOW_CHARGE: + AnimationUtils.animateCrossbowCharge(this.RightArm, this.LeftArm, entity, true); + break; + case CROSSBOW_HOLD: + AnimationUtils.animateCrossbowHold(this.RightArm, this.LeftArm, this.head, true); + break; + case SPYGLASS: + this.RightArm.xRot = Mth.clamp(this.head.xRot - 1.9198622F - (entity.isCrouching() ? 0.2617994F : 0.0F), -2.4F, 3.3F); + this.RightArm.yRot = this.head.yRot - 0.2617994F; + } + + } + + private void poseLeftArm(T entity) { + switch(this.leftArmPose) { + case EMPTY: + this.LeftArm.yRot = 0.0F; + break; + case BLOCK: + this.LeftArm.xRot = this.LeftArm.xRot * 0.5F - 0.9424779F; + this.LeftArm.yRot = ((float)Math.PI / 6F); + break; + case ITEM: + this.LeftArm.xRot = this.LeftArm.xRot * 0.5F - ((float)Math.PI / 10F); + this.LeftArm.yRot = 0.0F; + break; + case THROW_SPEAR: + this.LeftArm.xRot = this.LeftArm.xRot * 0.5F - (float)Math.PI; + this.LeftArm.yRot = 0.0F; + break; + case BOW_AND_ARROW: + this.RightArm.yRot = -0.1F + this.head.yRot - 0.4F; + this.LeftArm.yRot = 0.1F + this.head.yRot; + this.RightArm.xRot = (-(float)Math.PI / 2F) + this.head.xRot; + this.LeftArm.xRot = (-(float)Math.PI / 2F) + this.head.xRot; + break; + case CROSSBOW_CHARGE: + AnimationUtils.animateCrossbowCharge(this.RightArm, this.LeftArm, entity, false); + break; + case CROSSBOW_HOLD: + AnimationUtils.animateCrossbowHold(this.RightArm, this.LeftArm, this.head, false); + break; + case SPYGLASS: + this.LeftArm.xRot = Mth.clamp(this.head.xRot - 1.9198622F - (entity.isCrouching() ? 0.2617994F : 0.0F), -2.4F, 3.3F); + this.LeftArm.yRot = this.head.yRot + 0.2617994F; + } + + } + + protected ModelPart getArm(HumanoidArm pSide) { + return pSide == HumanoidArm.LEFT ? this.LeftArm : this.RightArm; + } + + private HumanoidArm getAttackArm(T pEntity) { + HumanoidArm humanoidarm = pEntity.getMainArm(); + return pEntity.swingingArm == InteractionHand.MAIN_HAND ? humanoidarm : humanoidarm.getOpposite(); + } + + @Override + public ModelPart root() { + return root; + } + + @Override + public void translateToHand(HumanoidArm side, PoseStack matrixStack) { + this.getArm(side).translateAndRotate(matrixStack); + } + + @Override + public ModelPart getHead() { + return this.head; + } +} \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/PiglinCuteyRenderer.java b/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/PiglinCuteyRenderer.java new file mode 100644 index 00000000..d41fa62c --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/models/entities/PiglinCuteyRenderer.java @@ -0,0 +1,18 @@ +package com.hexagram2021.emeraldcraft.client.models.entities; + +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.resources.ResourceLocation; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class PiglinCuteyRenderer extends MobRenderer> { + public static final ResourceLocation TEXTURE = new ResourceLocation(MODID, "textures/entity/piglin_cutey/piglin_cutey.png"); + + public PiglinCuteyRenderer(EntityRendererProvider.Context manager) { + super(manager, new PiglinCuteyModel<>(manager.bakeLayer(PiglinCuteyModel.LAYER_LOCATION)), 0.7F); + } + + @Override + public ResourceLocation getTextureLocation(PiglinCuteyEntity entity) { return TEXTURE; } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/CommonProxy.java b/src/main/java/com/hexagram2021/emeraldcraft/common/CommonProxy.java new file mode 100644 index 00000000..cb8a176c --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/CommonProxy.java @@ -0,0 +1,38 @@ +/* + * Copyright by BluSunrize + */ + +package com.hexagram2021.emeraldcraft.common; + +import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BlockEntity; + +public class CommonProxy { + public void onWorldLoad() { } + + public void resetManual() { } + + public void handleTileSound(SoundEvent soundEvent, BlockEntity tile, boolean tileActive, float volume, float pitch) { } + + public void stopTileSound(String soundName, BlockEntity tile) { } + + public Level getClientWorld() + { + return null; + } + + public Player getClientPlayer() + { + return null; + } + + public void reInitGui() { } + + public void clearRenderCaches() { } + + public void openManual() { } + + public void openTileScreen(String guiId, BlockEntity tileEntity) { } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/ECContent.java b/src/main/java/com/hexagram2021/emeraldcraft/common/ECContent.java new file mode 100644 index 00000000..c8d1c95a --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/ECContent.java @@ -0,0 +1,60 @@ +package com.hexagram2021.emeraldcraft.common; + +import com.hexagram2021.emeraldcraft.common.register.*; +import com.hexagram2021.emeraldcraft.common.util.ECLogger; +import com.hexagram2021.emeraldcraft.common.world.Villages; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.StructureFeature; +import net.minecraftforge.common.BiomeDictionary; +import net.minecraftforge.common.BiomeManager; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.event.lifecycle.ParallelDispatchEvent; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; + +import java.util.function.Consumer; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; +import static net.minecraftforge.common.BiomeDictionary.Type.*; +import static net.minecraftforge.common.BiomeDictionary.Type.OVERWORLD; + +@EventBusSubscriber(modid = MODID, bus = EventBusSubscriber.Bus.MOD) +public class ECContent { + public static void modConstruction(IEventBus bus, Consumer runLater) { + ECBlocks.init(bus); + ECItems.init(bus); + Villages.Registers.POINTS_OF_INTEREST.register(bus); + Villages.Registers.PROFESSIONS.register(bus); + ECSurfaceBuilder.init(bus); + ECContainerTypes.init(bus); + ECRecipeSerializer.init(bus); + ECBlockEntity.init(bus); + ECEntities.init(bus); + } + + public static void init(FMLCommonSetupEvent event) { + } + + @SubscribeEvent + public static void registerBiomes(RegistryEvent.Register event) { + ECBiomes.init(event); + } + + @SubscribeEvent + public static void registerFeatures(RegistryEvent.Register> event) { + ECFeatures.init(event); + } + + @SubscribeEvent + public static void registerStructures(RegistryEvent.Register> event) { + ECStructures.init(event); + ECConfiguredStructures.init(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/ECSaveData.java b/src/main/java/com/hexagram2021/emeraldcraft/common/ECSaveData.java new file mode 100644 index 00000000..ba1b8465 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/ECSaveData.java @@ -0,0 +1,56 @@ +package com.hexagram2021.emeraldcraft.common; + +import net.minecraft.core.Registry; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.nbt.Tag; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.saveddata.SavedData; + +import javax.annotation.Nonnull; +import java.util.UUID; +import java.util.stream.Collectors; + +public class ECSaveData extends SavedData { + private static ECSaveData INSTANCE; + public static final String dataName = "EmeraldCraft-SaveData"; + + public ECSaveData() + { + super(); + } + + public ECSaveData(CompoundTag nbt) { + this(); + } + + @Nonnull + @Override + public CompoundTag save(@Nonnull CompoundTag nbt) + { + ListTag dimensionList = new ListTag(); + + //nbt.put("", dimensionList); + + + ListTag receivedShaderList = new ListTag(); + //nbt.put("", receivedShaderList); + + return nbt; + } + + + public static void markInstanceDirty() + { + if(INSTANCE!=null) + INSTANCE.setDirty(); + } + + public static void setInstance(ECSaveData in) + { + INSTANCE = in; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/MobAttributeEventSubscriber.java b/src/main/java/com/hexagram2021/emeraldcraft/common/MobAttributeEventSubscriber.java new file mode 100644 index 00000000..6bb4061e --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/MobAttributeEventSubscriber.java @@ -0,0 +1,22 @@ +package com.hexagram2021.emeraldcraft.common; + +import com.hexagram2021.emeraldcraft.client.models.entities.NetherLambmanEntity; +import com.hexagram2021.emeraldcraft.client.models.entities.NetherPigmanEntity; +import com.hexagram2021.emeraldcraft.client.models.entities.PiglinCuteyEntity; +import com.hexagram2021.emeraldcraft.common.register.ECEntities; +import net.minecraftforge.event.entity.EntityAttributeCreationEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD) +public class MobAttributeEventSubscriber { + + @SubscribeEvent + public static void onAttributeCreate(EntityAttributeCreationEvent event) { + event.put(ECEntities.PIGLIN_CUTEY.get(), PiglinCuteyEntity.createAttributes().build()); + event.put(ECEntities.NETHER_PIGMAN.get(), NetherPigmanEntity.createAttributes().build()); + event.put(ECEntities.NETHER_LAMBMAN.get(), NetherLambmanEntity.createAttributes().build()); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/ContinuousMinerBlockEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/ContinuousMinerBlockEntity.java new file mode 100644 index 00000000..a791fe76 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/ContinuousMinerBlockEntity.java @@ -0,0 +1,354 @@ +package com.hexagram2021.emeraldcraft.common.blocks.entity; + +import com.hexagram2021.emeraldcraft.common.blocks.workstation.ContinuousMinerBlock; +import com.hexagram2021.emeraldcraft.common.crafting.ContinuousMinerMenu; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import com.hexagram2021.emeraldcraft.common.util.ECLogger; +import com.hexagram2021.emeraldcraft.common.util.ECSounds; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.NonNullList; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundSource; +import net.minecraft.tags.BlockTags; +import net.minecraft.world.Container; +import net.minecraft.world.ContainerHelper; +import net.minecraft.world.WorldlyContainer; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.StackedContents; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.ContainerData; +import net.minecraft.world.inventory.StackedContentsCompatible; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.entity.BaseContainerBlockEntity; +import net.minecraft.world.level.block.entity.HopperBlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.storage.loot.LootContext; +import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; + +import javax.annotation.Nullable; +import java.util.List; +import java.util.Random; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ContinuousMinerBlockEntity extends BaseContainerBlockEntity implements WorldlyContainer, StackedContentsCompatible { + protected static final int SLOT_INPUT = 0; + protected static final int SLOT_RESULT = 1; + public static final int DATA_FLUID = 0; + public static final int DATA_MINE_TIME = 1; + public static final int TOTAL_MINE_TIME = 120; + public static final int FLUID_LEVEL_BUCKET = 100; + public static final int MAX_FLUID_LEVEL = 250; + private static final int[] SLOTS_FOR_UP = new int[]{0}; + private static final int[] SLOTS_FOR_SIDES = new int[]{0}; + private static final int[] SLOTS_FOR_DOWN = new int[]{1}; + protected NonNullList items = NonNullList.withSize(2, ItemStack.EMPTY); + + int fluid; + int mineTime; + + protected final ContainerData dataAccess = new ContainerData() { + public int get(int index) { + return switch (index) { + case DATA_FLUID -> ContinuousMinerBlockEntity.this.fluid; + case DATA_MINE_TIME -> ContinuousMinerBlockEntity.this.mineTime; + default -> 0; + }; + } + + public void set(int index, int value) { + switch (index) { + case DATA_FLUID -> ContinuousMinerBlockEntity.this.fluid = value; + case DATA_MINE_TIME -> ContinuousMinerBlockEntity.this.mineTime = value; + } + + } + + public int getCount() { + return ContinuousMinerMenu.DATA_COUNT; + } + }; + + @Override + protected Component getDefaultName() { + return new TranslatableComponent("container.continuous_miner"); + } + + @Override + public int getContainerSize() { + return this.items.size(); + } + + @Override + public boolean isEmpty() { + for(ItemStack itemstack : this.items) { + if (!itemstack.isEmpty()) { + return false; + } + } + + return true; + } + + public ContinuousMinerBlockEntity(BlockPos pos, BlockState state) { + super(ECBlockEntity.CONTINUOUS_MINER.get(), pos, state); + } + + private boolean isMining() { + return this.mineTime > 0; + } + + public int getFluidLevel() { + return fluid; + } + + public void setFluidLevel(int newFluidLevel) { + fluid = newFluidLevel; + } + + public void load(CompoundTag nbt) { + super.load(nbt); + this.items = NonNullList.withSize(this.getContainerSize(), ItemStack.EMPTY); + ContainerHelper.loadAllItems(nbt, this.items); + this.fluid = nbt.getInt("Fluid"); + this.mineTime = nbt.getInt("MineTime"); + } + + public CompoundTag save(CompoundTag nbt) { + super.save(nbt); + nbt.putInt("Fluid", this.fluid); + nbt.putInt("MineTime", this.mineTime); + ContainerHelper.saveAllItems(nbt, this.items); + return nbt; + } + + public static ItemStack byState(BlockState blockState, ServerLevel level, BlockPos pos, Random random) { + ResourceLocation rl; + if (blockState.is(BlockTags.OAK_LOGS)) { + rl = new ResourceLocation(MODID, "continuous_miner/wood/oak_logs"); + } else if (blockState.is(BlockTags.SPRUCE_LOGS)) { + rl = new ResourceLocation(MODID, "continuous_miner/wood/spruce_logs"); + } else if (blockState.is(BlockTags.BIRCH_LOGS)) { + rl = new ResourceLocation(MODID, "continuous_miner/wood/birch_logs"); + } else if (blockState.is(BlockTags.JUNGLE_LOGS)) { + rl = new ResourceLocation(MODID, "continuous_miner/wood/jungle_logs"); + } else if (blockState.is(BlockTags.ACACIA_LOGS)) { + rl = new ResourceLocation(MODID, "continuous_miner/wood/acacia_logs"); + } else if (blockState.is(BlockTags.DARK_OAK_LOGS)) { + rl = new ResourceLocation(MODID, "continuous_miner/wood/dark_oak_logs"); + } else if(blockState.is(BlockTags.CRIMSON_STEMS)) { + rl = new ResourceLocation(MODID, "continuous_miner/wood/crimson_stems"); + } else if(blockState.is(BlockTags.WARPED_STEMS)) { + rl = new ResourceLocation(MODID, "continuous_miner/wood/warped_stems"); + } else if(blockState.is(Blocks.CRIMSON_NYLIUM)) { + rl = new ResourceLocation(MODID, "continuous_miner/nylium/crimson_nylium"); + } else if(blockState.is(Blocks.WARPED_NYLIUM)) { + rl = new ResourceLocation(MODID, "continuous_miner/nylium/warped_nylium"); + } else if(blockState.is(BlockTags.BASE_STONE_NETHER) || blockState.is(Blocks.SOUL_SAND) || blockState.is(Blocks.SOUL_SOIL)) { + rl = new ResourceLocation(MODID, "continuous_miner/ores/nether"); + } else if(blockState.is(BlockTags.BASE_STONE_OVERWORLD) || blockState.is(Blocks.COBBLESTONE) || blockState.is(Blocks.COBBLED_DEEPSLATE)) { + rl = new ResourceLocation(MODID, "continuous_miner/ores/overworld"); + } else if(blockState.is(Blocks.GRAVEL) || blockState.is(Blocks.MAGMA_BLOCK)) { + rl = new ResourceLocation(MODID, "continuous_miner/ores/flint"); + } else if(blockState.is(Blocks.OBSIDIAN) || blockState.is(Blocks.CRYING_OBSIDIAN) || blockState.is(Blocks.BEDROCK)) { + rl = new ResourceLocation(MODID, "continuous_miner/ores/obsidian"); + } else { + return new ItemStack(Items.AIR); + } + List list = level.getServer().getLootTables().get(rl).getRandomItems( + new LootContext.Builder(level).withRandom(random).create(LootContextParamSets.EMPTY) + ); + return list.isEmpty() ? new ItemStack(Items.AIR) : list.get(0); + } + + protected void dispenseFrom(BlockState blockState, ServerLevel level, BlockPos pos, Random random) { + final double velo = 0.1D; + + Direction facing = blockState.getValue(ContinuousMinerBlock.FACING); + BlockState front = level.getBlockState(pos.relative(facing)); + ItemStack itemstack = byState(front, level, pos, random); + if(!itemstack.is(Items.AIR)) { + this.fluid -= 1; + this.mineTime = TOTAL_MINE_TIME; + level.playSound(null, pos, ECSounds.VILLAGER_WORK_GEOLOGIST, SoundSource.BLOCKS, 1.0F, 1.0F); + if(itemstack.is(Items.STRUCTURE_VOID)) { + return; + } + + Direction opposite = facing.getOpposite(); + BlockPos resultPos = pos.relative(opposite); + Container container = HopperBlockEntity.getContainerAt(level, resultPos); + if(container == null) { + ItemEntity itemEntity = new ItemEntity(level, resultPos.getX() + 0.5D, resultPos.getY() + 1.2D, resultPos.getZ() + 0.5D, itemstack); + itemEntity.setDeltaMovement(random.nextGaussian() * 0.001D + (double)opposite.getStepX() * velo, random.nextGaussian() * 0.001D + 0.2D, random.nextGaussian() * 0.001D + (double)opposite.getStepZ() * velo); + level.addFreshEntity(itemEntity); + } else { + ItemStack addItemstack = HopperBlockEntity.addItem(null, container, itemstack.copy().split(1), facing.getOpposite()); + if(!addItemstack.isEmpty()) { + ItemEntity itemEntity = new ItemEntity(level, resultPos.getX() + 0.5D, resultPos.getY() + 1.2D, resultPos.getZ() + 0.5D, itemstack); + itemEntity.setDeltaMovement(random.nextGaussian() * 0.001D + (double)opposite.getStepX() * velo, random.nextGaussian() * 0.001D + 0.2D, random.nextGaussian() * 0.001D + (double)opposite.getStepZ() * velo); + level.addFreshEntity(itemEntity); + } + } + } + } + + public static void serverTick(Level level, BlockPos blockPos, BlockState blockState, ContinuousMinerBlockEntity blockEntity) { + if(blockState.getValue(ContinuousMinerBlock.TRIGGERED)) { + if(blockEntity.isMining()) { + blockEntity.mineTime -= 1; + } + if(!blockEntity.isMining() && blockEntity.getFluidLevel() > 0) { + blockEntity.dispenseFrom(blockState, (ServerLevel)level, blockPos, level.getRandom()); + } + } + ItemStack ingredient = blockEntity.items.get(0); + ItemStack result = blockEntity.items.get(1); + if(!ingredient.isEmpty()) { + if(ingredient.is(ECItems.MELTED_EMERALD_BUCKET.get())) { + if(blockEntity.fluid <= MAX_FLUID_LEVEL - FLUID_LEVEL_BUCKET) { + if(result.isEmpty()) { + ingredient.shrink(1); + blockEntity.items.set(1, new ItemStack(Items.BUCKET)); + } else if(result.is(Items.BUCKET)) { + ingredient.shrink(1); + result.grow(1); + } else { + return; + } + blockEntity.fluid += FLUID_LEVEL_BUCKET; + } + } else if(ingredient.is(Items.BUCKET)) { + if(blockEntity.fluid >= FLUID_LEVEL_BUCKET) { + if(result.isEmpty()) { + ingredient.shrink(1); + blockEntity.items.set(1, new ItemStack(ECItems.MELTED_EMERALD_BUCKET.get())); + } else if(result.is(ECItems.MELTED_EMERALD_BUCKET.get()) && result.getCount() < result.getMaxStackSize()) { + ingredient.shrink(1); + result.grow(1); + } else { + return; + } + blockEntity.fluid -= FLUID_LEVEL_BUCKET; + } + } + } + } + + @Override + public int[] getSlotsForFace(Direction direction) { + if(direction == Direction.DOWN) { + return SLOTS_FOR_DOWN; + } + if(direction == Direction.UP) { + return SLOTS_FOR_UP; + } + return SLOTS_FOR_SIDES; + } + + @Override + public void clearContent() { + this.items.clear(); + } + + @Override + public void fillStackedContents(StackedContents contents) { + for(ItemStack itemstack : this.items) { + contents.accountStack(itemstack); + } + } + + @Override + public boolean stillValid(Player player) { + if (this.level.getBlockEntity(this.worldPosition) != this) { + return false; + } + return player.distanceToSqr((double)this.worldPosition.getX() + 0.5D, (double)this.worldPosition.getY() + 0.5D, (double)this.worldPosition.getZ() + 0.5D) <= 64.0D; + } + + @Override + public ItemStack getItem(int index) { + return this.items.get(index); + } + + @Override + public ItemStack removeItem(int index, int count) { + return ContainerHelper.removeItem(this.items, index, count); + } + + @Override + public ItemStack removeItemNoUpdate(int index) { + return ContainerHelper.takeItem(this.items, index); + } + + @Override + public void setItem(int index, ItemStack itemStack) { + this.items.set(index, itemStack); + if (itemStack.getCount() > this.getMaxStackSize()) { + itemStack.setCount(this.getMaxStackSize()); + } + } + + @Override + public boolean canPlaceItem(int index, ItemStack itemStack) { + return itemStack.is(Items.BUCKET) || itemStack.is(ECItems.MELTED_EMERALD_BUCKET.get()); + } + + @Override + public boolean canPlaceItemThroughFace(int index, ItemStack itemStack, Direction direction) { + return this.canPlaceItem(index, itemStack); + } + + @Override + public boolean canTakeItemThroughFace(int index, ItemStack itemStack, Direction direction) { + return true; + } + + net.minecraftforge.common.util.LazyOptional[] handlers = + net.minecraftforge.items.wrapper.SidedInvWrapper.create(this, Direction.UP, Direction.DOWN, Direction.NORTH); + + @Override + public net.minecraftforge.common.util.LazyOptional getCapability(net.minecraftforge.common.capabilities.Capability capability, @Nullable Direction facing) { + if (!this.remove && facing != null && capability == net.minecraftforge.items.CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { + if (facing == Direction.UP) { + return handlers[0].cast(); + } else if (facing == Direction.DOWN) { + return handlers[1].cast(); + } else { + return handlers[2].cast(); + } + } + return super.getCapability(capability, facing); + } + + @Override + public void invalidateCaps() { + super.invalidateCaps(); + for (net.minecraftforge.common.util.LazyOptional handler : handlers) { + handler.invalidate(); + } + } + + @Override + public void reviveCaps() { + super.reviveCaps(); + this.handlers = net.minecraftforge.items.wrapper.SidedInvWrapper.create(this, Direction.UP, Direction.DOWN, Direction.NORTH); + } + + @Override + protected AbstractContainerMenu createMenu(int id, Inventory inventory) { + return new ContinuousMinerMenu(id, inventory, this, this.dataAccess); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/GlassKilnBlockEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/GlassKilnBlockEntity.java new file mode 100644 index 00000000..d22ce4f4 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/GlassKilnBlockEntity.java @@ -0,0 +1,34 @@ +package com.hexagram2021.emeraldcraft.common.blocks.entity; + +import com.hexagram2021.emeraldcraft.common.crafting.GlassKilnMenu; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity; +import net.minecraft.world.level.block.state.BlockState; + +public class GlassKilnBlockEntity extends AbstractFurnaceBlockEntity { + public GlassKilnBlockEntity(BlockPos pos, BlockState state) { + super(ECBlockEntity.GLASS_KILN.get(), pos, state, ECRecipes.GLASS_KILN_TYPE); + } + + @Override + protected Component getDefaultName() { + return new TranslatableComponent("container.glass_kiln"); + } + + @Override + protected int getBurnDuration(ItemStack itemStack) { + return super.getBurnDuration(itemStack) / 2; + } + + @Override + protected AbstractContainerMenu createMenu(int id, Inventory inventory) { + return new GlassKilnMenu(id, inventory, this, this.dataAccess); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/IceMakerBlockEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/IceMakerBlockEntity.java new file mode 100644 index 00000000..b45a13c9 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/IceMakerBlockEntity.java @@ -0,0 +1,377 @@ +package com.hexagram2021.emeraldcraft.common.blocks.entity; + +import com.hexagram2021.emeraldcraft.common.blocks.workstation.IceMakerBlock; +import com.hexagram2021.emeraldcraft.common.crafting.*; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import com.hexagram2021.emeraldcraft.common.util.ECLogger; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.NonNullList; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.util.Mth; +import net.minecraft.world.Container; +import net.minecraft.world.ContainerHelper; +import net.minecraft.world.WorldlyContainer; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.StackedContents; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.ContainerData; +import net.minecraft.world.inventory.StackedContentsCompatible; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BaseContainerBlockEntity; +import net.minecraft.world.level.block.state.BlockState; + +import javax.annotation.Nullable; + +import static com.hexagram2021.emeraldcraft.common.blocks.entity.ContinuousMinerBlockEntity.FLUID_LEVEL_BUCKET; + +public class IceMakerBlockEntity extends BaseContainerBlockEntity implements WorldlyContainer, StackedContentsCompatible { + public static final int MAX_INGREDIENT_FLUID_LEVEL = 1000; + public static final int MAX_CONDENSATE_FLUID_LEVEL = 800; + public static final int WATER_BUCKET_CONDENSATE_LEVEL = 100; + + private static final int[] SLOTS_FOR_UP = new int[]{0}; + private static final int[] SLOTS_FOR_DOWN = new int[]{3, 1}; + private static final int[] SLOTS_FOR_SIDES = new int[]{2}; + + protected NonNullList items = NonNullList.withSize(IceMakerMenu.SLOT_COUNT, ItemStack.EMPTY); + int inputFluidType; + int inputFluidAmount; + int freezingProgress; + int freezingTotalTime; + int condensateFluidAmount; + + protected final ContainerData dataAccess = new ContainerData() { + public int get(int index) { + return switch (index) { + case 0 -> IceMakerBlockEntity.this.inputFluidType; + case 1 -> IceMakerBlockEntity.this.inputFluidAmount; + case 2 -> IceMakerBlockEntity.this.freezingProgress; + case 3 -> IceMakerBlockEntity.this.freezingTotalTime; + case 4 -> IceMakerBlockEntity.this.condensateFluidAmount; + default -> 0; + }; + } + + public void set(int index, int value) { + switch (index) { + case 0 -> IceMakerBlockEntity.this.inputFluidType = value; + case 1 -> IceMakerBlockEntity.this.inputFluidAmount = value; + case 2 -> IceMakerBlockEntity.this.freezingProgress = value; + case 3 -> IceMakerBlockEntity.this.freezingTotalTime = value; + case 4 -> IceMakerBlockEntity.this.condensateFluidAmount = value; + } + + } + + public int getCount() { + return IceMakerMenu.DATA_COUNT; + } + }; + + public IceMakerBlockEntity(BlockPos pos, BlockState state) { + super(ECBlockEntity.ICE_MAKER.get(), pos, state); + } + + @Override + protected Component getDefaultName() { + return new TranslatableComponent("container.ice_maker"); + } + + public int getInputFluidTypeIndex() { + return this.inputFluidType; + } + + private boolean isLit() { + return this.condensateFluidAmount > 0; + } + + public static void serverTick(Level level, BlockPos pos, BlockState blockState, IceMakerBlockEntity blockEntity) { + boolean flag = blockEntity.isLit() && blockEntity.inputFluidAmount > 0; + boolean flag1 = false; + + if (!blockEntity.items.get(IceMakerMenu.CONDENSATE_SLOT).isEmpty() && + blockEntity.items.get(IceMakerMenu.CONDENSATE_SLOT).is(Items.WATER_BUCKET) && + blockEntity.condensateFluidAmount <= MAX_CONDENSATE_FLUID_LEVEL - WATER_BUCKET_CONDENSATE_LEVEL * 2) { + blockEntity.condensateFluidAmount += WATER_BUCKET_CONDENSATE_LEVEL * 2; + blockEntity.items.set(IceMakerMenu.CONDENSATE_SLOT, new ItemStack(Items.BUCKET)); + } + + if (blockEntity.isLit() && blockEntity.inputFluidAmount > 0) { + IceMakerRecipe recipe = level.getRecipeManager().getRecipeFor(ECRecipes.ICE_MAKER_TYPE, blockEntity, level).orElse(null); + + if (blockEntity.canFreeze(recipe, blockEntity.items, blockEntity.getMaxStackSize())) { + ++blockEntity.freezingProgress; + --blockEntity.condensateFluidAmount; + if (blockEntity.freezingProgress == blockEntity.freezingTotalTime) { + blockEntity.freezingProgress = 0; + blockEntity.freezingTotalTime = getTotalFreezeTime(level, blockEntity); + blockEntity.freeze(recipe, blockEntity.items, blockEntity.getMaxStackSize()); + + flag1 = true; + } + } else { + blockEntity.freezingProgress = 0; + } + } else if (!blockEntity.isLit() && blockEntity.freezingProgress > 0) { + blockEntity.freezingProgress = Mth.clamp(blockEntity.freezingProgress - 2, 0, blockEntity.freezingTotalTime); + } + + boolean nextFlag = blockEntity.isLit() && blockEntity.inputFluidAmount > 0; + if (flag != nextFlag) { + flag1 = true; + blockState = blockState.setValue(IceMakerBlock.LIT, nextFlag); + level.setBlock(pos, blockState, Block.UPDATE_ALL); + } + + if (flag1) { + setChanged(level, pos, blockState); + } + + ItemStack ingredientInput = blockEntity.items.get(IceMakerMenu.INGREDIENT_INPUT_SLOT); + ItemStack ingredientOutput = blockEntity.items.get(IceMakerMenu.INGREDIENT_OUTPUT_SLOT); + if(!ingredientInput.isEmpty()) { + if(ingredientInput.is(FluidType.getFluidBucketItem(FluidType.FLUID_TYPES[blockEntity.inputFluidType]))) { + if(blockEntity.inputFluidAmount <= MAX_INGREDIENT_FLUID_LEVEL - FLUID_LEVEL_BUCKET) { + if(ingredientOutput.isEmpty()) { + ingredientInput.shrink(1); + blockEntity.items.set(IceMakerMenu.INGREDIENT_OUTPUT_SLOT, new ItemStack(Items.BUCKET)); + } else if(ingredientOutput.is(Items.BUCKET) && ingredientOutput.getCount() < ingredientOutput.getMaxStackSize()) { + ingredientInput.shrink(1); + ingredientOutput.grow(1); + } else { + return; + } + blockEntity.inputFluidAmount += FLUID_LEVEL_BUCKET; + } + } else if(ingredientInput.is(Items.BUCKET)) { + if(blockEntity.inputFluidAmount >= FLUID_LEVEL_BUCKET) { + if(ingredientOutput.isEmpty()) { + ingredientInput.shrink(1); + blockEntity.items.set(IceMakerMenu.INGREDIENT_OUTPUT_SLOT, new ItemStack(FluidType.getFluidBucketItem(FluidType.FLUID_TYPES[blockEntity.inputFluidType]))); + } else if(ingredientOutput.is(FluidType.getFluidBucketItem(FluidType.FLUID_TYPES[blockEntity.inputFluidType])) && ingredientOutput.getCount() < ingredientOutput.getMaxStackSize()) { + ingredientInput.shrink(1); + ingredientOutput.grow(1); + } else { + return; + } + blockEntity.inputFluidAmount -= FLUID_LEVEL_BUCKET; + } + } else if(blockEntity.inputFluidAmount <= 0 && IceMakerMenu.isFluidBucket(ingredientInput)) { + blockEntity.inputFluidType = FluidType.getFluidFromBucketItem(ingredientInput.getItem()).getID(); + blockEntity.freezingTotalTime = getTotalFreezeTime(level, blockEntity); + if(ingredientOutput.isEmpty()) { + ingredientInput.shrink(1); + blockEntity.items.set(IceMakerMenu.INGREDIENT_OUTPUT_SLOT, new ItemStack(Items.BUCKET)); + } else if(ingredientOutput.is(Items.BUCKET) && ingredientOutput.getCount() < ingredientOutput.getMaxStackSize()) { + ingredientInput.shrink(1); + ingredientOutput.grow(1); + } else { + return; + } + blockEntity.inputFluidAmount = FLUID_LEVEL_BUCKET; + } + } + } + + private boolean canFreeze(@Nullable IceMakerRecipe recipe, NonNullList container, int maxCount) { + if (recipe == null) { + return false; + } + ItemStack result = recipe.assemble(this); + if (result.isEmpty()) { + return false; + } + ItemStack itemstack = container.get(IceMakerMenu.RESULT_SLOT); + if(itemstack.isEmpty()) { + return true; + } + if(!itemstack.sameItem(result)) { + return false; + } + if(itemstack.getCount() + result.getCount() <= maxCount && itemstack.getCount() + result.getCount() <= itemstack.getMaxStackSize()) { + return true; + } + return itemstack.getCount() + result.getCount() <= result.getMaxStackSize(); + } + + private boolean freeze(@Nullable IceMakerRecipe recipe, NonNullList container, int maxCount) { + if (this.canFreeze(recipe, container, maxCount)) { + ItemStack result = recipe.assemble(this); + ItemStack itemstack = container.get(IceMakerMenu.RESULT_SLOT); + if(itemstack.isEmpty()) { + container.set(IceMakerMenu.RESULT_SLOT, result.copy()); + } else if (itemstack.is(result.getItem())) { + itemstack.grow(result.getCount()); + } + + this.inputFluidAmount -= recipe.getFluidAmount(); + return true; + } + return false; + } + + @Override + public boolean stillValid(Player player) { + if (this.level.getBlockEntity(this.worldPosition) != this) { + return false; + } + return player.distanceToSqr((double)this.worldPosition.getX() + 0.5D, (double)this.worldPosition.getY() + 0.5D, (double)this.worldPosition.getZ() + 0.5D) <= 64.0D; + } + + @Override + public void load(CompoundTag nbt) { + super.load(nbt); + this.items = NonNullList.withSize(this.getContainerSize(), ItemStack.EMPTY); + ContainerHelper.loadAllItems(nbt, this.items); + this.inputFluidType = nbt.getInt("InputFluidType"); + this.inputFluidAmount = nbt.getInt("InputFluidAmount"); + this.freezingProgress = nbt.getInt("FreezingProgress"); + this.freezingTotalTime = nbt.getInt("FreezingTimeTotal"); + this.condensateFluidAmount = nbt.getInt("CondensateFluidAmount"); + } + + @Override + public CompoundTag save(CompoundTag nbt) { + super.save(nbt); + nbt.putInt("InputFluidType", this.inputFluidType); + nbt.putInt("InputFluidAmount", this.inputFluidAmount); + nbt.putInt("FreezingProgress", this.freezingProgress); + nbt.putInt("FreezingTimeTotal", this.freezingTotalTime); + nbt.putInt("CondensateFluidAmount", this.condensateFluidAmount); + ContainerHelper.saveAllItems(nbt, this.items); + return nbt; + } + + @Override + public int getContainerSize() { + return this.items.size(); + } + + @Override + public boolean isEmpty() { + for(ItemStack itemstack : this.items) { + if (!itemstack.isEmpty()) { + return false; + } + } + return true; + } + + @Override + public ItemStack getItem(int index) { + return this.items.get(index); + } + + @Override + public ItemStack removeItem(int index, int count) { + return ContainerHelper.removeItem(this.items, index, count); + } + + @Override + public ItemStack removeItemNoUpdate(int index) { + return ContainerHelper.takeItem(this.items, index); + } + + @Override + public void setItem(int index, ItemStack itemStack) { + this.items.set(index, itemStack); + if (itemStack.getCount() > this.getMaxStackSize()) { + itemStack.setCount(this.getMaxStackSize()); + } + } + + @Override + public boolean canPlaceItem(int index, ItemStack itemStack) { + if (index == IceMakerMenu.RESULT_SLOT) { + return false; + } + if (index == IceMakerMenu.CONDENSATE_SLOT) { + return itemStack.is(Items.BUCKET) || itemStack.is(Items.WATER_BUCKET); + } + return itemStack.is(Items.BUCKET) || IceMakerMenu.isFluidBucket(itemStack); + } + + private static int getTotalFreezeTime(Level level, Container container) { + return level.getRecipeManager().getRecipeFor(ECRecipes.ICE_MAKER_TYPE, container, level).map(IceMakerRecipe::getFreezingTime).orElse(IceMakerRecipe.FREEZING_TIME); + } + + @Override + public void clearContent() { + this.items.clear(); + } + + @Override + public void fillStackedContents(StackedContents contents) { + for(ItemStack itemstack : this.items) { + contents.accountStack(itemstack); + } + } + + @Override + public int[] getSlotsForFace(Direction direction) { + if (direction == Direction.DOWN) { + return SLOTS_FOR_DOWN; + } + if (direction == Direction.UP) { + return SLOTS_FOR_UP; + } + return SLOTS_FOR_SIDES; + } + + @Override + public boolean canPlaceItemThroughFace(int index, ItemStack itemStack, @Nullable Direction direction) { + return this.canPlaceItem(index, itemStack); + } + + @Override + public boolean canTakeItemThroughFace(int index, ItemStack itemStack, Direction direction) { + if (direction == Direction.DOWN && index == IceMakerMenu.CONDENSATE_SLOT) { + return itemStack.is(Items.BUCKET); + } + return true; + } + + net.minecraftforge.common.util.LazyOptional[] handlers = + net.minecraftforge.items.wrapper.SidedInvWrapper.create(this, Direction.UP, Direction.DOWN, Direction.NORTH); + + @Override + public net.minecraftforge.common.util.LazyOptional getCapability(net.minecraftforge.common.capabilities.Capability capability, @Nullable Direction facing) { + if (!this.remove && facing != null && capability == net.minecraftforge.items.CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { + if (facing == Direction.UP) { + return handlers[0].cast(); + } else if (facing == Direction.DOWN) { + return handlers[1].cast(); + } else { + return handlers[2].cast(); + } + } + return super.getCapability(capability, facing); + } + + @Override + public void invalidateCaps() { + super.invalidateCaps(); + for (net.minecraftforge.common.util.LazyOptional handler : handlers) { + handler.invalidate(); + } + } + + @Override + public void reviveCaps() { + super.reviveCaps(); + this.handlers = net.minecraftforge.items.wrapper.SidedInvWrapper.create(this, Direction.UP, Direction.DOWN, Direction.NORTH); + } + + @Override + protected AbstractContainerMenu createMenu(int id, Inventory inventory) { + return new IceMakerMenu(id, inventory, this, this.dataAccess); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/MelterBlockEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/MelterBlockEntity.java new file mode 100644 index 00000000..e3018ab4 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/MelterBlockEntity.java @@ -0,0 +1,402 @@ +package com.hexagram2021.emeraldcraft.common.blocks.entity; + +import com.hexagram2021.emeraldcraft.common.blocks.workstation.MelterBlock; +import com.hexagram2021.emeraldcraft.common.crafting.FluidType; +import com.hexagram2021.emeraldcraft.common.crafting.MelterMenu; +import com.hexagram2021.emeraldcraft.common.crafting.MelterRecipe; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.NonNullList; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.Container; +import net.minecraft.world.ContainerHelper; +import net.minecraft.world.WorldlyContainer; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.StackedContents; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.ContainerData; +import net.minecraft.world.inventory.StackedContentsCompatible; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BaseContainerBlockEntity; +import net.minecraft.world.level.block.state.BlockState; + +import javax.annotation.Nullable; + +import static com.hexagram2021.emeraldcraft.common.blocks.entity.ContinuousMinerBlockEntity.FLUID_LEVEL_BUCKET; + +public class MelterBlockEntity extends BaseContainerBlockEntity implements WorldlyContainer, StackedContentsCompatible { + public static final int MAX_FLUID_LEVEL = 1000; + + private static final int[] SLOTS_FOR_UP = new int[]{2, 0}; + private static final int[] SLOTS_FOR_DOWN = new int[]{3, 1}; + private static final int[] SLOTS_FOR_SIDES = new int[]{2, 1}; + + protected NonNullList items = NonNullList.withSize(MelterMenu.SLOT_COUNT, ItemStack.EMPTY); + int litTime; + int litDuration; + int meltingProgress; + int meltingTotalTime; + int fluidType; + int fluidAmount; + protected final ContainerData dataAccess = new ContainerData() { + public int get(int index) { + return switch (index) { + case 0 -> MelterBlockEntity.this.litTime; + case 1 -> MelterBlockEntity.this.litDuration; + case 2 -> MelterBlockEntity.this.meltingProgress; + case 3 -> MelterBlockEntity.this.meltingTotalTime; + case 4 -> MelterBlockEntity.this.fluidType; + case 5 -> MelterBlockEntity.this.fluidAmount; + default -> 0; + }; + } + + public void set(int index, int value) { + switch (index) { + case 0 -> MelterBlockEntity.this.litTime = value; + case 1 -> MelterBlockEntity.this.litDuration = value; + case 2 -> MelterBlockEntity.this.meltingProgress = value; + case 3 -> MelterBlockEntity.this.meltingTotalTime = value; + case 4 -> MelterBlockEntity.this.fluidType = value; + case 5 -> MelterBlockEntity.this.fluidAmount = value; + } + + } + + public int getCount() { + return MelterMenu.DATA_COUNT; + } + }; + private final Object2IntOpenHashMap recipesUsed = new Object2IntOpenHashMap<>(); + + public MelterBlockEntity(BlockPos pos, BlockState state) { + super(ECBlockEntity.MELTER.get(), pos, state); + } + + private boolean isLit() { + return this.litTime > 0; + } + + public static void serverTick(Level level, BlockPos pos, BlockState blockState, MelterBlockEntity blockEntity) { + boolean flag = blockEntity.isLit(); + boolean flag1 = false; + if (blockEntity.isLit()) { + --blockEntity.litTime; + } + + ItemStack fuelItemStack = blockEntity.items.get(MelterMenu.FUEL_SLOT); + if (blockEntity.isLit() || !fuelItemStack.isEmpty() && !blockEntity.items.get(MelterMenu.INGREDIENT_SLOT).isEmpty()) { + MelterRecipe recipe = level.getRecipeManager().getRecipeFor(ECRecipes.MELTER_TYPE, blockEntity, level).orElse(null); + if (!blockEntity.isLit() && blockEntity.canBurn(recipe, blockEntity.items)) { + blockEntity.litTime = blockEntity.getBurnDuration(fuelItemStack); + blockEntity.litDuration = blockEntity.litTime; + if (blockEntity.isLit()) { + flag1 = true; + if (fuelItemStack.hasContainerItem()) { + blockEntity.items.set(MelterMenu.FUEL_SLOT, fuelItemStack.getContainerItem()); + } else if (!fuelItemStack.isEmpty()) { + fuelItemStack.shrink(1); + if (fuelItemStack.isEmpty()) { + blockEntity.items.set(MelterMenu.FUEL_SLOT, fuelItemStack.getContainerItem()); + } + } + } + } + + if (blockEntity.isLit() && blockEntity.canBurn(recipe, blockEntity.items)) { + ++blockEntity.meltingProgress; + if (blockEntity.meltingProgress == blockEntity.meltingTotalTime) { + blockEntity.meltingProgress = 0; + blockEntity.meltingTotalTime = getTotalMeltTime(level, blockEntity); + blockEntity.burn(recipe, blockEntity.items); + + flag1 = true; + } + } else { + blockEntity.meltingProgress = 0; + } + } else if (!blockEntity.isLit() && blockEntity.meltingProgress > 0) { + blockEntity.meltingProgress = Mth.clamp(blockEntity.meltingProgress - 2, 0, blockEntity.meltingTotalTime); + } + + if (flag != blockEntity.isLit()) { + flag1 = true; + blockState = blockState.setValue(MelterBlock.LIT, blockEntity.isLit()); + level.setBlock(pos, blockState, 3); + } + + if (flag1) { + setChanged(level, pos, blockState); + } + + ItemStack resultInput = blockEntity.items.get(MelterMenu.RESULT_INPUT_SLOT); + ItemStack resultOutput = blockEntity.items.get(MelterMenu.RESULT_OUTPUT_SLOT); + if(!resultInput.isEmpty()) { + if(resultInput.is(FluidType.getFluidBucketItem(FluidType.FLUID_TYPES[blockEntity.fluidType]))) { + if(blockEntity.fluidAmount <= MAX_FLUID_LEVEL - FLUID_LEVEL_BUCKET) { + if(resultOutput.isEmpty()) { + resultInput.shrink(1); + blockEntity.items.set(MelterMenu.RESULT_OUTPUT_SLOT, new ItemStack(Items.BUCKET)); + } else if(resultOutput.is(Items.BUCKET) && resultOutput.getCount() < resultOutput.getMaxStackSize()) { + resultInput.shrink(1); + resultOutput.grow(1); + } else { + return; + } + blockEntity.fluidAmount += FLUID_LEVEL_BUCKET; + } + } else if(resultInput.is(Items.BUCKET)) { + if(blockEntity.fluidAmount >= FLUID_LEVEL_BUCKET) { + if(resultOutput.isEmpty()) { + resultInput.shrink(1); + blockEntity.items.set(MelterMenu.RESULT_OUTPUT_SLOT, new ItemStack(FluidType.getFluidBucketItem(FluidType.FLUID_TYPES[blockEntity.fluidType]))); + } else if(resultOutput.is(FluidType.getFluidBucketItem(FluidType.FLUID_TYPES[blockEntity.fluidType])) && resultOutput.getCount() < resultOutput.getMaxStackSize()) { + resultInput.shrink(1); + resultOutput.grow(1); + } else { + return; + } + blockEntity.fluidAmount -= FLUID_LEVEL_BUCKET; + } + } else if(blockEntity.fluidAmount <= 0 && MelterMenu.isFluidBucket(resultInput)) { + blockEntity.fluidType = FluidType.getFluidFromBucketItem(resultInput.getItem()).getID(); + if(resultOutput.isEmpty()) { + resultInput.shrink(1); + blockEntity.items.set(MelterMenu.RESULT_OUTPUT_SLOT, new ItemStack(Items.BUCKET)); + } else if(resultOutput.is(Items.BUCKET) && resultOutput.getCount() < resultOutput.getMaxStackSize()) { + resultInput.shrink(1); + resultOutput.grow(1); + } else { + return; + } + blockEntity.fluidAmount = FLUID_LEVEL_BUCKET; + } + } + } + + private boolean canBurn(MelterRecipe recipe, NonNullList container) { + if (recipe == null || container.get(0).isEmpty()) { + return false; + } + if (recipe.getFluidType().getID() != this.fluidType) { + return this.fluidAmount == 0; + } + return recipe.getFluidAmount() + this.fluidAmount <= MAX_FLUID_LEVEL; + } + + private boolean burn(@Nullable MelterRecipe recipe, NonNullList container) { + if (this.canBurn(recipe, container)) { + ItemStack itemstack = container.get(0); + if (recipe.getFluidType().getID() != this.fluidType) { + this.fluidType = recipe.getFluidType().getID(); + } + this.fluidAmount += recipe.getFluidAmount(); + + itemstack.shrink(1); + return true; + } + return false; + } + + @Override + public boolean stillValid(Player player) { + if (this.level.getBlockEntity(this.worldPosition) != this) { + return false; + } + return player.distanceToSqr((double)this.worldPosition.getX() + 0.5D, (double)this.worldPosition.getY() + 0.5D, (double)this.worldPosition.getZ() + 0.5D) <= 64.0D; + } + + @Override + public void load(CompoundTag nbt) { + super.load(nbt); + this.items = NonNullList.withSize(this.getContainerSize(), ItemStack.EMPTY); + ContainerHelper.loadAllItems(nbt, this.items); + this.litTime = nbt.getInt("BurnTime"); + this.litDuration = this.getBurnDuration(this.items.get(1)); + this.meltingProgress = nbt.getInt("MeltTime"); + this.meltingTotalTime = nbt.getInt("MeltTimeTotal"); + this.fluidType = nbt.getInt("FluidType"); + this.fluidAmount = nbt.getInt("FluidAmount"); + CompoundTag compoundtag = nbt.getCompound("RecipesUsed"); + + for(String s : compoundtag.getAllKeys()) { + this.recipesUsed.put(new ResourceLocation(s), compoundtag.getInt(s)); + } + + } + + @Override + public CompoundTag save(CompoundTag nbt) { + super.save(nbt); + nbt.putInt("BurnTime", this.litTime); + nbt.putInt("CookTime", this.meltingProgress); + nbt.putInt("CookTimeTotal", this.meltingTotalTime); + nbt.putInt("FluidType", this.fluidType); + nbt.putInt("FluidAmount", this.fluidAmount); + ContainerHelper.saveAllItems(nbt, this.items); + CompoundTag compoundtag = new CompoundTag(); + this.recipesUsed.forEach((p_58382_, p_58383_) -> { + compoundtag.putInt(p_58382_.toString(), p_58383_); + }); + nbt.put("RecipesUsed", compoundtag); + return nbt; + } + + @Override + protected Component getDefaultName() { + return new TranslatableComponent("container.melter"); + } + + @Override + public int getContainerSize() { + return this.items.size(); + } + + @Override + public boolean isEmpty() { + for(ItemStack itemstack : this.items) { + if (!itemstack.isEmpty()) { + return false; + } + } + return true; + } + + @Override + public ItemStack getItem(int index) { + return this.items.get(index); + } + + @Override + public ItemStack removeItem(int index, int count) { + return ContainerHelper.removeItem(this.items, index, count); + } + + @Override + public ItemStack removeItemNoUpdate(int index) { + return ContainerHelper.takeItem(this.items, index); + } + + @Override + public void setItem(int index, ItemStack itemStack) { + ItemStack itemstack = this.items.get(index); + boolean flag = !itemStack.isEmpty() && itemStack.sameItem(itemstack) && ItemStack.tagMatches(itemStack, itemstack); + this.items.set(index, itemStack); + if (itemStack.getCount() > this.getMaxStackSize()) { + itemStack.setCount(this.getMaxStackSize()); + } + + if (index == 0 && !flag) { + this.meltingTotalTime = getTotalMeltTime(this.level, this); + this.meltingProgress = 0; + this.setChanged(); + } + } + + @Override + public boolean canPlaceItem(int index, ItemStack itemStack) { + if (index == MelterMenu.RESULT_INPUT_SLOT || index == MelterMenu.RESULT_OUTPUT_SLOT) { + return itemStack.is(Items.BUCKET) || MelterMenu.isFluidBucket(itemStack); + } + if (index != MelterMenu.FUEL_SLOT) { + return true; + } + ItemStack fuelItemStack = this.items.get(MelterMenu.FUEL_SLOT); + return net.minecraftforge.common.ForgeHooks.getBurnTime(itemStack, null) > 0 || itemStack.is(Items.BUCKET) && !fuelItemStack.is(Items.BUCKET); + } + + protected int getBurnDuration(ItemStack itemStack) { + if (itemStack.isEmpty()) { + return 0; + } + return net.minecraftforge.common.ForgeHooks.getBurnTime(itemStack, null); + } + + private static int getTotalMeltTime(Level level, Container container) { + return level.getRecipeManager().getRecipeFor(ECRecipes.MELTER_TYPE, container, level).map(MelterRecipe::getMeltingTime).orElse(MelterRecipe.MELTING_TIME); + } + + @Override + public void clearContent() { + this.items.clear(); + } + + @Override + public void fillStackedContents(StackedContents contents) { + for(ItemStack itemstack : this.items) { + contents.accountStack(itemstack); + } + } + + @Override + public int[] getSlotsForFace(Direction direction) { + if (direction == Direction.DOWN) { + return SLOTS_FOR_DOWN; + } + if (direction == Direction.UP) { + return SLOTS_FOR_UP; + } + return SLOTS_FOR_SIDES; + } + + @Override + public boolean canPlaceItemThroughFace(int index, ItemStack itemStack, @Nullable Direction direction) { + return this.canPlaceItem(index, itemStack); + } + + @Override + public boolean canTakeItemThroughFace(int index, ItemStack itemStack, Direction direction) { + if (direction == Direction.DOWN && index == 1) { + return itemStack.is(Items.WATER_BUCKET) || itemStack.is(Items.BUCKET); + } else { + return true; + } + } + + net.minecraftforge.common.util.LazyOptional[] handlers = + net.minecraftforge.items.wrapper.SidedInvWrapper.create(this, Direction.UP, Direction.DOWN, Direction.NORTH); + + @Override + public net.minecraftforge.common.util.LazyOptional getCapability(net.minecraftforge.common.capabilities.Capability capability, @Nullable Direction facing) { + if (!this.remove && facing != null && capability == net.minecraftforge.items.CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { + if (facing == Direction.UP) { + return handlers[0].cast(); + } else if (facing == Direction.DOWN) { + return handlers[1].cast(); + } else { + return handlers[2].cast(); + } + } + return super.getCapability(capability, facing); + } + + @Override + public void invalidateCaps() { + super.invalidateCaps(); + for (net.minecraftforge.common.util.LazyOptional handler : handlers) { + handler.invalidate(); + } + } + + @Override + public void reviveCaps() { + super.reviveCaps(); + this.handlers = net.minecraftforge.items.wrapper.SidedInvWrapper.create(this, Direction.UP, Direction.DOWN, Direction.NORTH); + } + + @Override + protected AbstractContainerMenu createMenu(int id, Inventory inventory) { + return new MelterMenu(id, inventory, this, this.dataAccess); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/MineralTableBlockEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/MineralTableBlockEntity.java new file mode 100644 index 00000000..b0792abb --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/MineralTableBlockEntity.java @@ -0,0 +1,50 @@ +package com.hexagram2021.emeraldcraft.common.blocks.entity; + +import com.hexagram2021.emeraldcraft.common.crafting.MineralTableMenu; +import com.hexagram2021.emeraldcraft.common.crafting.MineralTableRecipe; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity; +import net.minecraft.world.level.block.state.BlockState; + +public class MineralTableBlockEntity extends AbstractFurnaceBlockEntity { + public MineralTableBlockEntity(BlockPos pos, BlockState state) { + super(ECBlockEntity.MINERAL_TABLE.get(), pos, state, ECRecipes.MINERAL_TABLE_TYPE); + } + + @Override + protected Component getDefaultName() { + return new TranslatableComponent("container.mineral_table"); + } + + @Override + protected int getBurnDuration(ItemStack itemStack) { + if (itemStack.isEmpty()) { + return 0; + } + return itemStack.is(Items.BLAZE_POWDER) ? MineralTableRecipe.BURN_TIME * 20 : 0; + } + + @Override + protected AbstractContainerMenu createMenu(int id, Inventory inventory) { + return new MineralTableMenu(id, inventory, this, this.dataAccess); + } + + @Override + public boolean canPlaceItem(int index, ItemStack itemStack) { + if (index == MineralTableMenu.RESULT_SLOT) { + return false; + } + if (index != MineralTableMenu.FUEL_SLOT) { + return true; + } + return itemStack.is(Items.BLAZE_POWDER); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/plant/WarpedWartBlock.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/plant/WarpedWartBlock.java new file mode 100644 index 00000000..b98a3e3b --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/plant/WarpedWartBlock.java @@ -0,0 +1,100 @@ +package com.hexagram2021.emeraldcraft.common.blocks.plant; + +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import net.minecraft.core.BlockPos; +import net.minecraft.core.NonNullList; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.BushBlock; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.IntegerProperty; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; +import net.minecraftforge.common.PlantType; + +import java.util.EnumMap; +import java.util.Random; +import java.util.function.Supplier; + +public class WarpedWartBlock extends BushBlock { + public static final int MAX_AGE = 3; + public static final IntegerProperty AGE = BlockStateProperties.AGE_3; + private static final VoxelShape[] SHAPE_BY_AGE = new VoxelShape[]{ + Block.box(0.0D, 0.0D, 0.0D, 16.0D, 5.0D, 16.0D), + Block.box(0.0D, 0.0D, 0.0D, 16.0D, 8.0D, 16.0D), + Block.box(0.0D, 0.0D, 0.0D, 16.0D, 11.0D, 16.0D), + Block.box(0.0D, 0.0D, 0.0D, 16.0D, 14.0D, 16.0D) + }; + + public static final Supplier PROPERTIES = () -> Block.Properties.of(Material.PLANT) + .sound(SoundType.NETHER_WART) + .noCollission() + .strength(0) + .randomTicks(); + + public WarpedWartBlock(Properties props) { + super(props); + this.registerDefaultState(this.stateDefinition.any().setValue(AGE, Integer.valueOf(0))); + } + + @Override + public VoxelShape getShape(BlockState state, BlockGetter worldIn, BlockPos pos, CollisionContext context) { + return SHAPE_BY_AGE[state.getValue(AGE)]; + } + + @Override + public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { + return super.canSurvive(state, world, pos); + } + + @Override + protected boolean mayPlaceOn(BlockState state, BlockGetter world, BlockPos pos) { + return state.is(Blocks.SOUL_SAND); + } + + @Override + public boolean isRandomlyTicking(BlockState state) { + return state.getValue(AGE) < 3; + } + + @Override + public void randomTick(BlockState state, ServerLevel level, BlockPos pos, Random random) { + int i = state.getValue(AGE); + if (i < 3 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(level, pos, state, random.nextInt(10) == 0)) { + state = state.setValue(AGE, i + 1); + level.setBlock(pos, state, Block.UPDATE_CLIENTS); + net.minecraftforge.common.ForgeHooks.onCropsGrowPost(level, pos, state); + } + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(AGE); + } + + @Override + public PlantType getPlantType(BlockGetter world, BlockPos pos) { + return PlantType.NETHER; + } + + @Override + public ItemStack getCloneItemStack(BlockGetter p_54973_, BlockPos p_54974_, BlockState p_54975_) { + return new ItemStack(ECItems.WARPED_WART.asItem()); + } + + @Override + public Item asItem() { + return ECItems.WARPED_WART.asItem(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/sculpture/SculptureBlock.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/sculpture/SculptureBlock.java new file mode 100644 index 00000000..7a6d04b8 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/sculpture/SculptureBlock.java @@ -0,0 +1,48 @@ +package com.hexagram2021.emeraldcraft.common.blocks.sculpture; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.*; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +import java.util.function.Supplier; + +public class SculptureBlock extends Block { + public static final Supplier PROPERTIES = () -> Block.Properties.of(Material.WOOD) + .strength(2.0F) + .sound(SoundType.WOOD); + + public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING; + + protected static final VoxelShape AABB = Block.box(3.0D, 3.0D, 0.0D, 13.0D, 13.0D, 15.0D); + + public SculptureBlock(Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH)); + } + + public VoxelShape getShape(BlockState p_154346_, BlockGetter p_154347_, BlockPos p_154348_, CollisionContext p_154349_) { + return AABB; + } + + public BlockState rotate(BlockState blockState, Rotation rotation) { + return blockState.setValue(FACING, rotation.rotate(blockState.getValue(FACING))); + } + + public BlockState mirror(BlockState blockState, Mirror mirror) { + return blockState.setValue(FACING, mirror.mirror(blockState.getValue(FACING))); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + super.createBlockStateDefinition(builder); + builder.add(FACING); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/CarpentryTableBlock.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/CarpentryTableBlock.java new file mode 100644 index 00000000..96ec2e64 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/CarpentryTableBlock.java @@ -0,0 +1,92 @@ +package com.hexagram2021.emeraldcraft.common.blocks.workstation; + +import com.hexagram2021.emeraldcraft.common.crafting.CarpentryTableMenu; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.SimpleMenuProvider; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.ContainerLevelAccess; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.*; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +import javax.annotation.Nullable; +import java.util.function.Supplier; + +public class CarpentryTableBlock extends Block { + private static final Component CONTAINER_TITLE = new TranslatableComponent("container.carpentry"); + protected static final VoxelShape SHAPE = Block.box(0.0D, 0.0D, 0.0D, 16.0D, 9.0D, 16.0D); + public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING; + + public static final Supplier PROPERTIES = () -> Block.Properties.of(Material.WOOD) + .sound(SoundType.WOOD) + .strength(2.5F); + + public CarpentryTableBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + @Override + public InteractionResult use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult) { + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } + player.openMenu(blockState.getMenuProvider(level, blockPos)); + return InteractionResult.CONSUME; + } + + @Override + @Nullable + public MenuProvider getMenuProvider(BlockState blockState, Level level, BlockPos blockPos) { + return new SimpleMenuProvider((id, inventory, levelAccess) -> + new CarpentryTableMenu(id, inventory, ContainerLevelAccess.create(level, blockPos)), CONTAINER_TITLE); + } + + @Override + public VoxelShape getShape(BlockState blockState, BlockGetter blockGetter, BlockPos blockPos, CollisionContext context) { + return SHAPE; + } + + @Override + public boolean useShapeForLightOcclusion(BlockState blockState) { + return true; + } + + @Override + public RenderShape getRenderShape(BlockState blockState) { + return RenderShape.MODEL; + } + + @Override + public BlockState rotate(BlockState blockState, Rotation rotation) { + return blockState.setValue(FACING, rotation.rotate(blockState.getValue(FACING))); + } + + @Override + public BlockState mirror(BlockState blockState, Mirror rotation) { + return blockState.rotate(rotation.getRotation(blockState.getValue(FACING))); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder definition) { + definition.add(FACING); + } + + @Override + public boolean isPathfindable(BlockState state, BlockGetter getter, BlockPos blockPos, PathComputationType type) { + return false; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/ContinuousMinerBlock.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/ContinuousMinerBlock.java new file mode 100644 index 00000000..10997315 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/ContinuousMinerBlock.java @@ -0,0 +1,139 @@ +package com.hexagram2021.emeraldcraft.common.blocks.workstation; + +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; +import com.hexagram2021.emeraldcraft.common.blocks.entity.ContinuousMinerBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import net.minecraft.core.*; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.world.*; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.*; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; + +import javax.annotation.Nullable; +import java.util.Map; +import java.util.function.Supplier; + +public class ContinuousMinerBlock extends BaseEntityBlock { + public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING; + public static final BooleanProperty TRIGGERED = BlockStateProperties.TRIGGERED; + + public static final Map MINER_MAIN = Maps.newEnumMap(ImmutableMap.of( + Direction.NORTH, Block.box(0, 0, 3, 16, 16, 16), + Direction.SOUTH, Block.box(0, 0, 0, 16, 16, 13), + Direction.EAST, Block.box(0, 0, 0, 13, 16, 16), + Direction.WEST, Block.box(3, 0, 0, 16, 16, 16) + )); + public static final Map ROCK_BREAKER = Maps.newEnumMap(ImmutableMap.of( + Direction.NORTH, Block.box(0, 2, -6, 16, 11, 3), + Direction.SOUTH, Block.box(0, 2, 13, 16, 11, 22), + Direction.EAST, Block.box(13, 2, 0, 22, 11, 16), + Direction.WEST, Block.box(-6, 2, 0, 3, 11, 16) + )); + + public static final Supplier PROPERTIES = () -> Block.Properties.of(Material.METAL) + .sound(SoundType.METAL) + .requiresCorrectToolForDrops() + .strength(3.5F); + + public ContinuousMinerBlock(BlockBehaviour.Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH)); + this.registerDefaultState(this.stateDefinition.any().setValue(TRIGGERED, Boolean.FALSE)); + } + + @Nullable + @Override + public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) { + return new ContinuousMinerBlockEntity(blockPos, blockState); + } + + @Override + public VoxelShape getShape(BlockState blockState, BlockGetter blockGetter, BlockPos blockPos, CollisionContext context) { + return MINER_MAIN.get(blockState.getValue(FACING)); + } + + @Override + public VoxelShape getCollisionShape(BlockState blockState, BlockGetter blockGetter, BlockPos blockPos, CollisionContext context) { + return Shapes.or(MINER_MAIN.get(blockState.getValue(FACING)), ROCK_BREAKER.get(blockState.getValue(FACING))); + } + + @Override + public InteractionResult use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult) { + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } + player.openMenu(blockState.getMenuProvider(level, blockPos)); + return InteractionResult.CONSUME; + } + + @Nullable + @Override + public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType type) { + return createContinuousMinerTicker(level, type, ECBlockEntity.CONTINUOUS_MINER.get()); + } + + @Override + public void onPlace(BlockState blockState, Level level, BlockPos blockPos, BlockState neighbor, boolean v) { + level.setBlock(blockPos, blockState.setValue(TRIGGERED, level.hasNeighborSignal(blockPos) || level.hasNeighborSignal(blockPos.above())), Block.UPDATE_CLIENTS); + } + + @Override + public void neighborChanged(BlockState blockState, Level level, BlockPos blockPos, Block block, BlockPos neighbor, boolean v) { + level.setBlock(blockPos, blockState.setValue(TRIGGERED, level.hasNeighborSignal(blockPos) || level.hasNeighborSignal(blockPos.above())), Block.UPDATE_CLIENTS); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection()); + } + + @Override + public BlockState rotate(BlockState blockState, Rotation rotation) { + return blockState.setValue(FACING, rotation.rotate(blockState.getValue(FACING))); + } + + @Override + public BlockState mirror(BlockState blockState, Mirror rotation) { + return blockState.rotate(rotation.getRotation(blockState.getValue(FACING))); + } + + @Override + public RenderShape getRenderShape(BlockState blockState) { + return RenderShape.MODEL; + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(FACING, TRIGGERED); + } + + @Override + public boolean isPathfindable(BlockState state, BlockGetter getter, BlockPos blockPos, PathComputationType type) { + return false; + } + + @Nullable + protected static BlockEntityTicker createContinuousMinerTicker(Level level, BlockEntityType type, BlockEntityType blockEntityType) { + return level.isClientSide ? null : createTickerHelper(type, blockEntityType, ContinuousMinerBlockEntity::serverTick); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/CrystalballTableBlock.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/CrystalballTableBlock.java new file mode 100644 index 00000000..7f1f65d0 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/CrystalballTableBlock.java @@ -0,0 +1,89 @@ +package com.hexagram2021.emeraldcraft.common.blocks.workstation; + +import com.hexagram2021.emeraldcraft.common.register.ECProperty; +import com.hexagram2021.emeraldcraft.common.util.ECSounds; +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.ExperienceOrb; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.RenderShape; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.IntegerProperty; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +import java.util.Random; +import java.util.function.Supplier; + +public class CrystalballTableBlock extends Block { + public static final IntegerProperty EXP_COUNT = ECProperty.EXP_COUNT; + + protected static final VoxelShape SHAPE = Block.box(2.0D, 0.0D, 2.0D, 14.0D, 14.0D, 14.0D); + public static final Supplier PROPERTIES = () -> Block.Properties.of(Material.AMETHYST).sound(SoundType.AMETHYST).strength(3.5F).lightLevel((bs) -> 7); + + public CrystalballTableBlock(BlockBehaviour.Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(EXP_COUNT, Integer.valueOf(0))); + } + + @Override + public InteractionResult use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult) { + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } + int i = blockState.getValue(EXP_COUNT); + if(i != 0) { + level.addFreshEntity(new ExperienceOrb(level, player.getX(), player.getY() + 0.5D, player.getZ(), i * 20)); + level.setBlock(blockPos, blockState.setValue(EXP_COUNT, 0), Block.UPDATE_CLIENTS); + } + return InteractionResult.CONSUME; + } + + @Override + public void randomTick(BlockState blockState, ServerLevel level, BlockPos blockPos, Random random) { + if(level.random.nextInt(250) == 0) { + int i = blockState.getValue(EXP_COUNT); + if(i < 15) { + level.playSound(null, blockPos, ECSounds.VILLAGER_WORK_ASTROLOGIST, SoundSource.BLOCKS, 0.6F, 0.9F + random.nextFloat() * 0.2F); + level.setBlock(blockPos, blockState.setValue(EXP_COUNT, i + 1), Block.UPDATE_CLIENTS); + } + } + } + + @Override + public VoxelShape getShape(BlockState blockState, BlockGetter blockGetter, BlockPos blockPos, CollisionContext context) { + return SHAPE; + } + + @Override + public boolean useShapeForLightOcclusion(BlockState blockState) { + return true; + } + + @Override + public RenderShape getRenderShape(BlockState blockState) { + return RenderShape.MODEL; + } + + @Override + public boolean isPathfindable(BlockState state, BlockGetter getter, BlockPos blockPos, PathComputationType type) { + return false; + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder definition) { + definition.add(EXP_COUNT); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/GlassKilnBlock.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/GlassKilnBlock.java new file mode 100644 index 00000000..105915d1 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/GlassKilnBlock.java @@ -0,0 +1,95 @@ +package com.hexagram2021.emeraldcraft.common.blocks.workstation; + +import com.hexagram2021.emeraldcraft.common.blocks.entity.GlassKilnBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.*; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.phys.BlockHitResult; + +import javax.annotation.Nullable; +import java.util.Random; +import java.util.function.Supplier; + +public class GlassKilnBlock extends AbstractFurnaceBlock { + public static final Supplier PROPERTIES = () -> Block.Properties.of(Material.STONE) + .sound(SoundType.STONE) + .requiresCorrectToolForDrops() + .strength(3.5F); + + public GlassKilnBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + public InteractionResult use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult) { + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } else { + this.openContainer(level, blockPos, player); + return InteractionResult.CONSUME; + } + } + + @Nullable + @Override + public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType type) { + return createFurnaceTicker(level, type, ECBlockEntity.GLASS_KILN.get()); + } + + @Override + protected void openContainer(Level level, BlockPos pos, Player player) { + BlockEntity blockentity = level.getBlockEntity(pos); + if (blockentity instanceof GlassKilnBlockEntity) { + player.openMenu((MenuProvider)blockentity); + // player.awardStat(Stats.INTERACT_WITH_FURNACE); + } + } + + @Override + public boolean isPathfindable(BlockState state, BlockGetter getter, BlockPos blockPos, PathComputationType type) { + return false; + } + + @Nullable + @Override + public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { + return new GlassKilnBlockEntity(pos, state); + } + + @Override + public void animateTick(BlockState state, Level level, BlockPos blockPos, Random random) { + if (state.getValue(LIT)) { + double d0 = (double)blockPos.getX() + 0.5D; + double d1 = (double)blockPos.getY(); + double d2 = (double)blockPos.getZ() + 0.5D; + if (random.nextDouble() < 0.1D) { + level.playLocalSound(d0, d1, d2, SoundEvents.FURNACE_FIRE_CRACKLE, SoundSource.BLOCKS, 1.0F, 1.0F, false); + } + + Direction direction = state.getValue(FACING); + Direction.Axis direction$axis = direction.getAxis(); + double d3 = 0.52D; + double d4 = random.nextDouble() * 0.6D - 0.3D; + double d5 = direction$axis == Direction.Axis.X ? (double)direction.getStepX() * d3 : d4; + double d6 = random.nextDouble() * 9.0D / 16.0D; + double d7 = direction$axis == Direction.Axis.Z ? (double)direction.getStepZ() * d3 : d4; + level.addParticle(ParticleTypes.SMOKE, d0 + d5, d1 + d6, d2 + d7, 0.0D, 0.0D, 0.0D); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/IceMakerBlock.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/IceMakerBlock.java new file mode 100644 index 00000000..c5029031 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/IceMakerBlock.java @@ -0,0 +1,102 @@ +package com.hexagram2021.emeraldcraft.common.blocks.workstation; + +import com.hexagram2021.emeraldcraft.common.blocks.entity.IceMakerBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.AbstractFurnaceBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.phys.BlockHitResult; + +import javax.annotation.Nullable; +import java.util.Random; +import java.util.function.Supplier; + +public class IceMakerBlock extends AbstractFurnaceBlock { + public static final Supplier PROPERTIES = () -> Block.Properties.of(Material.METAL) + .sound(SoundType.METAL) + .requiresCorrectToolForDrops() + .strength(3.5F); + + public IceMakerBlock(Properties properties) { + super(properties); + } + + + @Nullable + @Override + public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType type) { + return createIceMakerTicker(level, type, ECBlockEntity.ICE_MAKER.get()); + } + + @Override + public InteractionResult use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult) { + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } + this.openContainer(level, blockPos, player); + return InteractionResult.CONSUME; + } + + @Override + protected void openContainer(Level level, BlockPos pos, Player player) { + BlockEntity blockentity = level.getBlockEntity(pos); + if (blockentity instanceof IceMakerBlockEntity) { + player.openMenu((MenuProvider)blockentity); + } + } + + @Override + public boolean isPathfindable(BlockState state, BlockGetter getter, BlockPos blockPos, PathComputationType type) { + return false; + } + + @Nullable + @Override + public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) { + return new IceMakerBlockEntity(blockPos, blockState); + } + + + @Override + public void animateTick(BlockState state, Level level, BlockPos blockPos, Random random) { + if (state.getValue(LIT)) { + double d0 = (double)blockPos.getX() + 0.5D; + double d1 = (double)blockPos.getY(); + double d2 = (double)blockPos.getZ() + 0.5D; + if (random.nextDouble() < 0.1D) { + level.playLocalSound(d0, d1, d2, SoundEvents.PLAYER_HURT_FREEZE, SoundSource.BLOCKS, 1.0F, 1.0F, false); + } + + Direction direction = state.getValue(FACING); + Direction.Axis direction$axis = direction.getAxis(); + double d3 = 0.52D; + double d4 = random.nextDouble() * 0.6D - 0.3D; + double d5 = direction$axis == Direction.Axis.X ? (double)direction.getStepX() * d3 : d4; + double d6 = random.nextDouble() * 9.0D / 16.0D; + double d7 = direction$axis == Direction.Axis.Z ? (double)direction.getStepZ() * d3 : d4; + level.addParticle(ParticleTypes.WHITE_ASH, d0 + d5, d1 + d6, d2 + d7, 0.0D, 0.0D, 0.0D); + } + } + + @Nullable + protected static BlockEntityTicker createIceMakerTicker(Level level, BlockEntityType type, BlockEntityType blockEntityType) { + return level.isClientSide ? null : createTickerHelper(type, blockEntityType, IceMakerBlockEntity::serverTick); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/MelterBlock.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/MelterBlock.java new file mode 100644 index 00000000..fcccc42b --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/MelterBlock.java @@ -0,0 +1,101 @@ +package com.hexagram2021.emeraldcraft.common.blocks.workstation; + + +import com.hexagram2021.emeraldcraft.common.blocks.entity.MelterBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.AbstractFurnaceBlock; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.phys.BlockHitResult; + +import javax.annotation.Nullable; +import java.util.Random; +import java.util.function.Supplier; + +public class MelterBlock extends AbstractFurnaceBlock { + public static final Supplier PROPERTIES = () -> Properties.of(Material.METAL) + .sound(SoundType.METAL) + .requiresCorrectToolForDrops() + .strength(3.5F); + + public MelterBlock(Properties properties) { + super(properties); + } + + @Nullable + @Override + public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType type) { + return createMelterTicker(level, type, ECBlockEntity.MELTER.get()); + } + + @Override + public InteractionResult use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult) { + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } + this.openContainer(level, blockPos, player); + return InteractionResult.CONSUME; + } + + @Override + protected void openContainer(Level level, BlockPos pos, Player player) { + BlockEntity blockentity = level.getBlockEntity(pos); + if (blockentity instanceof MelterBlockEntity) { + player.openMenu((MenuProvider)blockentity); + } + } + + @Override + public boolean isPathfindable(BlockState state, BlockGetter getter, BlockPos blockPos, PathComputationType type) { + return false; + } + + @Nullable + @Override + public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) { + return new MelterBlockEntity(blockPos, blockState); + } + + + @Override + public void animateTick(BlockState state, Level level, BlockPos blockPos, Random random) { + if (state.getValue(LIT)) { + double d0 = (double)blockPos.getX() + 0.5D; + double d1 = (double)blockPos.getY(); + double d2 = (double)blockPos.getZ() + 0.5D; + if (random.nextDouble() < 0.1D) { + level.playLocalSound(d0, d1, d2, SoundEvents.FURNACE_FIRE_CRACKLE, SoundSource.BLOCKS, 1.0F, 1.0F, false); + } + + Direction direction = state.getValue(FACING); + Direction.Axis direction$axis = direction.getAxis(); + double d3 = 0.52D; + double d4 = random.nextDouble() * 0.6D - 0.3D; + double d5 = direction$axis == Direction.Axis.X ? (double)direction.getStepX() * d3 : d4; + double d6 = random.nextDouble() * 9.0D / 16.0D; + double d7 = direction$axis == Direction.Axis.Z ? (double)direction.getStepZ() * d3 : d4; + level.addParticle(ParticleTypes.SMOKE, d0 + d5, d1 + d6, d2 + d7, 0.0D, 0.0D, 0.0D); + } + } + + @Nullable + protected static BlockEntityTicker createMelterTicker(Level level, BlockEntityType type, BlockEntityType blockEntityType) { + return level.isClientSide ? null : createTickerHelper(type, blockEntityType, MelterBlockEntity::serverTick); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/MineralTableBlock.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/MineralTableBlock.java new file mode 100644 index 00000000..aad00648 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/MineralTableBlock.java @@ -0,0 +1,101 @@ +package com.hexagram2021.emeraldcraft.common.blocks.workstation; + + +import com.hexagram2021.emeraldcraft.common.blocks.entity.MineralTableBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.*; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.phys.BlockHitResult; + +import javax.annotation.Nullable; +import java.util.Random; +import java.util.function.Supplier; + +public class MineralTableBlock extends AbstractFurnaceBlock { + public static final Supplier PROPERTIES = () -> Block.Properties.of(Material.STONE) + .sound(SoundType.STONE) + .requiresCorrectToolForDrops() + .strength(3.5F); + + public MineralTableBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + @Nullable + @Override + public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType type) { + return createMineralTableTicker(level, type, ECBlockEntity.MINERAL_TABLE.get()); + } + + @Override + public InteractionResult use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult) { + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } + this.openContainer(level, blockPos, player); + return InteractionResult.CONSUME; + } + + @Override + protected void openContainer(Level level, BlockPos pos, Player player) { + BlockEntity blockentity = level.getBlockEntity(pos); + if (blockentity instanceof MineralTableBlockEntity) { + player.openMenu((MenuProvider)blockentity); + } + } + + @Override + public boolean isPathfindable(BlockState state, BlockGetter getter, BlockPos blockPos, PathComputationType type) { + return false; + } + + @Nullable + @Override + public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) { + return new MineralTableBlockEntity(blockPos, blockState); + } + + + @Override + public void animateTick(BlockState state, Level level, BlockPos blockPos, Random random) { + if (state.getValue(LIT)) { + double d0 = (double)blockPos.getX() + 0.5D; + double d1 = (double)blockPos.getY(); + double d2 = (double)blockPos.getZ() + 0.5D; + if (random.nextDouble() < 0.1D) { + level.playLocalSound(d0, d1, d2, SoundEvents.FURNACE_FIRE_CRACKLE, SoundSource.BLOCKS, 1.0F, 1.0F, false); + } + + Direction direction = state.getValue(FACING); + Direction.Axis direction$axis = direction.getAxis(); + double d3 = 0.52D; + double d4 = random.nextDouble() * 0.6D - 0.3D; + double d5 = direction$axis == Direction.Axis.X ? (double)direction.getStepX() * d3 : d4; + double d6 = random.nextDouble() * 9.0D / 16.0D; + double d7 = direction$axis == Direction.Axis.Z ? (double)direction.getStepZ() * d3 : d4; + level.addParticle(ParticleTypes.SMOKE, d0 + d5, d1 + d6, d2 + d7, 0.0D, 0.0D, 0.0D); + } + } + + @Nullable + protected static BlockEntityTicker createMineralTableTicker(Level level, BlockEntityType type, BlockEntityType blockEntityType) { + return level.isClientSide ? null : createTickerHelper(type, blockEntityType, MineralTableBlockEntity::serverTick); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/SqueezerBlock.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/SqueezerBlock.java new file mode 100644 index 00000000..221ed298 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/SqueezerBlock.java @@ -0,0 +1,152 @@ +package com.hexagram2021.emeraldcraft.common.blocks.workstation; + +import com.hexagram2021.emeraldcraft.common.register.ECProperty; +import com.hexagram2021.emeraldcraft.common.util.ECSounds; +import net.minecraft.core.BlockPos; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.IntegerProperty; +import net.minecraft.world.level.gameevent.GameEvent; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.phys.BlockHitResult; + +import java.util.function.Supplier; + +import static net.minecraftforge.common.ToolActions.SHEARS_HARVEST; + +public class SqueezerBlock extends Block { + public static final IntegerProperty HONEY_COUNT = ECProperty.HONEY_COUNT; + + public static final Supplier PROPERTIES = () -> Block.Properties.of(Material.WOOD).sound(SoundType.WOOD).strength(0.6F); + + public SqueezerBlock(BlockBehaviour.Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(HONEY_COUNT, Integer.valueOf(0))); + } + + @Override + public InteractionResult use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult) { + ItemStack itemstack = player.getItemInHand(interactionHand); + ItemStack itemstack2 = player.getItemInHand(InteractionHand.OFF_HAND); + if (interactionHand == InteractionHand.MAIN_HAND && + !isSqueezable(itemstack) && !isEmptyBottle(itemstack) && !itemstack.canPerformAction(SHEARS_HARVEST) && + (isSqueezable(itemstack2) || isEmptyBottle(itemstack2) || itemstack2.canPerformAction(SHEARS_HARVEST))) { + return InteractionResult.PASS; + } + + if (isSqueezable(itemstack) && canBeCharged(blockState)) { + charge(level, blockPos, blockState); + if (!player.getAbilities().instabuild) { + itemstack.shrink(1); + } + + return InteractionResult.sidedSuccess(level.isClientSide); + } + if (blockState.getValue(HONEY_COUNT) != 0) { + if (isEmptyBottle(itemstack)) { + itemstack.shrink(1); + level.playSound( + null, + (double)blockPos.getX() + 0.5D, + (double)blockPos.getY() + 0.5D, + (double)blockPos.getZ() + 0.5D, + SoundEvents.BOTTLE_FILL, + SoundSource.NEUTRAL, + 1.0F, 1.0F + ); + if (itemstack.isEmpty()) { + player.setItemInHand(interactionHand, new ItemStack(Items.HONEY_BOTTLE)); + } else if (!player.getInventory().add(new ItemStack(Items.HONEY_BOTTLE))) { + player.drop(new ItemStack(Items.HONEY_BOTTLE), false); + } + level.gameEvent(player, GameEvent.FLUID_PICKUP, blockPos); + resetHoneyCount(level, blockState, blockPos); + + return InteractionResult.sidedSuccess(level.isClientSide); + } + if (itemstack.canPerformAction(SHEARS_HARVEST)) { + level.playSound( + null, + (double)blockPos.getX() + 0.5D, + (double)blockPos.getY() + 0.5D, + (double)blockPos.getZ() + 0.5D, + SoundEvents.BEEHIVE_SHEAR, + SoundSource.NEUTRAL, + 1.0F, 1.0F + ); + dropHoneycomb(level, blockPos); + itemstack.hurtAndBreak(1, player, (player2) -> { + player2.broadcastBreakEvent(interactionHand); + }); + level.gameEvent(player, GameEvent.SHEAR, blockPos); + resetHoneyCount(level, blockState, blockPos); + + return InteractionResult.sidedSuccess(level.isClientSide); + } + } + return InteractionResult.CONSUME; + } + + public static void dropHoneycomb(Level level, BlockPos blockPos) { + popResource(level, blockPos, new ItemStack(Items.HONEYCOMB)); + } + + public boolean hasAnalogOutputSignal(BlockState blockState) { + return true; + } + + public int getAnalogOutputSignal(BlockState blockState, Level level, BlockPos blockPos) { + return blockState.getValue(HONEY_COUNT); + } + + private static boolean isSqueezable(ItemStack itemStack) { + return itemStack.is(Items.HONEYCOMB_BLOCK); + } + + private static boolean isEmptyBottle(ItemStack itemStack) { + return itemStack.is(Items.GLASS_BOTTLE); + } + + private static boolean canBeCharged(BlockState blockState) { + return blockState.getValue(HONEY_COUNT) < 4; + } + + public void resetHoneyCount(Level level, BlockState blockState, BlockPos blockPos) { + level.setBlock(blockPos, blockState.setValue(HONEY_COUNT, blockState.getValue(HONEY_COUNT) - 1), Block.UPDATE_ALL); + } + + public static void charge(Level level, BlockPos blockPos, BlockState blockState) { + level.setBlock(blockPos, blockState.setValue(HONEY_COUNT, blockState.getValue(HONEY_COUNT) + 4), Block.UPDATE_ALL); + level.playSound( + null, + (double)blockPos.getX() + 0.5D, + (double)blockPos.getY() + 0.5D, + (double)blockPos.getZ() + 0.5D, + ECSounds.VILLAGER_WORK_BEEKEEPER, SoundSource.BLOCKS, + 1.0F, 1.0F + ); + } + + @Override + public boolean isPathfindable(BlockState state, BlockGetter getter, BlockPos blockPos, PathComputationType type) { + return false; + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder definition) { + definition.add(HONEY_COUNT); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/CarpentryTableMenu.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/CarpentryTableMenu.java new file mode 100644 index 00000000..9d73b793 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/CarpentryTableMenu.java @@ -0,0 +1,234 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.google.common.collect.Lists; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECContainerTypes; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import com.hexagram2021.emeraldcraft.common.util.ECSounds; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.Container; +import net.minecraft.world.SimpleContainer; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.*; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; + +import java.util.List; + +public class CarpentryTableMenu extends AbstractContainerMenu { + public static final int INPUT_SLOT = 0; + public static final int RESULT_SLOT = 1; + private static final int INV_SLOT_START = 2; + private static final int INV_SLOT_END = 29; + private static final int USE_ROW_SLOT_START = 29; + private static final int USE_ROW_SLOT_END = 38; + + private final ContainerLevelAccess access; + private final DataSlot selectedRecipeIndex = DataSlot.standalone(); + private final Level level; + private List recipes = Lists.newArrayList(); + private ItemStack input = ItemStack.EMPTY; + long lastSoundTime; + final Slot inputSlot; + final Slot resultSlot; + Runnable slotUpdateListener = () -> { + }; + public final Container container = new SimpleContainer(1) { + public void setChanged() { + super.setChanged(); + CarpentryTableMenu.this.slotsChanged(this); + CarpentryTableMenu.this.slotUpdateListener.run(); + } + }; + final ResultContainer resultContainer = new ResultContainer(); + + public CarpentryTableMenu(int id, Inventory inventory) { + this(id, inventory, ContainerLevelAccess.NULL); + } + + public CarpentryTableMenu(int id, Inventory inventory, final ContainerLevelAccess access) { + super(ECContainerTypes.CARPENTRY_TABLE_MENU.get(), id); + this.access = access; + this.level = inventory.player.level; + this.inputSlot = this.addSlot(new Slot(this.container, 0, 20, 33)); + this.resultSlot = this.addSlot(new Slot(this.resultContainer, 1, 143, 33) { + @Override + public boolean mayPlace(ItemStack itemStack) { + return false; + } + + @Override + public void onTake(Player player, ItemStack itemStack) { + itemStack.onCraftedBy(player.level, player, itemStack.getCount()); + CarpentryTableMenu.this.resultContainer.awardUsedRecipes(player); + ItemStack itemstack = CarpentryTableMenu.this.inputSlot.remove(1); + if (!itemstack.isEmpty()) { + CarpentryTableMenu.this.setupResultSlot(); + } + + access.execute((level, blockPos) -> { + long l = level.getGameTime(); + if (CarpentryTableMenu.this.lastSoundTime != l) { + level.playSound(null, blockPos, ECSounds.VILLAGER_WORK_CARPENTER, SoundSource.BLOCKS, 1.0F, 1.0F); + CarpentryTableMenu.this.lastSoundTime = l; + } + + }); + super.onTake(player, itemStack); + } + }); + + for(int i = 0; i < 3; ++i) { + for(int j = 0; j < 9; ++j) { + this.addSlot(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for(int k = 0; k < 9; ++k) { + this.addSlot(new Slot(inventory, k, 8 + k * 18, 142)); + } + + this.addDataSlot(this.selectedRecipeIndex); + } + + public int getSelectedRecipeIndex() { + return this.selectedRecipeIndex.get(); + } + + public List getRecipes() { + return this.recipes; + } + + public int getNumRecipes() { + return this.recipes.size(); + } + + public boolean hasInputItem() { + return this.inputSlot.hasItem() && !this.recipes.isEmpty(); + } + + @Override + public boolean stillValid(Player player) { + return stillValid(this.access, player, ECBlocks.WorkStation.CARPENTRY_TABLE.get()); + } + + @Override + public boolean clickMenuButton(Player player, int index) { + if (this.isValidRecipeIndex(index)) { + this.selectedRecipeIndex.set(index); + this.setupResultSlot(); + } + + return true; + } + + private boolean isValidRecipeIndex(int index) { + return index >= 0 && index < this.recipes.size(); + } + + @Override + public void slotsChanged(Container container) { + ItemStack itemstack = this.inputSlot.getItem(); + if (!itemstack.is(this.input.getItem())) { + this.input = itemstack.copy(); + this.setupRecipeList(container, itemstack); + } + + } + + private void setupRecipeList(Container container, ItemStack itemStack) { + this.recipes.clear(); + this.selectedRecipeIndex.set(-1); + this.resultSlot.set(ItemStack.EMPTY); + if (!itemStack.isEmpty()) { + this.recipes = this.level.getRecipeManager().getRecipesFor(ECRecipes.CARPENTRY_TABLE_TYPE, container, this.level); + } + + } + + void setupResultSlot() { + if (!this.recipes.isEmpty() && this.isValidRecipeIndex(this.selectedRecipeIndex.get())) { + CarpentryTableRecipe carpentrytableRecipe = this.recipes.get(this.selectedRecipeIndex.get()); + this.resultContainer.setRecipeUsed(carpentrytableRecipe); + this.resultSlot.set(carpentrytableRecipe.assemble(this.container)); + } else { + this.resultSlot.set(ItemStack.EMPTY); + } + + this.broadcastChanges(); + } + + @Override + public MenuType getType() { + return ECContainerTypes.CARPENTRY_TABLE_MENU.get(); + } + + public void registerUpdateListener(Runnable listener) { + this.slotUpdateListener = listener; + } + + @Override + public boolean canTakeItemForPickAll(ItemStack itemStack, Slot slot) { + return slot.container != this.resultContainer && super.canTakeItemForPickAll(itemStack, slot); + } + + @Override + public ItemStack quickMoveStack(Player player, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = this.slots.get(index); + if (slot != null && slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + Item item = itemstack1.getItem(); + itemstack = itemstack1.copy(); + if (index == RESULT_SLOT) { + item.onCraftedBy(itemstack1, player.level, player); + if (!this.moveItemStackTo(itemstack1, 2, 38, true)) { + return ItemStack.EMPTY; + } + + slot.onQuickCraft(itemstack1, itemstack); + } else if (index == INPUT_SLOT) { + if (!this.moveItemStackTo(itemstack1, 2, 38, false)) { + return ItemStack.EMPTY; + } + } else if (this.level.getRecipeManager() + .getRecipeFor(ECRecipes.CARPENTRY_TABLE_TYPE, new SimpleContainer(itemstack1), this.level) + .isPresent()) { + if (!this.moveItemStackTo(itemstack1, 0, 1, false)) { + return ItemStack.EMPTY; + } + } else if (index >= INV_SLOT_START && index < INV_SLOT_END) { + if (!this.moveItemStackTo(itemstack1, USE_ROW_SLOT_START, USE_ROW_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } else if (index >= USE_ROW_SLOT_START && index < USE_ROW_SLOT_END && !this.moveItemStackTo(itemstack1, INV_SLOT_START, INV_SLOT_END, false)) { + return ItemStack.EMPTY; + } + + if (itemstack1.isEmpty()) { + slot.set(ItemStack.EMPTY); + } + + slot.setChanged(); + if (itemstack1.getCount() == itemstack.getCount()) { + return ItemStack.EMPTY; + } + + slot.onTake(player, itemstack1); + this.broadcastChanges(); + } + + return itemstack; + } + + @Override + public void removed(Player player) { + super.removed(player); + this.resultContainer.removeItemNoUpdate(1); + this.access.execute((level, blockPos) -> { + this.clearContainer(player, this.container); + }); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/CarpentryTableRecipe.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/CarpentryTableRecipe.java new file mode 100644 index 00000000..910edc6f --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/CarpentryTableRecipe.java @@ -0,0 +1,39 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECRecipeSerializer; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.Container; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.SingleItemRecipe; +import net.minecraft.world.level.Level; + +import java.util.Collections; +import java.util.Map; + +public class CarpentryTableRecipe extends SingleItemRecipe { + public static Map recipeList = Collections.emptyMap();; + + public CarpentryTableRecipe(ResourceLocation id, String group, Ingredient ingredient, ItemStack result) { + super(ECRecipes.CARPENTRY_TABLE_TYPE, ECRecipeSerializer.CARPENTRY_SERIALIZER.get(), id, group, ingredient, result); + } + + /** + * Used to check if a recipe matches current crafting inventory + */ + @Override + public boolean matches(Container inv, Level level) { + return this.ingredient.test(inv.getItem(0)); + } + + @Override + public ItemStack getToastSymbol() { + return new ItemStack(ECBlocks.WorkStation.CARPENTRY_TABLE); + } + + public Ingredient getIngredient() { + return ingredient; + } +} \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/ContinuousMinerMenu.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/ContinuousMinerMenu.java new file mode 100644 index 00000000..128e5137 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/ContinuousMinerMenu.java @@ -0,0 +1,142 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.blocks.entity.ContinuousMinerBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECContainerTypes; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import net.minecraft.world.Container; +import net.minecraft.world.SimpleContainer; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.*; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; + +public class ContinuousMinerMenu extends AbstractContainerMenu { + public static final int INPUT_SLOT = 0; + public static final int RESULT_SLOT = 1; + private static final int INV_SLOT_START = 2; + private static final int INV_SLOT_END = 29; + private static final int USE_ROW_SLOT_START = 29; + private static final int USE_ROW_SLOT_END = 38; + public static final int SLOT_COUNT = 2; + public static final int DATA_COUNT = 2; + + private final Container continuousMiner; + private final ContainerData continuousMinerData; + protected final Level level; + final Slot inputSlot; + + public ContinuousMinerMenu(int id, Inventory inventory) { + this(id, inventory, new SimpleContainer(SLOT_COUNT), new SimpleContainerData(DATA_COUNT)); + } + + public ContinuousMinerMenu(int id, Inventory inventory, Container container, ContainerData data) { + super(ECContainerTypes.CONTINUOUS_MINER_MENU.get(), id); + checkContainerSize(container, SLOT_COUNT); + checkContainerDataCount(data, DATA_COUNT); + this.continuousMiner = container; + this.continuousMinerData = data; + this.level = inventory.player.level; + + this.inputSlot = this.addSlot(new Slot(container, INPUT_SLOT, 43, 19) { + @Override + public boolean mayPlace(ItemStack itemStack) { + return itemStack.is(Items.BUCKET) || itemStack.is(ECItems.MELTED_EMERALD_BUCKET.get()); + } + + @Override + public int getMaxStackSize() { + return 16; + } + }); + this.addSlot(new Slot(container, RESULT_SLOT, 43, 53) { + @Override + public boolean mayPlace(ItemStack itemStack) { + return itemStack.is(Items.BUCKET) || itemStack.is(ECItems.MELTED_EMERALD_BUCKET.get()); + } + + @Override + public int getMaxStackSize() { + return 16; + } + }); + this.addDataSlots(data); + + for(int i = 0; i < 3; ++i) { + for(int j = 0; j < 9; ++j) { + this.addSlot(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for(int k = 0; k < 9; ++k) { + this.addSlot(new Slot(inventory, k, 8 + k * 18, 142)); + } + } + + @Override + public boolean stillValid(Player player) { + return this.continuousMiner.stillValid(player); + } + + @Override + public MenuType getType() { + return ECContainerTypes.CONTINUOUS_MINER_MENU.get(); + } + + @Override + public ItemStack quickMoveStack(Player player, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = this.slots.get(index); + if (slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index == RESULT_SLOT) { + if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, USE_ROW_SLOT_END, true)) { + return ItemStack.EMPTY; + } + + slot.onQuickCraft(itemstack1, itemstack); + } else if (index == INPUT_SLOT) { + if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, USE_ROW_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } else if (index >= INV_SLOT_START && index < INV_SLOT_END) { + if(inputSlot.mayPlace(itemstack1)) { + if (!this.moveItemStackTo(itemstack1, INPUT_SLOT, RESULT_SLOT, false)) { + return ItemStack.EMPTY; + } + } else if (!this.moveItemStackTo(itemstack1, USE_ROW_SLOT_START, USE_ROW_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } else if (index >= USE_ROW_SLOT_START && index < USE_ROW_SLOT_END) { + if(inputSlot.mayPlace(itemstack1)) { + if (!this.moveItemStackTo(itemstack1, INPUT_SLOT, RESULT_SLOT, false)) { + return ItemStack.EMPTY; + } + } else if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, INV_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } + + if (itemstack1.isEmpty()) { + slot.set(ItemStack.EMPTY); + } + + slot.setChanged(); + if (itemstack1.getCount() == itemstack.getCount()) { + return ItemStack.EMPTY; + } + + slot.onTake(player, itemstack1); + this.broadcastChanges(); + } + + return itemstack; + } + + public int getFluidLevel() { + return this.continuousMinerData.get(ContinuousMinerBlockEntity.DATA_FLUID); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/FluidType.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/FluidType.java new file mode 100644 index 00000000..c402c7a2 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/FluidType.java @@ -0,0 +1,59 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; + +public enum FluidType { + water(0), + lava(1), + melted_emerald(2), + melted_iron(3), + melted_gold(4), + melted_copper(5); + + final int id; + + public static final FluidType[] FLUID_TYPES = { water, lava, melted_emerald, melted_iron, melted_gold, melted_copper }; + + FluidType(int id) { + this.id = id; + } + + public static FluidType getFluidFromBucketItem(Item item) { + if(item == Items.WATER_BUCKET) { + return water; + } + if(item == Items.LAVA_BUCKET) { + return lava; + } + if(item == ECItems.MELTED_EMERALD_BUCKET.get()) { + return melted_emerald; + } + if(item == ECItems.MELTED_IRON_BUCKET.get()) { + return melted_iron; + } + if(item == ECItems.MELTED_GOLD_BUCKET.get()) { + return melted_gold; + } + if(item == ECItems.MELTED_COPPER_BUCKET.get()) { + return melted_copper; + } + throw new IllegalStateException("Cannot find fluid from item [" + item.getRegistryName() + "]"); + } + + public static Item getFluidBucketItem(FluidType fluidType) { + return switch (fluidType){ + case water -> Items.WATER_BUCKET; + case lava -> Items.LAVA_BUCKET; + case melted_emerald -> ECItems.MELTED_EMERALD_BUCKET.get(); + case melted_iron -> ECItems.MELTED_IRON_BUCKET.get(); + case melted_gold -> ECItems.MELTED_GOLD_BUCKET.get(); + case melted_copper -> ECItems.MELTED_COPPER_BUCKET.get(); + }; + } + + public int getID() { + return id; + } +} \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/GlassKilnMenu.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/GlassKilnMenu.java new file mode 100644 index 00000000..fbb2ff84 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/GlassKilnMenu.java @@ -0,0 +1,204 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.register.ECContainerTypes; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import net.minecraft.world.Container; +import net.minecraft.world.SimpleContainer; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.StackedContents; +import net.minecraft.world.inventory.*; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.level.Level; +import net.minecraftforge.common.ForgeHooks; + +public class GlassKilnMenu extends RecipeBookMenu { + private final Container container; + private final ContainerData data; + protected final Level level; + + public static final int INGREDIENT_SLOT = 0; + public static final int FUEL_SLOT = 1; + public static final int RESULT_SLOT = 2; + private static final int INV_SLOT_START = 3; + private static final int INV_SLOT_END = 30; + private static final int USE_ROW_SLOT_START = 30; + private static final int USE_ROW_SLOT_END = 39; + public static final int SLOT_COUNT = 3; + public static final int DATA_COUNT = 4; + + public GlassKilnMenu(int id, Inventory inventory) { + this(id, inventory, new SimpleContainer(SLOT_COUNT), new SimpleContainerData(DATA_COUNT)); + } + + public GlassKilnMenu(int id, Inventory inventory, Container container, ContainerData data) { + super(ECContainerTypes.GLASS_KILN_MENU.get(), id); + this.container = container; + this.data = data; + this.level = inventory.player.level; + + this.addSlot(new Slot(this.container, INGREDIENT_SLOT, 56, 17)); + this.addSlot(new GlassKilnMenu.GlassKilnFuelSlot(this, this.container, FUEL_SLOT, 56, 53)); + this.addSlot(new FurnaceResultSlot(inventory.player, this.container, RESULT_SLOT, 116, 35)); + + for(int i = 0; i < 3; ++i) { + for(int j = 0; j < 9; ++j) { + this.addSlot(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for(int k = 0; k < 9; ++k) { + this.addSlot(new Slot(inventory, k, 8 + k * 18, 142)); + } + + this.addDataSlots(this.data); + } + + @Override + public ItemStack quickMoveStack(Player player, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = this.slots.get(index); + if (slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index == RESULT_SLOT) { + if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, USE_ROW_SLOT_END, true)) { + return ItemStack.EMPTY; + } + + slot.onQuickCraft(itemstack1, itemstack); + } else if (index != FUEL_SLOT && index != INGREDIENT_SLOT) { + if (this.canSmelt(itemstack1)) { + if (!this.moveItemStackTo(itemstack1, INGREDIENT_SLOT, FUEL_SLOT, false)) { + return ItemStack.EMPTY; + } + } else if (this.isFuel(itemstack1)) { + if (!this.moveItemStackTo(itemstack1, FUEL_SLOT, RESULT_SLOT, false)) { + return ItemStack.EMPTY; + } + } else if (index >= INV_SLOT_START && index < INV_SLOT_END) { + if (!this.moveItemStackTo(itemstack1, USE_ROW_SLOT_START, USE_ROW_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } else if (index >= USE_ROW_SLOT_START && index < USE_ROW_SLOT_END && + !this.moveItemStackTo(itemstack1, INV_SLOT_START, INV_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } else if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, USE_ROW_SLOT_END, false)) { + return ItemStack.EMPTY; + } + + if (itemstack1.isEmpty()) { + slot.set(ItemStack.EMPTY); + } else { + slot.setChanged(); + } + + if (itemstack1.getCount() == itemstack.getCount()) { + return ItemStack.EMPTY; + } + + slot.onTake(player, itemstack1); + } + + return itemstack; + } + + protected boolean canSmelt(ItemStack itemStack) { + return this.level.getRecipeManager().getRecipeFor(ECRecipes.GLASS_KILN_TYPE, new SimpleContainer(itemStack), this.level).isPresent(); + } + + public boolean isFuel(ItemStack itemStack) { + return ForgeHooks.getBurnTime(itemStack, ECRecipes.GLASS_KILN_TYPE) > 0; + } + + @Override + public boolean stillValid(Player player) { + return this.container.stillValid(player); + } + + @Override + public void fillCraftSlotsStackedContents(StackedContents contents) { + if (this.container instanceof StackedContentsCompatible) { + ((StackedContentsCompatible)this.container).fillStackedContents(contents); + } + } + + @Override + public void clearCraftingContent() { + this.getSlot(INGREDIENT_SLOT).set(ItemStack.EMPTY); + this.getSlot(RESULT_SLOT).set(ItemStack.EMPTY); + } + + public int getBurnProgress() { + int i = this.data.get(2); + int j = this.data.get(3); + return j != 0 && i != 0 ? i * 24 / j : 0; + } + + public int getLitProgress() { + int i = this.data.get(1); + if (i == 0) { + i = 200; + } + + return this.data.get(0) * 13 / i; + } + + public boolean isLit() { + return this.data.get(0) > 0; + } + + @Override + public boolean recipeMatches(Recipe recipe) { + return recipe.matches(this.container, this.level); + } + + @Override + public int getResultSlotIndex() { + return RESULT_SLOT; + } + + @Override + public int getGridWidth() { + return 1; + } + + @Override + public int getGridHeight() { + return 1; + } + + @Override + public int getSize() { + return SLOT_COUNT; + } + + @Override + public RecipeBookType getRecipeBookType() { + return RecipeBookType.FURNACE; + } + + @Override + public boolean shouldMoveToInventory(int flag) { + return flag != 1; + } + + static class GlassKilnFuelSlot extends Slot { + private final GlassKilnMenu menu; + + public GlassKilnFuelSlot(GlassKilnMenu menu, Container container, int slot, int x, int y) { + super(container, slot, x, y); + this.menu = menu; + } + + public boolean mayPlace(ItemStack itemStack) { + return this.menu.isFuel(itemStack); + } + + public int getMaxStackSize(ItemStack itemStack) { + return super.getMaxStackSize(itemStack); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/GlassKilnRecipe.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/GlassKilnRecipe.java new file mode 100644 index 00000000..87deadaf --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/GlassKilnRecipe.java @@ -0,0 +1,35 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECRecipeSerializer; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.AbstractCookingRecipe; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; + +import java.util.Collections; +import java.util.Map; + +public class GlassKilnRecipe extends AbstractCookingRecipe { + public static Map recipeList = Collections.emptyMap(); + + public GlassKilnRecipe(ResourceLocation id, String group, Ingredient ingredient, ItemStack result, float experience, int cookingTime) { + super(ECRecipes.GLASS_KILN_TYPE, id, group, ingredient, result, experience, cookingTime); + } + + @Override + public RecipeSerializer getSerializer() { + return ECRecipeSerializer.GLASS_KILN_SERIALIZER.get(); + } + + @Override + public ItemStack getToastSymbol() { + return new ItemStack(ECBlocks.WorkStation.GLASS_KILN); + } + + public Ingredient getIngredient() { + return this.ingredient; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/IceMakerMenu.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/IceMakerMenu.java new file mode 100644 index 00000000..8872ca8f --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/IceMakerMenu.java @@ -0,0 +1,229 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.blocks.entity.IceMakerBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECContainerTypes; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.Container; +import net.minecraft.world.SimpleContainer; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.ContainerData; +import net.minecraft.world.inventory.SimpleContainerData; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; + +public class IceMakerMenu extends AbstractContainerMenu { + public static final int INGREDIENT_INPUT_SLOT = 0; + public static final int INGREDIENT_OUTPUT_SLOT = 1; + public static final int CONDENSATE_SLOT = 2; + public static final int RESULT_SLOT = 3; + public static final int SLOT_COUNT = 4; + public static final int INV_SLOT_START = 4; + public static final int INV_SLOT_END = 31; + public static final int USE_ROW_SLOT_START = 31; + public static final int USE_ROW_SLOT_END = 40; + public static final int DATA_COUNT = 5; + private final Container iceMaker; + private final ContainerData iceMakerData; + private final Slot ingredientInputSlot; + private final Slot condensateSlot; + protected final Level level; + + public IceMakerMenu(int id, Inventory inventory) { + this(id, inventory, new SimpleContainer(SLOT_COUNT), new SimpleContainerData(DATA_COUNT)); + } + + public IceMakerMenu(int id, Inventory inventory, Container container, ContainerData data) { + super(ECContainerTypes.ICE_MAKER_MENU.get(), id); + checkContainerSize(container, SLOT_COUNT); + checkContainerDataCount(data, DATA_COUNT); + this.iceMaker = container; + this.iceMakerData = data; + this.level = inventory.player.level; + this.addSlot(new IceMakerMenu.IceMakerResultSlot(inventory.player, container, RESULT_SLOT, 134, 35)); + this.ingredientInputSlot = this.addSlot(new Slot(container, INGREDIENT_INPUT_SLOT, 50, 18) { + @Override + public boolean mayPlace(ItemStack itemStack) { + return itemStack.is(Items.BUCKET) || isFluidBucket(itemStack); + } + + @Override + public int getMaxStackSize() { + return 16; + } + }); + this.addSlot(new Slot(container, INGREDIENT_OUTPUT_SLOT, 50, 52) { + @Override + public boolean mayPlace(ItemStack itemStack) { + return itemStack.is(Items.BUCKET) || isFluidBucket(itemStack); + } + + @Override + public int getMaxStackSize() { + return 16; + } + }); + this.condensateSlot = this.addSlot(new Slot(container, CONDENSATE_SLOT, 16, 26) { + @Override + public boolean mayPlace(ItemStack itemStack) { + return itemStack.is(Items.WATER_BUCKET); + } + + @Override + public int getMaxStackSize() { + return 1; + } + }); + this.addDataSlots(data); + + for(int i = 0; i < 3; ++i) { + for(int j = 0; j < 9; ++j) { + this.addSlot(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for(int k = 0; k < 9; ++k) { + this.addSlot(new Slot(inventory, k, 8 + k * 18, 142)); + } + } + + public static boolean isFluidBucket(ItemStack itemStack) { + return itemStack.is(Items.WATER_BUCKET) || + itemStack.is(Items.LAVA_BUCKET) || + itemStack.is(ECItems.MELTED_EMERALD_BUCKET.get()) || + itemStack.is(ECItems.MELTED_IRON_BUCKET.get()) || + itemStack.is(ECItems.MELTED_GOLD_BUCKET.get()) || + itemStack.is(ECItems.MELTED_COPPER_BUCKET.get()); + } + + @Override + public boolean stillValid(Player player) { + return this.iceMaker.stillValid(player); + } + + @Override + public ItemStack quickMoveStack(Player player, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = this.slots.get(index); + if (slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index == RESULT_SLOT || index == CONDENSATE_SLOT || index == INGREDIENT_OUTPUT_SLOT) { + if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, USE_ROW_SLOT_END, true)) { + return ItemStack.EMPTY; + } + + slot.onQuickCraft(itemstack1, itemstack); + } else if (index != INGREDIENT_INPUT_SLOT) { + if (ingredientInputSlot.mayPlace(itemstack1)) { + if (!this.moveItemStackTo(itemstack1, INGREDIENT_INPUT_SLOT, INGREDIENT_OUTPUT_SLOT, false)) { + return ItemStack.EMPTY; + } + } else if (condensateSlot.mayPlace(itemstack1)) { + if (!this.moveItemStackTo(itemstack1, CONDENSATE_SLOT, RESULT_SLOT, false)) { + return ItemStack.EMPTY; + } + } else if (index >= INV_SLOT_START && index < INV_SLOT_END) { + if (!this.moveItemStackTo(itemstack1, USE_ROW_SLOT_START, USE_ROW_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } else if (index >= USE_ROW_SLOT_START && index < USE_ROW_SLOT_END && + !this.moveItemStackTo(itemstack1, INV_SLOT_START, INV_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } else if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, USE_ROW_SLOT_END, false)) { + return ItemStack.EMPTY; + } + + if (itemstack1.isEmpty()) { + slot.set(ItemStack.EMPTY); + } else { + slot.setChanged(); + } + + if (itemstack1.getCount() == itemstack.getCount()) { + return ItemStack.EMPTY; + } + + slot.onTake(player, itemstack1); + } + + return itemstack; + } + + public int getFluidTypeIndex() { + return this.iceMakerData.get(0); + } + + public FluidType getFluidType() { + return FluidType.FLUID_TYPES[this.iceMakerData.get(0)]; + } + + public int getIngredientFluidLevel() { + return this.iceMakerData.get(1); + } + + public int getCondensateFluidLevel() { + return this.iceMakerData.get(4); + } + + public int getFreezeProgress() { + int i = this.iceMakerData.get(2); + int j = this.iceMakerData.get(3); + return j != 0 && i != 0 ? (i * 24 / j) : 0; + } + + static class IceMakerResultSlot extends Slot { + private final Player player; + private int removeCount; + + public IceMakerResultSlot(Player player, Container container, int slot, int x, int y) { + super(container, slot, x, y); + this.player = player; + } + + @Override + public boolean mayPlace(ItemStack itemStack) { + return false; + } + + @Override + public ItemStack remove(int count) { + if (this.hasItem()) { + this.removeCount += Math.min(count, this.getItem().getCount()); + } + + return super.remove(count); + } + + @Override + public void onTake(Player player, ItemStack itemStack) { + this.checkTakeAchievements(itemStack); + super.onTake(player, itemStack); + } + + @Override + protected void onQuickCraft(ItemStack itemStack, int count) { + this.removeCount += count; + this.checkTakeAchievements(itemStack); + } + + @Override + protected void checkTakeAchievements(ItemStack itemStack) { + itemStack.onCraftedBy(this.player.level, this.player, this.removeCount); + + this.removeCount = 0; + net.minecraftforge.fmllegacy.hooks.BasicEventHooks.firePlayerSmeltedEvent(this.player, itemStack); + } + + @Override + public int getMaxStackSize() { + return 64; + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/IceMakerRecipe.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/IceMakerRecipe.java new file mode 100644 index 00000000..0129eb54 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/IceMakerRecipe.java @@ -0,0 +1,97 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.blocks.entity.IceMakerBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECRecipeSerializer; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.Container; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.level.Level; + +import java.util.Collections; +import java.util.Map; + +public class IceMakerRecipe implements Recipe { + protected final ResourceLocation id; + protected final String group; + protected final FluidType inputFluid; + protected final int inputAmount; + protected final ItemStack result; + protected final int freezingTime; + + public static Map recipeList = Collections.emptyMap(); + + public static int FREEZING_TIME = 50; + public static int DEFAULT_INPUT_AMOUNT = 100; + + public IceMakerRecipe(ResourceLocation id, String group, FluidType inputFluid, int inputAmount, ItemStack result, int freezingTime) { + this.id = id; + this.group = group; + this.inputFluid = inputFluid; + this.inputAmount = inputAmount; + this.result = result; + this.freezingTime = freezingTime; + } + + @Override + public boolean canCraftInDimensions(int wid, int hgt) { + return true; + } + + @Override + public RecipeSerializer getSerializer() { + return ECRecipeSerializer.ICE_MAKER_SERIALIZER.get(); + } + + @Override + public ItemStack getToastSymbol() { + return new ItemStack(ECBlocks.WorkStation.ICE_MAKER); + } + + @Override + public String getGroup() { + return this.group; + } + + public FluidType getFluidType() { + return this.inputFluid; + } + + public int getFluidAmount() { + return this.inputAmount; + } + + public int getFreezingTime() { + return this.freezingTime; + } + + @Override + public ItemStack assemble(Container container) { + return this.result.copy(); + } + + @Override + public ItemStack getResultItem() { + return this.result; + } + + @Override + public boolean matches(Container container, Level level) { + return this.inputFluid.getID() == ((IceMakerBlockEntity)container).getInputFluidTypeIndex(); + } + + @Override + public ResourceLocation getId() { + return this.id; + } + + @Override + public RecipeType getType() { + return ECRecipes.ICE_MAKER_TYPE; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MelterMenu.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MelterMenu.java new file mode 100644 index 00000000..f280f955 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MelterMenu.java @@ -0,0 +1,221 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.blocks.entity.MelterBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECContainerTypes; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import net.minecraft.world.Container; +import net.minecraft.world.SimpleContainer; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.ContainerData; +import net.minecraft.world.inventory.SimpleContainerData; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; + +import static net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity.isFuel; + +public class MelterMenu extends AbstractContainerMenu { + public static final int INGREDIENT_SLOT = 0; + public static final int FUEL_SLOT = 1; + public static final int RESULT_INPUT_SLOT = 2; + public static final int RESULT_OUTPUT_SLOT = 3; + public static final int SLOT_COUNT = 4; + public static final int INV_SLOT_START = 4; + public static final int INV_SLOT_END = 31; + public static final int USE_ROW_SLOT_START = 31; + public static final int USE_ROW_SLOT_END = 40; + public static final int DATA_COUNT = 6; + private final Container melter; + private final ContainerData melterData; + private final Slot ingredientSlot; + private final Slot resultInputSlot; + protected final Level level; + + public MelterMenu(int id, Inventory inventory) { + this(id, inventory, new SimpleContainer(SLOT_COUNT), new SimpleContainerData(DATA_COUNT)); + } + + public MelterMenu(int id, Inventory inventory, Container container, ContainerData data) { + super(ECContainerTypes.MELTER_MENU.get(), id); + checkContainerSize(container, SLOT_COUNT); + checkContainerDataCount(data, DATA_COUNT); + this.melter = container; + this.melterData = data; + this.level = inventory.player.level; + this.ingredientSlot = this.addSlot(new MelterMenu.IngredientSlot(this, container, INGREDIENT_SLOT, 41, 17)); + this.addSlot(new MelterMenu.MelterFuelSlot(container, FUEL_SLOT, 41, 53)); + + this.resultInputSlot = this.addSlot(new Slot(container, RESULT_INPUT_SLOT, 132, 18) { + @Override + public boolean mayPlace(ItemStack itemStack) { + return itemStack.is(Items.BUCKET) || isFluidBucket(itemStack); + } + + @Override + public int getMaxStackSize() { + return 16; + } + }); + this.addSlot(new Slot(container, RESULT_OUTPUT_SLOT, 132, 52) { + @Override + public boolean mayPlace(ItemStack itemStack) { + return itemStack.is(Items.BUCKET) || isFluidBucket(itemStack); + } + + @Override + public int getMaxStackSize() { + return 16; + } + }); + this.addDataSlots(data); + + for(int i = 0; i < 3; ++i) { + for(int j = 0; j < 9; ++j) { + this.addSlot(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for(int k = 0; k < 9; ++k) { + this.addSlot(new Slot(inventory, k, 8 + k * 18, 142)); + } + } + + public static boolean isFluidBucket(ItemStack itemStack) { + return itemStack.is(Items.WATER_BUCKET) || itemStack.is(Items.LAVA_BUCKET) || + itemStack.is(ECItems.MELTED_EMERALD_BUCKET.get()) || + itemStack.is(ECItems.MELTED_IRON_BUCKET.get()) || + itemStack.is(ECItems.MELTED_GOLD_BUCKET.get()) || + itemStack.is(ECItems.MELTED_COPPER_BUCKET.get()); + } + + public boolean isLit() { + return this.melterData.get(0) > 0; + } + + @Override + public boolean stillValid(Player player) { + return this.melter.stillValid(player); + } + + @Override + public ItemStack quickMoveStack(Player player, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = this.slots.get(index); + if (slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index == RESULT_OUTPUT_SLOT) { + if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, USE_ROW_SLOT_END, true)) { + return ItemStack.EMPTY; + } + + slot.onQuickCraft(itemstack1, itemstack); + } else if (index == RESULT_INPUT_SLOT) { + if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, USE_ROW_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } else if (index != FUEL_SLOT && index != INGREDIENT_SLOT) { + if(resultInputSlot.mayPlace(itemstack1)) { + if (!this.moveItemStackTo(itemstack1, RESULT_INPUT_SLOT, RESULT_OUTPUT_SLOT, false)) { + return ItemStack.EMPTY; + } + } else if (ingredientSlot.mayPlace(itemstack1)) { + if (!this.moveItemStackTo(itemstack1, INGREDIENT_SLOT, FUEL_SLOT, false)) { + return ItemStack.EMPTY; + } + } else if (isFuel(itemstack1)) { + if (!this.moveItemStackTo(itemstack1, FUEL_SLOT, RESULT_INPUT_SLOT, false)) { + return ItemStack.EMPTY; + } + } else if (index >= INV_SLOT_START && index < INV_SLOT_END) { + if (!this.moveItemStackTo(itemstack1, USE_ROW_SLOT_START, USE_ROW_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } else if (index >= USE_ROW_SLOT_START && index < USE_ROW_SLOT_END && + !this.moveItemStackTo(itemstack1, INV_SLOT_START, INV_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } else if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, USE_ROW_SLOT_END, false)) { + return ItemStack.EMPTY; + } + + if (itemstack1.isEmpty()) { + slot.set(ItemStack.EMPTY); + } else { + slot.setChanged(); + } + + if (itemstack1.getCount() == itemstack.getCount()) { + return ItemStack.EMPTY; + } + + slot.onTake(player, itemstack1); + } + + return itemstack; + } + + public int getBurnProgress() { + int i = this.melterData.get(2); + int j = this.melterData.get(3); + return j != 0 && i != 0 ? (i * 24 / j) : 0; + } + + public int getLitProgress() { + int i = this.melterData.get(1); + if (i == 0) { + i = MelterRecipe.MELTING_TIME; + } + + return this.melterData.get(0) * 13 / i; + } + + public int getFluidTypeIndex() { + return this.melterData.get(4); + } + + public FluidType getFluidType() { + return FluidType.FLUID_TYPES[this.melterData.get(4)]; + } + + public int getFluidLevel() { + return this.melterData.get(5); + } + + static class IngredientSlot extends Slot { + private final MelterMenu menu; + public IngredientSlot(MelterMenu menu, Container container, int slot, int x, int y) { + super(container, slot, x, y); + this.menu = menu; + } + + @Override + public boolean mayPlace(ItemStack itemStack) { + return menu.level.getRecipeManager().getRecipeFor(ECRecipes.MELTER_TYPE, new SimpleContainer(itemStack), menu.level).isPresent(); + } + + @Override + public int getMaxStackSize() { + return 64; + } + } + + static class MelterFuelSlot extends Slot { + + public MelterFuelSlot(Container container, int slot, int x, int y) { + super(container, slot, x, y); + } + + public boolean mayPlace(ItemStack itemStack) { + return isFuel(itemStack); + } + + public int getMaxStackSize(ItemStack itemStack) { + return super.getMaxStackSize(itemStack); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MelterRecipe.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MelterRecipe.java new file mode 100644 index 00000000..5b369f32 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MelterRecipe.java @@ -0,0 +1,102 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECRecipeSerializer; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import net.minecraft.core.NonNullList; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.Container; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.*; +import net.minecraft.world.level.Level; + +import java.util.Collections; +import java.util.Map; + +public class MelterRecipe implements Recipe { + protected final ResourceLocation id; + protected final String group; + protected final Ingredient ingredient; + protected final FluidType resultFluid; + protected final int resultAmount; + protected final int meltingTime; + + public static Map recipeList = Collections.emptyMap(); + + public static int MELTING_TIME = 200; + + public MelterRecipe(ResourceLocation id, String group, Ingredient ingredient, FluidType resultFluid, int resultAmount, int meltingTime) { + this.id = id; + this.group = group; + this.ingredient = ingredient; + this.resultFluid = resultFluid; + this.resultAmount = resultAmount; + this.meltingTime = meltingTime; + } + + @Override + public boolean canCraftInDimensions(int wid, int hgt) { + return true; + } + + @Override + public RecipeSerializer getSerializer() { + return ECRecipeSerializer.MELTER_SERIALIZER.get(); + } + + @Override + public ItemStack getToastSymbol() { + return new ItemStack(ECBlocks.WorkStation.MELTER); + } + + public Ingredient getIngredient() { + return this.ingredient; + } + + @Override + public NonNullList getIngredients() { + return NonNullList.of(this.ingredient); + } + + @Override + public String getGroup() { + return this.group; + } + + public FluidType getFluidType() { + return resultFluid; + } + + public int getFluidAmount() { + return resultAmount; + } + + public int getMeltingTime() { + return this.meltingTime; + } + + @Override + public ItemStack assemble(Container container) { + return null; + } + + @Override + public ItemStack getResultItem() { + return null; + } + + @Override + public boolean matches(Container container, Level level) { + return this.ingredient.test(container.getItem(MelterMenu.INGREDIENT_SLOT)); + } + + @Override + public ResourceLocation getId() { + return this.id; + } + + @Override + public RecipeType getType() { + return ECRecipes.MELTER_TYPE; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MineralTableMenu.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MineralTableMenu.java new file mode 100644 index 00000000..df204016 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MineralTableMenu.java @@ -0,0 +1,217 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.blocks.entity.MineralTableBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECContainerTypes; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.Container; +import net.minecraft.world.SimpleContainer; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.*; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; + +public class MineralTableMenu extends AbstractContainerMenu { + public static final int INGREDIENT_SLOT = 0; + public static final int FUEL_SLOT = 1; + public static final int RESULT_SLOT = 2; + public static final int SLOT_COUNT = 3; + public static final int INV_SLOT_START = 3; + public static final int INV_SLOT_END = 30; + public static final int USE_ROW_SLOT_START = 30; + public static final int USE_ROW_SLOT_END = 39; + public static final int DATA_COUNT = 4; + private final Container mineralTable; + private final ContainerData mineralTableData; + private final Slot ingredientSlot; + protected final Level level; + + public MineralTableMenu(int id, Inventory inventory) { + this(id, inventory, new SimpleContainer(SLOT_COUNT), new SimpleContainerData(DATA_COUNT)); + } + + public MineralTableMenu(int id, Inventory inventory, Container container, ContainerData data) { + super(ECContainerTypes.MINERAL_TABLE_MENU.get(), id); + checkContainerSize(container, SLOT_COUNT); + checkContainerDataCount(data, DATA_COUNT); + this.mineralTable = container; + this.mineralTableData = data; + this.level = inventory.player.level; + this.addSlot(new MineralTableMenu.MineralResultSlot(inventory.player, container, RESULT_SLOT, 79, 58)); + this.ingredientSlot = this.addSlot(new MineralTableMenu.IngredientSlot(this, container, INGREDIENT_SLOT, 79, 17)); + this.addSlot(new MineralTableMenu.FuelSlot(container, FUEL_SLOT, 17, 17)); + this.addDataSlots(data); + + for(int i = 0; i < 3; ++i) { + for(int j = 0; j < 9; ++j) { + this.addSlot(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for(int k = 0; k < 9; ++k) { + this.addSlot(new Slot(inventory, k, 8 + k * 18, 142)); + } + } + + @Override + public boolean stillValid(Player player) { + return this.mineralTable.stillValid(player); + } + + @Override + public ItemStack quickMoveStack(Player player, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = this.slots.get(index); + if (slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index == RESULT_SLOT) { + if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, USE_ROW_SLOT_END, true)) { + return ItemStack.EMPTY; + } + + slot.onQuickCraft(itemstack1, itemstack); + } else if (index != FUEL_SLOT && index != INGREDIENT_SLOT) { + if (ingredientSlot.mayPlace(itemstack1)) { + if (!this.moveItemStackTo(itemstack1, INGREDIENT_SLOT, FUEL_SLOT, false)) { + return ItemStack.EMPTY; + } + } else if (FuelSlot.mayPlaceItem(itemstack1)) { + if (!this.moveItemStackTo(itemstack1, FUEL_SLOT, RESULT_SLOT, false)) { + return ItemStack.EMPTY; + } + } else if (index >= INV_SLOT_START && index < INV_SLOT_END) { + if (!this.moveItemStackTo(itemstack1, USE_ROW_SLOT_START, USE_ROW_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } else if (index >= USE_ROW_SLOT_START && index < USE_ROW_SLOT_END && + !this.moveItemStackTo(itemstack1, INV_SLOT_START, INV_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } else if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, USE_ROW_SLOT_END, false)) { + return ItemStack.EMPTY; + } + + if (itemstack1.isEmpty()) { + slot.set(ItemStack.EMPTY); + } else { + slot.setChanged(); + } + + if (itemstack1.getCount() == itemstack.getCount()) { + return ItemStack.EMPTY; + } + + slot.onTake(player, itemstack1); + } + + return itemstack; + } + + public int getBurnProgress() { + int i = this.mineralTableData.get(2); + int j = this.mineralTableData.get(3); + return j != 0 && i != 0 ? ((j - i - 1) * 400 / j) : 0; + } + + public int getLitProgress() { + int i = this.mineralTableData.get(1); + if (i == 0) { + i = MineralTableRecipe.BURN_TIME; + } + + return this.mineralTableData.get(0) * 20 / i; + } + + static class FuelSlot extends Slot { + public FuelSlot(Container container, int slot, int x, int y) { + super(container, slot, x, y); + } + + @Override + public boolean mayPlace(ItemStack itemStack) { + return mayPlaceItem(itemStack); + } + + public static boolean mayPlaceItem(ItemStack itemStack) { + return itemStack.is(Items.BLAZE_POWDER); + } + + @Override + public int getMaxStackSize() { + return 64; + } + } + + static class IngredientSlot extends Slot { + private final MineralTableMenu menu; + public IngredientSlot(MineralTableMenu menu, Container container, int slot, int x, int y) { + super(container, slot, x, y); + this.menu = menu; + } + + @Override + public boolean mayPlace(ItemStack itemStack) { + return menu.level.getRecipeManager().getRecipeFor(ECRecipes.MINERAL_TABLE_TYPE, new SimpleContainer(itemStack), menu.level).isPresent(); + } + + @Override + public int getMaxStackSize() { + return 64; + } + } + + static class MineralResultSlot extends Slot { + private final Player player; + private int removeCount; + + public MineralResultSlot(Player player, Container container, int slot, int x, int y) { + super(container, slot, x, y); + this.player = player; + } + + @Override + public boolean mayPlace(ItemStack itemStack) { + return false; + } + + @Override + public ItemStack remove(int count) { + if (this.hasItem()) { + this.removeCount += Math.min(count, this.getItem().getCount()); + } + + return super.remove(count); + } + + @Override + public void onTake(Player player, ItemStack itemStack) { + this.checkTakeAchievements(itemStack); + super.onTake(player, itemStack); + } + + @Override + protected void onQuickCraft(ItemStack itemStack, int count) { + this.removeCount += count; + this.checkTakeAchievements(itemStack); + } + + @Override + protected void checkTakeAchievements(ItemStack itemStack) { + itemStack.onCraftedBy(this.player.level, this.player, this.removeCount); + if (this.player instanceof ServerPlayer && this.container instanceof MineralTableBlockEntity) { + ((MineralTableBlockEntity)this.container).awardUsedRecipesAndPopExperience((ServerPlayer)this.player); + } + + this.removeCount = 0; + net.minecraftforge.fmllegacy.hooks.BasicEventHooks.firePlayerSmeltedEvent(this.player, itemStack); + } + + @Override + public int getMaxStackSize() { + return 64; + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MineralTableRecipe.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MineralTableRecipe.java new file mode 100644 index 00000000..f4f38514 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MineralTableRecipe.java @@ -0,0 +1,37 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECRecipeSerializer; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.AbstractCookingRecipe; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; + +import java.util.Collections; +import java.util.Map; + +public class MineralTableRecipe extends AbstractCookingRecipe { + public static Map recipeList = Collections.emptyMap(); + + public static int BURN_TIME = 500; + + public MineralTableRecipe(ResourceLocation id, String group, Ingredient ingredient, ItemStack result, float experience, int cookingTime) { + super(ECRecipes.MINERAL_TABLE_TYPE, id, group, ingredient, result, experience, cookingTime); + } + + @Override + public RecipeSerializer getSerializer() { + return ECRecipeSerializer.MINERAL_TABLE_SERIALIZER.get(); + } + + @Override + public ItemStack getToastSymbol() { + return new ItemStack(ECBlocks.WorkStation.MINERAL_TABLE); + } + + public Ingredient getIngredient() { + return this.ingredient; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/RecipeCachingReloadListener.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/RecipeCachingReloadListener.java new file mode 100644 index 00000000..16f5f854 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/RecipeCachingReloadListener.java @@ -0,0 +1,20 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import net.minecraft.server.ServerResources; +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.server.packs.resources.ResourceManagerReloadListener; + +import javax.annotation.Nonnull; + +public class RecipeCachingReloadListener implements ResourceManagerReloadListener { + private final ServerResources dataPackRegistries; + + public RecipeCachingReloadListener(ServerResources dataPackRegistries) { + this.dataPackRegistries = dataPackRegistries; + } + + @Override + public void onResourceManagerReload(@Nonnull ResourceManager resourceManager) { + RecipeReloadListener.buildRecipeLists(dataPackRegistries.getRecipeManager()); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/RecipeReloadListener.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/RecipeReloadListener.java new file mode 100644 index 00000000..f35efcc3 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/RecipeReloadListener.java @@ -0,0 +1,76 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import net.minecraft.client.Minecraft; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.ServerResources; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.server.packs.resources.ResourceManagerReloadListener; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeManager; +import net.minecraft.world.item.crafting.RecipeType; +import net.minecraftforge.client.event.RecipesUpdatedEvent; +import net.minecraftforge.eventbus.api.EventPriority; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fmllegacy.server.ServerLifecycleHooks; + +import javax.annotation.Nonnull; +import java.util.Collection; +import java.util.Iterator; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class RecipeReloadListener implements ResourceManagerReloadListener { + private final ServerResources serverResources; + + public RecipeReloadListener(ServerResources serverResources) { + this.serverResources = serverResources; + } + + @Override + public void onResourceManagerReload(@Nonnull ResourceManager resourceManager) { + if(serverResources!=null) { + MinecraftServer server = ServerLifecycleHooks.getCurrentServer(); + if(server!=null) + { + Iterator it = server.getAllLevels().iterator(); + // Should only be false when no players are loaded, so the data will be synced on login + if(it.hasNext()) { + + } + } + } + } + + RecipeManager clientRecipeManager; + + @SubscribeEvent(priority = EventPriority.HIGH) + public void onRecipesUpdated(RecipesUpdatedEvent event) { + clientRecipeManager = event.getRecipeManager(); + if(!Minecraft.getInstance().hasSingleplayerServer()) + buildRecipeLists(clientRecipeManager); + } + + public static void buildRecipeLists(RecipeManager recipeManager) { + Collection> recipes = recipeManager.getRecipes(); + // Empty recipe list shouldn't happen, but has been known to be caused by other mods + if(recipes.size()==0) + return; + + CarpentryTableRecipe.recipeList = filterRecipes(recipes, CarpentryTableRecipe.class, ECRecipes.CARPENTRY_TABLE_TYPE); + GlassKilnRecipe.recipeList = filterRecipes(recipes, GlassKilnRecipe.class, ECRecipes.GLASS_KILN_TYPE); + MineralTableRecipe.recipeList = filterRecipes(recipes, MineralTableRecipe.class, ECRecipes.MINERAL_TABLE_TYPE); + MelterRecipe.recipeList = filterRecipes(recipes, MelterRecipe.class, ECRecipes.MELTER_TYPE); + IceMakerRecipe.recipeList = filterRecipes(recipes, IceMakerRecipe.class, ECRecipes.ICE_MAKER_TYPE); + } + + static > Map filterRecipes(Collection> recipes, Class recipeClass, RecipeType recipeType) { + return recipes.stream() + .filter(iRecipe -> iRecipe.getType()==recipeType) + .map(recipeClass::cast) + .collect(Collectors.toMap(recipe -> recipe.getId(), recipe -> recipe)); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/CarpentryTableCategory.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/CarpentryTableCategory.java new file mode 100644 index 00000000..44c0a4a2 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/CarpentryTableCategory.java @@ -0,0 +1,78 @@ +package com.hexagram2021.emeraldcraft.common.crafting.compat; + +import com.hexagram2021.emeraldcraft.common.crafting.CarpentryTableMenu; +import com.hexagram2021.emeraldcraft.common.crafting.CarpentryTableRecipe; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import mezz.jei.api.constants.VanillaTypes; +import mezz.jei.api.gui.IRecipeLayout; +import mezz.jei.api.gui.drawable.IDrawable; +import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.ingredients.IIngredients; +import mezz.jei.api.recipe.category.IRecipeCategory; +import net.minecraft.network.chat.*; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class CarpentryTableCategory implements IRecipeCategory { + public static final ResourceLocation UID = new ResourceLocation(MODID, "carpentry"); + public static final ResourceLocation TEXTURE = new ResourceLocation(MODID, "textures/gui/gui_vanilla.png"); + + public static final int width = 82; + public static final int height = 34; + + private final IDrawable background; + private final IDrawable icon; + + public CarpentryTableCategory(IGuiHelper guiHelper) { + this.background = guiHelper.createDrawable(TEXTURE, 0, 220, width, height); + this.icon = guiHelper.createDrawableIngredient(new ItemStack(ECBlocks.WorkStation.CARPENTRY_TABLE)); + } + + @Override + public ResourceLocation getUid() { + return UID; + } + + @Override + public Class getRecipeClass() { + return CarpentryTableRecipe.class; + } + + @Override + public Component getTitle() { + return new TranslatableComponent("block.emeraldcraft.carpentry_table"); + } + + @Override + public IDrawable getBackground() { + return background; + } + + @Override + public IDrawable getIcon() { + return icon; + } + + @Override + public void setIngredients(CarpentryTableRecipe recipe, IIngredients ingredients) { + ingredients.setInputIngredients(recipe.getIngredients()); + ingredients.setOutput(VanillaTypes.ITEM, recipe.getResultItem()); + } + + @Override + public void setRecipe(IRecipeLayout recipeLayout, CarpentryTableRecipe recipe, IIngredients ingredients) { + IGuiItemStackGroup guiItemStacks = recipeLayout.getItemStacks(); + guiItemStacks.init(CarpentryTableMenu.INPUT_SLOT, true, 0, 8); + guiItemStacks.init(CarpentryTableMenu.RESULT_SLOT, false, 60, 8); + + guiItemStacks.set(ingredients); + } + + @Override + public boolean isHandled(CarpentryTableRecipe recipe) { + return !recipe.isSpecial(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/GlassKilnRecipeCategory.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/GlassKilnRecipeCategory.java new file mode 100644 index 00000000..b8846e98 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/GlassKilnRecipeCategory.java @@ -0,0 +1,141 @@ +package com.hexagram2021.emeraldcraft.common.crafting.compat; + +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import com.hexagram2021.emeraldcraft.common.crafting.GlassKilnMenu; +import com.hexagram2021.emeraldcraft.common.crafting.GlassKilnRecipe; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.mojang.blaze3d.vertex.PoseStack; +import mezz.jei.api.constants.VanillaTypes; +import mezz.jei.api.gui.IRecipeLayout; +import mezz.jei.api.gui.drawable.*; +import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.ingredients.IIngredients; +import mezz.jei.api.recipe.category.IRecipeCategory; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class GlassKilnRecipeCategory implements IRecipeCategory { + public static final ResourceLocation UID = new ResourceLocation(MODID, "glass_kiln"); + public static final ResourceLocation TEXTURE = new ResourceLocation(MODID, "textures/gui/gui_vanilla.png"); + public static final int COOKTIME = 100; + + private final IDrawable background; + private final IDrawableStatic staticFlame; + private final IDrawableAnimated animatedFlame; + private final IDrawable icon; + private final LoadingCache cachedArrows; + + public GlassKilnRecipeCategory(IGuiHelper guiHelper) { + this.background = guiHelper.createDrawable(TEXTURE, 0, 114, 82, 54);; + this.staticFlame = guiHelper.createDrawable(TEXTURE, 82, 114, 14, 14); + this.animatedFlame = guiHelper.createAnimatedDrawable(staticFlame, 300, IDrawableAnimated.StartDirection.TOP, true); + this.icon = guiHelper.createDrawableIngredient(new ItemStack(ECBlocks.WorkStation.GLASS_KILN)); + this.cachedArrows = CacheBuilder.newBuilder() + .maximumSize(25) + .build(new CacheLoader<>() { + @Override + public IDrawableAnimated load(Integer cookTime) { + return guiHelper.drawableBuilder(TEXTURE, 82, 128, 24, 17) + .buildAnimated(cookTime, IDrawableAnimated.StartDirection.LEFT, false); + } + }); + } + + protected IDrawableAnimated getArrow(GlassKilnRecipe recipe) { + int cookTime = recipe.getCookingTime(); + if (cookTime <= 0) { + cookTime = COOKTIME; + } + return this.cachedArrows.getUnchecked(cookTime); + } + + + @Override + public ResourceLocation getUid() { + return UID; + } + + @Override + public Class getRecipeClass() { + return GlassKilnRecipe.class; + } + + @Override + public Component getTitle() { + return new TranslatableComponent("block.emeraldcraft.glass_kiln"); + } + + @Override + public IDrawable getBackground() { + return this.background; + } + + @Override + public IDrawable getIcon() { + return this.icon; + } + + @Override + public void setIngredients(GlassKilnRecipe recipe, IIngredients ingredients) { + ingredients.setInputIngredients(recipe.getIngredients()); + ingredients.setOutput(VanillaTypes.ITEM, recipe.getResultItem()); + } + + @Override + public void draw(GlassKilnRecipe recipe, PoseStack poseStack, double mouseX, double mouseY) { + animatedFlame.draw(poseStack, 1, 20); + + IDrawableAnimated arrow = getArrow(recipe); + arrow.draw(poseStack, 24, 18); + + drawExperience(recipe, poseStack, 0); + drawCookTime(recipe, poseStack, 45); + } + + protected void drawExperience(GlassKilnRecipe recipe, PoseStack poseStack, int y) { + float experience = recipe.getExperience(); + if (experience > 0) { + TranslatableComponent experienceString = new TranslatableComponent("gui.emeraldcraft.glass_kiln.experience", experience); + Minecraft minecraft = Minecraft.getInstance(); + Font fontRenderer = minecraft.font; + int stringWidth = fontRenderer.width(experienceString); + fontRenderer.draw(poseStack, experienceString, background.getWidth() - stringWidth, y, 0xFF808080); + } + } + + protected void drawCookTime(GlassKilnRecipe recipe, PoseStack poseStack, int y) { + int cookTime = recipe.getCookingTime(); + if (cookTime > 0) { + int cookTimeSeconds = cookTime / 20; + TranslatableComponent timeString = new TranslatableComponent("gui.emeraldcraft.glass_kiln.time.seconds", cookTimeSeconds); + Minecraft minecraft = Minecraft.getInstance(); + Font fontRenderer = minecraft.font; + int stringWidth = fontRenderer.width(timeString); + fontRenderer.draw(poseStack, timeString, background.getWidth() - stringWidth, y, 0xFF808080); + } + } + + @Override + public void setRecipe(IRecipeLayout recipeLayout, GlassKilnRecipe recipe, IIngredients ingredients) { + IGuiItemStackGroup guiItemStacks = recipeLayout.getItemStacks(); + + guiItemStacks.init(GlassKilnMenu.INGREDIENT_SLOT, true, 0, 0); + guiItemStacks.init(GlassKilnMenu.RESULT_SLOT, false, 60, 18); + + guiItemStacks.set(ingredients); + } + + @Override + public boolean isHandled(GlassKilnRecipe recipe) { + return !recipe.isSpecial(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/IceMakerRecipeCategory.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/IceMakerRecipeCategory.java new file mode 100644 index 00000000..860185e6 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/IceMakerRecipeCategory.java @@ -0,0 +1,136 @@ +package com.hexagram2021.emeraldcraft.common.crafting.compat; + +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import com.hexagram2021.emeraldcraft.common.crafting.IceMakerMenu; +import com.hexagram2021.emeraldcraft.common.crafting.IceMakerRecipe; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.mojang.blaze3d.vertex.PoseStack; +import mezz.jei.api.constants.VanillaTypes; +import mezz.jei.api.gui.IRecipeLayout; +import mezz.jei.api.gui.drawable.IDrawable; +import mezz.jei.api.gui.drawable.IDrawableAnimated; +import mezz.jei.api.gui.drawable.IDrawableStatic; +import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.ingredients.IIngredients; +import mezz.jei.api.recipe.category.IRecipeCategory; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class IceMakerRecipeCategory implements IRecipeCategory { + public static final ResourceLocation UID = new ResourceLocation(MODID, "ice_maker"); + public static final ResourceLocation TEXTURE = new ResourceLocation(MODID, "textures/gui/gui_ice_maker.png"); + + public static final int FREEZETIME = 100; + + private final IDrawable background; + private final IDrawable icon; + private final LoadingCache cachedArrows; + private final IDrawableAnimated animatedFlame; + private final IDrawableStatic[] inputFluids; + + public IceMakerRecipeCategory(IGuiHelper guiHelper) { + this.background = guiHelper.createDrawable(TEXTURE, 0, 0, 148, 56); + this.icon = guiHelper.createDrawableIngredient(new ItemStack(ECBlocks.WorkStation.ICE_MAKER)); + + this.cachedArrows = CacheBuilder.newBuilder() + .maximumSize(25) + .build(new CacheLoader<>() { + @Override + public IDrawableAnimated load(Integer cookTime) { + return guiHelper.drawableBuilder(TEXTURE, 148, 8, 24, 17) + .buildAnimated(cookTime, IDrawableAnimated.StartDirection.LEFT, false); + } + }); + + IDrawableStatic staticFlame = guiHelper.createDrawable(TEXTURE, 148, 0, 32, 8); + this.animatedFlame = guiHelper.createAnimatedDrawable(staticFlame, 300, IDrawableAnimated.StartDirection.LEFT, true); + + this.inputFluids = new IDrawableStatic[] { + guiHelper.createDrawable(TEXTURE, 0, 56, 12, 49), + guiHelper.createDrawable(TEXTURE, 12, 56, 12, 49), + guiHelper.createDrawable(TEXTURE, 24, 56, 12, 49), + guiHelper.createDrawable(TEXTURE, 36, 56, 12, 49), + guiHelper.createDrawable(TEXTURE, 48, 56, 12, 49), + guiHelper.createDrawable(TEXTURE, 60, 56, 12, 49) + }; + } + + @Override + public ResourceLocation getUid() { + return UID; + } + + @Override + public Class getRecipeClass() { + return IceMakerRecipe.class; + } + + @Override + public Component getTitle() { + return new TranslatableComponent("block.emeraldcraft.ice_maker"); + } + + @Override + public IDrawable getBackground() { + return background; + } + + @Override + public IDrawable getIcon() { + return icon; + } + + @Override + public void setIngredients(IceMakerRecipe recipe, IIngredients ingredients) { + ingredients.setOutput(VanillaTypes.ITEM, recipe.getResultItem()); + } + + @Override + public void draw(IceMakerRecipe recipe, PoseStack poseStack, double mouseX, double mouseY) { + animatedFlame.draw(poseStack, 1, 47); + + IDrawableAnimated arrow = getArrow(recipe); + arrow.draw(poseStack, 90, 16); + drawCookTime(recipe, poseStack, 49); + + inputFluids[recipe.getFluidType().getID()].draw(poseStack, 72, 1); + } + + protected void drawCookTime(IceMakerRecipe recipe, PoseStack poseStack, int y) { + int freezeTime = recipe.getFreezingTime(); + if (freezeTime > 0) { + int cookTimeSeconds = freezeTime / 20; + TranslatableComponent timeString = new TranslatableComponent("gui.emeraldcraft.ice_maker.time.seconds", cookTimeSeconds); + Minecraft minecraft = Minecraft.getInstance(); + Font fontRenderer = minecraft.font; + int stringWidth = fontRenderer.width(timeString); + fontRenderer.draw(poseStack, timeString, background.getWidth() - stringWidth, y, 0xFF808080); + } + } + + @Override + public void setRecipe(IRecipeLayout recipeLayout, IceMakerRecipe recipe, IIngredients ingredients) { + IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); + + itemStacks.init(IceMakerMenu.RESULT_SLOT, false, 127, 18); + + itemStacks.set(ingredients); + } + + protected IDrawableAnimated getArrow(IceMakerRecipe recipe) { + int freezeTime = recipe.getFreezingTime(); + if (freezeTime <= 0) { + freezeTime = FREEZETIME; + } + return this.cachedArrows.getUnchecked(freezeTime); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/JEIHelper.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/JEIHelper.java new file mode 100644 index 00000000..1306d0d4 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/JEIHelper.java @@ -0,0 +1,124 @@ +package com.hexagram2021.emeraldcraft.common.crafting.compat; + +import com.hexagram2021.emeraldcraft.common.crafting.*; +import com.hexagram2021.emeraldcraft.common.crafting.recipebook.GlassKilnScreen; +import com.hexagram2021.emeraldcraft.common.crafting.recipebook.IceMakerScreen; +import com.hexagram2021.emeraldcraft.common.crafting.recipebook.MelterScreen; +import com.hexagram2021.emeraldcraft.common.crafting.recipebook.MineralTableScreen; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.util.ECLogger; +import mezz.jei.api.IModPlugin; +import mezz.jei.api.JeiPlugin; +import mezz.jei.api.constants.VanillaRecipeCategoryUid; +import mezz.jei.api.gui.drawable.IDrawableStatic; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.registration.*; +import mezz.jei.api.runtime.IJeiRuntime; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; + +import java.util.ArrayList; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@JeiPlugin +public class JEIHelper implements IModPlugin { + private static final ResourceLocation UID = new ResourceLocation(MODID, "main"); + public static IDrawableStatic slotDrawable; + + @Override + public ResourceLocation getPluginUid() { + return UID; + } + + @Override + public void registerItemSubtypes(ISubtypeRegistration subtypeRegistry) { } + + @Override + public void registerIngredients(IModIngredientRegistration registry) { } + + @Override + public void registerCategories(IRecipeCategoryRegistration registry) { + //Recipes + IGuiHelper guiHelper = registry.getJeiHelpers().getGuiHelper(); + registry.addRecipeCategories( + new CarpentryTableCategory(guiHelper), + new GlassKilnRecipeCategory(guiHelper), + new MineralTableRecipeCategory(guiHelper), + new MelterRecipeCategory(guiHelper), + new IceMakerRecipeCategory(guiHelper) + ); + + slotDrawable = guiHelper.getSlotDrawable(); + } + + @Override + public void registerVanillaCategoryExtensions(IVanillaCategoryExtensionRegistration registration) { } + + @Override + public void registerRecipes(IRecipeRegistration registration) { + ECLogger.info("Adding recipes to JEI!!"); + registration.addRecipes(new ArrayList<>(CarpentryTableRecipe.recipeList.values()), CarpentryTableCategory.UID); + registration.addRecipes(new ArrayList<>(GlassKilnRecipe.recipeList.values()), GlassKilnRecipeCategory.UID); + registration.addRecipes(new ArrayList<>(MineralTableRecipe.recipeList.values()), MineralTableRecipeCategory.UID); + registration.addRecipes(new ArrayList<>(MelterRecipe.recipeList.values()), MelterRecipeCategory.UID); + registration.addRecipes(new ArrayList<>(IceMakerRecipe.recipeList.values()), IceMakerRecipeCategory.UID); + } + + @Override + public void registerRecipeTransferHandlers(IRecipeTransferRegistration registration) { + registration.addRecipeTransferHandler( + GlassKilnMenu.class, + GlassKilnRecipeCategory.UID, + GlassKilnMenu.INGREDIENT_SLOT, 1, + 3, 36 + ); + registration.addRecipeTransferHandler( + GlassKilnMenu.class, + VanillaRecipeCategoryUid.FUEL, + GlassKilnMenu.FUEL_SLOT,1, + 3, 36 + ); + registration.addRecipeTransferHandler( + MineralTableMenu.class, + MineralTableRecipeCategory.UID, + MineralTableMenu.INGREDIENT_SLOT, 1, + 3, 36 + ); + registration.addRecipeTransferHandler( + MelterMenu.class, + MelterRecipeCategory.UID, + MelterMenu.INGREDIENT_SLOT, 1, + 3, 36 + ); + registration.addRecipeTransferHandler( + MelterMenu.class, + VanillaRecipeCategoryUid.FUEL, + MelterMenu.FUEL_SLOT,1, + 3, 36 + ); + } + + @Override + public void registerRecipeCatalysts(IRecipeCatalystRegistration registration) { + registration.addRecipeCatalyst(new ItemStack(ECBlocks.WorkStation.CARPENTRY_TABLE), CarpentryTableCategory.UID); + registration.addRecipeCatalyst(new ItemStack(ECBlocks.WorkStation.GLASS_KILN), GlassKilnRecipeCategory.UID, VanillaRecipeCategoryUid.FUEL); + registration.addRecipeCatalyst(new ItemStack(ECBlocks.WorkStation.MINERAL_TABLE), MineralTableRecipeCategory.UID); + registration.addRecipeCatalyst(new ItemStack(ECBlocks.WorkStation.MELTER), MelterRecipeCategory.UID); + registration.addRecipeCatalyst(new ItemStack(ECBlocks.WorkStation.ICE_MAKER), IceMakerRecipeCategory.UID); + } + + @Override + public void registerGuiHandlers(IGuiHandlerRegistration registration) { + registration.addRecipeClickArea(GlassKilnScreen.class, 78, 32, 28, 23, GlassKilnRecipeCategory.UID, VanillaRecipeCategoryUid.FUEL); + registration.addRecipeClickArea(MineralTableScreen.class, 97, 16, 14, 30, MineralTableRecipeCategory.UID); + registration.addRecipeClickArea(MelterScreen.class, 63, 32, 28, 23, MelterRecipeCategory.UID, VanillaRecipeCategoryUid.FUEL); + registration.addRecipeClickArea(IceMakerScreen.class, 96, 32, 28, 23, IceMakerRecipeCategory.UID); + } + + @Override + public void registerAdvanced(IAdvancedRegistration registration) { } + + @Override + public void onRuntimeAvailable(IJeiRuntime jeiRuntime) { } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/MelterRecipeCategory.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/MelterRecipeCategory.java new file mode 100644 index 00000000..201902ba --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/MelterRecipeCategory.java @@ -0,0 +1,143 @@ +package com.hexagram2021.emeraldcraft.common.crafting.compat; + +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import com.hexagram2021.emeraldcraft.common.crafting.GlassKilnRecipe; +import com.hexagram2021.emeraldcraft.common.crafting.MelterMenu; +import com.hexagram2021.emeraldcraft.common.crafting.MelterRecipe; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.mojang.blaze3d.vertex.PoseStack; +import mezz.jei.api.constants.VanillaTypes; +import mezz.jei.api.gui.IRecipeLayout; +import mezz.jei.api.gui.ITickTimer; +import mezz.jei.api.gui.drawable.IDrawable; +import mezz.jei.api.gui.drawable.IDrawableAnimated; +import mezz.jei.api.gui.drawable.IDrawableStatic; +import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.ingredients.IIngredients; +import mezz.jei.api.recipe.category.IRecipeCategory; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class MelterRecipeCategory implements IRecipeCategory { + public static final ResourceLocation UID = new ResourceLocation(MODID, "melter"); + public static final ResourceLocation TEXTURE = new ResourceLocation(MODID, "textures/gui/gui_melter.png"); + + public static final int MELTTIME = 200; + + private final IDrawable background; + private final IDrawable icon; + private final LoadingCache cachedArrows; + private final IDrawableAnimated animatedFlame; + private final IDrawableStatic[] resultFluids; + + public MelterRecipeCategory(IGuiHelper guiHelper) { + this.background = guiHelper.createDrawable(TEXTURE, 0, 0, 109, 54); + this.icon = guiHelper.createDrawableIngredient(new ItemStack(ECBlocks.WorkStation.MELTER)); + + this.cachedArrows = CacheBuilder.newBuilder() + .maximumSize(25) + .build(new CacheLoader<>() { + @Override + public IDrawableAnimated load(Integer cookTime) { + return guiHelper.drawableBuilder(TEXTURE, 109, 14, 24, 17) + .buildAnimated(cookTime, IDrawableAnimated.StartDirection.LEFT, false); + } + }); + + IDrawableStatic staticFlame = guiHelper.createDrawable(TEXTURE, 109, 0, 14, 14); + this.animatedFlame = guiHelper.createAnimatedDrawable(staticFlame, 300, IDrawableAnimated.StartDirection.TOP, true); + + this.resultFluids = new IDrawableStatic[] { + guiHelper.createDrawable(TEXTURE, 0, 54, 12, 49), + guiHelper.createDrawable(TEXTURE, 12, 54, 12, 49), + guiHelper.createDrawable(TEXTURE, 24, 54, 12, 49), + guiHelper.createDrawable(TEXTURE, 36, 54, 12, 49), + guiHelper.createDrawable(TEXTURE, 48, 54, 12, 49), + guiHelper.createDrawable(TEXTURE, 60, 54, 12, 49) + }; + } + + @Override + public ResourceLocation getUid() { + return UID; + } + + @Override + public Class getRecipeClass() { + return MelterRecipe.class; + } + + @Override + public Component getTitle() { + return new TranslatableComponent("block.emeraldcraft.melter"); + } + + @Override + public IDrawable getBackground() { + return this.background; + } + + @Override + public IDrawable getIcon() { + return this.icon; + } + + @Override + public void setIngredients(MelterRecipe recipe, IIngredients ingredients) { + ingredients.setInput(VanillaTypes.ITEM, recipe.getIngredient().getItems()[0]); + } + + @Override + public void draw(MelterRecipe recipe, PoseStack poseStack, double mouseX, double mouseY) { + animatedFlame.draw(poseStack, 1, 20); + + IDrawableAnimated arrow = getArrow(recipe); + arrow.draw(poseStack, 24, 18); + drawCookTime(recipe, poseStack, 22); + + resultFluids[recipe.getFluidType().getID()].draw(poseStack, 65, 2); + } + + protected void drawCookTime(MelterRecipe recipe, PoseStack poseStack, int y) { + int meltTime = recipe.getMeltingTime(); + if (meltTime > 0) { + int cookTimeSeconds = meltTime / 20; + TranslatableComponent timeString = new TranslatableComponent("gui.emeraldcraft.melter.time.seconds", cookTimeSeconds); + Minecraft minecraft = Minecraft.getInstance(); + Font fontRenderer = minecraft.font; + int stringWidth = fontRenderer.width(timeString); + fontRenderer.draw(poseStack, timeString, background.getWidth() - stringWidth, y, 0xFF808080); + } + } + + @Override + public void setRecipe(IRecipeLayout recipeLayout, MelterRecipe recipe, IIngredients ingredients) { + IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); + + itemStacks.init(MelterMenu.INGREDIENT_SLOT, true, 0, 0); + + itemStacks.set(ingredients); + } + + protected IDrawableAnimated getArrow(MelterRecipe recipe) { + int meltTime = recipe.getMeltingTime(); + if (meltTime <= 0) { + meltTime = MELTTIME; + } + return this.cachedArrows.getUnchecked(meltTime); + } + + @Override + public boolean isHandled(MelterRecipe recipe) { + return !recipe.isSpecial(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/MineralTableRecipeCategory.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/MineralTableRecipeCategory.java new file mode 100644 index 00000000..5dad5293 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/MineralTableRecipeCategory.java @@ -0,0 +1,123 @@ +package com.hexagram2021.emeraldcraft.common.crafting.compat; + +import com.hexagram2021.emeraldcraft.common.crafting.MineralTableMenu; +import com.hexagram2021.emeraldcraft.common.crafting.MineralTableRecipe; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.mojang.blaze3d.vertex.PoseStack; +import mezz.jei.api.constants.VanillaTypes; +import mezz.jei.api.gui.IRecipeLayout; +import mezz.jei.api.gui.ITickTimer; +import mezz.jei.api.gui.drawable.IDrawable; +import mezz.jei.api.gui.drawable.IDrawableAnimated; +import mezz.jei.api.gui.drawable.IDrawableStatic; +import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.ingredients.IIngredients; +import mezz.jei.api.recipe.category.IRecipeCategory; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class MineralTableRecipeCategory implements IRecipeCategory { + public static final ResourceLocation UID = new ResourceLocation(MODID, "mineral_table"); + public static final ResourceLocation TEXTURE = new ResourceLocation(MODID, "textures/gui/gui_mineral_table.png"); + + private final IDrawable background; + private final IDrawable icon; + private final IDrawable slotDrawable; + private final IDrawableAnimated arrow; + private final IDrawableAnimated bubbles; + private final IDrawableStatic blazeHeat; + + public MineralTableRecipeCategory(IGuiHelper guiHelper) { + background = guiHelper.drawableBuilder(TEXTURE, 0, 0, 64, 60) + .addPadding(1, 0, 0, 50) + .build(); + icon = guiHelper.createDrawableIngredient(new ItemStack(ECBlocks.WorkStation.MINERAL_TABLE)); + + arrow = guiHelper.drawableBuilder(TEXTURE, 64, 0, 9, 28) + .buildAnimated(400, IDrawableAnimated.StartDirection.TOP, false); + + ITickTimer bubblesTickTimer = new BubblesTickTimer(guiHelper); + bubbles = guiHelper.drawableBuilder(TEXTURE, 73, 0, 12, 29) + .buildAnimated(bubblesTickTimer, IDrawableAnimated.StartDirection.BOTTOM); + + blazeHeat = guiHelper.createDrawable(TEXTURE, 64, 29, 18, 4); + + slotDrawable = guiHelper.getSlotDrawable(); + } + + @Override + public ResourceLocation getUid() { + return UID; + } + + @Override + public Class getRecipeClass() { + return MineralTableRecipe.class; + } + + @Override + public Component getTitle() { + return new TranslatableComponent("block.emeraldcraft.mineral_table"); + } + + @Override + public IDrawable getBackground() { + return background; + } + + @Override + public IDrawable getIcon() { + return icon; + } + + @Override + public void setIngredients(MineralTableRecipe recipe, IIngredients ingredients) { + ingredients.setInputIngredients(recipe.getIngredients()); + ingredients.setOutput(VanillaTypes.ITEM, recipe.getResultItem()); + } + + @Override + public void draw(MineralTableRecipe recipe, PoseStack poseStack, double mouseX, double mouseY) { + blazeHeat.draw(poseStack, 5, 30); + bubbles.draw(poseStack, 8, 0); + arrow.draw(poseStack, 42, 2); + } + + @Override + public void setRecipe(IRecipeLayout recipeLayout, MineralTableRecipe recipe, IIngredients ingredients) { + IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); + + itemStacks.init(MineralTableMenu.INGREDIENT_SLOT, true, 23, 2); + itemStacks.init(MineralTableMenu.RESULT_SLOT, false, 80, 2); + + itemStacks.setBackground(MineralTableMenu.RESULT_SLOT, slotDrawable); + + itemStacks.set(ingredients); + } + + private static class BubblesTickTimer implements ITickTimer { + @SuppressWarnings("JavadocReference") + private static final int[] BUBBLE_LENGTHS = new int[]{29, 23, 18, 13, 9, 5, 0}; + private final ITickTimer internalTimer; + + public BubblesTickTimer(IGuiHelper guiHelper) { + this.internalTimer = guiHelper.createTickTimer(14, BUBBLE_LENGTHS.length - 1, false); + } + + @Override + public int getValue() { + int timerValue = this.internalTimer.getValue(); + return BUBBLE_LENGTHS[timerValue]; + } + + @Override + public int getMaxValue() { + return BUBBLE_LENGTHS[0]; + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/package-info.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/package-info.java new file mode 100644 index 00000000..9cccd394 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/package-info.java @@ -0,0 +1,8 @@ + + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package com.hexagram2021.emeraldcraft.common.crafting.compat; + +import net.minecraft.MethodsReturnNonnullByDefault; +import javax.annotation.ParametersAreNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/CarpentryTableScreen.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/CarpentryTableScreen.java new file mode 100644 index 00000000..93c9c80a --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/CarpentryTableScreen.java @@ -0,0 +1,182 @@ +package com.hexagram2021.emeraldcraft.common.crafting.recipebook; + +import com.hexagram2021.emeraldcraft.common.crafting.CarpentryTableMenu; +import com.hexagram2021.emeraldcraft.common.crafting.CarpentryTableRecipe; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.resources.sounds.SimpleSoundInstance; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Inventory; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import java.util.List; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class CarpentryTableScreen extends AbstractContainerScreen { + private static final ResourceLocation BG_LOCATION = new ResourceLocation(MODID, "textures/gui/container/carpentry.png"); + private float scrollOffs; + private boolean scrolling; + private int startIndex; + private boolean displayRecipes; + + public CarpentryTableScreen(CarpentryTableMenu menu, Inventory inventory, Component component) { + super(menu, inventory, component); + menu.registerUpdateListener(this::containerChanged); + --this.titleLabelY; + } + + @Override + public void render(PoseStack transform, int x, int y, float partialTicks) { + super.render(transform, x, y, partialTicks); + this.renderTooltip(transform, x, y); + } + + @Override + protected void renderBg(PoseStack transform, float partialTicks, int x, int y) { + this.renderBackground(transform); + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.setShaderTexture(0, BG_LOCATION); + int i = this.leftPos; + int j = this.topPos; + this.blit(transform, i, j, 0, 0, this.imageWidth, this.imageHeight); + int k = (int)(41.0F * this.scrollOffs); + this.blit(transform, i + 119, j + 15 + k, 176 + (this.isScrollBarActive() ? 0 : 12), 0, 12, 15); + int l = this.leftPos + 52; + int i1 = this.topPos + 14; + int j1 = this.startIndex + 12; + this.renderButtons(transform, x, y, l, i1, j1); + this.renderRecipes(l, i1, j1); + } + + @Override + protected void renderTooltip(PoseStack transform, int x, int y) { + super.renderTooltip(transform, x, y); + if (this.displayRecipes) { + int i = this.leftPos + 52; + int j = this.topPos + 14; + int k = this.startIndex + 12; + List list = this.menu.getRecipes(); + + for(int l = this.startIndex; l < k && l < this.menu.getNumRecipes(); ++l) { + int i1 = l - this.startIndex; + int j1 = i + i1 % 4 * 16; + int k1 = j + i1 / 4 * 18 + 2; + if (x >= j1 && x < j1 + 16 && y >= k1 && y < k1 + 18) { + this.renderTooltip(transform, list.get(l).getResultItem(), x, y); + } + } + } + + } + + private void renderButtons(PoseStack p_99342_, int p_99343_, int p_99344_, int p_99345_, int p_99346_, int p_99347_) { + for(int i = this.startIndex; i < p_99347_ && i < this.menu.getNumRecipes(); ++i) { + int j = i - this.startIndex; + int k = p_99345_ + j % 4 * 16; + int l = j / 4; + int i1 = p_99346_ + l * 18 + 2; + int j1 = this.imageHeight; + if (i == this.menu.getSelectedRecipeIndex()) { + j1 += 18; + } else if (p_99343_ >= k && p_99344_ >= i1 && p_99343_ < k + 16 && p_99344_ < i1 + 18) { + j1 += 36; + } + + this.blit(p_99342_, k, i1 - 1, 0, j1, 16, 18); + } + + } + + private void renderRecipes(int x, int y, int endIndex) { + List list = this.menu.getRecipes(); + + for(int i = this.startIndex; i < endIndex && i < this.menu.getNumRecipes(); ++i) { + int j = i - this.startIndex; + int k = x + j % 4 * 16; + int l = j / 4; + int i1 = y + l * 18 + 2; + this.minecraft.getItemRenderer().renderAndDecorateItem(list.get(i).getResultItem(), k, i1); + } + } + + @Override + public boolean mouseClicked(double p_99318_, double p_99319_, int p_99320_) { + this.scrolling = false; + if (this.displayRecipes) { + int i = this.leftPos + 52; + int j = this.topPos + 14; + int k = this.startIndex + 12; + + for(int l = this.startIndex; l < k; ++l) { + int i1 = l - this.startIndex; + double d0 = p_99318_ - (double)(i + i1 % 4 * 16); + double d1 = p_99319_ - (double)(j + i1 / 4 * 18); + if (d0 >= 0.0D && d1 >= 0.0D && d0 < 16.0D && d1 < 18.0D && this.menu.clickMenuButton(this.minecraft.player, l)) { + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_STONECUTTER_SELECT_RECIPE, 1.0F)); + this.minecraft.gameMode.handleInventoryButtonClick((this.menu).containerId, l); + return true; + } + } + + i = this.leftPos + 119; + j = this.topPos + 9; + if (p_99318_ >= (double)i && p_99318_ < (double)(i + 12) && p_99319_ >= (double)j && p_99319_ < (double)(j + 54)) { + this.scrolling = true; + } + } + + return super.mouseClicked(p_99318_, p_99319_, p_99320_); + } + + @Override + public boolean mouseDragged(double p_99322_, double p_99323_, int p_99324_, double p_99325_, double p_99326_) { + if (this.scrolling && this.isScrollBarActive()) { + int i = this.topPos + 14; + int j = i + 54; + this.scrollOffs = ((float)p_99323_ - (float)i - 7.5F) / ((float)(j - i) - 15.0F); + this.scrollOffs = Mth.clamp(this.scrollOffs, 0.0F, 1.0F); + this.startIndex = (int)((double)(this.scrollOffs * (float)this.getOffscreenRows()) + 0.5D) * 4; + return true; + } else { + return super.mouseDragged(p_99322_, p_99323_, p_99324_, p_99325_, p_99326_); + } + } + + @Override + public boolean mouseScrolled(double p_99314_, double p_99315_, double p_99316_) { + if (this.isScrollBarActive()) { + int i = this.getOffscreenRows(); + this.scrollOffs = (float)((double)this.scrollOffs - p_99316_ / (double)i); + this.scrollOffs = Mth.clamp(this.scrollOffs, 0.0F, 1.0F); + this.startIndex = (int)((double)(this.scrollOffs * (float)i) + 0.5D) * 4; + } + + return true; + } + + private boolean isScrollBarActive() { + return this.displayRecipes && this.menu.getNumRecipes() > 12; + } + + protected int getOffscreenRows() { + return (this.menu.getNumRecipes() + 4 - 1) / 4 - 3; + } + + private void containerChanged() { + this.displayRecipes = this.menu.hasInputItem(); + if (!this.displayRecipes) { + this.scrollOffs = 0.0F; + this.startIndex = 0; + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/ContinuousMinerScreen.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/ContinuousMinerScreen.java new file mode 100644 index 00000000..541b3a1f --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/ContinuousMinerScreen.java @@ -0,0 +1,49 @@ +package com.hexagram2021.emeraldcraft.common.crafting.recipebook; + +import com.hexagram2021.emeraldcraft.common.blocks.entity.ContinuousMinerBlockEntity; +import com.hexagram2021.emeraldcraft.common.crafting.ContinuousMinerMenu; +import com.hexagram2021.emeraldcraft.common.util.ECLogger; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Inventory; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class ContinuousMinerScreen extends AbstractContainerScreen { + private static final ResourceLocation BG_LOCATION = new ResourceLocation(MODID, "textures/gui/container/continuous_miner.png"); + + public ContinuousMinerScreen(ContinuousMinerMenu menu, Inventory inventory, Component component) { + super(menu, inventory, component); + --this.titleLabelY; + } + + @Override + public void render(PoseStack transform, int x, int y, float partialTicks) { + this.renderBackground(transform); + super.render(transform, x, y, partialTicks); + this.renderTooltip(transform, x, y); + } + + @Override + protected void renderBg(PoseStack transform, float partialTicks, int x, int y) { + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.setShaderTexture(0, BG_LOCATION); + int i = (this.width - this.imageWidth) / 2; + int j = (this.height - this.imageHeight) / 2; + this.blit(transform, i, j, 0, 0, this.imageWidth, this.imageHeight); + int energyLevel = this.menu.getFluidLevel(); + if(energyLevel > 0) { + int k = Mth.clamp((ContinuousMinerBlockEntity.MAX_FLUID_LEVEL - 1 - energyLevel) / 5, 0, 49); + this.blit(transform, i + 119, j + 20 + k, 176, k, 12, 49 - k); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/GlassKilnRecipeBookComponent.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/GlassKilnRecipeBookComponent.java new file mode 100644 index 00000000..8163c7fd --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/GlassKilnRecipeBookComponent.java @@ -0,0 +1,82 @@ +package com.hexagram2021.emeraldcraft.common.crafting.recipebook; + + +import net.minecraft.client.gui.screens.recipebook.RecipeBookComponent; +import net.minecraft.core.NonNullList; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import javax.annotation.Nullable; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + +@OnlyIn(Dist.CLIENT) +public class GlassKilnRecipeBookComponent extends RecipeBookComponent { + private static final Component FILTER_NAME = new TranslatableComponent("gui.recipebook.toggleRecipes.kilnable"); + + @Nullable + private Ingredient fuels; + + @Override + protected void initFilterButtonTextures() { + this.filterButton.initTextureValues(152, 182, 28, 18, RECIPE_BOOK_LOCATION); + } + + @Override + public void slotClicked(@Nullable Slot p_100120_) { + super.slotClicked(p_100120_); + if (p_100120_ != null && p_100120_.index < this.menu.getSize()) { + this.ghostRecipe.clear(); + } + } + + @Override + public void setupGhostRecipe(Recipe p_100122_, List p_100123_) { + ItemStack itemstack = p_100122_.getResultItem(); + this.ghostRecipe.setRecipe(p_100122_); + this.ghostRecipe.addIngredient(Ingredient.of(itemstack), (p_100123_.get(2)).x, (p_100123_.get(2)).y); + NonNullList ingredients = p_100122_.getIngredients(); + Slot slot = p_100123_.get(1); + if (slot.getItem().isEmpty()) { + if (this.fuels == null) { + this.fuels = Ingredient.of(this.getFuelItems().stream().map(ItemStack::new)); + } + + this.ghostRecipe.addIngredient(this.fuels, slot.x, slot.y); + } + + Iterator iterator = ingredients.iterator(); + + for(int i = 0; i < 2; ++i) { + if (!iterator.hasNext()) { + return; + } + + Ingredient ingredient = iterator.next(); + if (!ingredient.isEmpty()) { + Slot slot1 = p_100123_.get(i); + this.ghostRecipe.addIngredient(ingredient, slot1.x, slot1.y); + } + } + + } + + + @Override + protected Component getRecipeFilterName() { + return FILTER_NAME; + } + + protected Set getFuelItems() { + return AbstractFurnaceBlockEntity.getFuel().keySet(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/GlassKilnScreen.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/GlassKilnScreen.java new file mode 100644 index 00000000..18cdd6c9 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/GlassKilnScreen.java @@ -0,0 +1,131 @@ +package com.hexagram2021.emeraldcraft.common.crafting.recipebook; + +import com.hexagram2021.emeraldcraft.common.crafting.GlassKilnMenu; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.gui.components.ImageButton; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.gui.screens.recipebook.RecipeBookComponent; +import net.minecraft.client.gui.screens.recipebook.RecipeUpdateListener; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.inventory.ClickType; +import net.minecraft.world.inventory.Slot; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class GlassKilnScreen extends AbstractContainerScreen implements RecipeUpdateListener { + private static final ResourceLocation RECIPE_BUTTON_LOCATION = new ResourceLocation("textures/gui/recipe_button.png"); + private static final ResourceLocation texture = new ResourceLocation(MODID, "textures/gui/container/glass_kiln.png"); + private static final GlassKilnRecipeBookComponent recipeBookComponent = new GlassKilnRecipeBookComponent(); + + private boolean widthTooNarrow; + + public GlassKilnScreen(GlassKilnMenu menu, Inventory inventory, Component component) { + super(menu, inventory, component); + } + + @Override + public void init() { + super.init(); + this.widthTooNarrow = this.width < 379; + recipeBookComponent.init(this.width, this.height, this.minecraft, this.widthTooNarrow, this.menu); + this.leftPos = recipeBookComponent.updateScreenPosition(this.width, this.imageWidth); + this.addRenderableWidget(new ImageButton(this.leftPos + 20, this.height / 2 - 49, 20, 18, 0, 0, 19, RECIPE_BUTTON_LOCATION, (p_97863_) -> { + recipeBookComponent.toggleVisibility(); + this.leftPos = recipeBookComponent.updateScreenPosition(this.width, this.imageWidth); + ((ImageButton)p_97863_).setPosition(this.leftPos + 20, this.height / 2 - 49); + })); + this.titleLabelX = (this.imageWidth - this.font.width(this.title)) / 2; + } + + @Override + public void containerTick() { + super.containerTick(); + recipeBookComponent.tick(); + } + + @Override + public void render(PoseStack transform, int x, int y, float partialTicks) { + this.renderBackground(transform); + if (recipeBookComponent.isVisible() && this.widthTooNarrow) { + this.renderBg(transform, partialTicks, x, y); + recipeBookComponent.render(transform, x, y, partialTicks); + } else { + recipeBookComponent.render(transform, x, y, partialTicks); + super.render(transform, x, y, partialTicks); + recipeBookComponent.renderGhostRecipe(transform, this.leftPos, this.topPos, true, partialTicks); + } + + this.renderTooltip(transform, x, y); + recipeBookComponent.renderTooltip(transform, this.leftPos, this.topPos, x, y); + } + + @Override + protected void renderBg(PoseStack transform, float partialTicks, int x, int y) { + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.setShaderTexture(0, texture); + int i = this.leftPos; + int j = this.topPos; + this.blit(transform, i, j, 0, 0, this.imageWidth, this.imageHeight); + if (this.menu.isLit()) { + int k = this.menu.getLitProgress(); + this.blit(transform, i + 56, j + 36 + 12 - k, 176, 12 - k, 14, k + 1); + } + + int l = this.menu.getBurnProgress(); + this.blit(transform, i + 79, j + 34, 176, 14, l + 1, 16); + } + + @Override + public boolean mouseClicked(double p_97834_, double p_97835_, int p_97836_) { + if (recipeBookComponent.mouseClicked(p_97834_, p_97835_, p_97836_)) { + return true; + } + return widthTooNarrow && recipeBookComponent.isVisible() ? true : super.mouseClicked(p_97834_, p_97835_, p_97836_); + } + + @Override + protected void slotClicked(Slot p_97848_, int p_97849_, int p_97850_, ClickType p_97851_) { + super.slotClicked(p_97848_, p_97849_, p_97850_, p_97851_); + recipeBookComponent.slotClicked(p_97848_); + } + + @Override + public boolean keyPressed(int p_97844_, int p_97845_, int p_97846_) { + return !recipeBookComponent.keyPressed(p_97844_, p_97845_, p_97846_) && super.keyPressed(p_97844_, p_97845_, p_97846_); + } + + @Override + protected boolean hasClickedOutside(double p_97838_, double p_97839_, int p_97840_, int p_97841_, int p_97842_) { + boolean flag = p_97838_ < (double)p_97840_ || p_97839_ < (double)p_97841_ || p_97838_ >= (double)(p_97840_ + this.imageWidth) || p_97839_ >= (double)(p_97841_ + this.imageHeight); + return recipeBookComponent.hasClickedOutside(p_97838_, p_97839_, this.leftPos, this.topPos, this.imageWidth, this.imageHeight, p_97842_) && flag; + } + + @Override + public boolean charTyped(char p_97831_, int p_97832_) { + return recipeBookComponent.charTyped(p_97831_, p_97832_) || super.charTyped(p_97831_, p_97832_); + } + + @Override + public void recipesUpdated() { + recipeBookComponent.recipesUpdated(); + } + + @Override + public RecipeBookComponent getRecipeBookComponent() { + return recipeBookComponent; + } + + @Override + public void removed() { + recipeBookComponent.removed(); + super.removed(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/IceMakerScreen.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/IceMakerScreen.java new file mode 100644 index 00000000..91730788 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/IceMakerScreen.java @@ -0,0 +1,58 @@ +package com.hexagram2021.emeraldcraft.common.crafting.recipebook; + +import com.hexagram2021.emeraldcraft.common.blocks.entity.IceMakerBlockEntity; +import com.hexagram2021.emeraldcraft.common.crafting.IceMakerMenu; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Inventory; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class IceMakerScreen extends AbstractContainerScreen { + private static final ResourceLocation BG_LOCATION = new ResourceLocation(MODID, "textures/gui/container/ice_maker.png"); + + public IceMakerScreen(IceMakerMenu menu, Inventory inventory, Component component) { + super(menu, inventory, component); + --this.titleLabelY; + } + + @Override + public void render(PoseStack transform, int x, int y, float partialTicks) { + this.renderBackground(transform); + super.render(transform, x, y, partialTicks); + this.renderTooltip(transform, x, y); + } + + @Override + protected void renderBg(PoseStack transform, float partialTicks, int x, int y) { + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.setShaderTexture(0, BG_LOCATION); + int i = (this.width - this.imageWidth) / 2; + int j = (this.height - this.imageHeight) / 2; + this.blit(transform, i, j, 0, 0, this.imageWidth, this.imageHeight); + + int l = this.menu.getFreezeProgress(); + this.blit(transform, i + 97, j + 34, 176, 8, l + 1, 16); + + int ingredientLevel = this.menu.getIngredientFluidLevel(); + if(ingredientLevel > 0) { + int k = Mth.clamp((IceMakerBlockEntity.MAX_INGREDIENT_FLUID_LEVEL - 1 - ingredientLevel) / 20, 0, 49); + this.blit(transform, i + 79, j + 18 + k, 12 * menu.getFluidTypeIndex(), 166 + k, 12, 49 - k); + } + + int condensateLevel = this.menu.getCondensateFluidLevel(); + if(condensateLevel > 0) { + int k = Mth.clamp((IceMakerBlockEntity.MAX_CONDENSATE_FLUID_LEVEL - condensateLevel) / 25, 0, 32); + this.blit(transform, i + 8 + k, j + 64, 176 + k, 0, 32 - k, 8); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/MelterScreen.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/MelterScreen.java new file mode 100644 index 00000000..05a78274 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/MelterScreen.java @@ -0,0 +1,56 @@ +package com.hexagram2021.emeraldcraft.common.crafting.recipebook; + +import com.hexagram2021.emeraldcraft.common.blocks.entity.MelterBlockEntity; +import com.hexagram2021.emeraldcraft.common.crafting.MelterMenu; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Inventory; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class MelterScreen extends AbstractContainerScreen { + private static final ResourceLocation BG_LOCATION = new ResourceLocation(MODID, "textures/gui/container/melter.png"); + + public MelterScreen(MelterMenu menu, Inventory inventory, Component component) { + super(menu, inventory, component); + --this.titleLabelY; + } + + @Override + public void render(PoseStack transform, int x, int y, float partialTicks) { + this.renderBackground(transform); + super.render(transform, x, y, partialTicks); + this.renderTooltip(transform, x, y); + } + + @Override + protected void renderBg(PoseStack transform, float partialTicks, int x, int y) { + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.setShaderTexture(0, BG_LOCATION); + int i = (this.width - this.imageWidth) / 2; + int j = (this.height - this.imageHeight) / 2; + this.blit(transform, i, j, 0, 0, this.imageWidth, this.imageHeight); + if (this.menu.isLit()) { + int k = this.menu.getLitProgress(); + this.blit(transform, i + 41, j + 36 + 12 - k, 176, 12 - k, 14, k + 1); + } + + int l = this.menu.getBurnProgress(); + this.blit(transform, i + 64, j + 34, 176, 14, l + 1, 16); + + int energyLevel = this.menu.getFluidLevel(); + if(energyLevel > 0) { + int k = Mth.clamp((MelterBlockEntity.MAX_FLUID_LEVEL - 1 - energyLevel) / 20, 0, 49); + this.blit(transform, i + 105, j + 18 + k, 12 * menu.getFluidTypeIndex(), 166 + k, 12, 49 - k); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/MineralTableScreen.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/MineralTableScreen.java new file mode 100644 index 00000000..30dd2de3 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/MineralTableScreen.java @@ -0,0 +1,64 @@ +package com.hexagram2021.emeraldcraft.common.crafting.recipebook; + +import com.hexagram2021.emeraldcraft.common.crafting.MineralTableMenu; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Inventory; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class MineralTableScreen extends AbstractContainerScreen { + private static final ResourceLocation MINERAL_TABLE_LOCATION = new ResourceLocation(MODID, "textures/gui/container/mineral_table.png"); + private static final int[] BUBBLELENGTHS = new int[]{29, 24, 20, 16, 11, 6, 0}; + + public MineralTableScreen(MineralTableMenu menu, Inventory inventory, Component component) { + super(menu, inventory, component); + } + + @Override + protected void init() { + super.init(); + this.titleLabelX = (this.imageWidth - this.font.width(this.title)) / 2; + } + + @Override + public void render(PoseStack transform, int x, int y, float partialTicks) { + this.renderBackground(transform); + super.render(transform, x, y, partialTicks); + this.renderTooltip(transform, x, y); + } + + @Override + protected void renderBg(PoseStack transform, float partialTicks, int x, int y) { + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.setShaderTexture(0, MINERAL_TABLE_LOCATION); + int i = (this.width - this.imageWidth) / 2; + int j = (this.height - this.imageHeight) / 2; + this.blit(transform, i, j, 0, 0, this.imageWidth, this.imageHeight); + int k = this.menu.getLitProgress(); + int l = Mth.clamp((18 * k + 20 - 1) / 20, 0, 18); + if (l > 0) { + this.blit(transform, i + 60, j + 44, 176, 29, l, 4); + } + + int i1 = this.menu.getBurnProgress(); + if (i1 > 0) { + int j1 = (int)(28.0F * (1.0F - (float)i1 / 400.0F)); + if (j1 > 0) { + this.blit(transform, i + 97, j + 16, 176, 0, 9, j1); + } + + j1 = BUBBLELENGTHS[i1 / 2 % 7]; + if (j1 > 0) { + this.blit(transform, i + 63, j + 14 + 29 - j1, 185, 29 - j1, 12, j1); + } + } + + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/CarpentryTableRecipeSerializer.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/CarpentryTableRecipeSerializer.java new file mode 100644 index 00000000..39d4b2a0 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/CarpentryTableRecipeSerializer.java @@ -0,0 +1,58 @@ +package com.hexagram2021.emeraldcraft.common.crafting.serializer; + +import com.google.gson.JsonObject; +import com.hexagram2021.emeraldcraft.common.crafting.CarpentryTableRecipe; +import net.minecraft.core.Registry; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.GsonHelper; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraftforge.registries.ForgeRegistryEntry; + +import javax.annotation.Nullable; + +public class CarpentryTableRecipeSerializer extends ForgeRegistryEntry> implements RecipeSerializer{ + private final CarpentryTableRecipeSerializer.Creator factory; + + public CarpentryTableRecipeSerializer(CarpentryTableRecipeSerializer.Creator creator) { + this.factory = creator; + } + + @Override + public T fromJson(ResourceLocation id, JsonObject json) { + String s = GsonHelper.getAsString(json, "group", ""); + Ingredient ingredient; + if (GsonHelper.isArrayNode(json, "ingredients")) { + ingredient = Ingredient.fromJson(GsonHelper.getAsJsonArray(json, "ingredients")); + } else { + ingredient = Ingredient.fromJson(GsonHelper.getAsJsonObject(json, "ingredients")); + } + + String s1 = GsonHelper.getAsString(json, "result"); + int i = GsonHelper.getAsInt(json, "count"); + ItemStack itemstack = new ItemStack(Registry.ITEM.get(new ResourceLocation(s1)), i); + return this.factory.create(id, s, ingredient, itemstack); + } + + @Nullable + @Override + public T fromNetwork(ResourceLocation id, FriendlyByteBuf buf) { + String s = buf.readUtf(); + Ingredient ingredient = Ingredient.fromNetwork(buf); + ItemStack itemstack = buf.readItem(); + return this.factory.create(id, s, ingredient, itemstack); + } + + @Override + public void toNetwork(FriendlyByteBuf buf, T recipe) { + buf.writeUtf(recipe.getGroup()); + recipe.getIngredient().toNetwork(buf); + buf.writeItem(recipe.getResultItem()); + } + + public interface Creator { + T create(ResourceLocation id, String group, Ingredient ingredient, ItemStack itemStack); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/GlassKilnRecipeSerializer.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/GlassKilnRecipeSerializer.java new file mode 100644 index 00000000..adfafcc0 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/GlassKilnRecipeSerializer.java @@ -0,0 +1,76 @@ +package com.hexagram2021.emeraldcraft.common.crafting.serializer; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.hexagram2021.emeraldcraft.common.crafting.GlassKilnRecipe; +import net.minecraft.core.Registry; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.GsonHelper; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.AbstractCookingRecipe; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.item.crafting.ShapedRecipe; +import net.minecraftforge.registries.ForgeRegistryEntry; + +import javax.annotation.Nullable; + +public class GlassKilnRecipeSerializer extends ForgeRegistryEntry> implements RecipeSerializer { + private final int defaultCookingTime; + private final GlassKilnRecipeSerializer.Creator factory; + + public GlassKilnRecipeSerializer(GlassKilnRecipeSerializer.Creator creator, int cookingTime) { + this.defaultCookingTime = cookingTime; + this.factory = creator; + } + + @Override + public T fromJson(ResourceLocation id, JsonObject json) { + String s = GsonHelper.getAsString(json, "group", ""); + JsonElement jsonelement = + GsonHelper.isArrayNode(json, "ingredient") ? + GsonHelper.getAsJsonArray(json, "ingredient") : + GsonHelper.getAsJsonObject(json, "ingredient"); + Ingredient ingredient = Ingredient.fromJson(jsonelement); + + if (!json.has("result")) throw new com.google.gson.JsonSyntaxException("Missing result, expected to find a string or object"); + ItemStack itemstack; + if (json.get("result").isJsonObject()) { + itemstack = ShapedRecipe.itemStackFromJson(GsonHelper.getAsJsonObject(json, "result")); + } else { + String s1 = GsonHelper.getAsString(json, "result"); + ResourceLocation resourcelocation = new ResourceLocation(s1); + itemstack = new ItemStack(Registry.ITEM.getOptional(resourcelocation).orElseThrow( + () -> new IllegalStateException("Item: " + s1 + " does not exist") + )); + } + float f = GsonHelper.getAsFloat(json, "experience", 0.0F); + int i = GsonHelper.getAsInt(json, "cookingtime", this.defaultCookingTime); + return this.factory.create(id, s, ingredient, itemstack, f, i); + } + + @Nullable + @Override + public T fromNetwork(ResourceLocation id, FriendlyByteBuf buf) { + String s = buf.readUtf(); + Ingredient ingredient = Ingredient.fromNetwork(buf); + ItemStack itemstack = buf.readItem(); + float f = buf.readFloat(); + int i = buf.readVarInt(); + return this.factory.create(id, s, ingredient, itemstack, f, i); + } + + @Override + public void toNetwork(FriendlyByteBuf buf, T recipe) { + buf.writeUtf(recipe.getGroup()); + recipe.getIngredient().toNetwork(buf); + buf.writeItem(recipe.getResultItem()); + buf.writeFloat(recipe.getExperience()); + buf.writeVarInt(recipe.getCookingTime()); + } + + public interface Creator { + T create(ResourceLocation id, String group, Ingredient ingredient, ItemStack result, float experience, int cookingtime); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/IceMakerRecipeSerializer.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/IceMakerRecipeSerializer.java new file mode 100644 index 00000000..bf76283a --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/IceMakerRecipeSerializer.java @@ -0,0 +1,81 @@ +package com.hexagram2021.emeraldcraft.common.crafting.serializer; + +import com.google.gson.JsonObject; +import com.hexagram2021.emeraldcraft.common.crafting.FluidType; +import com.hexagram2021.emeraldcraft.common.crafting.IceMakerRecipe; +import net.minecraft.core.Registry; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.GsonHelper; +import net.minecraft.world.Container; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.item.crafting.ShapedRecipe; +import net.minecraftforge.registries.ForgeRegistryEntry; + +import javax.annotation.Nullable; + +public class IceMakerRecipeSerializer extends ForgeRegistryEntry> implements RecipeSerializer { + private final int defaultFreezingTime; + private final IceMakerRecipeSerializer.Creator factory; + + public IceMakerRecipeSerializer(IceMakerRecipeSerializer.Creator creator, int freezingTime) { + this.defaultFreezingTime = freezingTime; + this.factory = creator; + } + + @Override + public T fromJson(ResourceLocation id, JsonObject json) { + String group = GsonHelper.getAsString(json, "group", ""); + + if (!json.has("ingredient")) throw new com.google.gson.JsonSyntaxException("Missing ingredient, expected to find an object"); + FluidType fluidType; + int fluidAmount; + if (json.get("ingredient").isJsonObject()) { + JsonObject ingredient = GsonHelper.getAsJsonObject(json, "ingredient"); + fluidType = FluidType.valueOf(GsonHelper.getAsString(ingredient, "fluid")); + fluidAmount = GsonHelper.getAsInt(ingredient, "amount", IceMakerRecipe.DEFAULT_INPUT_AMOUNT); + } else { + throw new IllegalStateException("ingredient is not a Json object"); + } + + ItemStack result; + if (!json.has("result")) throw new com.google.gson.JsonSyntaxException("Missing result, expected to find a string or object"); + if (json.get("result").isJsonObject()) { + result = ShapedRecipe.itemStackFromJson(GsonHelper.getAsJsonObject(json, "result")); + } else { + String s1 = GsonHelper.getAsString(json, "result"); + ResourceLocation resourcelocation = new ResourceLocation(s1); + result = new ItemStack(Registry.ITEM.getOptional(resourcelocation).orElseThrow( + () -> new IllegalStateException("Item: " + s1 + " does not exist") + )); + } + int i = GsonHelper.getAsInt(json, "freezingtime", this.defaultFreezingTime); + return this.factory.create(id, group, fluidType, fluidAmount, result, i); + } + + @Nullable + @Override + public T fromNetwork(ResourceLocation id, FriendlyByteBuf buf) { + String group = buf.readUtf(); + FluidType fluidType = FluidType.valueOf(buf.readUtf()); + int fluidAmount = buf.readVarInt(); + ItemStack result = buf.readItem(); + int i = buf.readVarInt(); + return this.factory.create(id, group, fluidType, fluidAmount, result, i); + } + + @Override + public void toNetwork(FriendlyByteBuf buf, T recipe) { + buf.writeUtf(recipe.getGroup()); + buf.writeUtf(recipe.getFluidType().toString()); + buf.writeVarInt(recipe.getFluidAmount()); + buf.writeItem(recipe.getResultItem()); + buf.writeVarInt(recipe.getFreezingTime()); + } + + public interface Creator> { + T create(ResourceLocation id, String group, FluidType inputFluid, int inputAmount, ItemStack result, int freezingTime); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/MelterRecipeSerializer.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/MelterRecipeSerializer.java new file mode 100644 index 00000000..0ea32060 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/MelterRecipeSerializer.java @@ -0,0 +1,71 @@ +package com.hexagram2021.emeraldcraft.common.crafting.serializer; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.hexagram2021.emeraldcraft.common.crafting.FluidType; +import com.hexagram2021.emeraldcraft.common.crafting.MelterRecipe; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.GsonHelper; +import net.minecraft.world.Container; +import net.minecraft.world.item.crafting.*; +import net.minecraftforge.registries.ForgeRegistryEntry; + +import javax.annotation.Nullable; + +public class MelterRecipeSerializer extends ForgeRegistryEntry> implements RecipeSerializer { + private final int defaultMeltingTime; + private final MelterRecipeSerializer.Creator factory; + + public MelterRecipeSerializer(MelterRecipeSerializer.Creator creator, int meltingTime) { + this.defaultMeltingTime = meltingTime; + this.factory = creator; + } + + @Override + public T fromJson(ResourceLocation id, JsonObject json) { + String s = GsonHelper.getAsString(json, "group", ""); + JsonElement jsonelement = + GsonHelper.isArrayNode(json, "ingredient") ? + GsonHelper.getAsJsonArray(json, "ingredient") : + GsonHelper.getAsJsonObject(json, "ingredient"); + Ingredient ingredient = Ingredient.fromJson(jsonelement); + + if (!json.has("result")) throw new com.google.gson.JsonSyntaxException("Missing result, expected to find an object"); + FluidType fluidType; + int fluidAmount; + if (json.get("result").isJsonObject()) { + JsonObject result = GsonHelper.getAsJsonObject(json, "result"); + fluidType = FluidType.valueOf(GsonHelper.getAsString(result, "fluid")); + fluidAmount = GsonHelper.getAsInt(result, "amount"); + } else { + throw new IllegalStateException("result is not a Json object"); + } + int i = GsonHelper.getAsInt(json, "meltingtime", this.defaultMeltingTime); + return this.factory.create(id, s, ingredient, fluidType, fluidAmount, i); + } + + @Nullable + @Override + public T fromNetwork(ResourceLocation id, FriendlyByteBuf buf) { + String group = buf.readUtf(); + Ingredient ingredient = Ingredient.fromNetwork(buf); + FluidType fluidType = FluidType.valueOf(buf.readUtf()); + int fluidAmount = buf.readVarInt(); + int i = buf.readVarInt(); + return this.factory.create(id, group, ingredient, fluidType, fluidAmount, i); + } + + @Override + public void toNetwork(FriendlyByteBuf buf, T recipe) { + buf.writeUtf(recipe.getGroup()); + recipe.getIngredient().toNetwork(buf); + buf.writeUtf(recipe.getFluidType().toString()); + buf.writeVarInt(recipe.getFluidAmount()); + buf.writeVarInt(recipe.getMeltingTime()); + } + + public interface Creator> { + T create(ResourceLocation id, String group, Ingredient ingredient, FluidType resultFluid, int resultAmount, int meltingTime); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/MineralTableRecipeSerializer.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/MineralTableRecipeSerializer.java new file mode 100644 index 00000000..d2134052 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/MineralTableRecipeSerializer.java @@ -0,0 +1,76 @@ +package com.hexagram2021.emeraldcraft.common.crafting.serializer; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.hexagram2021.emeraldcraft.common.crafting.MineralTableRecipe; +import net.minecraft.core.Registry; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.GsonHelper; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.AbstractCookingRecipe; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.item.crafting.ShapedRecipe; +import net.minecraftforge.registries.ForgeRegistryEntry; + +import javax.annotation.Nullable; + +public class MineralTableRecipeSerializer extends ForgeRegistryEntry> implements RecipeSerializer { + private final int defaultCookingTime; + private final MineralTableRecipeSerializer.Creator factory; + + public MineralTableRecipeSerializer(MineralTableRecipeSerializer.Creator creator, int cookingTime) { + this.defaultCookingTime = cookingTime; + this.factory = creator; + } + + @Override + public T fromJson(ResourceLocation id, JsonObject json) { + String s = GsonHelper.getAsString(json, "group", ""); + JsonElement jsonelement = + GsonHelper.isArrayNode(json, "ingredient") ? + GsonHelper.getAsJsonArray(json, "ingredient") : + GsonHelper.getAsJsonObject(json, "ingredient"); + Ingredient ingredient = Ingredient.fromJson(jsonelement); + + if (!json.has("result")) throw new com.google.gson.JsonSyntaxException("Missing result, expected to find a string or object"); + ItemStack itemstack; + if (json.get("result").isJsonObject()) { + itemstack = ShapedRecipe.itemStackFromJson(GsonHelper.getAsJsonObject(json, "result")); + } else { + String s1 = GsonHelper.getAsString(json, "result"); + ResourceLocation resourcelocation = new ResourceLocation(s1); + itemstack = new ItemStack(Registry.ITEM.getOptional(resourcelocation).orElseThrow( + () -> new IllegalStateException("Item: " + s1 + " does not exist") + )); + } + float f = GsonHelper.getAsFloat(json, "experience", 0.0F); + int i = GsonHelper.getAsInt(json, "cookingtime", this.defaultCookingTime); + return this.factory.create(id, s, ingredient, itemstack, f, i); + } + + @Nullable + @Override + public T fromNetwork(ResourceLocation id, FriendlyByteBuf buf) { + String s = buf.readUtf(); + Ingredient ingredient = Ingredient.fromNetwork(buf); + ItemStack itemstack = buf.readItem(); + float f = buf.readFloat(); + int i = buf.readVarInt(); + return this.factory.create(id, s, ingredient, itemstack, f, i); + } + + @Override + public void toNetwork(FriendlyByteBuf buf, T recipe) { + buf.writeUtf(recipe.getGroup()); + recipe.getIngredient().toNetwork(buf); + buf.writeItem(recipe.getResultItem()); + buf.writeFloat(recipe.getExperience()); + buf.writeVarInt(recipe.getCookingTime()); + } + + public interface Creator { + T create(ResourceLocation id, String group, Ingredient ingredient, ItemStack result, float experience, int cookingtime); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/items/EmeraldArmorItem.java b/src/main/java/com/hexagram2021/emeraldcraft/common/items/EmeraldArmorItem.java new file mode 100644 index 00000000..31690450 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/items/EmeraldArmorItem.java @@ -0,0 +1,73 @@ +package com.hexagram2021.emeraldcraft.common.items; + +import com.hexagram2021.emeraldcraft.EmeraldCraft; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.util.LazyLoadedValue; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.Ingredient; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class EmeraldArmorItem extends ArmorItem { + private static final int[] HEALTH_PER_SLOT = new int[]{13, 15, 16, 11}; + + private static final String name = "emerald"; + private static final int durabilityMultiplier = 12; + private static final int[] slotProtections = new int[]{2, 5, 7, 3}; + private static final int enchantmentValue = 25; + private static final SoundEvent sound = SoundEvents.ARMOR_EQUIP_GOLD; + private static final float toughness = 0.0F; + private static final float knockbackResistance = 0.0F; + private static final LazyLoadedValue repairIngredient = new LazyLoadedValue<>(() -> Ingredient.of(Items.EMERALD)); + + public static ArmorMaterial mat = new EmeraldArmorMaterial(); + + public EmeraldArmorItem(EquipmentSlot type) { + super(mat, type, new Properties().stacksTo(1).tab(EmeraldCraft.ITEM_GROUP)); + } + + @Override + public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) { + return MODID+":textures/models/armor_emerald"+(slot==EquipmentSlot.LEGS?"_legs": "")+".png"; + } + + private static class EmeraldArmorMaterial implements ArmorMaterial { + public int getDurabilityForSlot(EquipmentSlot pSlot) { + return HEALTH_PER_SLOT[pSlot.getIndex()] * durabilityMultiplier; + } + + public int getDefenseForSlot(EquipmentSlot pSlot) { + return slotProtections[pSlot.getIndex()]; + } + + public int getEnchantmentValue() { + return enchantmentValue; + } + + public SoundEvent getEquipSound() { + return sound; + } + + public Ingredient getRepairIngredient() { + return repairIngredient.get(); + } + + public String getName() { + return name; + } + + public float getToughness() { + return toughness; + } + + public float getKnockbackResistance() { + return knockbackResistance; + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/items/LapisArmorItem.java b/src/main/java/com/hexagram2021/emeraldcraft/common/items/LapisArmorItem.java new file mode 100644 index 00000000..9b3d8b12 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/items/LapisArmorItem.java @@ -0,0 +1,73 @@ +package com.hexagram2021.emeraldcraft.common.items; + +import com.hexagram2021.emeraldcraft.EmeraldCraft; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.util.LazyLoadedValue; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.Ingredient; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class LapisArmorItem extends ArmorItem { + private static final int[] HEALTH_PER_SLOT = new int[]{13, 15, 16, 11}; + + private static final String name = "lapis"; + private static final int durabilityMultiplier = 6; + private static final int[] slotProtections = new int[]{1, 3, 4, 1}; + private static final int enchantmentValue = 40; + private static final SoundEvent sound = SoundEvents.ARMOR_EQUIP_GOLD; + private static final float toughness = 0.0F; + private static final float knockbackResistance = 0.0F; + private static final LazyLoadedValue repairIngredient = new LazyLoadedValue<>(() -> Ingredient.of(Items.LAPIS_LAZULI)); + + public static ArmorMaterial mat = new LapisArmorMaterial(); + + public LapisArmorItem(EquipmentSlot type) { + super(mat, type, new Properties().stacksTo(1).tab(EmeraldCraft.ITEM_GROUP)); + } + + @Override + public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) { + return MODID+":textures/models/armor_lapis"+(slot==EquipmentSlot.LEGS?"_legs": "")+".png"; + } + + private static class LapisArmorMaterial implements ArmorMaterial { + public int getDurabilityForSlot(EquipmentSlot pSlot) { + return HEALTH_PER_SLOT[pSlot.getIndex()] * durabilityMultiplier; + } + + public int getDefenseForSlot(EquipmentSlot pSlot) { + return slotProtections[pSlot.getIndex()]; + } + + public int getEnchantmentValue() { + return enchantmentValue; + } + + public SoundEvent getEquipSound() { + return sound; + } + + public Ingredient getRepairIngredient() { + return repairIngredient.get(); + } + + public String getName() { + return name; + } + + public float getToughness() { + return toughness; + } + + public float getKnockbackResistance() { + return knockbackResistance; + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBiomes.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBiomes.java new file mode 100644 index 00000000..2a2d4d97 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBiomes.java @@ -0,0 +1,269 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.google.common.collect.ImmutableList; +import com.hexagram2021.emeraldcraft.mixin.MultiNoiseBiomeSourceAccess; +import com.hexagram2021.emeraldcraft.mixin.NetherBiomesAccess; +import com.mojang.datafixers.util.Pair; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.data.worldgen.*; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.Musics; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.level.biome.*; +import net.minecraft.world.level.levelgen.GenerationStep; +import net.minecraftforge.common.BiomeDictionary; +import net.minecraftforge.common.BiomeManager; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.registries.ForgeRegistries; + +import java.util.Objects; +import java.util.Optional; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECBiomes { + public static final Biome AZURE_DESERT = AzureDesertBiome(); + public static final Biome JADEITE_DESERT = JadeiteDesertBiome(); + public static final Biome EMERY_DESERT = EmeryDesertBiome(); + public static final Biome QUARTZ_DESERT = QuartzDesertBiome(); + + public static void init(RegistryEvent.Register event) { + AZURE_DESERT.setRegistryName(MODID, "azure_desert"); + JADEITE_DESERT.setRegistryName(MODID, "jadeite_desert"); + EMERY_DESERT.setRegistryName(MODID, "emery_desert"); + QUARTZ_DESERT.setRegistryName(MODID, "quartz_desert"); + + event.getRegistry().register(AZURE_DESERT); + event.getRegistry().register(JADEITE_DESERT); + event.getRegistry().register(EMERY_DESERT); + event.getRegistry().register(QUARTZ_DESERT); + } + + private static Biome AzureDesertBiome() { + MobSpawnSettings.Builder mobspawnsettings$builder = new MobSpawnSettings.Builder(); + mobspawnsettings$builder.setPlayerCanSpawn(); + BiomeDefaultFeatures.commonSpawns(mobspawnsettings$builder); + BiomeGenerationSettings.Builder biomegenerationsettings$builder = (new BiomeGenerationSettings.Builder()).surfaceBuilder(ECConfiguredSurfaceBuilder.AZURE_DESERT_BUILDER); + BiomeDefaultFeatures.addDefaultOverworldLandMesaStructures(biomegenerationsettings$builder); + biomegenerationsettings$builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + BiomeDefaultFeatures.addDefaultCarvers(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultLakes(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultCrystalFormations(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultMonsterRoom(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultUndergroundVariety(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultOres(biomegenerationsettings$builder); + addExtraLapis(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultSoftDisks(biomegenerationsettings$builder); + + BiomeDefaultFeatures.addBadlandGrass(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultMushrooms(biomegenerationsettings$builder); + //BiomeDefaultFeatures.addBadlandExtraVegetation(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultSprings(biomegenerationsettings$builder); + BiomeDefaultFeatures.addSurfaceFreezing(biomegenerationsettings$builder); + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.NONE) + .biomeCategory(Biome.BiomeCategory.MESA) + .depth(0.1F).scale(0.2F) + .temperature(2.0F).downfall(0.0F) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(2.0F)) + .foliageColorOverride(10387789).grassColorOverride(9470285) + .ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).build()) + .mobSpawnSettings(mobspawnsettings$builder.build()) + .generationSettings(biomegenerationsettings$builder.build()).build(); + } + + private static Biome JadeiteDesertBiome() { + MobSpawnSettings.Builder mobspawnsettings$builder = new MobSpawnSettings.Builder(); + mobspawnsettings$builder.setPlayerCanSpawn(); + BiomeDefaultFeatures.commonSpawns(mobspawnsettings$builder); + BiomeGenerationSettings.Builder biomegenerationsettings$builder = (new BiomeGenerationSettings.Builder()).surfaceBuilder(ECConfiguredSurfaceBuilder.JADEITE_DESERT_BUILDER); + BiomeDefaultFeatures.addDefaultOverworldLandMesaStructures(biomegenerationsettings$builder); + biomegenerationsettings$builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + BiomeDefaultFeatures.addDefaultCarvers(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultLakes(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultCrystalFormations(biomegenerationsettings$builder); + addZombieVillagerRoom(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultUndergroundVariety(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultOres(biomegenerationsettings$builder); + BiomeDefaultFeatures.addExtraEmeralds(biomegenerationsettings$builder); + addExtraEmerald(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultSoftDisks(biomegenerationsettings$builder); + + BiomeDefaultFeatures.addBadlandGrass(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultMushrooms(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultSprings(biomegenerationsettings$builder); + BiomeDefaultFeatures.addSurfaceFreezing(biomegenerationsettings$builder); + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.NONE) + .biomeCategory(Biome.BiomeCategory.MESA) + .depth(0.1F).scale(0.2F) + .temperature(2.0F).downfall(0.0F) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(2.0F)) + .foliageColorOverride(10387789).grassColorOverride(9470285) + .ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).build()) + .mobSpawnSettings(mobspawnsettings$builder.build()) + .generationSettings(biomegenerationsettings$builder.build()).build(); + } + + private static Biome EmeryDesertBiome() { + MobSpawnSettings mobspawnsettings = (new MobSpawnSettings.Builder()) + .addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(EntityType.WITHER_SKELETON, 1, 5, 5)) + .addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(EntityType.BLAZE, 50, 4, 4)) + .addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(EntityType.ZOMBIFIED_PIGLIN, 20, 5, 5)) + .addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.STRIDER, 60, 1, 2)) + .addMobCharge(EntityType.WITHER_SKELETON, 0.7D, 0.15D) + .addMobCharge(EntityType.BLAZE, 0.7D, 0.15D) + .addMobCharge(EntityType.ZOMBIFIED_PIGLIN, 0.7D, 0.15D) + .addMobCharge(EntityType.STRIDER, 0.7D, 0.15D) + .build(); + BiomeGenerationSettings.Builder biomegenerationsettings$builder = (new BiomeGenerationSettings.Builder()) + .surfaceBuilder(ECConfiguredSurfaceBuilder.EMERY_DESERT_BUILDER) + .addStructureStart(StructureFeatures.NETHER_BRIDGE) + .addStructureStart(StructureFeatures.NETHER_FOSSIL) + .addStructureStart(StructureFeatures.RUINED_PORTAL_NETHER) + .addStructureStart(StructureFeatures.BASTION_REMNANT) + .addStructureStart(ECConfiguredStructures.NETHER_WARFIELD) + .addCarver(GenerationStep.Carving.AIR, Carvers.NETHER_CAVE) + .addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, Features.SPRING_LAVA) + .addFeature(GenerationStep.Decoration.LOCAL_MODIFICATIONS, Features.BASALT_PILLAR) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, Features.SPRING_OPEN) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, Features.GLOWSTONE_EXTRA) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, Features.GLOWSTONE) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, Features.PATCH_CRIMSON_ROOTS) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, Features.PATCH_FIRE) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, Features.ORE_MAGMA) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, Features.SPRING_CLOSED) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, Features.ORE_SOUL_SAND); + BiomeDefaultFeatures.addNetherDefaultOres(biomegenerationsettings$builder); + addExtraAncientDebris(biomegenerationsettings$builder); + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.NONE) + .biomeCategory(Biome.BiomeCategory.NETHER) + .depth(0.125F).scale(0.05F) + .temperature(2.0F).downfall(0.0F) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(4159204).waterFogColor(329011).fogColor(1787717).skyColor(calculateSkyColor(2.0F)) + .ambientParticle(new AmbientParticleSettings(ParticleTypes.ASH, 0.00625F)) + .ambientLoopSound(SoundEvents.AMBIENT_SOUL_SAND_VALLEY_LOOP) + .ambientMoodSound(new AmbientMoodSettings(SoundEvents.AMBIENT_SOUL_SAND_VALLEY_MOOD, 6000, 8, 2.0D)) + .ambientAdditionsSound(new AmbientAdditionsSettings(SoundEvents.AMBIENT_SOUL_SAND_VALLEY_ADDITIONS, 0.0111D)) + .backgroundMusic(Musics.createGameMusic(SoundEvents.MUSIC_BIOME_SOUL_SAND_VALLEY)).build()) + .mobSpawnSettings(mobspawnsettings) + .generationSettings(biomegenerationsettings$builder.build()).build(); + } + + private static Biome QuartzDesertBiome() { + MobSpawnSettings mobspawnsettings = (new MobSpawnSettings.Builder()) + .addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(EntityType.SKELETON, 20, 5, 5)) + .addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(EntityType.GHAST, 50, 4, 4)) + .addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(EntityType.ENDERMAN, 1, 4, 4)) + .addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.STRIDER, 60, 1, 2)) + .addMobCharge(EntityType.SKELETON, 0.7D, 0.15D) + .addMobCharge(EntityType.GHAST, 0.7D, 0.15D) + .addMobCharge(EntityType.ENDERMAN, 0.7D, 0.15D) + .addMobCharge(EntityType.STRIDER, 0.7D, 0.15D) + .build(); + BiomeGenerationSettings.Builder biomegenerationsettings$builder = (new BiomeGenerationSettings.Builder()) + .surfaceBuilder(ECConfiguredSurfaceBuilder.QUARTZ_DESERT_BUILDER) + .addStructureStart(StructureFeatures.NETHER_BRIDGE) + .addStructureStart(StructureFeatures.NETHER_FOSSIL) + .addStructureStart(StructureFeatures.RUINED_PORTAL_NETHER) + .addStructureStart(StructureFeatures.BASTION_REMNANT) + .addCarver(GenerationStep.Carving.AIR, Carvers.NETHER_CAVE) + .addFeature(GenerationStep.Decoration.LOCAL_MODIFICATIONS, Features.BASALT_PILLAR) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, Features.GLOWSTONE_EXTRA) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, Features.GLOWSTONE) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, Features.PATCH_CRIMSON_ROOTS) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, Features.ORE_MAGMA) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, Features.ORE_SOUL_SAND); + addExtraQuartz(biomegenerationsettings$builder); + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.NONE) + .biomeCategory(Biome.BiomeCategory.NETHER) + .depth(0.125F).scale(0.05F) + .temperature(2.0F).downfall(0.0F) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(4159204).waterFogColor(329011).fogColor(12169636).skyColor(calculateSkyColor(2.0F)) + .ambientParticle(new AmbientParticleSettings(ParticleTypes.ASH, 0.00625F)) + .ambientLoopSound(SoundEvents.AMBIENT_SOUL_SAND_VALLEY_LOOP) + .ambientMoodSound(new AmbientMoodSettings(SoundEvents.AMBIENT_SOUL_SAND_VALLEY_MOOD, 6000, 8, 2.0D)) + .ambientAdditionsSound(new AmbientAdditionsSettings(SoundEvents.AMBIENT_SOUL_SAND_VALLEY_ADDITIONS, 0.0111D)) + .backgroundMusic(Musics.createGameMusic(SoundEvents.MUSIC_BIOME_SOUL_SAND_VALLEY)).build()) + .mobSpawnSettings(mobspawnsettings) + .generationSettings(biomegenerationsettings$builder.build()).build(); + } + + + private static int calculateSkyColor(float temp) { + float f = temp / 3.0F; + f = Mth.clamp(f, -1.0F, 1.0F); + return Mth.hsvToRgb(0.62222224F - f * 0.05F, 0.5F + f * 0.1F, 1.0F); + } + + private static void addExtraLapis(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, ECConfiguredFeatures.ORE_LAPIS_EXTRA); + } + + private static void addExtraEmerald(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, ECConfiguredFeatures.ORE_EMERALD_EXTRA); + } + + private static void addExtraAncientDebris(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, ECConfiguredFeatures.ORE_DEBRIS_EXTRA); + } + + private static void addExtraQuartz(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, ECConfiguredFeatures.ORE_QUARTZ_EXTRA); + } + + public static void addZombieVillagerRoom(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.UNDERGROUND_STRUCTURES, ECConfiguredFeatures.ZOMBIE_VILLAGER_ROOM); + } + + public static void registerBiomes() { + addBiome(ECBiomes.AZURE_DESERT, BiomeManager.BiomeType.DESERT, 5, + BiomeDictionary.Type.MESA, BiomeDictionary.Type.SANDY, BiomeDictionary.Type.DRY, BiomeDictionary.Type.OVERWORLD); + addBiome(ECBiomes.JADEITE_DESERT, BiomeManager.BiomeType.DESERT, 5, + BiomeDictionary.Type.MESA, BiomeDictionary.Type.SANDY, BiomeDictionary.Type.DRY, BiomeDictionary.Type.OVERWORLD); + ResourceKey EMERY_DESERT = addNetherBiome(ECBiomes.EMERY_DESERT, + BiomeDictionary.Type.HOT, BiomeDictionary.Type.DRY, BiomeDictionary.Type.NETHER); + ResourceKey QUARTZ_DESERT = addNetherBiome(ECBiomes.QUARTZ_DESERT, + BiomeDictionary.Type.HOT, BiomeDictionary.Type.DRY, BiomeDictionary.Type.NETHER); + + NetherBiomesAccess.setNETHER(new MultiNoiseBiomeSource.Preset( + new ResourceLocation("nether"), + (p_48524_, p_48525_, p_48526_) -> MultiNoiseBiomeSourceAccess.construct(p_48526_, ImmutableList.of( + Pair.of(new Biome.ClimateParameters(0.0F, 0.0F, 0.0F, 0.0F, 0.0F), + () -> p_48525_.getOrThrow(Biomes.NETHER_WASTES)), + Pair.of(new Biome.ClimateParameters(0.0F, -0.5F, 0.0F, 0.0F, 0.0F), + () -> p_48525_.getOrThrow(Biomes.SOUL_SAND_VALLEY)), + Pair.of(new Biome.ClimateParameters(0.4F, 0.0F, 0.0F, 0.0F, 0.0F), + () -> p_48525_.getOrThrow(Biomes.CRIMSON_FOREST)), + Pair.of(new Biome.ClimateParameters(0.0F, 0.5F, 0.0F, 0.0F, 0.375F), + () -> p_48525_.getOrThrow(Biomes.WARPED_FOREST)), + Pair.of(new Biome.ClimateParameters(-0.5F, 0.0F, 0.0F, 0.0F, 0.175F), + () -> p_48525_.getOrThrow(Biomes.BASALT_DELTAS)), + Pair.of(new Biome.ClimateParameters(-0.8F, -0.8F, 0.0F, 0.0F, 0.175F), + () -> p_48525_.getOrThrow(EMERY_DESERT)), + Pair.of(new Biome.ClimateParameters(0.75F, 0.7F, 0.0F, 0.0F, 0.175F), + () -> p_48525_.getOrThrow(QUARTZ_DESERT)) + ), Optional.of(Pair.of(p_48525_, p_48524_))) + )); + } + + private static void addBiome(Biome biome, BiomeManager.BiomeType type, int weight, BiomeDictionary.Type... types) { + final ResourceKey biomeKey = ResourceKey.create(ForgeRegistries.Keys.BIOMES, Objects.requireNonNull(ForgeRegistries.BIOMES.getKey(biome))); + + BiomeDictionary.addTypes(biomeKey, types); + BiomeManager.addBiome(type, new BiomeManager.BiomeEntry(biomeKey, weight)); + } + + private static ResourceKey addNetherBiome(Biome biome, BiomeDictionary.Type... types) { + final ResourceKey biomeKey = ResourceKey.create(ForgeRegistries.Keys.BIOMES, Objects.requireNonNull(ForgeRegistries.BIOMES.getKey(biome))); + BiomeDictionary.addTypes(biomeKey, types); + + return biomeKey; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBlockEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBlockEntity.java new file mode 100644 index 00000000..5b486eb9 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBlockEntity.java @@ -0,0 +1,45 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.google.common.collect.ImmutableSet; +import com.hexagram2021.emeraldcraft.common.blocks.entity.*; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fmllegacy.RegistryObject; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public final class ECBlockEntity { + public static final DeferredRegister> REGISTER = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITIES, MODID); + + public static final RegistryObject> GLASS_KILN = REGISTER.register( + "glass_kiln", () -> new BlockEntityType<>( + GlassKilnBlockEntity::new, ImmutableSet.of(ECBlocks.WorkStation.GLASS_KILN.get()), null + ) + ); + public static final RegistryObject> MINERAL_TABLE = REGISTER.register( + "mineral_table", () -> new BlockEntityType<>( + MineralTableBlockEntity::new, ImmutableSet.of(ECBlocks.WorkStation.MINERAL_TABLE.get()), null + ) + ); + public static final RegistryObject> CONTINUOUS_MINER = REGISTER.register( + "continuous_miner", () -> new BlockEntityType<>( + ContinuousMinerBlockEntity::new, ImmutableSet.of(ECBlocks.WorkStation.CONTINUOUS_MINER.get()), null + ) + ); + public static final RegistryObject> ICE_MAKER = REGISTER.register( + "ice_maker", () -> new BlockEntityType<>( + IceMakerBlockEntity::new, ImmutableSet.of(ECBlocks.WorkStation.ICE_MAKER.get()), null + ) + ); + public static final RegistryObject> MELTER = REGISTER.register( + "melter", () -> new BlockEntityType<>( + MelterBlockEntity::new, ImmutableSet.of(ECBlocks.WorkStation.MELTER.get()), null + ) + ); + + public static void init(IEventBus bus) { + REGISTER.register(bus); + } +} \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBlocks.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBlocks.java new file mode 100644 index 00000000..5104140d --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBlocks.java @@ -0,0 +1,466 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +import java.util.HashMap; +import java.util.Map; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.function.Supplier; + +import com.hexagram2021.emeraldcraft.EmeraldCraft; +import com.hexagram2021.emeraldcraft.common.blocks.plant.WarpedWartBlock; +import com.hexagram2021.emeraldcraft.common.blocks.workstation.*; +import net.minecraft.Util; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.block.*; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.SlabType; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.material.MaterialColor; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fmllegacy.RegistryObject; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; + +import javax.annotation.Nonnull; + +public final class ECBlocks { + public static final DeferredRegister REGISTER = DeferredRegister.create(ForgeRegistries.BLOCKS, MODID); + + private ECBlocks() {} + + private static void registerStairs(Block fullBlock) { + String name = fullBlock.getRegistryName().getPath(); + if(name.endsWith("_block")) { + name = name.replaceAll("_block", "_stairs"); + } else if(name.endsWith("_bricks")) { + name = name.replaceAll("_bricks", "_brick_stairs"); + } else { + name = name + "_stairs"; + } + TO_STAIRS.put(fullBlock.getRegistryName(), new BlockEntry<>( + name, + () -> BlockBehaviour.Properties.copy(fullBlock), + p -> new StairBlock(() -> fullBlock.defaultBlockState(), p) + )); + } + private static void registerStairs(BlockEntry fullBlock) { + String name = fullBlock.getId().getPath(); + if(name.endsWith("_block")) { + name = name.replaceAll("_block", "_stairs"); + } else if(name.endsWith("_bricks")) { + name = name.replaceAll("_bricks", "_brick_stairs"); + } else { + name = name + "_stairs"; + } + TO_STAIRS.put(fullBlock.getId(), new BlockEntry<>( + name, + fullBlock::getProperties, + p -> new StairBlock(fullBlock::defaultBlockState, p) + )); + } + + private static void registerSlab(Block fullBlock) { + String name = fullBlock.getRegistryName().getPath(); + if(name.endsWith("_block")) { + name = name.replaceAll("_block", "_slab"); + } else if(name.endsWith("_bricks")) { + name = name.replaceAll("_bricks", "_brick_slab"); + } else { + name = name + "_slab"; + } + TO_SLAB.put(fullBlock.getRegistryName(), new BlockEntry<>( + name, + () -> BlockBehaviour.Properties.copy(fullBlock), + p -> new SlabBlock(p.isSuffocating((state, world, pos) -> + fullBlock.defaultBlockState().isSuffocating(world, pos) && state.getValue(SlabBlock.TYPE) == SlabType.DOUBLE + ).isRedstoneConductor((state, world, pos) -> + fullBlock.defaultBlockState().isRedstoneConductor(world, pos) && state.getValue(SlabBlock.TYPE) == SlabType.DOUBLE + ) + ) + )); + } + private static void registerSlab(BlockEntry fullBlock) { + String name = fullBlock.getId().getPath(); + if(name.endsWith("_block")) { + name = name.replaceAll("_block", "_slab"); + } else if(name.endsWith("_bricks")) { + name = name.replaceAll("_bricks", "_brick_slab"); + } else { + name = name + "_slab"; + } + TO_SLAB.put(fullBlock.getId(), new BlockEntry<>( + name, + fullBlock::getProperties, + p -> new SlabBlock(p.isSuffocating((state, world, pos) -> + fullBlock.defaultBlockState().isSuffocating(world, pos) && state.getValue(SlabBlock.TYPE) == SlabType.DOUBLE + ).isRedstoneConductor((state, world, pos) -> + fullBlock.defaultBlockState().isRedstoneConductor(world, pos) && state.getValue(SlabBlock.TYPE) == SlabType.DOUBLE + ) + ) + )); + } + + private static void registerWall(Block fullBlock) { + String name = fullBlock.getRegistryName().getPath(); + if(name.endsWith("_block")) { + name = name.replaceAll("_block", "_wall"); + } else if(name.endsWith("_bricks")) { + name = name.replaceAll("_bricks", "_brick_wall"); + } else { + name = name + "_wall"; + } + TO_WALL.put(fullBlock.getRegistryName(), new BlockEntry<>( + name, + () -> BlockBehaviour.Properties.copy(fullBlock), + WallBlock::new + )); + } + private static void registerWall(BlockEntry fullBlock) { + String name = fullBlock.getId().getPath(); + if(name.endsWith("_block")) { + name = name.replaceAll("_block", "_wall"); + } else if(name.endsWith("_bricks")) { + name = name.replaceAll("_bricks", "_brick_wall"); + } else { + name = name + "_wall"; + } + TO_WALL.put(fullBlock.getId(), new BlockEntry<>( + name, + fullBlock::getProperties, + WallBlock::new + )); + } + + public static void init(IEventBus bus) { + REGISTER.register(bus); + + MineralDecoration.init(); + WorkStation.init(); + //SculptureDecoration.init(); + Decoration.init(); + Plant.init(); + + for(Map.Entry> blockSlab : ECBlocks.TO_SLAB.entrySet()) { + ECItems.REGISTER.register(blockSlab.getValue().getId().getPath(), () -> new BlockItem(blockSlab.getValue().get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + } + for(Map.Entry> blockStairs : ECBlocks.TO_STAIRS.entrySet()) { + ECItems.REGISTER.register(blockStairs.getValue().getId().getPath(), () -> new BlockItem(blockStairs.getValue().get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + } + for(Map.Entry> blockWall : ECBlocks.TO_WALL.entrySet()) { + ECItems.REGISTER.register(blockWall.getValue().getId().getPath(), () -> new BlockItem(blockWall.getValue().get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + } + } + + public static final class MineralDecoration { + private static void init() { + registerStairs(Blocks.EMERALD_BLOCK); + registerStairs(Blocks.GOLD_BLOCK); + registerStairs(Blocks.IRON_BLOCK); + registerStairs(Blocks.LAPIS_BLOCK); + registerStairs(Blocks.DIAMOND_BLOCK); + registerStairs(Blocks.NETHERITE_BLOCK); + + registerSlab(Blocks.EMERALD_BLOCK); + registerSlab(Blocks.GOLD_BLOCK); + registerSlab(Blocks.IRON_BLOCK); + registerSlab(Blocks.LAPIS_BLOCK); + registerSlab(Blocks.DIAMOND_BLOCK); + registerSlab(Blocks.NETHERITE_BLOCK); + + registerWall(Blocks.EMERALD_BLOCK); + registerWall(Blocks.GOLD_BLOCK); + registerWall(Blocks.IRON_BLOCK); + registerWall(Blocks.LAPIS_BLOCK); + registerWall(Blocks.DIAMOND_BLOCK); + registerWall(Blocks.NETHERITE_BLOCK); + } + } + + public static final class WorkStation { + public static final BlockEntry CARPENTRY_TABLE = new BlockEntry<>( + "carpentry_table", CarpentryTableBlock.PROPERTIES, CarpentryTableBlock::new + ); + public static final BlockEntry GLASS_KILN = new BlockEntry<>( + "glass_kiln", GlassKilnBlock.PROPERTIES, GlassKilnBlock::new + ); + public static final BlockEntry MINERAL_TABLE = new BlockEntry<>( + "mineral_table", MineralTableBlock.PROPERTIES, MineralTableBlock::new + ); + public static final BlockEntry CRYSTALBALL_TABLE = new BlockEntry<>( + "crystalball_table", CrystalballTableBlock.PROPERTIES, CrystalballTableBlock::new + ); + public static final BlockEntry SQUEEZER = new BlockEntry<>( + "squeezer", SqueezerBlock.PROPERTIES, SqueezerBlock::new + ); + public static final BlockEntry CONTINUOUS_MINER = new BlockEntry<>( + "continuous_miner", ContinuousMinerBlock.PROPERTIES, ContinuousMinerBlock::new + ); + public static final BlockEntry ICE_MAKER = new BlockEntry<>( + "ice_maker", IceMakerBlock.PROPERTIES, IceMakerBlock::new + ); + public static final BlockEntry MELTER = new BlockEntry<>( + "melter", MelterBlock.PROPERTIES, MelterBlock::new + ); + + private static void init() { + ECItems.REGISTER.register(CARPENTRY_TABLE.getId().getPath(), () -> new BlockItem(CARPENTRY_TABLE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(GLASS_KILN.getId().getPath(), () -> new BlockItem(GLASS_KILN.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(MINERAL_TABLE.getId().getPath(), () -> new BlockItem(MINERAL_TABLE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(CRYSTALBALL_TABLE.getId().getPath(), () -> new BlockItem(CRYSTALBALL_TABLE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(SQUEEZER.getId().getPath(), () -> new BlockItem(SQUEEZER.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(CONTINUOUS_MINER.getId().getPath(), () -> new BlockItem(CONTINUOUS_MINER.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(ICE_MAKER.getId().getPath(), () -> new BlockItem(ICE_MAKER.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(MELTER.getId().getPath(), () -> new BlockItem(MELTER.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + } + } + + /* + public static final class SculptureDecoration { + public static final BlockEntry VILLAGER_SCULPTURE = new BlockEntry<>( + "villager_sculpture", SculptureBlock.PROPERTIES, SculptureBlock::new + ); + public static final BlockEntry IRON_GOLEM_SCULPTURE = new BlockEntry<>( + "iron_golem_sculpture", SculptureBlock.PROPERTIES, SculptureBlock::new + ); + public static final BlockEntry WOLF_SCULPTURE = new BlockEntry<>( + "wolf_sculpture", SculptureBlock.PROPERTIES, SculptureBlock::new + ); + public static final BlockEntry CAT_SCULPTURE = new BlockEntry<>( + "cat_sculpture", SculptureBlock.PROPERTIES, SculptureBlock::new + ); + + private static void init() { + ECItems.REGISTER.register(VILLAGER_SCULPTURE.getId().getPath(), () -> new BlockItem(VILLAGER_SCULPTURE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(IRON_GOLEM_SCULPTURE.getId().getPath(), () -> new BlockItem(IRON_GOLEM_SCULPTURE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(WOLF_SCULPTURE.getId().getPath(), () -> new BlockItem(WOLF_SCULPTURE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(CAT_SCULPTURE.getId().getPath(), () -> new BlockItem(CAT_SCULPTURE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + } + } + //*/ + + public static final class Decoration { + public static final Supplier AZURE_SAND_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.SAND, MaterialColor.COLOR_LIGHT_BLUE) + .strength(0.5F).sound(SoundType.SAND); + public static final Supplier QUARTZ_SAND_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.SAND, MaterialColor.COLOR_LIGHT_GRAY) + .strength(0.5F).sound(SoundType.SAND); + public static final Supplier JADEITE_SAND_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.SAND, MaterialColor.COLOR_LIGHT_GREEN) + .strength(0.5F).sound(SoundType.SAND); + public static final Supplier EMERY_SAND_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.SAND, MaterialColor.COLOR_BLACK) + .strength(0.5F).sound(SoundType.SAND); + public static final Supplier SANDSTONE_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.STONE, MaterialColor.SAND) + .requiresCorrectToolForDrops().strength(0.8F); + public static final Supplier BLUE_NETHER_BRICKS_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.STONE, MaterialColor.NETHER) + .requiresCorrectToolForDrops().strength(2.0F, 6.0F).sound(SoundType.NETHER_BRICKS); + public static final Supplier CRIMSON_STONE_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.STONE, MaterialColor.CRIMSON_NYLIUM) + .requiresCorrectToolForDrops().strength(2.0F, 6.0F).sound(SoundType.STONE); + public static final Supplier WARPED_STONE_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.STONE, MaterialColor.WARPED_NYLIUM) + .requiresCorrectToolForDrops().strength(2.0F, 6.0F).sound(SoundType.STONE); + + public static final BlockEntry AZURE_SAND = new BlockEntry<>( + "azure_sand", AZURE_SAND_PROPERTIES, (p) -> new SandBlock(12308970, p) + ); + public static final BlockEntry QUARTZ_SAND = new BlockEntry<>( + "quartz_sand", QUARTZ_SAND_PROPERTIES, (p) -> new SandBlock(13816276, p) + ); + public static final BlockEntry JADEITE_SAND = new BlockEntry<>( + "jadeite_sand", JADEITE_SAND_PROPERTIES, (p) -> new SandBlock(9823911, p) + ); + public static final BlockEntry EMERY_SAND = new BlockEntry<>( + "emery_sand", EMERY_SAND_PROPERTIES, (p) -> new SandBlock(2500134, p) + ); + + public static final BlockEntry AZURE_SANDSTONE = new BlockEntry<>( + "azure_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + public static final BlockEntry QUARTZ_SANDSTONE = new BlockEntry<>( + "quartz_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + public static final BlockEntry JADEITE_SANDSTONE = new BlockEntry<>( + "jadeite_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + public static final BlockEntry EMERY_SANDSTONE = new BlockEntry<>( + "emery_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + + public static final BlockEntry SMOOTH_AZURE_SANDSTONE = new BlockEntry<>( + "smooth_azure_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + public static final BlockEntry SMOOTH_QUARTZ_SANDSTONE = new BlockEntry<>( + "smooth_quartz_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + public static final BlockEntry SMOOTH_JADEITE_SANDSTONE = new BlockEntry<>( + "smooth_jadeite_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + public static final BlockEntry SMOOTH_EMERY_SANDSTONE = new BlockEntry<>( + "smooth_emery_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + + public static final BlockEntry CUT_AZURE_SANDSTONE = new BlockEntry<>( + "cut_azure_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + public static final BlockEntry CUT_QUARTZ_SANDSTONE = new BlockEntry<>( + "cut_quartz_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + public static final BlockEntry CUT_JADEITE_SANDSTONE = new BlockEntry<>( + "cut_jadeite_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + public static final BlockEntry CUT_EMERY_SANDSTONE = new BlockEntry<>( + "cut_emery_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + + public static final BlockEntry BLUE_NETHER_BRICKS = new BlockEntry<>( + "blue_nether_bricks", BLUE_NETHER_BRICKS_PROPERTIES, Block::new + ); + + public static final BlockEntry CRIMSON_STONE = new BlockEntry<>( + "crimson_stone", CRIMSON_STONE_PROPERTIES, Block::new + ); + public static final BlockEntry CRIMSON_COBBLESTONE = new BlockEntry<>( + "crimson_cobblestone", CRIMSON_STONE_PROPERTIES, Block::new + ); + public static final BlockEntry WARPED_STONE = new BlockEntry<>( + "warped_stone", WARPED_STONE_PROPERTIES, Block::new + ); + public static final BlockEntry WARPED_COBBLESTONE = new BlockEntry<>( + "warped_cobblestone", WARPED_STONE_PROPERTIES, Block::new + ); + + private static void init() { + ECItems.REGISTER.register(AZURE_SAND.getId().getPath(), () -> new BlockItem(AZURE_SAND.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(QUARTZ_SAND.getId().getPath(), () -> new BlockItem(QUARTZ_SAND.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(JADEITE_SAND.getId().getPath(), () -> new BlockItem(JADEITE_SAND.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(EMERY_SAND.getId().getPath(), () -> new BlockItem(EMERY_SAND.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + + ECItems.REGISTER.register(AZURE_SANDSTONE.getId().getPath(), () -> new BlockItem(AZURE_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(QUARTZ_SANDSTONE.getId().getPath(), () -> new BlockItem(QUARTZ_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(JADEITE_SANDSTONE.getId().getPath(), () -> new BlockItem(JADEITE_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(EMERY_SANDSTONE.getId().getPath(), () -> new BlockItem(EMERY_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + + ECItems.REGISTER.register(SMOOTH_AZURE_SANDSTONE.getId().getPath(), () -> new BlockItem(SMOOTH_AZURE_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(SMOOTH_QUARTZ_SANDSTONE.getId().getPath(), () -> new BlockItem(SMOOTH_QUARTZ_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(SMOOTH_JADEITE_SANDSTONE.getId().getPath(), () -> new BlockItem(SMOOTH_JADEITE_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(SMOOTH_EMERY_SANDSTONE.getId().getPath(), () -> new BlockItem(SMOOTH_EMERY_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + + ECItems.REGISTER.register(CUT_AZURE_SANDSTONE.getId().getPath(), () -> new BlockItem(CUT_AZURE_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(CUT_QUARTZ_SANDSTONE.getId().getPath(), () -> new BlockItem(CUT_QUARTZ_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(CUT_JADEITE_SANDSTONE.getId().getPath(), () -> new BlockItem(CUT_JADEITE_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + + ECItems.REGISTER.register(CUT_EMERY_SANDSTONE.getId().getPath(), () -> new BlockItem(CUT_EMERY_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(BLUE_NETHER_BRICKS.getId().getPath(), () -> new BlockItem(BLUE_NETHER_BRICKS.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + + ECItems.REGISTER.register(CRIMSON_STONE.getId().getPath(), () -> new BlockItem(CRIMSON_STONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(CRIMSON_COBBLESTONE.getId().getPath(), () -> new BlockItem(CRIMSON_COBBLESTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(WARPED_STONE.getId().getPath(), () -> new BlockItem(WARPED_STONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(WARPED_COBBLESTONE.getId().getPath(), () -> new BlockItem(WARPED_COBBLESTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + + + registerStairs(Decoration.AZURE_SANDSTONE); + registerStairs(Decoration.QUARTZ_SANDSTONE); + registerStairs(Decoration.JADEITE_SANDSTONE); + registerStairs(Decoration.EMERY_SANDSTONE); + registerStairs(Decoration.SMOOTH_AZURE_SANDSTONE); + registerStairs(Decoration.SMOOTH_QUARTZ_SANDSTONE); + registerStairs(Decoration.SMOOTH_JADEITE_SANDSTONE); + registerStairs(Decoration.SMOOTH_EMERY_SANDSTONE); + registerStairs(Decoration.BLUE_NETHER_BRICKS); + registerStairs(Decoration.CRIMSON_STONE); + registerStairs(Decoration.CRIMSON_COBBLESTONE); + registerStairs(Decoration.WARPED_STONE); + registerStairs(Decoration.WARPED_COBBLESTONE); + + registerSlab(Decoration.AZURE_SANDSTONE); + registerSlab(Decoration.QUARTZ_SANDSTONE); + registerSlab(Decoration.JADEITE_SANDSTONE); + registerSlab(Decoration.EMERY_SANDSTONE); + registerSlab(Decoration.SMOOTH_AZURE_SANDSTONE); + registerSlab(Decoration.SMOOTH_QUARTZ_SANDSTONE); + registerSlab(Decoration.SMOOTH_JADEITE_SANDSTONE); + registerSlab(Decoration.SMOOTH_EMERY_SANDSTONE); + registerSlab(Decoration.CUT_AZURE_SANDSTONE); + registerSlab(Decoration.CUT_QUARTZ_SANDSTONE); + registerSlab(Decoration.CUT_JADEITE_SANDSTONE); + registerSlab(Decoration.CUT_EMERY_SANDSTONE); + registerSlab(Decoration.BLUE_NETHER_BRICKS); + registerSlab(Decoration.CRIMSON_STONE); + registerSlab(Decoration.CRIMSON_COBBLESTONE); + registerSlab(Decoration.WARPED_STONE); + registerSlab(Decoration.WARPED_COBBLESTONE); + + registerWall(Decoration.AZURE_SANDSTONE); + registerWall(Decoration.QUARTZ_SANDSTONE); + registerWall(Decoration.JADEITE_SANDSTONE); + registerWall(Decoration.EMERY_SANDSTONE); + registerWall(Decoration.BLUE_NETHER_BRICKS); + registerWall(Decoration.CRIMSON_STONE); + registerWall(Decoration.CRIMSON_COBBLESTONE); + registerWall(Decoration.WARPED_STONE); + registerWall(Decoration.WARPED_COBBLESTONE); + } + } + + public static final class Plant { + public static final BlockEntry WARPED_WART = new BlockEntry<>( + "warped_wart", WarpedWartBlock.PROPERTIES, WarpedWartBlock::new + ); + + private static void init() { } + } + + public static final Map> TO_SLAB = new HashMap<>(); + public static final Map> TO_STAIRS = new HashMap<>(); + public static final Map> TO_WALL = new HashMap<>(); + + public static final class BlockEntry implements Supplier, ItemLike { + private final RegistryObject regObject; + private final Supplier properties; + + public static BlockEntry simple(String name, Supplier properties, Consumer extra) { + return new BlockEntry<>(name, properties, p -> Util.make(new Block(p), extra)); + } + + public BlockEntry(String name, Supplier properties, Function make) { + this.properties = properties; + this.regObject = REGISTER.register(name, () -> make.apply(properties.get())); + } + + @Override + public T get() + { + return regObject.get(); + } + + public BlockState defaultBlockState() { + return get().defaultBlockState(); + } + + public ResourceLocation getId() { + return regObject.getId(); + } + + public BlockBehaviour.Properties getProperties() + { + return properties.get(); + } + + @Nonnull + @Override + public Item asItem() + { + return get().asItem(); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECConfiguredFeatures.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECConfiguredFeatures.java new file mode 100644 index 00000000..ed13adec --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECConfiguredFeatures.java @@ -0,0 +1,38 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import net.minecraft.core.Registry; +import net.minecraft.data.BuiltinRegistries; +import net.minecraft.data.worldgen.Features; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.levelgen.VerticalAnchor; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECConfiguredFeatures { + public static ConfiguredFeature ORE_LAPIS_EXTRA = register("ore_gold_extra", + Feature.ORE.configured(new OreConfiguration(Features.ORE_LAPIS_TARGET_LIST, 7)) + .rangeUniform(VerticalAnchor.absolute(32), VerticalAnchor.absolute(79)).squared().count(20)); + public static ConfiguredFeature ORE_EMERALD_EXTRA = register("ore_emerald_extra", + Feature.ORE.configured(new OreConfiguration(Features.ORE_EMERALD_TARGET_LIST, 5)) + .rangeUniform(VerticalAnchor.absolute(32), VerticalAnchor.absolute(79)).squared().count(20)); + public static final ConfiguredFeature ORE_DEBRIS_EXTRA = register("ore_debris_extra", + Feature.SCATTERED_ORE.configured(new OreConfiguration(OreConfiguration.Predicates.NETHER_ORE_REPLACEABLES, + Blocks.ANCIENT_DEBRIS.defaultBlockState(), 4, 0.8F)) + .rangeTriangle(VerticalAnchor.absolute(16), VerticalAnchor.absolute(79)).squared()); + public static final ConfiguredFeature ORE_QUARTZ_EXTRA = register("ore_quartz_extra", + Feature.ORE.configured(new OreConfiguration(OreConfiguration.Predicates.NETHERRACK, + Blocks.NETHER_QUARTZ_ORE.defaultBlockState(), 16)) + .range(Features.Decorators.RANGE_10_10).squared().count(20)); + public static ConfiguredFeature ZOMBIE_VILLAGER_ROOM = register("zombie_villager_room", + ECFeatures.ZOMBIE_VILLAGER_ROOM.configured(FeatureConfiguration.NONE) + .range(Features.Decorators.FULL_RANGE).squared().count(8)); + + private static ConfiguredFeature register(String id, ConfiguredFeature configuredFeature) { + return Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, new ResourceLocation(MODID, id), configuredFeature); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECConfiguredStructures.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECConfiguredStructures.java new file mode 100644 index 00000000..797eff5a --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECConfiguredStructures.java @@ -0,0 +1,23 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.common.world.pools.NetherWarfieldPools; +import net.minecraft.core.Registry; +import net.minecraft.data.BuiltinRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature; +import net.minecraft.world.level.levelgen.feature.configurations.JigsawConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECConfiguredStructures { + public static final ConfiguredStructureFeature SHELTER_HOUSE = ECStructures.SHELTER.configured(NoneFeatureConfiguration.INSTANCE); + public static final ConfiguredStructureFeature NETHER_WARFIELD = ECStructures.NETHER_WARFIELD.configured( + new JigsawConfiguration(() -> NetherWarfieldPools.START, 6) + ); + + public static void init() { + Registry.register(BuiltinRegistries.CONFIGURED_STRUCTURE_FEATURE, new ResourceLocation(MODID, "shelter_house"), SHELTER_HOUSE); + Registry.register(BuiltinRegistries.CONFIGURED_STRUCTURE_FEATURE, new ResourceLocation(MODID, "nether_warfield"), NETHER_WARFIELD); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECConfiguredSurfaceBuilder.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECConfiguredSurfaceBuilder.java new file mode 100644 index 00000000..9a457f37 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECConfiguredSurfaceBuilder.java @@ -0,0 +1,34 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.common.world.surface.AzureDesertSurfaceBuilder; +import com.hexagram2021.emeraldcraft.common.world.surface.EmeryDesertSurfaceBuilder; +import com.hexagram2021.emeraldcraft.common.world.surface.JadeiteDesertSurfaceBuilder; +import com.hexagram2021.emeraldcraft.common.world.surface.QuartzDesertSurfaceBuilder; +import net.minecraft.core.Registry; +import net.minecraft.data.BuiltinRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.levelgen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.level.levelgen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.level.levelgen.surfacebuilders.SurfaceBuilderBaseConfiguration; +import net.minecraft.world.level.levelgen.surfacebuilders.SurfaceBuilderConfiguration; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECConfiguredSurfaceBuilder { + public static final ConfiguredSurfaceBuilder AZURE_DESERT_BUILDER = register( + "azure_desert", SurfaceBuilder.DEFAULT.configured(AzureDesertSurfaceBuilder.CONFIG) + ); + public static final ConfiguredSurfaceBuilder JADEITE_DESERT_BUILDER = register( + "jadeite_desert", SurfaceBuilder.DEFAULT.configured(JadeiteDesertSurfaceBuilder.CONFIG) + ); + public static final ConfiguredSurfaceBuilder EMERY_DESERT_BUILDER = register( + "emery_desert", SurfaceBuilder.DEFAULT.configured(EmeryDesertSurfaceBuilder.CONFIG) + ); + public static final ConfiguredSurfaceBuilder QUARTZ_DESERT_BUILDER = register( + "quartz_desert", SurfaceBuilder.DEFAULT.configured(QuartzDesertSurfaceBuilder.CONFIG) + ); + + private static ConfiguredSurfaceBuilder register(String id, ConfiguredSurfaceBuilder builder) { + return Registry.register(BuiltinRegistries.CONFIGURED_SURFACE_BUILDER, new ResourceLocation(MODID, id), builder); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECContainerTypes.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECContainerTypes.java new file mode 100644 index 00000000..130e8a26 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECContainerTypes.java @@ -0,0 +1,37 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.common.crafting.*; +import net.minecraft.world.inventory.MenuType; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fmllegacy.RegistryObject; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECContainerTypes { + public static final DeferredRegister> REGISTER = DeferredRegister.create(ForgeRegistries.CONTAINERS, MODID); + + public static final RegistryObject> CARPENTRY_TABLE_MENU = REGISTER.register( + "carpentry", () -> new MenuType<>(CarpentryTableMenu::new) + ); + public static final RegistryObject> GLASS_KILN_MENU = REGISTER.register( + "glass_kiln", () -> new MenuType<>(GlassKilnMenu::new) + ); + public static final RegistryObject> MINERAL_TABLE_MENU = REGISTER.register( + "mineral_table", () -> new MenuType<>(MineralTableMenu::new) + ); + public static final RegistryObject> CONTINUOUS_MINER_MENU = REGISTER.register( + "continuous_miner", () -> new MenuType<>(ContinuousMinerMenu::new) + ); + public static final RegistryObject> ICE_MAKER_MENU = REGISTER.register( + "ice_maker", () -> new MenuType<>(IceMakerMenu::new) + ); + public static final RegistryObject> MELTER_MENU = REGISTER.register( + "melter", () -> new MenuType<>(MelterMenu::new) + ); + + public static void init(IEventBus bus) { + REGISTER.register(bus); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECEntities.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECEntities.java new file mode 100644 index 00000000..31539ef7 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECEntities.java @@ -0,0 +1,45 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.client.models.entities.NetherLambmanEntity; +import com.hexagram2021.emeraldcraft.client.models.entities.NetherPigmanEntity; +import com.hexagram2021.emeraldcraft.client.models.entities.PiglinCuteyEntity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.npc.WanderingTrader; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.minecraftforge.fmllegacy.RegistryObject; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECEntities { + public static final DeferredRegister> REGISTER = DeferredRegister.create(ForgeRegistries.ENTITIES, MODID); + + public static final RegistryObject> PIGLIN_CUTEY = REGISTER.register( + "piglin_cutey", () -> EntityType.Builder.of(PiglinCuteyEntity::new, MobCategory.MISC) + .sized(0.6F, 1.9F) + .clientTrackingRange(10) + .build(new ResourceLocation(MODID, "piglin_cutey").toString()) + ); + public static final RegistryObject> NETHER_PIGMAN = REGISTER.register( + "nether_pigman", () -> EntityType.Builder.of(NetherPigmanEntity::new, MobCategory.CREATURE) + .sized(0.6F, 1.95F) + .clientTrackingRange(10) + .build(new ResourceLocation(MODID, "nether_pigman").toString()) + ); + public static final RegistryObject> NETHER_LAMBMAN = REGISTER.register( + "nether_lambman", () -> EntityType.Builder.of(NetherLambmanEntity::new, MobCategory.CREATURE) + .sized(0.6F, 1.95F) + .clientTrackingRange(10) + .build(new ResourceLocation(MODID, "nether_lambman").toString()) + ); + + private ECEntities() { } + + public static void init(IEventBus bus) { + REGISTER.register(bus); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECFeatures.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECFeatures.java new file mode 100644 index 00000000..16d63d3a --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECFeatures.java @@ -0,0 +1,17 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.common.world.ZombieVillagerRoomFeature; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraftforge.event.RegistryEvent; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECFeatures { + public static final Feature ZOMBIE_VILLAGER_ROOM = new ZombieVillagerRoomFeature(NoneFeatureConfiguration.CODEC); + + public static void init(RegistryEvent.Register> event) { + ZOMBIE_VILLAGER_ROOM.setRegistryName(MODID, "zombie_villager_room"); + event.getRegistry().register(ZOMBIE_VILLAGER_ROOM); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECItems.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECItems.java new file mode 100644 index 00000000..3ca5273f --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECItems.java @@ -0,0 +1,191 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.EmeraldCraft; +import com.hexagram2021.emeraldcraft.common.items.EmeraldArmorItem; +import com.hexagram2021.emeraldcraft.common.items.LapisArmorItem; +import com.hexagram2021.emeraldcraft.common.util.ECFoods; +import net.minecraft.Util; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.*; +import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.block.entity.BannerPattern; +import net.minecraftforge.common.ForgeSpawnEggItem; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.minecraftforge.fmllegacy.RegistryObject; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; + +import javax.annotation.Nonnull; +import java.util.EnumMap; +import java.util.Locale; +import java.util.Map; +import java.util.function.Consumer; +import java.util.function.Supplier; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECItems { + public static final DeferredRegister REGISTER = DeferredRegister.create(ForgeRegistries.ITEMS, MODID); + + public static final Map> EMERALD_ARMOR = new EnumMap<>(EquipmentSlot.class); + public static final Map> LAPIS_ARMOR = new EnumMap<>(EquipmentSlot.class); + + public static final ItemRegObject WARPED_WART = ItemRegObject.register( + "warped_wart", () -> new ItemNameBlockItem(ECBlocks.Plant.WARPED_WART.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + public static final ItemRegObject PIGLIN_CUTEY_SPAWN_EGG = ItemRegObject.register( + "piglin_cutey_spawn_egg", () -> new ForgeSpawnEggItem(ECEntities.PIGLIN_CUTEY, 0xF1E2B1, 0xE6BE02, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + public static final ItemRegObject NETHER_PIGMAN_SPAWN_EGG = ItemRegObject.register( + "nether_pigman_spawn_egg", () -> new ForgeSpawnEggItem(ECEntities.NETHER_PIGMAN, 0xFF8EB3, 0x053636, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + public static final ItemRegObject NETHER_LAMBMAN_SPAWN_EGG = ItemRegObject.register( + "nether_lambman_spawn_egg", () -> new ForgeSpawnEggItem(ECEntities.NETHER_LAMBMAN, 0xFFFFFF, 0x0F9B9B, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + + public static final ItemRegObject AGATE_APPLE = ItemRegObject.register( + "agate_apple", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).rarity(Rarity.RARE).food(ECFoods.AGATE_APPLE)) + ); + public static final ItemRegObject JADE_APPLE = ItemRegObject.register( + "jade_apple", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).rarity(Rarity.RARE).food(ECFoods.JADE_APPLE)) + ); + + public static final ItemRegObject DIAMOND_NUGGET = ItemRegObject.register( + "diamond_nugget", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + public static final ItemRegObject EMERALD_NUGGET = ItemRegObject.register( + "emerald_nugget", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + public static final ItemRegObject LAPIS_NUGGET = ItemRegObject.register( + "lapis_nugget", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + + public static final ItemRegObject IRON_CONCENTRATE = ItemRegObject.register( + "iron_concentrate", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + public static final ItemRegObject GOLD_CONCENTRATE = ItemRegObject.register( + "gold_concentrate", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + public static final ItemRegObject COPPER_CONCENTRATE = ItemRegObject.register( + "copper_concentrate", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + + public static final ItemRegObject MELTED_EMERALD_BUCKET = ItemRegObject.register( + "melted_emerald_bucket", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(16)) + ); + public static final ItemRegObject MELTED_IRON_BUCKET = ItemRegObject.register( + "melted_iron_bucket", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(16)) + ); + public static final ItemRegObject MELTED_GOLD_BUCKET = ItemRegObject.register( + "melted_gold_bucket", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(16)) + ); + public static final ItemRegObject MELTED_COPPER_BUCKET = ItemRegObject.register( + "melted_copper_bucket", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(16)) + ); + + public static final ItemRegObject ROCK_BREAKER = ItemRegObject.register( + "rock_breaker", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + + public static final class BannerPatterns { + public static final ItemRegObject BEE = ItemRegObject.register( + "bee_banner_pattern", () -> { + String enumName = MODID + "_bee"; + String fullId = "ec_bee"; + BannerPattern pattern = BannerPattern.create(enumName.toUpperCase(), enumName, fullId, true); + return new BannerPatternItem(pattern, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(1)); + } + ); + public static final ItemRegObject SNOW = ItemRegObject.register( + "snow_banner_pattern", () -> { + String enumName = MODID + "_snow"; + String fullId = "ec_snow"; + BannerPattern pattern = BannerPattern.create(enumName.toUpperCase(), enumName, fullId, true); + return new BannerPatternItem(pattern, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(1)); + } + ); + public static final ItemRegObject BOTTLE = ItemRegObject.register( + "bottle_banner_pattern", () -> { + String enumName = MODID + "_bottle"; + String fullId = "ec_bottle"; + BannerPattern pattern = BannerPattern.create(enumName.toUpperCase(), enumName, fullId, true); + return new BannerPatternItem(pattern, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(1)); + } + ); + public static final ItemRegObject POTION = ItemRegObject.register( + "potion_banner_pattern", () -> { + String enumName = MODID + "_potion"; + String fullId = "ec_potion"; + BannerPattern pattern = BannerPattern.create(enumName.toUpperCase(), enumName, fullId, true); + return new BannerPatternItem(pattern, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(1)); + } + ); + + private static void init() {} + } + + private ECItems() { } + + public static void init(IEventBus bus) { + REGISTER.register(bus); + + for(EquipmentSlot slot : EquipmentSlot.values()) { + if (slot.getType() == EquipmentSlot.Type.ARMOR) { + EMERALD_ARMOR.put(slot, ItemRegObject.register( + "emerald_" + slot.getName().toLowerCase(Locale.ENGLISH), () -> new EmeraldArmorItem(slot) + )); + LAPIS_ARMOR.put(slot, ItemRegObject.register( + "lapis_" + slot.getName().toLowerCase(Locale.ENGLISH), () -> new LapisArmorItem(slot) + )); + } + } + + BannerPatterns.init(); + } + + public static class ItemRegObject implements Supplier, ItemLike { + private final RegistryObject regObject; + + private static ItemRegObject simple(String name) { + return simple(name, $ -> { }, $ -> { }); + } + + private static ItemRegObject simple(String name, Consumer makeProps, Consumer processItem) { + return register(name, () -> Util.make(new Item(Util.make(new Item.Properties(), makeProps)), processItem)); + } + + private static ItemRegObject register(String name, Supplier make) { + return new ItemRegObject<>(REGISTER.register(name, make)); + } + + private static ItemRegObject of(T existing) { + return new ItemRegObject<>(RegistryObject.of(existing.getRegistryName(), existing::getRegistryType)); + } + + private ItemRegObject(RegistryObject regObject) + { + this.regObject = regObject; + } + + @Override + @Nonnull + public T get() + { + return regObject.get(); + } + + @Nonnull + @Override + public Item asItem() + { + return regObject.get(); + } + + public ResourceLocation getId() + { + return regObject.getId(); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECProperty.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECProperty.java new file mode 100644 index 00000000..0093cf19 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECProperty.java @@ -0,0 +1,8 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import net.minecraft.world.level.block.state.properties.IntegerProperty; + +public class ECProperty { + public static final IntegerProperty EXP_COUNT = IntegerProperty.create("exp_count", 0, 15); + public static final IntegerProperty HONEY_COUNT = IntegerProperty.create("honey_count", 0, 7); +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECRecipeSerializer.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECRecipeSerializer.java new file mode 100644 index 00000000..4412d515 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECRecipeSerializer.java @@ -0,0 +1,35 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.common.crafting.*; +import com.hexagram2021.emeraldcraft.common.crafting.serializer.*; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fmllegacy.RegistryObject; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECRecipeSerializer { + public static final DeferredRegister> REGISTER = DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, MODID); + + public static final RegistryObject> CARPENTRY_SERIALIZER = REGISTER.register( + "carpentry", () -> new CarpentryTableRecipeSerializer<>(CarpentryTableRecipe::new) + ); + public static final RegistryObject> GLASS_KILN_SERIALIZER = REGISTER.register( + "glass_kiln", () -> new GlassKilnRecipeSerializer<>(GlassKilnRecipe::new, 100) + ); + public static final RegistryObject> MINERAL_TABLE_SERIALIZER = REGISTER.register( + "mineral_table", () -> new MineralTableRecipeSerializer<>(MineralTableRecipe::new, MineralTableRecipe.BURN_TIME) + ); + public static final RegistryObject> ICE_MAKER_SERIALIZER = REGISTER.register( + "ice_maker", () -> new IceMakerRecipeSerializer<>(IceMakerRecipe::new, IceMakerRecipe.FREEZING_TIME) + ); + public static final RegistryObject> MELTER_SERIALIZER = REGISTER.register( + "melter", () -> new MelterRecipeSerializer<>(MelterRecipe::new, MelterRecipe.MELTING_TIME) + ); + + public static void init(IEventBus bus) { + REGISTER.register(bus); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECRecipes.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECRecipes.java new file mode 100644 index 00000000..b09d43e5 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECRecipes.java @@ -0,0 +1,31 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.common.crafting.*; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeType; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECRecipes { + public static final RecipeType CARPENTRY_TABLE_TYPE = register("carpentry"); + public static final RecipeType GLASS_KILN_TYPE = register("glass_kiln"); + public static final RecipeType MINERAL_TABLE_TYPE = register("mineral_table"); + public static final RecipeType ICE_MAKER_TYPE = register("ice_maker");; + public static final RecipeType MELTER_TYPE = register("melter"); + + public static void registerRecipeTypes() { + + } + + private static > RecipeType register(String path) { + ResourceLocation name = new ResourceLocation(MODID, path); + return Registry.register(Registry.RECIPE_TYPE, name, new RecipeType() { + @Override + public String toString() { + return name.toString(); + } + }); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructures.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructures.java new file mode 100644 index 00000000..f3f03fe5 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructures.java @@ -0,0 +1,76 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.hexagram2021.emeraldcraft.common.world.NetherWarfieldFeature; +import com.hexagram2021.emeraldcraft.common.world.ShelterFeature; +import com.hexagram2021.emeraldcraft.common.world.ShelterPieces; +import com.hexagram2021.emeraldcraft.mixin.StructureFeatureAccess; +import com.hexagram2021.emeraldcraft.mixin.StructureSettingsAccess; +import com.hexagram2021.emeraldcraft.mixin.StructureSettingsConfigAccess; +import net.minecraft.core.Registry; +import net.minecraft.data.BuiltinRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.levelgen.GenerationStep; +import net.minecraft.world.level.levelgen.StructureSettings; +import net.minecraft.world.level.levelgen.feature.StructureFeature; +import net.minecraft.world.level.levelgen.feature.StructurePieceType; +import net.minecraft.world.level.levelgen.feature.VillageFeature; +import net.minecraft.world.level.levelgen.feature.configurations.JigsawConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.StructureFeatureConfiguration; +import net.minecraftforge.event.RegistryEvent; + +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECStructures { + public static final StructurePieceType SHELTER_TYPE = Registry.register(Registry.STRUCTURE_PIECE, "shelter", ShelterPieces.ShelterPiece::new); + + public static final ShelterFeature SHELTER = new ShelterFeature(NoneFeatureConfiguration.CODEC); + public static final StructureFeature NETHER_WARFIELD = new NetherWarfieldFeature(JigsawConfiguration.CODEC); + + public static void init(RegistryEvent.Register> event) { + SHELTER.setRegistryName(new ResourceLocation(MODID, "shelter")); + NETHER_WARFIELD.setRegistryName(new ResourceLocation(MODID, "nether_warfield")); + event.getRegistry().register(SHELTER); + event.getRegistry().register(NETHER_WARFIELD); + + StructureFeatureConfiguration shelterConfig = new StructureFeatureConfiguration(64, 32, 19260817); + StructureFeatureConfiguration netherWarfieldConfig = new StructureFeatureConfiguration(32, 8, 10387312); + + StructureFeature.STRUCTURES_REGISTRY.put(SHELTER.getRegistryName().toString().toLowerCase(Locale.ROOT), SHELTER); + StructureFeature.STRUCTURES_REGISTRY.put(NETHER_WARFIELD.getRegistryName().toString().toLowerCase(Locale.ROOT), NETHER_WARFIELD); + StructureFeatureAccess.setNOISE_AFFECTING_FEATURES(ImmutableList.>builder() + .addAll(StructureFeature.NOISE_AFFECTING_FEATURES) + .add(SHELTER) + .add(NETHER_WARFIELD) + .build() + ); + StructureSettingsAccess.setDEFAULTS(ImmutableMap., StructureFeatureConfiguration>builder() + .putAll(StructureSettings.DEFAULTS) + .put(SHELTER, shelterConfig) + .put(NETHER_WARFIELD, netherWarfieldConfig) + .build() + ); + + + BuiltinRegistries.NOISE_GENERATOR_SETTINGS.entrySet().forEach(settings -> { + Map, StructureFeatureConfiguration> structureMap = settings.getValue().structureSettings().structureConfig(); + + if(structureMap instanceof ImmutableMap){ + Map, StructureFeatureConfiguration> tempMap = new HashMap<>(structureMap); + tempMap.put(SHELTER, shelterConfig); + tempMap.put(NETHER_WARFIELD, netherWarfieldConfig); + ((StructureSettingsConfigAccess)settings.getValue().structureSettings()).setStructureConfig(tempMap); + } + else{ + structureMap.put(SHELTER, shelterConfig); + structureMap.put(NETHER_WARFIELD, netherWarfieldConfig); + } + }); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECSurfaceBuilder.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECSurfaceBuilder.java new file mode 100644 index 00000000..badeb105 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECSurfaceBuilder.java @@ -0,0 +1,28 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.common.world.surface.AzureDesertSurfaceBuilder; +import com.hexagram2021.emeraldcraft.common.world.surface.JadeiteDesertSurfaceBuilder; +import net.minecraft.world.level.levelgen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.level.levelgen.surfacebuilders.SurfaceBuilderBaseConfiguration; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fmllegacy.RegistryObject; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@SuppressWarnings("unused") +public class ECSurfaceBuilder { + public static final DeferredRegister> REGISTER = DeferredRegister.create(ForgeRegistries.SURFACE_BUILDERS, MODID); + + public static final RegistryObject AZURE_DESERT = REGISTER.register( + "azure_desert", () -> new AzureDesertSurfaceBuilder(SurfaceBuilderBaseConfiguration.CODEC) + ); + public static final RegistryObject JADEITE_DESERT = REGISTER.register( + "jadeite_desert", () -> new JadeiteDesertSurfaceBuilder(SurfaceBuilderBaseConfiguration.CODEC) + ); + + public static void init(IEventBus bus) { + REGISTER.register(bus); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/util/ECFoods.java b/src/main/java/com/hexagram2021/emeraldcraft/common/util/ECFoods.java new file mode 100644 index 00000000..630c02b3 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/util/ECFoods.java @@ -0,0 +1,17 @@ +package com.hexagram2021.emeraldcraft.common.util; + +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.food.FoodProperties; + +public class ECFoods { + public static final FoodProperties AGATE_APPLE = + (new FoodProperties.Builder()).nutrition(2).saturationMod(1.2F) + .effect(() -> new MobEffectInstance(MobEffects.DAMAGE_BOOST, 1200, 0), 1.0F) + .effect(() -> new MobEffectInstance(MobEffects.DIG_SPEED, 1200, 0), 1.0F) + .alwaysEat().build(); + public static final FoodProperties JADE_APPLE = + (new FoodProperties.Builder()).nutrition(2).saturationMod(1.2F) + .effect(() -> new MobEffectInstance(MobEffects.HERO_OF_THE_VILLAGE, 1200, 1), 1.0F) + .alwaysEat().build(); +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/util/ECLogger.java b/src/main/java/com/hexagram2021/emeraldcraft/common/util/ECLogger.java new file mode 100644 index 00000000..d3902861 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/util/ECLogger.java @@ -0,0 +1,49 @@ +package com.hexagram2021.emeraldcraft.common.util; + +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.Logger; + +public class ECLogger { + public static boolean debugMode = true; + public static Logger logger; + + public static void log(Level logLevel, Object object) + { + logger.log(logLevel, String.valueOf(object)); + } + + public static void error(Object object) + { + log(Level.ERROR, object); + } + + public static void info(Object object) + { + log(Level.INFO, object); + } + + public static void warn(Object object) + { + log(Level.WARN, object); + } + + public static void error(String message, Object... params) + { + logger.log(Level.ERROR, message, params); + } + + public static void info(String message, Object... params) + { + logger.log(Level.INFO, message, params); + } + + public static void warn(String message, Object... params) + { + logger.log(Level.WARN, message, params); + } + + public static void debug(Object object) { + if(debugMode) + log(Level.INFO, "[DEBUG:] "+object); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/util/ECSounds.java b/src/main/java/com/hexagram2021/emeraldcraft/common/util/ECSounds.java new file mode 100644 index 00000000..c90bca08 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/util/ECSounds.java @@ -0,0 +1,72 @@ +package com.hexagram2021.emeraldcraft.common.util; + +import net.minecraft.client.resources.sounds.Sound; +import net.minecraft.network.protocol.game.ClientboundSoundPacket; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.entity.Entity; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +import java.util.HashSet; +import java.util.Set; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD) +public class ECSounds { + static Set registeredEvents = new HashSet<>(); + //public static final SoundEvent PIGLIN_CUTEY_ADMIRING_ITEM = registerSound("piglin_cutey.admiring_item"); + public static final SoundEvent PIGLIN_CUTEY_AMBIENT = registerSound("piglin_cutey.ambient"); + public static final SoundEvent PIGLIN_CUTEY_CELEBRATE = registerSound("piglin_cutey.celebrate"); + public static final SoundEvent PIGLIN_CUTEY_DEATH = registerSound("piglin_cutey.death"); + public static final SoundEvent PIGLIN_CUTEY_HURT = registerSound("piglin_cutey.hurt"); + public static final SoundEvent PIGLIN_CUTEY_NO = registerSound("piglin_cutey.no"); + public static final SoundEvent PIGLIN_CUTEY_TRADE = registerSound("piglin_cutey.trade"); + public static final SoundEvent PIGLIN_CUTEY_YES = registerSound("piglin_cutey.yes"); + + public static final SoundEvent NETHER_PIGMAN_AMBIENT = registerSound("nether_pigman.ambient"); + public static final SoundEvent NETHER_PIGMAN_DEATH = registerSound("nether_pigman.death"); + public static final SoundEvent NETHER_PIGMAN_HURT = registerSound("nether_pigman.hurt"); + public static final SoundEvent NETHER_PIGMAN_NO = registerSound("nether_pigman.no"); + public static final SoundEvent NETHER_PIGMAN_TRADE = registerSound("nether_pigman.trade"); + public static final SoundEvent NETHER_PIGMAN_YES = registerSound("nether_pigman.yes"); + + public static final SoundEvent NETHER_LAMBMAN_AMBIENT = registerSound("nether_lambman.ambient"); + public static final SoundEvent NETHER_LAMBMAN_DEATH = registerSound("nether_lambman.death"); + public static final SoundEvent NETHER_LAMBMAN_HURT = registerSound("nether_lambman.hurt"); + public static final SoundEvent NETHER_LAMBMAN_NO = registerSound("nether_lambman.no"); + public static final SoundEvent NETHER_LAMBMAN_TRADE = registerSound("nether_lambman.trade"); + public static final SoundEvent NETHER_LAMBMAN_YES = registerSound("nether_lambman.yes"); + + public static final SoundEvent VILLAGER_WORK_ASTROLOGIST = registerSound("villager.work_astrologist"); + public static final SoundEvent VILLAGER_WORK_BEEKEEPER = registerSound("villager.work_beekeeper"); + public static final SoundEvent VILLAGER_WORK_CARPENTER = registerSound("villager.work_carpenter"); + public static final SoundEvent VILLAGER_WORK_CHEMICAL_ENGINEER = registerSound("villager.work_chemical_engineer"); + public static final SoundEvent VILLAGER_WORK_GEOLOGIST = registerSound("villager.work_geologist"); + public static final SoundEvent VILLAGER_WORK_GLAZIER = registerSound("villager.work_glazier"); + public static final SoundEvent VILLAGER_WORK_GROWER = registerSound("villager.work_grower"); + public static final SoundEvent VILLAGER_WORK_ICER = registerSound("villager.work_icer"); + public static final SoundEvent VILLAGER_WORK_MINER = registerSound("villager.work_miner"); + + private static SoundEvent registerSound(String name) { + ResourceLocation location = new ResourceLocation(MODID, name); + SoundEvent event = new SoundEvent(location); + registeredEvents.add(event.setRegistryName(location)); + return event; + } + + @SubscribeEvent + public static void registerSounds(RegistryEvent.Register evt) { + for(SoundEvent event : registeredEvents) + evt.getRegistry().register(event); + } + + public static void PlaySoundForPlayer(Entity player, SoundEvent sound, float volume, float pitch) { + if(player instanceof ServerPlayer) + ((ServerPlayer)player).connection.send(new ClientboundSoundPacket(sound, player.getSoundSource(), + player.getX(), player.getY(), player.getZ(), volume, pitch)); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/ECTrades.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ECTrades.java new file mode 100644 index 00000000..ffeae7af --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ECTrades.java @@ -0,0 +1,523 @@ +package com.hexagram2021.emeraldcraft.common.world; + +import com.google.common.collect.ImmutableMap; +import com.hexagram2021.emeraldcraft.common.register.ECEntities; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import net.minecraft.core.Registry; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.npc.VillagerDataHolder; +import net.minecraft.world.entity.npc.VillagerTrades; +import net.minecraft.world.entity.npc.VillagerTrades.ItemListing; +import net.minecraft.world.entity.npc.VillagerType; +import net.minecraft.world.item.*; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.trading.MerchantOffer; +import net.minecraft.world.level.ItemLike; + +import javax.annotation.Nullable; +import java.util.Map; +import java.util.Random; + +public class ECTrades { + public static final int DEFAULT_SUPPLY = 12; + public static final int COMMON_ITEMS_SUPPLY = 16; + public static final int CURRENCY_EXCHANGE_SUPPLY = 32; + public static final int UNCOMMON_ITEMS_SUPPLY = 6; + public static final int ONLY_SUPPLY_ONCE = 1; + + public static final int XP_LEVEL_1_SELL = 1; + public static final int XP_LEVEL_1_BUY = 2; + public static final int XP_LEVEL_2_SELL = 5; + public static final int XP_LEVEL_2_BUY = 10; + public static final int XP_LEVEL_3_SELL = 10; + public static final int XP_LEVEL_3_BUY = 20; + public static final int XP_LEVEL_4_SELL = 15; + public static final int XP_LEVEL_4_BUY = 30; + public static final int XP_LEVEL_5_TRADE = 30; + + public static final float LOW_TIER_PRICE_MULTIPLIER = 0.05F; + public static final float HIGH_TIER_PRICE_MULTIPLIER = 0.2F; + + public static final Int2ObjectMap PIGLIN_CUTEY_TRADES = new Int2ObjectOpenHashMap<>(ImmutableMap.of( + 1, new ItemListing[] { + new ItemsForGolds(new ItemStack(Items.FIRE_CHARGE), 3, 1, DEFAULT_SUPPLY, XP_LEVEL_1_SELL), + new ItemsForGolds(new ItemStack(Items.BLAZE_ROD), 8, 1, UNCOMMON_ITEMS_SUPPLY, XP_LEVEL_1_SELL), + new GoldForItems(Items.NETHER_BRICK, 6, DEFAULT_SUPPLY, XP_LEVEL_1_BUY) + }, + 2, new ItemListing[] { + new ItemsForGolds(new ItemStack(Items.CHARCOAL), 1, 4, COMMON_ITEMS_SUPPLY, XP_LEVEL_2_SELL), + new ItemsForGolds(new ItemStack(Items.SPECTRAL_ARROW), 1, 12, DEFAULT_SUPPLY, XP_LEVEL_2_SELL), + new GoldForItems(Items.IRON_NUGGET, 10, DEFAULT_SUPPLY, XP_LEVEL_2_BUY) + }, + 3, new ItemListing[] { + new ItemsForGolds(new ItemStack(Items.STRING), 1, 8, DEFAULT_SUPPLY, XP_LEVEL_3_SELL), + new ItemsForGolds(new ItemStack(Items.SADDLE), 7, 1, UNCOMMON_ITEMS_SUPPLY, XP_LEVEL_3_SELL), + new ItemsForEmeralds(new ItemStack(Items.GOLD_INGOT), 1, 4, CURRENCY_EXCHANGE_SUPPLY, XP_LEVEL_3_BUY) + }, + 4, new ItemListing[] { + new ItemsForEmeralds(new ItemStack(ECItems.WARPED_WART.asItem()), 1, 10, DEFAULT_SUPPLY, XP_LEVEL_4_SELL), + new EmeraldForItems(Items.ENDER_PEARL, 1, 4, UNCOMMON_ITEMS_SUPPLY, XP_LEVEL_4_SELL), + new ItemsAndGoldsToItems(Items.ANCIENT_DEBRIS, 1, 9, Items.NETHERITE_INGOT, 1, UNCOMMON_ITEMS_SUPPLY, XP_LEVEL_4_BUY) + }, + 5, new ItemListing[] { + new WrittenBookForEmerald( + new TranslatableComponent("book.emeraldcraft.piglin_cutey.title"), + new TranslatableComponent("entity.emeraldcraft.piglin_cutey"), + new TranslatableComponent("book.emeraldcraft.piglin_cutey.content"), + ONLY_SUPPLY_ONCE, + XP_LEVEL_5_TRADE + ), + new ItemsForEmeralds(new ItemStack(Items.PIGLIN_BANNER_PATTERN), 5, 1, ONLY_SUPPLY_ONCE, XP_LEVEL_5_TRADE), + new EmeraldForItems(Items.QUARTZ, 12, 1, DEFAULT_SUPPLY, XP_LEVEL_5_TRADE) + } + )); + + public static final Int2ObjectMap NETHER_PIGMAN_TRADES = new Int2ObjectOpenHashMap<>(ImmutableMap.of( + 1, new ItemListing[] { + new ItemsForDebris(new ItemStack(Items.MUSIC_DISC_PIGSTEP), 1, 1, ONLY_SUPPLY_ONCE, XP_LEVEL_1_SELL), + new ItemsForDebris(new ItemStack(Items.PIGLIN_BANNER_PATTERN), 1, 1, ONLY_SUPPLY_ONCE, XP_LEVEL_1_SELL), + new DebrisForItems(Items.PORKCHOP, 47, COMMON_ITEMS_SUPPLY, XP_LEVEL_1_BUY), + new DebrisForItems(Items.PORKCHOP, 47, COMMON_ITEMS_SUPPLY, XP_LEVEL_1_BUY), + new DebrisForItems(Items.PORKCHOP, 47, COMMON_ITEMS_SUPPLY, XP_LEVEL_1_BUY) + }, + 2, new ItemListing[] { + new ItemsForDebris(new ItemStack(Items.COOKED_PORKCHOP), 1, 19, COMMON_ITEMS_SUPPLY, XP_LEVEL_2_SELL), + new ItemsForDebris(new ItemStack(Items.COOKED_PORKCHOP), 1, 19, COMMON_ITEMS_SUPPLY, XP_LEVEL_2_SELL), + new DebrisForItems(Items.NETHER_WART_BLOCK, 49, UNCOMMON_ITEMS_SUPPLY, XP_LEVEL_2_BUY) + }, + 3, new ItemListing[] { + new DebrisForTwoKindsOfItem(Items.IRON_PICKAXE, Items.GOLDEN_PICKAXE, ONLY_SUPPLY_ONCE, XP_LEVEL_3_BUY), + new GoldForItems(Items.POTATO, 4, DEFAULT_SUPPLY, XP_LEVEL_3_BUY) + } + )); + + public static final Int2ObjectMap NETHER_LAMBMAN_TRADES = new Int2ObjectOpenHashMap<>(ImmutableMap.of( + 1, new ItemListing[] { + new ItemsForDebris(new ItemStack(Items.WHITE_WOOL), 1, 31, ONLY_SUPPLY_ONCE, XP_LEVEL_1_SELL), + new ItemsForDebris(new ItemStack(Items.BLACK_WOOL), 1, 31, ONLY_SUPPLY_ONCE, XP_LEVEL_1_SELL), + new DebrisForItems(Items.MUTTON, 33, COMMON_ITEMS_SUPPLY, XP_LEVEL_1_BUY), + new DebrisForItems(Items.MUTTON, 33, COMMON_ITEMS_SUPPLY, XP_LEVEL_1_BUY), + new DebrisForItems(Items.MUTTON, 33, COMMON_ITEMS_SUPPLY, XP_LEVEL_1_BUY) + }, + 2, new ItemListing[] { + new ItemsForDebris(new ItemStack(Items.COOKED_MUTTON), 1, 12, COMMON_ITEMS_SUPPLY, XP_LEVEL_2_SELL), + new ItemsForDebris(new ItemStack(Items.COOKED_MUTTON), 1, 12, COMMON_ITEMS_SUPPLY, XP_LEVEL_2_SELL), + new DebrisForItems(Items.WARPED_WART_BLOCK, 43, UNCOMMON_ITEMS_SUPPLY, XP_LEVEL_2_BUY) + }, + 3, new ItemListing[] { + new DebrisForTwoKindsOfItem(Items.IRON_HOE, Items.GOLDEN_HOE, ONLY_SUPPLY_ONCE, XP_LEVEL_3_BUY), + new GoldForItems(Items.GRASS_BLOCK, 2, DEFAULT_SUPPLY, XP_LEVEL_3_BUY) + } + )); + + static class WrittenBookForEmerald implements VillagerTrades.ItemListing { + private final Component title; + private final Component author; + private final Component content; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public WrittenBookForEmerald(Component title, Component author, Component content, int maxUses, int Xp) { + this.title = title; + this.author = author; + this.content = content; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + ItemStack itemstack = new ItemStack(Items.WRITTEN_BOOK); + CompoundTag compoundtag = new CompoundTag(); + compoundtag.putString(WrittenBookItem.TAG_TITLE, title.getString()); + compoundtag.putString(WrittenBookItem.TAG_AUTHOR, author.getString()); + ListTag pages = new ListTag(); + pages.add(StringTag.valueOf(content.getString())); + compoundtag.put(WrittenBookItem.TAG_PAGES, pages); + itemstack.setTag(compoundtag); + return new MerchantOffer(new ItemStack(Items.EMERALD), itemstack, this.maxUses, this.Xp, this.priceMultiplier); + } + } + + static class EmeraldForItems implements VillagerTrades.ItemListing { + private final Item item; + private final int cost; + private final int numberOfEmerald; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public EmeraldForItems(ItemLike item, int cost, int numberOfEmerald, int maxUses, int Xp) { + this.item = item.asItem(); + this.cost = cost; + this.numberOfEmerald = numberOfEmerald; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + ItemStack itemstack = new ItemStack(this.item, this.cost); + return new MerchantOffer(itemstack, new ItemStack(Items.EMERALD, numberOfEmerald), this.maxUses, this.Xp, this.priceMultiplier); + } + } + + static class ItemsForEmeralds implements VillagerTrades.ItemListing { + private final ItemStack itemStack; + private final int emeraldCost; + private final int numberOfItems; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public ItemsForEmeralds(ItemStack itemStack, int emeraldCost, int numberOfItems, int maxUses, int Xp) { + this.itemStack = itemStack; + this.emeraldCost = emeraldCost; + this.numberOfItems = numberOfItems; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + return new MerchantOffer(new ItemStack(Items.EMERALD, this.emeraldCost), new ItemStack(this.itemStack.getItem(), this.numberOfItems), this.maxUses, this.Xp, this.priceMultiplier); + } + } + + static class EnchantedItemForEmeralds implements VillagerTrades.ItemListing { + private final ItemStack itemStack; + private final int baseEmeraldCost; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public EnchantedItemForEmeralds(Item item, int baseEmeraldCost, int maxUses, int Xp) { + this.itemStack = new ItemStack(item); + this.baseEmeraldCost = baseEmeraldCost; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + public MerchantOffer getOffer(Entity trader, Random rand) { + int i = 5 + rand.nextInt(15); + ItemStack itemstack = EnchantmentHelper.enchantItem(rand, new ItemStack(this.itemStack.getItem()), i, false); + int j = Math.min(this.baseEmeraldCost + i, 64); + return new MerchantOffer(new ItemStack(Items.EMERALD, j), itemstack, this.maxUses, this.Xp, this.priceMultiplier); + } + } + + static class ItemsAndEmeraldsToItems implements VillagerTrades.ItemListing { + private final ItemStack fromItem; + private final int fromCount; + private final int emeraldCost; + private final ItemStack toItem; + private final int toCount; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public ItemsAndEmeraldsToItems(ItemLike forItem, int fromCount, int emeraldCost, Item toItem, int toCount, int maxUses, int Xp) { + this.fromItem = new ItemStack(forItem); + this.fromCount = fromCount; + this.emeraldCost = emeraldCost; + this.toItem = new ItemStack(toItem); + this.toCount = toCount; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + return new MerchantOffer(new ItemStack(Items.EMERALD, this.emeraldCost), new ItemStack(this.fromItem.getItem(), this.fromCount), new ItemStack(this.toItem.getItem(), this.toCount), this.maxUses, this.Xp, this.priceMultiplier); + } + } + + static class SuspisciousStewForEmerald implements VillagerTrades.ItemListing { + final MobEffect effect; + final int duration; + final int maxUses; + final int xp; + private final float priceMultiplier; + + public SuspisciousStewForEmerald(MobEffect effect, int duration, int maxUses, int xp) { + this.effect = effect; + this.duration = duration; + this.maxUses = maxUses; + this.xp = xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + ItemStack itemstack = new ItemStack(Items.SUSPICIOUS_STEW, 1); + SuspiciousStewItem.saveMobEffect(itemstack, this.effect, this.duration); + return new MerchantOffer(new ItemStack(Items.EMERALD, 1), itemstack, this.maxUses, this.xp, this.priceMultiplier); + } + } + + static class EmeraldsForVillagerTypeItem implements VillagerTrades.ItemListing { + private final Map trades; + private final int cost; + private final int emeraldCost; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public EmeraldsForVillagerTypeItem(int cost, int emeraldCost, int maxUses, int Xp, Map trades) { + Registry.VILLAGER_TYPE.stream().filter((villagerType) -> !trades.containsKey(villagerType)).findAny().ifPresent((villagerType) -> { + throw new IllegalStateException("Missing trade for villager type: " + Registry.VILLAGER_TYPE.getKey(villagerType)); + }); + this.trades = trades; + this.cost = cost; + this.emeraldCost = emeraldCost; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + @Nullable + public MerchantOffer getOffer(Entity trader, Random rand) { + if (trader instanceof VillagerDataHolder) { + ItemStack itemstack = new ItemStack(this.trades.get(((VillagerDataHolder)trader).getVillagerData().getType()), this.cost); + return new MerchantOffer(itemstack, new ItemStack(Items.EMERALD, emeraldCost), this.maxUses, this.Xp, priceMultiplier); + } else { + return null; + } + } + } + + static class VillagerTypeItemForEmeralds implements VillagerTrades.ItemListing { + private final Map trades; + private final int numberOfItems; + private final int emeraldCost; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public VillagerTypeItemForEmeralds(int numberOfItems, int emeraldCost, int maxUses, int Xp, Map trades) { + Registry.VILLAGER_TYPE.stream().filter((villagerType) -> !trades.containsKey(villagerType)).findAny().ifPresent((villagerType) -> { + throw new IllegalStateException("Missing trade for villager type: " + Registry.VILLAGER_TYPE.getKey(villagerType)); + }); + this.trades = trades; + this.numberOfItems = numberOfItems; + this.emeraldCost = emeraldCost; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + @Nullable + public MerchantOffer getOffer(Entity trader, Random rand) { + if (trader instanceof VillagerDataHolder) { + ItemStack itemstack = new ItemStack(this.trades.get(((VillagerDataHolder)trader).getVillagerData().getType()), this.numberOfItems); + return new MerchantOffer(new ItemStack(Items.EMERALD, emeraldCost), itemstack, this.maxUses, this.Xp, priceMultiplier); + } else { + return null; + } + } + } + + static class GoldForItems implements VillagerTrades.ItemListing { + private final Item item; + private final int cost; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public GoldForItems(ItemLike item, int cost, int maxUses, int Xp) { + this.item = item.asItem(); + this.cost = cost; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + ItemStack itemstack = new ItemStack(this.item, this.cost); + return new MerchantOffer(itemstack, new ItemStack(Items.GOLD_INGOT), this.maxUses, this.Xp, this.priceMultiplier); + } + } + + static class ItemsForGolds implements VillagerTrades.ItemListing { + private final ItemStack itemStack; + private final int goldCost; + private final int numberOfItems; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + + public ItemsForGolds(ItemStack itemStack, int goldCost, int numberOfItems, int maxUses, int Xp) { + this.itemStack = itemStack; + this.goldCost = goldCost; + this.numberOfItems = numberOfItems; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + return new MerchantOffer( + new ItemStack(Items.GOLD_INGOT, this.goldCost), + new ItemStack(this.itemStack.getItem(), this.numberOfItems), + this.maxUses, this.Xp, this.priceMultiplier + ); + } + } + + static class ItemsAndGoldsToItems implements VillagerTrades.ItemListing { + private final ItemStack fromItem; + private final int fromCount; + private final int goldCost; + private final ItemStack toItem; + private final int toCount; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public ItemsAndGoldsToItems(ItemLike forItem, int fromCount, int goldCost, Item toItem, int toCount, int maxUses, int Xp) { + this.fromItem = new ItemStack(forItem); + this.fromCount = fromCount; + this.goldCost = goldCost; + this.toItem = new ItemStack(toItem); + this.toCount = toCount; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + return new MerchantOffer(new ItemStack(Items.GOLD_INGOT, this.goldCost), new ItemStack(this.fromItem.getItem(), this.fromCount), new ItemStack(this.toItem.getItem(), this.toCount), this.maxUses, this.Xp, this.priceMultiplier); + } + } + + static class NetheriteForItems implements VillagerTrades.ItemListing { + private final Item item; + private final int cost; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public NetheriteForItems(ItemLike item, int cost, int maxUses, int Xp) { + this.item = item.asItem(); + this.cost = cost; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + ItemStack itemstack = new ItemStack(this.item, this.cost); + return new MerchantOffer(itemstack, new ItemStack(Items.NETHERITE_INGOT), this.maxUses, this.Xp, this.priceMultiplier); + } + } + + static class DebrisForItems implements VillagerTrades.ItemListing { + private final Item item; + private final int cost; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public DebrisForItems(ItemLike item, int cost, int maxUses, int Xp) { + this.item = item.asItem(); + this.cost = cost; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + ItemStack itemstack = new ItemStack(this.item, this.cost); + return new MerchantOffer(itemstack, new ItemStack(Items.ANCIENT_DEBRIS), this.maxUses, this.Xp, this.priceMultiplier); + } + } + + static class ItemsForDebris implements VillagerTrades.ItemListing { + private final ItemStack itemStack; + private final int debrisCost; + private final int numberOfItems; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + + public ItemsForDebris(ItemStack itemStack, int debrisCost, int numberOfItems, int maxUses, int Xp) { + this.itemStack = itemStack; + this.debrisCost = debrisCost; + this.numberOfItems = numberOfItems; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + return new MerchantOffer( + new ItemStack(Items.ANCIENT_DEBRIS, this.debrisCost), + new ItemStack(this.itemStack.getItem(), this.numberOfItems), + this.maxUses, this.Xp, this.priceMultiplier + ); + } + } + + static class DebrisForTwoKindsOfItem implements VillagerTrades.ItemListing { + private final Item item1; + private final Item item2; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public DebrisForTwoKindsOfItem(ItemLike item1, ItemLike item2, int maxUses, int Xp) { + this.item1 = item1.asItem(); + this.item2 = item2.asItem(); + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + ItemStack itemstack1 = new ItemStack(this.item1); + ItemStack itemstack2 = new ItemStack(this.item2); + return new MerchantOffer(itemstack1, itemstack2, new ItemStack(Items.ANCIENT_DEBRIS), this.maxUses, this.Xp, this.priceMultiplier); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/ECWorldGen.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ECWorldGen.java new file mode 100644 index 00000000..4ee20317 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ECWorldGen.java @@ -0,0 +1,13 @@ +package com.hexagram2021.emeraldcraft.common.world; + +import com.hexagram2021.emeraldcraft.common.register.ECStructures; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraftforge.event.world.BiomeLoadingEvent; + +public class ECWorldGen { + public static void biomeModification(final BiomeLoadingEvent event) { + if(event.getName().getPath().contains("crimson")) { + event.getGeneration().getStructures().add(() -> ECStructures.SHELTER.configured(NoneFeatureConfiguration.INSTANCE)); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/NetherWarfieldFeature.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/NetherWarfieldFeature.java new file mode 100644 index 00000000..f1406969 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/NetherWarfieldFeature.java @@ -0,0 +1,40 @@ +package com.hexagram2021.emeraldcraft.common.world; + +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.ChunkPos; +import net.minecraft.world.level.LevelHeightAccessor; +import net.minecraft.world.level.NoiseColumn; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.ChunkGenerator; +import net.minecraft.world.level.levelgen.GenerationStep; +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.level.levelgen.WorldgenRandom; +import net.minecraft.world.level.levelgen.feature.JigsawFeature; +import net.minecraft.world.level.levelgen.feature.configurations.JigsawConfiguration; + +public class NetherWarfieldFeature extends JigsawFeature { + public NetherWarfieldFeature(Codec codec) { + super(codec, 60, true, false); + } + + @Override + public GenerationStep.Decoration step() { + return GenerationStep.Decoration.SURFACE_STRUCTURES; + } + + @Override + protected boolean isFeatureChunk(ChunkGenerator chunkGenerator, BiomeSource biomeSource, + long seed, WorldgenRandom chunkRandom, ChunkPos chunk, + Biome biome, ChunkPos chunkPos, JigsawConfiguration config, LevelHeightAccessor level) { + BlockPos centerOfChunk = new BlockPos((chunk.x << 4) + 7, 0, (chunk.z << 4) + 7); + int landHeight = chunkGenerator.getBaseHeight(centerOfChunk.getX(), centerOfChunk.getZ(), Heightmap.Types.WORLD_SURFACE_WG, level); + + NoiseColumn columnOfBlocks = chunkGenerator.getBaseColumn(centerOfChunk.getX(), centerOfChunk.getZ(), level); + BlockState topBlock = columnOfBlocks.getBlockState(centerOfChunk.above(landHeight)); + + return topBlock.getFluidState().isEmpty(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/ShelterFeature.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ShelterFeature.java new file mode 100644 index 00000000..b9d1df0d --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ShelterFeature.java @@ -0,0 +1,64 @@ +package com.hexagram2021.emeraldcraft.common.world; + +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.RegistryAccess; +import net.minecraft.world.level.ChunkPos; +import net.minecraft.world.level.LevelHeightAccessor; +import net.minecraft.world.level.NoiseColumn; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.block.Rotation; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.ChunkGenerator; +import net.minecraft.world.level.levelgen.GenerationStep; +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.level.levelgen.WorldgenRandom; +import net.minecraft.world.level.levelgen.feature.StructureFeature; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraft.world.level.levelgen.structure.StructureStart; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructureManager; + +public class ShelterFeature extends StructureFeature { + + public ShelterFeature(Codec codec) { + super(codec); + } + + @Override + public GenerationStep.Decoration step() { + return GenerationStep.Decoration.SURFACE_STRUCTURES; + } + + @Override + protected boolean isFeatureChunk(ChunkGenerator chunkGenerator, BiomeSource biomeSource, + long seed, WorldgenRandom chunkRandom, ChunkPos chunk, + Biome biome, ChunkPos chunkPos, NoneFeatureConfiguration config, LevelHeightAccessor level) { + BlockPos centerOfChunk = new BlockPos((chunk.x << 4) + 7, 0, (chunk.z << 4) + 7); + int landHeight = chunkGenerator.getBaseHeight(centerOfChunk.getX(), centerOfChunk.getZ(), Heightmap.Types.WORLD_SURFACE_WG, level); + + NoiseColumn columnOfBlocks = chunkGenerator.getBaseColumn(centerOfChunk.getX(), centerOfChunk.getZ(), level); + BlockState topBlock = columnOfBlocks.getBlockState(centerOfChunk.above(landHeight)); + + return topBlock.getFluidState().isEmpty(); + } + + @Override + public StructureStartFactory getStartFactory() { + return ShelterFeature.FeatureStart::new; + } + + public static class FeatureStart extends StructureStart { + public FeatureStart(StructureFeature feature, ChunkPos chunkPos, int references, long seed) { + super(feature, chunkPos, references, seed); + } + + @Override + public void generatePieces(RegistryAccess registryAccess, ChunkGenerator chunkGenerator, StructureManager structureManager, + ChunkPos chunkPos, Biome biome, NoneFeatureConfiguration config, LevelHeightAccessor level) { + BlockPos blockpos = new BlockPos(chunkPos.getMinBlockX(), 90, chunkPos.getMinBlockZ()); + Rotation rotation = Rotation.getRandom(this.random); + ShelterPieces.addPieces(structureManager, blockpos, rotation, this); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/ShelterPieces.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ShelterPieces.java new file mode 100644 index 00000000..0d41b14a --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ShelterPieces.java @@ -0,0 +1,58 @@ +package com.hexagram2021.emeraldcraft.common.world; + +import com.hexagram2021.emeraldcraft.common.register.ECStructures; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.Rotation; +import net.minecraft.world.level.levelgen.feature.StructurePieceType; +import net.minecraft.world.level.levelgen.structure.BoundingBox; +import net.minecraft.world.level.levelgen.structure.StructurePieceAccessor; +import net.minecraft.world.level.levelgen.structure.TemplateStructurePiece; +import net.minecraft.world.level.levelgen.structure.templatesystem.BlockIgnoreProcessor; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructureManager; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings; + +import java.util.Random; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ShelterPieces { + private static final ResourceLocation SHELTER = new ResourceLocation(MODID, "shelter/piglin_cutey_shelter"); + + public static void addPieces(StructureManager structureManager, BlockPos pos, Rotation rotation, StructurePieceAccessor pieces) { + pieces.addPiece(new ShelterPieces.ShelterPiece(structureManager, SHELTER, pos, rotation)); + } + + public static class ShelterPiece extends TemplateStructurePiece { + public ShelterPiece(StructureManager structureManager, ResourceLocation location, BlockPos pos, Rotation rotation) { + super(ECStructures.SHELTER_TYPE, 0, structureManager, location, location.toString(), makeSettings(rotation), pos); + } + + public ShelterPiece(ServerLevel level, CompoundTag tag) { + super(ECStructures.SHELTER_TYPE, tag, level, (location) -> makeSettings(Rotation.valueOf(tag.getString("Rot")))); + } + + private static StructurePlaceSettings makeSettings(Rotation rotation) { + return (new StructurePlaceSettings()) + .setRotation(rotation) + .setMirror(Mirror.LEFT_RIGHT) + .setRotationPivot(new BlockPos(5, 1, 5)) + .addProcessor(BlockIgnoreProcessor.STRUCTURE_BLOCK); + } + + + @Override + protected void addAdditionalSaveData(ServerLevel level, CompoundTag tag) { + super.addAdditionalSaveData(level, tag); + tag.putString("Rot", this.placeSettings.getRotation().name()); + } + + @Override + protected void handleDataMarker(String function, BlockPos pos, ServerLevelAccessor level, Random random, BoundingBox sbb) { } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/Villages.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/Villages.java new file mode 100644 index 00000000..86433757 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/Villages.java @@ -0,0 +1,321 @@ +package com.hexagram2021.emeraldcraft.common.world; + +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import com.hexagram2021.emeraldcraft.common.util.ECSounds; +import com.hexagram2021.emeraldcraft.mixin.HeroGiftsTaskAccess; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.ai.village.poi.PoiType; +import net.minecraft.world.entity.npc.VillagerProfession; +import net.minecraft.world.entity.npc.VillagerTrades; +import net.minecraft.world.entity.npc.VillagerType; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.event.village.VillagerTradesEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fmllegacy.RegistryObject; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class Villages { + public static final ResourceLocation CARPENTER = new ResourceLocation(MODID, "carpenter"); + public static final ResourceLocation GLAZIER = new ResourceLocation(MODID, "glazier"); + public static final ResourceLocation MINER = new ResourceLocation(MODID, "miner"); + public static final ResourceLocation ASTROLOGIST = new ResourceLocation(MODID, "astrologist"); + public static final ResourceLocation GROWER = new ResourceLocation(MODID, "grower"); + public static final ResourceLocation BEEKEEPER = new ResourceLocation(MODID, "beekeeper"); + public static final ResourceLocation GEOLOGIST = new ResourceLocation(MODID, "geologist"); + public static final ResourceLocation ICER = new ResourceLocation(MODID, "icer"); + public static final ResourceLocation CHEMICAL_ENGINEER = new ResourceLocation(MODID, "chemical_engineer"); + + public static void init() { + HeroGiftsTaskAccess.getGifts().put(Registers.PROF_CARPENTER.get(), new ResourceLocation(MODID, "gameplay/hero_of_the_village/carpenter_gift")); + HeroGiftsTaskAccess.getGifts().put(Registers.PROF_GLAZIER.get(), new ResourceLocation(MODID, "gameplay/hero_of_the_village/glazier_gift")); + HeroGiftsTaskAccess.getGifts().put(Registers.PROF_MINER.get(), new ResourceLocation(MODID, "gameplay/hero_of_the_village/miner_gift")); + HeroGiftsTaskAccess.getGifts().put(Registers.PROF_ASTROLOGIST.get(), new ResourceLocation(MODID, "gameplay/hero_of_the_village/astrologist_gift")); + HeroGiftsTaskAccess.getGifts().put(Registers.PROF_GROWER.get(), new ResourceLocation(MODID, "gameplay/hero_of_the_village/grower_gift")); + HeroGiftsTaskAccess.getGifts().put(Registers.PROF_BEEKEEPER.get(), new ResourceLocation(MODID, "gameplay/hero_of_the_village/beekeeper_gift")); + HeroGiftsTaskAccess.getGifts().put(Registers.PROF_GEOLOGIST.get(), new ResourceLocation(MODID, "gameplay/hero_of_the_village/geologist_gift")); + HeroGiftsTaskAccess.getGifts().put(Registers.PROF_ICER.get(), new ResourceLocation(MODID, "gameplay/hero_of_the_village/icer_gift")); + HeroGiftsTaskAccess.getGifts().put(Registers.PROF_CHEMICAL_ENGINEER.get(), new ResourceLocation(MODID, "gameplay/hero_of_the_village/chemical_engineer_gift")); + } + + @Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD) + public static class Registers { + public static final DeferredRegister POINTS_OF_INTEREST = DeferredRegister.create(ForgeRegistries.POI_TYPES, MODID); + public static final DeferredRegister PROFESSIONS = DeferredRegister.create(ForgeRegistries.PROFESSIONS, MODID); + + public static final RegistryObject POI_CARPENTRY_TABLE = POINTS_OF_INTEREST.register( + "carpentry_table", () -> createPOI("carpentry_table", assembleStates(ECBlocks.WorkStation.CARPENTRY_TABLE.get())) + ); + public static final RegistryObject POI_GLASS_KILN = POINTS_OF_INTEREST.register( + "glass_kiln", () -> createPOI("glass_kiln", assembleStates(ECBlocks.WorkStation.GLASS_KILN.get())) + ); + public static final RegistryObject POI_MINERAL_TABLE = POINTS_OF_INTEREST.register( + "mineral_table", () -> createPOI("mineral_table", assembleStates(ECBlocks.WorkStation.MINERAL_TABLE.get())) + ); + public static final RegistryObject POI_CRYSTALBALL_TABLE = POINTS_OF_INTEREST.register( + "crystalball_table", () -> createPOI("crystalball_table", assembleStates(ECBlocks.WorkStation.CRYSTALBALL_TABLE.get())) + ); + public static final RegistryObject POI_FLOWER_POT = POINTS_OF_INTEREST.register( + "flower_pot", () -> createPOI("flower_pot", assembleStates(Blocks.FLOWER_POT)) + ); + public static final RegistryObject POI_SQUEEZER = POINTS_OF_INTEREST.register( + "squeezer", () -> createPOI("squeezer", assembleStates(ECBlocks.WorkStation.SQUEEZER.get())) + ); + public static final RegistryObject POI_CONTINUOUS_MINER = POINTS_OF_INTEREST.register( + "continuous_miner", () -> createPOI("continuous_miner", assembleStates(ECBlocks.WorkStation.CONTINUOUS_MINER.get())) + ); + public static final RegistryObject POI_ICE_MAKER = POINTS_OF_INTEREST.register( + "ice_maker", () -> createPOI("ice_maker", assembleStates(ECBlocks.WorkStation.ICE_MAKER.get())) + ); + public static final RegistryObject POI_MELTER = POINTS_OF_INTEREST.register( + "melter", () -> createPOI("melter", assembleStates(ECBlocks.WorkStation.MELTER.get())) + ); + + public static final RegistryObject PROF_CARPENTER = PROFESSIONS.register( + CARPENTER.getPath(), () -> createProf(CARPENTER, POI_CARPENTRY_TABLE.get(), ECSounds.VILLAGER_WORK_CARPENTER) + ); + public static final RegistryObject PROF_GLAZIER = PROFESSIONS.register( + GLAZIER.getPath(), () -> createProf(GLAZIER, POI_GLASS_KILN.get(), ECSounds.VILLAGER_WORK_GLAZIER) + ); + public static final RegistryObject PROF_MINER = PROFESSIONS.register( + MINER.getPath(), () -> createProf(MINER, POI_MINERAL_TABLE.get(), ECSounds.VILLAGER_WORK_MINER) + ); + public static final RegistryObject PROF_ASTROLOGIST = PROFESSIONS.register( + ASTROLOGIST.getPath(), () -> createProf(ASTROLOGIST, POI_CRYSTALBALL_TABLE.get(), ECSounds.VILLAGER_WORK_ASTROLOGIST) + ); + public static final RegistryObject PROF_GROWER = PROFESSIONS.register( + GROWER.getPath(), () -> createProf(GROWER, POI_FLOWER_POT.get(), ECSounds.VILLAGER_WORK_GROWER) + ); + public static final RegistryObject PROF_BEEKEEPER = PROFESSIONS.register( + BEEKEEPER.getPath(), () -> createProf(GROWER, POI_SQUEEZER.get(), ECSounds.VILLAGER_WORK_BEEKEEPER) + ); + public static final RegistryObject PROF_GEOLOGIST = PROFESSIONS.register( + GEOLOGIST.getPath(), () -> createProf(GEOLOGIST, POI_CONTINUOUS_MINER.get(), ECSounds.VILLAGER_WORK_GEOLOGIST) + ); + public static final RegistryObject PROF_ICER = PROFESSIONS.register( + ICER.getPath(), () -> createProf(ICER, POI_ICE_MAKER.get(), ECSounds.VILLAGER_WORK_ICER) + ); + public static final RegistryObject PROF_CHEMICAL_ENGINEER = PROFESSIONS.register( + CHEMICAL_ENGINEER.getPath(), () -> createProf(CHEMICAL_ENGINEER, POI_MELTER.get(), ECSounds.VILLAGER_WORK_CHEMICAL_ENGINEER) + ); + + private static Collection assembleStates(Block block) { + return block.getStateDefinition().getPossibleStates(); + } + + private static PoiType createPOI(String name, Collection block) { + return new PoiType(MODID+":"+name, ImmutableSet.copyOf(block), 1, 1); + } + + private static VillagerProfession createProf(ResourceLocation name, PoiType poi, SoundEvent sound) { + return new VillagerProfession( + name.toString(), poi, + ImmutableSet.builder().build(), + ImmutableSet.builder().build(), + sound + ); + } + } + + @Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) + public static class Events { + @SubscribeEvent + public static void registerTrades(VillagerTradesEvent event) { + Int2ObjectMap> trades = event.getTrades(); + + if(CARPENTER.equals(event.getType().getRegistryName())) { + trades.get(1).add(new ECTrades.EmeraldForItems(Items.STICK, 32, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(1).add(new ECTrades.EmeraldsForVillagerTypeItem(8, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_SELL, + ImmutableMap.builder() + .put(VillagerType.PLAINS, Items.OAK_SAPLING) + .put(VillagerType.TAIGA, Items.SPRUCE_SAPLING) + .put(VillagerType.SNOW, Items.SPRUCE_SAPLING) + .put(VillagerType.DESERT, Items.JUNGLE_SAPLING) + .put(VillagerType.JUNGLE, Items.JUNGLE_SAPLING) + .put(VillagerType.SAVANNA, Items.ACACIA_SAPLING) + .put(VillagerType.SWAMP, Items.DARK_OAK_SAPLING) + .build() + )); + trades.get(1).add(new ECTrades.VillagerTypeItemForEmeralds(2, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_1_BUY, + ImmutableMap.builder() + .put(VillagerType.PLAINS, Items.OAK_LOG) + .put(VillagerType.TAIGA, Items.SPRUCE_LOG) + .put(VillagerType.SNOW, Items.SPRUCE_LOG) + .put(VillagerType.DESERT, Items.JUNGLE_LOG) + .put(VillagerType.JUNGLE, Items.JUNGLE_LOG) + .put(VillagerType.SAVANNA, Items.ACACIA_LOG) + .put(VillagerType.SWAMP, Items.DARK_OAK_LOG) + .build() + )); + trades.get(2).add(new ECTrades.ItemsAndEmeraldsToItems(Items.NETHER_WART_BLOCK, 1, 4, Items.NETHER_WART, 8, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_SELL)); + trades.get(2).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.IRON_AXE), 3, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_2_SELL)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.BOOKSHELF, 1, 3, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.CRAFTING_TABLE, 1, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(3).add(new ECTrades.ItemsAndEmeraldsToItems(Items.WARPED_WART_BLOCK, 1, 4, ECItems.WARPED_WART.get(), 8, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.BOWL), 1, 6, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.EmeraldForItems(Items.CHEST, 2, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_BUY)); + trades.get(4).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.BEEHIVE), 3, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(4).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.JUKEBOX), 3, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(4).add(new ECTrades.EmeraldsForVillagerTypeItem(3, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_4_BUY, + ImmutableMap.builder() + .put(VillagerType.PLAINS, Items.OAK_SIGN) + .put(VillagerType.TAIGA, Items.SPRUCE_SIGN) + .put(VillagerType.SNOW, Items.SPRUCE_SIGN) + .put(VillagerType.DESERT, Items.JUNGLE_SIGN) + .put(VillagerType.JUNGLE, Items.JUNGLE_SIGN) + .put(VillagerType.SAVANNA, Items.ACACIA_SIGN) + .put(VillagerType.SWAMP, Items.DARK_OAK_SIGN) + .build() + )); + trades.get(5).add(new ECTrades.EnchantedItemForEmeralds(Items.DIAMOND_AXE, 12, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.NOTE_BLOCK), 4, 4, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.ItemsAndEmeraldsToItems(Items.SHULKER_SHELL, 1, 8, Items.SHULKER_BOX, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + } else if(GLAZIER.equals(event.getType().getRegistryName())) { + trades.get(1).add(new ECTrades.EmeraldForItems(Items.CLAY_BALL, 10, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(1).add(new ECTrades.EmeraldForItems(Items.SAND, 4, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(1).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_1_SELL)); + trades.get(2).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.GLASS_BOTTLE), 1, 6, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_2_SELL)); + trades.get(2).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.TINTED_GLASS), 1, 2, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_SELL)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.GLASS_PANE, 11, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.WHITE_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.ORANGE_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.MAGENTA_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.LIGHT_BLUE_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.YELLOW_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.LIME_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.PINK_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.GRAY_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.LIGHT_GRAY_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.CYAN_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.PURPLE_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.BLUE_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.BROWN_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.GREEN_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.RED_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.BLACK_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(4).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.DAYLIGHT_DETECTOR), 1, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(4).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.TERRACOTTA), 1, 2, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.ENDER_EYE, 1, 7, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.END_CRYSTAL), 11, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + } else if(MINER.equals(event.getType().getRegistryName())) { + trades.get(1).add(new ECTrades.EmeraldForItems(Items.RAW_COPPER, 5, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(1).add(new ECTrades.EmeraldForItems(Items.RAW_IRON, 4, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(1).add(new ECTrades.EmeraldForItems(Items.RAW_GOLD, 3, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(1).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.MINECART), 4, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_SELL)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.REDSTONE, 4, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.QUARTZ, 6, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(3).add(new ECTrades.EmeraldForItems(Items.POINTED_DRIPSTONE, 1, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_BUY)); + trades.get(3).add(new ECTrades.ItemsAndEmeraldsToItems(Items.AMETHYST_BLOCK, 1, 4, Items.AMETHYST_SHARD, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(4).add(new ECTrades.EnchantedItemForEmeralds(Items.DIAMOND_PICKAXE, 12, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(4).add(new ECTrades.ItemsAndEmeraldsToItems(Items.COAL_BLOCK, 2, 32, Items.DIAMOND, 3, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.CRYING_OBSIDIAN, 1, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.NETHERITE_SCRAP, 1, 18, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + } else if(ASTROLOGIST.equals(event.getType().getRegistryName())) { + trades.get(1).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.SPYGLASS), 2, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_SELL)); + trades.get(1).add(new ECTrades.EmeraldForItems(Items.BONE, 10, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.BLAZE_POWDER, 4, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.NETHER_SPROUTS, 5, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.SOUL_SAND, 8, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(3).add(new ECTrades.EmeraldForItems(Items.CHORUS_FRUIT, 5, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_BUY)); + trades.get(3).add(new ECTrades.EmeraldForItems(Items.SPIDER_EYE, 7, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_BUY)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.DRAGON_BREATH), 9, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.BROWN_MUSHROOM), 1, 3, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(4).add(new ECTrades.EmeraldForItems(Items.WITHER_ROSE, 1, 17, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_BUY)); + trades.get(4).add(new ECTrades.ItemsAndEmeraldsToItems(Items.COAL, 4, 52, Items.WITHER_SKELETON_SKULL, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.SHULKER_SHELL), 12, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.PLAYER_HEAD), 40, 1, ECTrades.ONLY_SUPPLY_ONCE, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.CARVED_PUMPKIN), 1, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.DRAGON_HEAD), 36, 1, ECTrades.ONLY_SUPPLY_ONCE, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.SOUL_SAND), 1, 2, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.WEEPING_VINES, 8, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.TWISTING_VINES, 8, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + } else if(GROWER.equals(event.getType().getRegistryName())) { + trades.get(1).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.FLOWER_POT), 1, 2, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_SELL)); + trades.get(1).add(new ECTrades.EmeraldForItems(Items.BONE, 10, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.GLASS_PANE, 11, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.POPPY, 8, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.ORANGE_TULIP), 1, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.PINK_TULIP), 1, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.RED_TULIP), 1, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.WHITE_TULIP), 1, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(4).add(new ECTrades.EmeraldForItems(Items.WITHER_ROSE, 1, 17, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_BUY)); + trades.get(4).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.BLUE_ORCHID), 1, 3, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(4).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.ALLIUM), 1, 3, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.SUNFLOWER, 4, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.LILAC, 4, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.ROSE_BUSH, 4, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.PEONY, 4, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.LILY_OF_THE_VALLEY), 1, 3, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.SuspisciousStewForEmerald(MobEffects.FIRE_RESISTANCE, 100, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.SuspisciousStewForEmerald(MobEffects.WITHER, 160, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.SuspisciousStewForEmerald(MobEffects.WATER_BREATHING, 160, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.SuspisciousStewForEmerald(MobEffects.REGENERATION, 120, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + } else if(BEEKEEPER.equals(event.getType().getRegistryName())) { + trades.get(1).add(new ECTrades.EmeraldForItems(Items.HONEYCOMB, 10, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(1).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.BEEHIVE), 3, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_1_SELL)); + trades.get(2).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.HONEY_BOTTLE), 1, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_2_SELL)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.HONEY_BLOCK, 2, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(3).add(new ECTrades.EmeraldForItems(Items.ORANGE_TULIP, 4, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_BUY)); + trades.get(3).add(new ECTrades.EmeraldForItems(Items.PINK_TULIP, 4, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_BUY)); + trades.get(3).add(new ECTrades.EmeraldForItems(Items.RED_TULIP, 4, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_BUY)); + trades.get(3).add(new ECTrades.EmeraldForItems(Items.WHITE_TULIP, 4, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_BUY)); + trades.get(4).add(new ECTrades.ItemsAndEmeraldsToItems(Items.HONEYCOMB_BLOCK, 1, 1, Items.HONEYCOMB, 4, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(4).add(new ECTrades.EmeraldForItems(Items.DANDELION, 6, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_BUY)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(ECItems.BannerPatterns.BEE), 8, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + } else if(GEOLOGIST.equals(event.getType().getRegistryName())) { + trades.get(1).add(new ECTrades.EmeraldForItems(Items.NETHERRACK, 20, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(1).add(new ECTrades.EmeraldForItems(Items.DEEPSLATE, 16, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.CRYING_OBSIDIAN, 2, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(2).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.OBSIDIAN), 5, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_2_SELL)); + trades.get(3).add(new ECTrades.EmeraldForItems(Items.LAPIS_LAZULI, 6, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_3_BUY)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.SLIME_BALL), 4, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(4).add(new ECTrades.EmeraldForItems(ECItems.IRON_CONCENTRATE, 1, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_BUY)); + trades.get(4).add(new ECTrades.EmeraldForItems(ECItems.GOLD_CONCENTRATE, 1, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_BUY)); + trades.get(4).add(new ECTrades.EmeraldForItems(ECItems.COPPER_CONCENTRATE, 1, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_BUY)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.CALCITE), 1, 3, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.SMOOTH_BASALT, 10, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.BLACKSTONE, 12, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.AMETHYST_BLOCK, 4, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + } else if(ICER.equals(event.getType().getRegistryName())) { + trades.get(1).add(new ECTrades.EmeraldForItems(Items.PACKED_ICE, 7, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(1).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.ICE), 1, 5, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_SELL)); + trades.get(2).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.POWDER_SNOW_BUCKET), 8, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_SELL)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.SNOWBALL, 20, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.BLUE_ICE), 3, 2, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.LANTERN), 1, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(4).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.OBSIDIAN), 5, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(4).add(new ECTrades.EnchantedItemForEmeralds(Items.LEATHER_BOOTS, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(5).add(new ECTrades.ItemsAndEmeraldsToItems(Items.SNOWBALL, 4, 1, Items.SNOW, 4, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(ECItems.BannerPatterns.SNOW), 8, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + } else if(CHEMICAL_ENGINEER.equals(event.getType().getRegistryName())) { + trades.get(1).add(new ECTrades.ItemsForEmeralds(new ItemStack(ECItems.MELTED_EMERALD_BUCKET), 10, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_SELL)); + trades.get(1).add(new ECTrades.EmeraldForItems(Items.BUCKET, 4, 3, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(2).add(new ECTrades.ItemsForEmeralds(new ItemStack(ECItems.MELTED_IRON_BUCKET), 4, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_SELL)); + trades.get(2).add(new ECTrades.ItemsForEmeralds(new ItemStack(ECItems.MELTED_COPPER_BUCKET), 3, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_SELL)); + trades.get(3).add(new ECTrades.NetheriteForItems(Items.EMERALD_BLOCK, 10, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(4).add(new ECTrades.ItemsAndEmeraldsToItems(Items.FLINT, 4, 2, Items.GUNPOWDER, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(4).add(new ECTrades.ItemsForEmeralds(new ItemStack(ECItems.MELTED_GOLD_BUCKET), 4, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(ECItems.BannerPatterns.BOTTLE), 8, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(ECItems.BannerPatterns.POTION), 8, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + } + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/ZombieVillagerRoomFeature.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ZombieVillagerRoomFeature.java new file mode 100644 index 00000000..be6c5601 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ZombieVillagerRoomFeature.java @@ -0,0 +1,134 @@ +package com.hexagram2021.emeraldcraft.common.world; + +import com.hexagram2021.emeraldcraft.common.util.ECLogger; +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.BlockTags; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.RandomizableContainerBlockEntity; +import net.minecraft.world.level.block.entity.SpawnerBlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraft.world.level.levelgen.structure.StructurePiece; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.storage.loot.BuiltInLootTables; + +import java.util.Random; +import java.util.function.Predicate; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ZombieVillagerRoomFeature extends Feature { + private static final ResourceLocation ZOMBIE_VILLAGER_ROOM_CHEST = new ResourceLocation(MODID, "chests/zombie_villager_room"); + + private static final BlockState AIR = Blocks.CAVE_AIR.defaultBlockState(); + private static final BlockState MOSSY_COBBLESTONE = Blocks.MOSSY_COBBLESTONE.defaultBlockState(); + private static final BlockState COBBLESTONE = Blocks.COBBLESTONE.defaultBlockState(); + + public ZombieVillagerRoomFeature(Codec codec) { + super(codec); + } + + public boolean place(FeaturePlaceContext context) { + Predicate predicate = Feature.isReplaceable(BlockTags.FEATURES_CANNOT_REPLACE.getName()); + BlockPos blockpos = context.origin(); + Random random = context.random(); + WorldGenLevel worldgenlevel = context.level(); + int halfX = random.nextInt(2) + 3; + int beginX = -halfX - 1; + int endX = halfX + 1; + int halfZ = random.nextInt(2) + 3; + int beginZ = -halfZ - 1; + int endZ = halfZ + 1; + int cnt = 0; + + for(int x = beginX; x <= endX; ++x) { + for(int y = -1; y <= 4; ++y) { + for(int z = beginZ; z <= endZ; ++z) { + BlockPos blockpos1 = blockpos.offset(x, y, z); + Material material = worldgenlevel.getBlockState(blockpos1).getMaterial(); + boolean flag = material.isSolid(); + if (y == -1 && !flag) { + return false; + } + + if (y == 4 && !flag) { + return false; + } + + if ((x == beginX || x == endX || z == beginZ || z == endZ) && y == 0 && worldgenlevel.isEmptyBlock(blockpos1) && worldgenlevel.isEmptyBlock(blockpos1.above())) { + ++cnt; + } + } + } + } + + if (cnt >= 1 && cnt <= 5) { + for(int x = beginX; x <= endX; ++x) { + for(int y = 3; y >= -1; --y) { + for(int z = beginZ; z <= endZ; ++z) { + BlockPos blockpos2 = blockpos.offset(x, y, z); + BlockState blockstate = worldgenlevel.getBlockState(blockpos2); + if (x != beginX && y != -1 && z != beginZ && x != endX && y != 4 && z != endZ) { + if (!blockstate.is(Blocks.CHEST) && !blockstate.is(Blocks.SPAWNER)) { + this.safeSetBlock(worldgenlevel, blockpos2, AIR, predicate); + } + } else if (blockpos2.getY() >= worldgenlevel.getMinBuildHeight() && !worldgenlevel.getBlockState(blockpos2.below()).getMaterial().isSolid()) { + worldgenlevel.setBlock(blockpos2, AIR, Block.UPDATE_CLIENTS); + } else if (blockstate.getMaterial().isSolid() && !blockstate.is(Blocks.CHEST)) { + if (y == -1 && random.nextInt(2) != 0) { + this.safeSetBlock(worldgenlevel, blockpos2, MOSSY_COBBLESTONE, predicate); + } else { + this.safeSetBlock(worldgenlevel, blockpos2, COBBLESTONE, predicate); + } + } + } + } + } + + for(int l3 = 0; l3 < 2; ++l3) { + for(int j4 = 0; j4 < 3; ++j4) { + int l4 = blockpos.getX() + random.nextInt(halfX * 2 + 1) - halfX; + int i5 = blockpos.getY(); + int j5 = blockpos.getZ() + random.nextInt(halfZ * 2 + 1) - halfZ; + BlockPos blockpos3 = new BlockPos(l4, i5, j5); + if (worldgenlevel.isEmptyBlock(blockpos3)) { + int j3 = 0; + + for(Direction direction : Direction.Plane.HORIZONTAL) { + if (worldgenlevel.getBlockState(blockpos3.relative(direction)).getMaterial().isSolid()) { + ++j3; + } + } + + if (j3 == 1) { + this.safeSetBlock(worldgenlevel, blockpos3, StructurePiece.reorient(worldgenlevel, blockpos3, Blocks.CHEST.defaultBlockState()), predicate); + RandomizableContainerBlockEntity.setLootTable(worldgenlevel, random, blockpos3, ZOMBIE_VILLAGER_ROOM_CHEST); + break; + } + } + } + } + + this.safeSetBlock(worldgenlevel, blockpos, Blocks.SPAWNER.defaultBlockState(), predicate); + BlockEntity blockentity = worldgenlevel.getBlockEntity(blockpos); + if (blockentity instanceof SpawnerBlockEntity) { + ((SpawnerBlockEntity)blockentity).getSpawner().setEntityId(EntityType.ZOMBIE_VILLAGER); + } else { + ECLogger.error("Failed to fetch mob spawner entity at ({}, {}, {})", blockpos.getX(), blockpos.getY(), blockpos.getZ()); + } + + return true; + } else { + return false; + } + } +} \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/pools/NetherWarfieldPools.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/pools/NetherWarfieldPools.java new file mode 100644 index 00000000..35084a22 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/pools/NetherWarfieldPools.java @@ -0,0 +1,163 @@ +package com.hexagram2021.emeraldcraft.common.world.pools; + +import com.google.common.collect.ImmutableList; +import com.mojang.datafixers.util.Pair; +import net.minecraft.data.worldgen.Pools; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.levelgen.feature.structures.StructurePoolElement; +import net.minecraft.world.level.levelgen.feature.structures.StructureTemplatePool; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class NetherWarfieldPools { + public static final StructureTemplatePool START = Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "nether_warfield/center"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/center/nether_warfield1"), 1 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/center/nether_warfield2"), 2 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/center/nether_warfield3"), 2 + )), + StructureTemplatePool.Projection.RIGID) + ); + + public static void bootstrap() { + } + + static { + Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "crimson_trench/springs"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/center/spring"), 5 + )), + StructureTemplatePool.Projection.RIGID) + ); + Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "warped_trench/springs"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/center/spring"), 5 + )), + StructureTemplatePool.Projection.RIGID) + ); + Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "crimson_trench/streets"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/streets/straight1"), 2 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/streets/straight2"), 2 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/streets/straight3"), 3 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/streets/straight4"), 3 + )), + StructureTemplatePool.Projection.RIGID) + ); + Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "warped_trench/streets"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/streets/straight1"), 2 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/streets/straight2"), 2 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/streets/straight3"), 3 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/streets/straight4"), 3 + )), + StructureTemplatePool.Projection.RIGID) + ); + Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "crimson_trench/strider"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/striders/strider1"), 3 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/striders/strider2"), 2 + )), + StructureTemplatePool.Projection.RIGID) + ); + Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "warped_trench/strider"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/striders/strider1"), 3 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/striders/strider2"), 2 + )), + StructureTemplatePool.Projection.RIGID) + ); + Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "crimson_trench/decor"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/decor/lamp"), 3 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/decor/candles"), 2 + )), + StructureTemplatePool.Projection.RIGID) + ); + Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "warped_trench/decor"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/decor/lamp"), 3 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/decor/candles"), 2 + )), + StructureTemplatePool.Projection.RIGID) + ); + Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "crimson_trench/houses"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/houses/small1"), 9 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/houses/small2"), 10 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/houses/plant"), 4 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/houses/medium1"), 6 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/houses/farm1"), 3 + )), + StructureTemplatePool.Projection.RIGID) + ); + Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "warped_trench/houses"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/houses/small1"), 10 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/houses/small2"), 9 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/houses/plant"), 4 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/houses/medium1"), 6 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/houses/farm1"), 3 + )), + StructureTemplatePool.Projection.RIGID) + ); + Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "crimson_trench/villagers"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/villager"), 10 + )), + StructureTemplatePool.Projection.RIGID) + ); + Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "warped_trench/villagers"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/villager"), 10 + )), + StructureTemplatePool.Projection.RIGID) + ); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/surface/AzureDesertSurfaceBuilder.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/surface/AzureDesertSurfaceBuilder.java new file mode 100644 index 00000000..d20e8a2f --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/surface/AzureDesertSurfaceBuilder.java @@ -0,0 +1,30 @@ +package com.hexagram2021.emeraldcraft.common.world.surface; + +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.ChunkAccess; +import net.minecraft.world.level.levelgen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.level.levelgen.surfacebuilders.SurfaceBuilderBaseConfiguration; + +import java.util.Random; + +public class AzureDesertSurfaceBuilder extends SurfaceBuilder { + private static final BlockState AZURE_SAND = ECBlocks.Decoration.AZURE_SAND.defaultBlockState(); + private static final BlockState AZURE_SANDSTONE = ECBlocks.Decoration.AZURE_SANDSTONE.defaultBlockState(); + private static final BlockState GRAVEL = Blocks.GRAVEL.defaultBlockState(); + + public static final SurfaceBuilderBaseConfiguration CONFIG = new SurfaceBuilderBaseConfiguration(AZURE_SAND, AZURE_SANDSTONE, GRAVEL); + + public AzureDesertSurfaceBuilder(Codec codec) { + super(codec); + } + + @Override + public void apply(Random random, ChunkAccess chunk, Biome biome, int x, int z, int startHeight, double noise, + BlockState defaultBlock, BlockState defaultFluid, int surfaceLevel, int seaLevel, long seed, SurfaceBuilderBaseConfiguration config) { + SurfaceBuilder.DEFAULT.apply(random, chunk, biome, x, z, startHeight, noise, defaultBlock, defaultFluid, surfaceLevel, seaLevel, seed, CONFIG); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/surface/EmeryDesertSurfaceBuilder.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/surface/EmeryDesertSurfaceBuilder.java new file mode 100644 index 00000000..d074cc0d --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/surface/EmeryDesertSurfaceBuilder.java @@ -0,0 +1,30 @@ +package com.hexagram2021.emeraldcraft.common.world.surface; + +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.ChunkAccess; +import net.minecraft.world.level.levelgen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.level.levelgen.surfacebuilders.SurfaceBuilderBaseConfiguration; + +import java.util.Random; + +public class EmeryDesertSurfaceBuilder extends SurfaceBuilder { + private static final BlockState EMERY_SAND = ECBlocks.Decoration.EMERY_SAND.defaultBlockState(); + private static final BlockState EMERY_SANDSTONE = ECBlocks.Decoration.EMERY_SANDSTONE.defaultBlockState(); + private static final BlockState GRAVEL = Blocks.GRAVEL.defaultBlockState(); + + public static final SurfaceBuilderBaseConfiguration CONFIG = new SurfaceBuilderBaseConfiguration(EMERY_SAND, EMERY_SANDSTONE, GRAVEL); + + public EmeryDesertSurfaceBuilder(Codec codec) { + super(codec); + } + + @Override + public void apply(Random random, ChunkAccess chunk, Biome biome, int x, int z, int startHeight, double noise, + BlockState defaultBlock, BlockState defaultFluid, int surfaceLevel, int seaLevel, long seed, SurfaceBuilderBaseConfiguration config) { + SurfaceBuilder.DEFAULT.apply(random, chunk, biome, x, z, startHeight, noise, defaultBlock, defaultFluid, surfaceLevel, seaLevel, seed, CONFIG); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/surface/JadeiteDesertSurfaceBuilder.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/surface/JadeiteDesertSurfaceBuilder.java new file mode 100644 index 00000000..953aa45a --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/surface/JadeiteDesertSurfaceBuilder.java @@ -0,0 +1,30 @@ +package com.hexagram2021.emeraldcraft.common.world.surface; + +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.ChunkAccess; +import net.minecraft.world.level.levelgen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.level.levelgen.surfacebuilders.SurfaceBuilderBaseConfiguration; + +import java.util.Random; + +public class JadeiteDesertSurfaceBuilder extends SurfaceBuilder { + private static final BlockState JADEITE_SAND = ECBlocks.Decoration.JADEITE_SAND.defaultBlockState(); + private static final BlockState JADEITE_SANDSTONE = ECBlocks.Decoration.JADEITE_SANDSTONE.defaultBlockState(); + private static final BlockState GRAVEL = Blocks.GRAVEL.defaultBlockState(); + + public static final SurfaceBuilderBaseConfiguration CONFIG = new SurfaceBuilderBaseConfiguration(JADEITE_SAND, JADEITE_SANDSTONE, GRAVEL); + + public JadeiteDesertSurfaceBuilder(Codec codec) { + super(codec); + } + + @Override + public void apply(Random random, ChunkAccess chunk, Biome biome, int x, int z, int startHeight, double noise, + BlockState defaultBlock, BlockState defaultFluid, int surfaceLevel, int seaLevel, long seed, SurfaceBuilderBaseConfiguration config) { + SurfaceBuilder.DEFAULT.apply(random, chunk, biome, x, z, startHeight, noise, defaultBlock, defaultFluid, surfaceLevel, seaLevel, seed, CONFIG); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/surface/QuartzDesertSurfaceBuilder.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/surface/QuartzDesertSurfaceBuilder.java new file mode 100644 index 00000000..d645b116 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/surface/QuartzDesertSurfaceBuilder.java @@ -0,0 +1,30 @@ +package com.hexagram2021.emeraldcraft.common.world.surface; + +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.ChunkAccess; +import net.minecraft.world.level.levelgen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.level.levelgen.surfacebuilders.SurfaceBuilderBaseConfiguration; + +import java.util.Random; + +public class QuartzDesertSurfaceBuilder extends SurfaceBuilder { + private static final BlockState QUARTZ_SAND = ECBlocks.Decoration.QUARTZ_SAND.defaultBlockState(); + private static final BlockState QUARTZ_SANDSTONE = ECBlocks.Decoration.QUARTZ_SANDSTONE.defaultBlockState(); + private static final BlockState GRAVEL = Blocks.GRAVEL.defaultBlockState(); + + public static final SurfaceBuilderBaseConfiguration CONFIG = new SurfaceBuilderBaseConfiguration(QUARTZ_SAND, QUARTZ_SANDSTONE, GRAVEL); + + public QuartzDesertSurfaceBuilder(Codec codec) { + super(codec); + } + + @Override + public void apply(Random random, ChunkAccess chunk, Biome biome, int x, int z, int startHeight, double noise, + BlockState defaultBlock, BlockState defaultFluid, int surfaceLevel, int seaLevel, long seed, SurfaceBuilderBaseConfiguration config) { + SurfaceBuilder.DEFAULT.apply(random, chunk, biome, x, z, startHeight, noise, defaultBlock, defaultFluid, surfaceLevel, seaLevel, seed, CONFIG); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/AbstractSkeletonMixin.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/AbstractSkeletonMixin.java new file mode 100644 index 00000000..29169a07 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/AbstractSkeletonMixin.java @@ -0,0 +1,18 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import com.hexagram2021.emeraldcraft.client.models.entities.*; +import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; +import net.minecraft.world.entity.monster.AbstractSkeleton; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(AbstractSkeleton.class) +public class AbstractSkeletonMixin { + @Inject(method = "registerGoals", at = @At(value = "TAIL")) + protected void registerNetherVillagerGoals(CallbackInfo info) { + ((AbstractSkeleton)(Object)this).targetSelector.addGoal(4, new NearestAttackableTargetGoal<>((AbstractSkeleton)(Object)this, NetherPigmanEntity.class, true)); + ((AbstractSkeleton)(Object)this).targetSelector.addGoal(4, new NearestAttackableTargetGoal<>((AbstractSkeleton)(Object)this, NetherLambmanEntity.class, true)); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/HeroGiftsTaskAccess.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/HeroGiftsTaskAccess.java new file mode 100644 index 00000000..7fde8aa9 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/HeroGiftsTaskAccess.java @@ -0,0 +1,17 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.ai.behavior.GiveGiftToHero; +import net.minecraft.world.entity.npc.VillagerProfession; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Map; + +@Mixin(GiveGiftToHero.class) +public interface HeroGiftsTaskAccess { + @Accessor("GIFTS") + static Map getGifts() { + throw new UnsupportedOperationException("Replaced by Mixin"); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/MobEntityAccess.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/MobEntityAccess.java new file mode 100644 index 00000000..42365af6 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/MobEntityAccess.java @@ -0,0 +1,12 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.ai.goal.GoalSelector; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(Mob.class) +public interface MobEntityAccess { + @Accessor + GoalSelector getTargetSelector(); +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/MultiNoiseBiomeSourceAccess.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/MultiNoiseBiomeSourceAccess.java new file mode 100644 index 00000000..63b8859d --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/MultiNoiseBiomeSourceAccess.java @@ -0,0 +1,21 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import com.mojang.datafixers.util.Pair; +import net.minecraft.core.Registry; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.MultiNoiseBiomeSource; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +import java.util.List; +import java.util.Optional; +import java.util.function.Supplier; + +@Mixin(MultiNoiseBiomeSource.class) +public interface MultiNoiseBiomeSourceAccess { + @Invoker("") + static MultiNoiseBiomeSource construct(long v, List>> list, Optional, MultiNoiseBiomeSource.Preset>> optional) + { + throw new UnsupportedOperationException("This will be replaced by Mixin"); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/NetherBiomesAccess.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/NetherBiomesAccess.java new file mode 100644 index 00000000..ae1fb6e4 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/NetherBiomesAccess.java @@ -0,0 +1,16 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import net.minecraft.world.level.biome.MultiNoiseBiomeSource; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.gen.Accessor; + + +@Mixin(MultiNoiseBiomeSource.Preset.class) +public interface NetherBiomesAccess { + @Accessor + @Mutable + static void setNETHER(MultiNoiseBiomeSource.Preset NETHER) { + throw new UnsupportedOperationException("Replaced by Mixin"); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/StructureFeatureAccess.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/StructureFeatureAccess.java new file mode 100644 index 00000000..5447193f --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/StructureFeatureAccess.java @@ -0,0 +1,17 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import net.minecraft.world.level.levelgen.feature.StructureFeature; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.List; + +@Mixin(StructureFeature.class) +public interface StructureFeatureAccess { + @Accessor + @Mutable + static void setNOISE_AFFECTING_FEATURES(List> NOISE_AFFECTING_FEATURES) { + throw new UnsupportedOperationException("Replaced by Mixin"); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/StructureSettingsAccess.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/StructureSettingsAccess.java new file mode 100644 index 00000000..5d13ad17 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/StructureSettingsAccess.java @@ -0,0 +1,18 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import com.google.common.collect.ImmutableMap; +import net.minecraft.world.level.levelgen.StructureSettings; +import net.minecraft.world.level.levelgen.feature.StructureFeature; +import net.minecraft.world.level.levelgen.feature.configurations.StructureFeatureConfiguration; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(StructureSettings.class) +public interface StructureSettingsAccess { + @Accessor + @Mutable + static void setDEFAULTS(ImmutableMap, StructureFeatureConfiguration> DEFAULTS) { + throw new UnsupportedOperationException("Replaced by Mixin"); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/StructureSettingsConfigAccess.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/StructureSettingsConfigAccess.java new file mode 100644 index 00000000..f7986b2e --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/StructureSettingsConfigAccess.java @@ -0,0 +1,15 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import net.minecraft.world.level.levelgen.StructureSettings; +import net.minecraft.world.level.levelgen.feature.StructureFeature; +import net.minecraft.world.level.levelgen.feature.configurations.StructureFeatureConfiguration; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Map; + +@Mixin(StructureSettings.class) +public interface StructureSettingsConfigAccess { + @Accessor + void setStructureConfig(Map, StructureFeatureConfiguration> structureConfig); +} diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml new file mode 100644 index 00000000..4037f91b --- /dev/null +++ b/src/main/resources/META-INF/mods.toml @@ -0,0 +1,64 @@ +# This is an example mods.toml file. It contains the data relating to the loading mods. +# There are several mandatory fields (#mandatory), and many more that are optional (#optional). +# The overall format is standard TOML format, v0.5.0. +# Note that there are a couple of TOML lists in this file. +# Find more information on toml format here: https://github.com/toml-lang/toml +# The name of the mod loader type to load - for regular FML @Mod mods it should be javafml +modLoader="javafml" #mandatory +# A version range to match for said mod loader - for regular FML @Mod it will be the forge version +loaderVersion="[37,)" #mandatory This is typically bumped every Minecraft version by Forge. See our download page for lists of versions. +# The license for you mod. This is mandatory metadata and allows for easier comprehension of your redistributive properties. +# Review your options at https://choosealicense.com/. All rights reserved is the default copyright stance, and is thus the default here. +license="All rights reserved" +# A URL to refer people to when problems occur with this mod +#issueTrackerURL="https://change.me.to.your.issue.tracker.example.invalid/" #optional +# A list of mods - how many allowed here is determined by the individual mod loader +[[mods]] #mandatory +# The modid of the mod +modId="emeraldcraft" #mandatory +# The version number of the mod - there's a few well known ${} variables useable here or just hardcode it +# ${file.jarVersion} will substitute the value of the Implementation-Version as read from the mod's JAR file metadata +# see the associated build.gradle script for how to populate this completely automatically during a build +version="${file.jarVersion}" #mandatory + # A display name for the mod +displayName="Emerald Craft Mod" #mandatory +# A URL to query for updates for this mod. See the JSON update specification https://mcforge.readthedocs.io/en/latest/gettingstarted/autoupdate/ +#updateJSONURL="https://change.me.example.invalid/updates.json" #optional +# A URL for the "homepage" for this mod, displayed in the mod UI +#displayURL="https://change.me.to.your.mods.homepage.example.invalid/" #optional +# A file name (in the root of the mod JAR) containing a logo for display +logoFile="logo.png" #optional +# A text field displayed in the mod UI +credits="Liu Dongyu" #optional +# A text field displayed in the mod UI +authors="Hexagram" #optional +# The description text for the mod (multi line!) (#mandatory) +description=''' +More crafts, piglin girls, and cute villagers! + +I love villagers in minecraft. I hope so do you. And I also love piglins -- just because they look like girls with head covers! + +With this mod, you can trade many other things with villagers, and with piglin-cutey, a new mob in the nether. + +You can also do the emerald craft, the gold craft, and even craft some "trash" into building material to decorate your house with this mod! +''' +# A dependency - use the . to indicate dependency for a specific modid. Dependencies are optional. +[[dependencies.examplemod]] #optional + # the modid of the dependency + modId="forge" #mandatory + # Does this dependency have to exist - if not, ordering below must be specified + mandatory=true #mandatory + # The version range of the dependency + versionRange="[37,)" #mandatory + # An ordering relationship for the dependency - BEFORE or AFTER required if the relationship is not mandatory + ordering="NONE" + # Side this dependency is applied on - BOTH, CLIENT or SERVER + side="BOTH" +# Here's another dependency +[[dependencies.examplemod]] + modId="minecraft" + mandatory=true +# This version range declares a minimum of the current minecraft version up to but not including the next major version + versionRange="[1.17.1,1.18)" + ordering="NONE" + side="BOTH" diff --git a/src/main/resources/assets/emeraldcraft/blockstates/azure_sand.json b/src/main/resources/assets/emeraldcraft/blockstates/azure_sand.json new file mode 100644 index 00000000..cae32ec7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/azure_sand.json @@ -0,0 +1,21 @@ +{ + "variants": { + "": [ + { + "model": "emeraldcraft:block/azure_sand" + }, + { + "model": "emeraldcraft:block/azure_sand", + "y": 90 + }, + { + "model": "emeraldcraft:block/azure_sand", + "y": 180 + }, + { + "model": "emeraldcraft:block/azure_sand", + "y": 270 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone.json new file mode 100644 index 00000000..c7858402 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/azure_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone_slab.json new file mode 100644 index 00000000..8e07a79a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/azure_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/azure_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/azure_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone_stairs.json new file mode 100644 index 00000000..dced3f6a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/azure_sandstone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/azure_sandstone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/azure_sandstone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/azure_sandstone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/azure_sandstone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/azure_sandstone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/azure_sandstone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/azure_sandstone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone_wall.json new file mode 100644 index 00000000..d28548ce --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/azure_sandstone_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/azure_sandstone_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/azure_sandstone_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/azure_sandstone_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/azure_sandstone_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/azure_sandstone_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/azure_sandstone_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/azure_sandstone_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/azure_sandstone_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/blue_nether_brick_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/blue_nether_brick_slab.json new file mode 100644 index 00000000..91439c92 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/blue_nether_brick_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/blue_nether_brick_slab" + }, + "type=double": { + "model": "emeraldcraft:block/blue_nether_bricks" + }, + "type=top": { + "model": "emeraldcraft:block/blue_nether_brick_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/blue_nether_brick_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/blue_nether_brick_stairs.json new file mode 100644 index 00000000..95b8721d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/blue_nether_brick_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/blue_nether_brick_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/blue_nether_brick_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/blue_nether_brick_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/blue_nether_brick_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/blue_nether_brick_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/blue_nether_brick_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/blue_nether_brick_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/blue_nether_brick_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/blue_nether_brick_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/blue_nether_brick_wall.json new file mode 100644 index 00000000..448a582a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/blue_nether_brick_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/blue_nether_brick_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/blue_nether_brick_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/blue_nether_brick_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/blue_nether_brick_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/blue_nether_brick_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/blue_nether_brick_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/blue_nether_brick_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/blue_nether_brick_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/blue_nether_brick_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/blue_nether_bricks.json b/src/main/resources/assets/emeraldcraft/blockstates/blue_nether_bricks.json new file mode 100644 index 00000000..aed20c20 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/blue_nether_bricks.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/blue_nether_bricks" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/carpentry_table.json b/src/main/resources/assets/emeraldcraft/blockstates/carpentry_table.json new file mode 100644 index 00000000..74a7a332 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/carpentry_table.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "emeraldcraft:block/carpentry_table", + "y": 90 + }, + "facing=north": { + "model": "emeraldcraft:block/carpentry_table" + }, + "facing=south": { + "model": "emeraldcraft:block/carpentry_table", + "y": 180 + }, + "facing=west": { + "model": "emeraldcraft:block/carpentry_table", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/continuous_miner.json b/src/main/resources/assets/emeraldcraft/blockstates/continuous_miner.json new file mode 100644 index 00000000..5edb981f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/continuous_miner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "emeraldcraft:block/continuous_miner", + "y": 90 + }, + "facing=north": { + "model": "emeraldcraft:block/continuous_miner" + }, + "facing=south": { + "model": "emeraldcraft:block/continuous_miner", + "y": 180 + }, + "facing=west": { + "model": "emeraldcraft:block/continuous_miner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone.json b/src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone.json new file mode 100644 index 00000000..eb044cab --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/crimson_cobblestone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone_slab.json new file mode 100644 index 00000000..51a4718c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/crimson_cobblestone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/crimson_cobblestone" + }, + "type=top": { + "model": "emeraldcraft:block/crimson_cobblestone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone_stairs.json new file mode 100644 index 00000000..1a0286e2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone_wall.json new file mode 100644 index 00000000..fc927cce --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/crimson_cobblestone_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/crimson_cobblestone_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/crimson_cobblestone_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/crimson_cobblestone_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/crimson_cobblestone_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/crimson_cobblestone_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/crimson_cobblestone_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/crimson_cobblestone_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/crimson_cobblestone_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/crimson_stone.json b/src/main/resources/assets/emeraldcraft/blockstates/crimson_stone.json new file mode 100644 index 00000000..86804ad5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/crimson_stone.json @@ -0,0 +1,20 @@ +{ + "variants": { + "": [ + { + "model": "emeraldcraft:block/crimson_stone" + }, + { + "model": "emeraldcraft:block/crimson_stone_mirrored" + }, + { + "model": "emeraldcraft:block/crimson_stone", + "y": 180 + }, + { + "model": "emeraldcraft:block/crimson_stone_mirrored", + "y": 180 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/crimson_stone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/crimson_stone_slab.json new file mode 100644 index 00000000..73f50c81 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/crimson_stone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/crimson_stone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/crimson_stone" + }, + "type=top": { + "model": "emeraldcraft:block/crimson_stone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/crimson_stone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/crimson_stone_stairs.json new file mode 100644 index 00000000..b498e24f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/crimson_stone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/crimson_stone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/crimson_stone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/crimson_stone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/crimson_stone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/crimson_stone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/crimson_stone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/crimson_stone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/crimson_stone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/crimson_stone_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/crimson_stone_wall.json new file mode 100644 index 00000000..89b13712 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/crimson_stone_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/crimson_stone_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/crimson_stone_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/crimson_stone_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/crimson_stone_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/crimson_stone_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/crimson_stone_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/crimson_stone_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/crimson_stone_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/crimson_stone_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/crystalball_table.json b/src/main/resources/assets/emeraldcraft/blockstates/crystalball_table.json new file mode 100644 index 00000000..ea4cda39 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/crystalball_table.json @@ -0,0 +1,52 @@ +{ + "variants": { + "exp_count=0": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=1": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=2": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=3": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=4": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=5": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=6": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=7": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=8": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=9": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=10": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=11": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=12": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=13": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=14": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=15": { + "model": "emeraldcraft:block/crystalball_table" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/cut_azure_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/cut_azure_sandstone.json new file mode 100644 index 00000000..0cb79b3c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/cut_azure_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/cut_azure_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/cut_azure_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/cut_azure_sandstone_slab.json new file mode 100644 index 00000000..2c0d74b1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/cut_azure_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/cut_azure_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/cut_azure_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/cut_azure_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/cut_emery_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/cut_emery_sandstone.json new file mode 100644 index 00000000..4d9d701b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/cut_emery_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/cut_emery_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/cut_emery_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/cut_emery_sandstone_slab.json new file mode 100644 index 00000000..44eb3543 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/cut_emery_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/cut_emery_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/cut_emery_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/cut_emery_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/cut_jadeite_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/cut_jadeite_sandstone.json new file mode 100644 index 00000000..2d754ef5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/cut_jadeite_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/cut_jadeite_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/cut_jadeite_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/cut_jadeite_sandstone_slab.json new file mode 100644 index 00000000..6dd22c31 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/cut_jadeite_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/cut_jadeite_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/cut_jadeite_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/cut_jadeite_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/cut_quartz_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/cut_quartz_sandstone.json new file mode 100644 index 00000000..8c7f68cf --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/cut_quartz_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/cut_quartz_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/cut_quartz_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/cut_quartz_sandstone_slab.json new file mode 100644 index 00000000..76d35a35 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/cut_quartz_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/cut_quartz_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/cut_quartz_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/cut_quartz_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/diamond_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/diamond_slab.json new file mode 100644 index 00000000..22956316 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/diamond_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/diamond_slab" + }, + "type=double": { + "model": "minecraft:block/diamond_block" + }, + "type=top": { + "model": "emeraldcraft:block/diamond_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/diamond_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/diamond_stairs.json new file mode 100644 index 00000000..2689dda9 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/diamond_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/diamond_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/diamond_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/diamond_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/diamond_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/diamond_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/diamond_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/diamond_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/diamond_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/diamond_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/diamond_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/diamond_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/diamond_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/diamond_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/diamond_wall.json new file mode 100644 index 00000000..e823e748 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/diamond_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/diamond_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/diamond_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/diamond_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/diamond_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/diamond_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/diamond_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/diamond_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/diamond_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/diamond_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/emerald_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/emerald_slab.json new file mode 100644 index 00000000..c93d6e94 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/emerald_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/emerald_slab" + }, + "type=double": { + "model": "minecraft:block/emerald_block" + }, + "type=top": { + "model": "emeraldcraft:block/emerald_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/emerald_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/emerald_stairs.json new file mode 100644 index 00000000..17a31205 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/emerald_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/emerald_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/emerald_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/emerald_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/emerald_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/emerald_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/emerald_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/emerald_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/emerald_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/emerald_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/emerald_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/emerald_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/emerald_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/emerald_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/emerald_wall.json new file mode 100644 index 00000000..fda9fdaf --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/emerald_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/emerald_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/emerald_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/emerald_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/emerald_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/emerald_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/emerald_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/emerald_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/emerald_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/emerald_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/emery_sand.json b/src/main/resources/assets/emeraldcraft/blockstates/emery_sand.json new file mode 100644 index 00000000..075b4796 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/emery_sand.json @@ -0,0 +1,21 @@ +{ + "variants": { + "": [ + { + "model": "emeraldcraft:block/emery_sand" + }, + { + "model": "emeraldcraft:block/emery_sand", + "y": 90 + }, + { + "model": "emeraldcraft:block/emery_sand", + "y": 180 + }, + { + "model": "emeraldcraft:block/emery_sand", + "y": 270 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone.json new file mode 100644 index 00000000..605583a1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/emery_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone_slab.json new file mode 100644 index 00000000..50be7e1d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/emery_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/emery_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/emery_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone_stairs.json new file mode 100644 index 00000000..c59558d1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/emery_sandstone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/emery_sandstone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/emery_sandstone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/emery_sandstone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/emery_sandstone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/emery_sandstone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/emery_sandstone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/emery_sandstone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone_wall.json new file mode 100644 index 00000000..074f5716 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/emery_sandstone_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/emery_sandstone_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/emery_sandstone_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/emery_sandstone_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/emery_sandstone_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/emery_sandstone_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/emery_sandstone_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/emery_sandstone_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/emery_sandstone_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/glass_kiln.json b/src/main/resources/assets/emeraldcraft/blockstates/glass_kiln.json new file mode 100644 index 00000000..a4018ce1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/glass_kiln.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=east,lit=false": { + "model": "emeraldcraft:block/glass_kiln", + "y": 90 + }, + "facing=east,lit=true": { + "model": "emeraldcraft:block/glass_kiln_on", + "y": 90 + }, + "facing=north,lit=false": { + "model": "emeraldcraft:block/glass_kiln" + }, + "facing=north,lit=true": { + "model": "emeraldcraft:block/glass_kiln_on" + }, + "facing=south,lit=false": { + "model": "emeraldcraft:block/glass_kiln", + "y": 180 + }, + "facing=south,lit=true": { + "model": "emeraldcraft:block/glass_kiln_on", + "y": 180 + }, + "facing=west,lit=false": { + "model": "emeraldcraft:block/glass_kiln", + "y": 270 + }, + "facing=west,lit=true": { + "model": "emeraldcraft:block/glass_kiln_on", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/gold_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/gold_slab.json new file mode 100644 index 00000000..0998e276 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/gold_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/gold_slab" + }, + "type=double": { + "model": "minecraft:block/gold_block" + }, + "type=top": { + "model": "emeraldcraft:block/gold_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/gold_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/gold_stairs.json new file mode 100644 index 00000000..4c9895e5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/gold_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/gold_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/gold_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/gold_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/gold_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/gold_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/gold_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/gold_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/gold_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/gold_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/gold_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/gold_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/gold_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/gold_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/gold_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/gold_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/gold_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/gold_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/gold_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/gold_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/gold_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/gold_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/gold_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/gold_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/gold_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/gold_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/gold_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/gold_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/gold_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/gold_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/gold_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/gold_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/gold_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/gold_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/gold_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/gold_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/gold_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/gold_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/gold_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/gold_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/gold_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/gold_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/gold_wall.json new file mode 100644 index 00000000..f7ef51b2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/gold_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/gold_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/gold_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/gold_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/gold_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/gold_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/gold_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/gold_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/gold_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/gold_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ice_maker.json b/src/main/resources/assets/emeraldcraft/blockstates/ice_maker.json new file mode 100644 index 00000000..467d5489 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ice_maker.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/ice_maker" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/iron_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/iron_slab.json new file mode 100644 index 00000000..62982278 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/iron_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/iron_slab" + }, + "type=double": { + "model": "minecraft:block/iron_block" + }, + "type=top": { + "model": "emeraldcraft:block/iron_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/iron_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/iron_stairs.json new file mode 100644 index 00000000..5c4aed90 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/iron_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/iron_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/iron_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/iron_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/iron_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/iron_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/iron_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/iron_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/iron_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/iron_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/iron_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/iron_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/iron_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/iron_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/iron_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/iron_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/iron_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/iron_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/iron_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/iron_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/iron_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/iron_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/iron_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/iron_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/iron_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/iron_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/iron_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/iron_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/iron_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/iron_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/iron_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/iron_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/iron_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/iron_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/iron_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/iron_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/iron_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/iron_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/iron_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/iron_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/iron_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/iron_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/iron_wall.json new file mode 100644 index 00000000..980a0e9b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/iron_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/iron_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/iron_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/iron_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/iron_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/iron_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/iron_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/iron_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/iron_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/iron_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sand.json b/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sand.json new file mode 100644 index 00000000..fee12fd9 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sand.json @@ -0,0 +1,21 @@ +{ + "variants": { + "": [ + { + "model": "emeraldcraft:block/jadeite_sand" + }, + { + "model": "emeraldcraft:block/jadeite_sand", + "y": 90 + }, + { + "model": "emeraldcraft:block/jadeite_sand", + "y": 180 + }, + { + "model": "emeraldcraft:block/jadeite_sand", + "y": 270 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone.json new file mode 100644 index 00000000..31e1fbbc --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/jadeite_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone_slab.json new file mode 100644 index 00000000..2a00dbc5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/jadeite_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/jadeite_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/jadeite_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone_stairs.json new file mode 100644 index 00000000..287a3e98 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone_wall.json new file mode 100644 index 00000000..0382deec --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/jadeite_sandstone_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/jadeite_sandstone_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/jadeite_sandstone_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/jadeite_sandstone_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/jadeite_sandstone_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/jadeite_sandstone_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/jadeite_sandstone_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/jadeite_sandstone_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/jadeite_sandstone_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/lapis_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/lapis_slab.json new file mode 100644 index 00000000..d244fc4a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/lapis_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/lapis_slab" + }, + "type=double": { + "model": "minecraft:block/lapis_block" + }, + "type=top": { + "model": "emeraldcraft:block/lapis_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/lapis_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/lapis_stairs.json new file mode 100644 index 00000000..51ecbbcb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/lapis_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/lapis_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/lapis_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/lapis_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/lapis_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/lapis_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/lapis_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/lapis_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/lapis_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/lapis_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/lapis_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/lapis_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/lapis_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/lapis_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/lapis_wall.json new file mode 100644 index 00000000..2e395aae --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/lapis_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/lapis_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/lapis_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/lapis_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/lapis_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/lapis_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/lapis_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/lapis_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/lapis_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/lapis_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/melter.json b/src/main/resources/assets/emeraldcraft/blockstates/melter.json new file mode 100644 index 00000000..572a1ca5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/melter.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/melter" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/mineral_table.json b/src/main/resources/assets/emeraldcraft/blockstates/mineral_table.json new file mode 100644 index 00000000..56548fe3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/mineral_table.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/mineral_table" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/netherite_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/netherite_slab.json new file mode 100644 index 00000000..0adb18ea --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/netherite_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/netherite_slab" + }, + "type=double": { + "model": "minecraft:block/netherite_block" + }, + "type=top": { + "model": "emeraldcraft:block/netherite_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/netherite_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/netherite_stairs.json new file mode 100644 index 00000000..6da03ebd --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/netherite_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/netherite_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/netherite_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/netherite_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/netherite_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/netherite_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/netherite_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/netherite_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/netherite_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/netherite_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/netherite_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/netherite_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/netherite_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/netherite_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/netherite_wall.json new file mode 100644 index 00000000..e7df41de --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/netherite_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/netherite_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/netherite_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/netherite_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/netherite_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/netherite_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/netherite_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/netherite_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/netherite_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/netherite_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/quartz_sand.json b/src/main/resources/assets/emeraldcraft/blockstates/quartz_sand.json new file mode 100644 index 00000000..232d610d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/quartz_sand.json @@ -0,0 +1,21 @@ +{ + "variants": { + "": [ + { + "model": "emeraldcraft:block/quartz_sand" + }, + { + "model": "emeraldcraft:block/quartz_sand", + "y": 90 + }, + { + "model": "emeraldcraft:block/quartz_sand", + "y": 180 + }, + { + "model": "emeraldcraft:block/quartz_sand", + "y": 270 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone.json new file mode 100644 index 00000000..b2a57315 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/quartz_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone_slab.json new file mode 100644 index 00000000..aae0f5ba --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/quartz_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/quartz_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/quartz_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone_stairs.json new file mode 100644 index 00000000..5ba7a0e0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/quartz_sandstone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/quartz_sandstone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/quartz_sandstone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/quartz_sandstone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/quartz_sandstone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/quartz_sandstone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/quartz_sandstone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/quartz_sandstone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone_wall.json new file mode 100644 index 00000000..b91cd224 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/quartz_sandstone_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/quartz_sandstone_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/quartz_sandstone_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/quartz_sandstone_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/quartz_sandstone_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/quartz_sandstone_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/quartz_sandstone_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/quartz_sandstone_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/quartz_sandstone_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_azure_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_azure_sandstone.json new file mode 100644 index 00000000..7610f3a8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_azure_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/smooth_azure_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_azure_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_azure_sandstone_slab.json new file mode 100644 index 00000000..4176a954 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_azure_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/smooth_azure_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/smooth_azure_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/smooth_azure_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_azure_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_azure_sandstone_stairs.json new file mode 100644 index 00000000..5f806e43 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_azure_sandstone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_emery_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_emery_sandstone.json new file mode 100644 index 00000000..5e7c61c8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_emery_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/smooth_emery_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_emery_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_emery_sandstone_slab.json new file mode 100644 index 00000000..caad38a1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_emery_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/smooth_emery_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/smooth_emery_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/smooth_emery_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_emery_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_emery_sandstone_stairs.json new file mode 100644 index 00000000..f76a5e8e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_emery_sandstone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_jadeite_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_jadeite_sandstone.json new file mode 100644 index 00000000..74556f35 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_jadeite_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_jadeite_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_jadeite_sandstone_slab.json new file mode 100644 index 00000000..e4caaa70 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_jadeite_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_jadeite_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_jadeite_sandstone_stairs.json new file mode 100644 index 00000000..b334ebf5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_jadeite_sandstone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_quartz_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_quartz_sandstone.json new file mode 100644 index 00000000..717263e2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_quartz_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/smooth_quartz_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_quartz_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_quartz_sandstone_slab.json new file mode 100644 index 00000000..9f9eee2f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_quartz_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/smooth_quartz_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_quartz_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_quartz_sandstone_stairs.json new file mode 100644 index 00000000..d6a63c81 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_quartz_sandstone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/squeezer.json b/src/main/resources/assets/emeraldcraft/blockstates/squeezer.json new file mode 100644 index 00000000..ae7896ac --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/squeezer.json @@ -0,0 +1,28 @@ +{ + "variants": { + "honey_count=0": { + "model": "emeraldcraft:block/squeezer_0" + }, + "honey_count=1": { + "model": "emeraldcraft:block/squeezer_1" + }, + "honey_count=2": { + "model": "emeraldcraft:block/squeezer_1" + }, + "honey_count=3": { + "model": "emeraldcraft:block/squeezer_2" + }, + "honey_count=4": { + "model": "emeraldcraft:block/squeezer_2" + }, + "honey_count=5": { + "model": "emeraldcraft:block/squeezer_3" + }, + "honey_count=6": { + "model": "emeraldcraft:block/squeezer_3" + }, + "honey_count=7": { + "model": "emeraldcraft:block/squeezer_4" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone.json b/src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone.json new file mode 100644 index 00000000..17aa8568 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/warped_cobblestone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone_slab.json new file mode 100644 index 00000000..f28ab7fb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/warped_cobblestone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/warped_cobblestone" + }, + "type=top": { + "model": "emeraldcraft:block/warped_cobblestone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone_stairs.json new file mode 100644 index 00000000..8d078f11 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/warped_cobblestone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/warped_cobblestone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/warped_cobblestone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/warped_cobblestone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/warped_cobblestone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/warped_cobblestone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/warped_cobblestone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/warped_cobblestone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone_wall.json new file mode 100644 index 00000000..0e8ce065 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/warped_cobblestone_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/warped_cobblestone_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/warped_cobblestone_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/warped_cobblestone_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/warped_cobblestone_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/warped_cobblestone_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/warped_cobblestone_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/warped_cobblestone_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/warped_cobblestone_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/warped_stone.json b/src/main/resources/assets/emeraldcraft/blockstates/warped_stone.json new file mode 100644 index 00000000..dbbdfac1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/warped_stone.json @@ -0,0 +1,20 @@ +{ + "variants": { + "": [ + { + "model": "emeraldcraft:block/warped_stone" + }, + { + "model": "emeraldcraft:block/warped_stone_mirrored" + }, + { + "model": "emeraldcraft:block/warped_stone", + "y": 180 + }, + { + "model": "emeraldcraft:block/warped_stone_mirrored", + "y": 180 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/warped_stone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/warped_stone_slab.json new file mode 100644 index 00000000..ce9e95c4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/warped_stone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/warped_stone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/warped_stone" + }, + "type=top": { + "model": "emeraldcraft:block/warped_stone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/warped_stone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/warped_stone_stairs.json new file mode 100644 index 00000000..ce680d81 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/warped_stone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/warped_stone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/warped_stone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/warped_stone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/warped_stone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/warped_stone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/warped_stone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/warped_stone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/warped_stone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/warped_stone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/warped_stone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/warped_stone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/warped_stone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/warped_stone_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/warped_stone_wall.json new file mode 100644 index 00000000..2124263a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/warped_stone_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/warped_stone_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/warped_stone_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/warped_stone_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/warped_stone_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/warped_stone_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/warped_stone_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/warped_stone_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/warped_stone_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/warped_stone_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/warped_wart.json b/src/main/resources/assets/emeraldcraft/blockstates/warped_wart.json new file mode 100644 index 00000000..c608d764 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/warped_wart.json @@ -0,0 +1,16 @@ +{ + "variants": { + "age=0": { + "model": "emeraldcraft:block/warped_wart_stage0" + }, + "age=1": { + "model": "emeraldcraft:block/warped_wart_stage1" + }, + "age=2": { + "model": "emeraldcraft:block/warped_wart_stage1" + }, + "age=3": { + "model": "emeraldcraft:block/warped_wart_stage2" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/lang/en_us.json b/src/main/resources/assets/emeraldcraft/lang/en_us.json new file mode 100644 index 00000000..f83447b3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/lang/en_us.json @@ -0,0 +1,199 @@ +{ + "language": "English", + "language.code": "en_us", + "language.region": "United States", + "itemGroup.emeraldcraft": "Emerald Craft", + "emeraldcraft.config.title": "", + + "block.emeraldcraft.emerald_slab": "Emerald Slab", + "block.emeraldcraft.emerald_stairs": "Emerald Stairs", + "block.emeraldcraft.emerald_wall": "Emerald Wall", + "block.emeraldcraft.diamond_slab": "Diamond Slab", + "block.emeraldcraft.diamond_stairs": "Diamond Stairs", + "block.emeraldcraft.diamond_wall": "Diamond Wall", + "block.emeraldcraft.gold_slab": "Gold Slab", + "block.emeraldcraft.gold_stairs": "Gold Stairs", + "block.emeraldcraft.gold_wall": "Gold Wall", + "block.emeraldcraft.iron_slab": "Iron Slab", + "block.emeraldcraft.iron_stairs": "Iron Stairs", + "block.emeraldcraft.iron_wall": "Iron Wall", + "block.emeraldcraft.lapis_slab": "Lapis Slab", + "block.emeraldcraft.lapis_stairs": "Lapis Stairs", + "block.emeraldcraft.lapis_wall": "Lapis Wall", + "block.emeraldcraft.netherite_slab": "Netherite Slab", + "block.emeraldcraft.netherite_stairs": "Netherite Stairs", + "block.emeraldcraft.netherite_wall": "Netherite Wall", + "block.emeraldcraft.azure_sand": "Azure Sand", + "block.emeraldcraft.quartz_sand": "Quartz Sand", + "block.emeraldcraft.jadeite_sand": "Jadeite Sand", + "block.emeraldcraft.emery_sand": "Emery Sand", + "block.emeraldcraft.azure_sandstone": "Azure Sandstone", + "block.emeraldcraft.quartz_sandstone": "Quartz Sandstone", + "block.emeraldcraft.jadeite_sandstone": "Jadeite Sandstone", + "block.emeraldcraft.emery_sandstone": "Emery Sandstone", + "block.emeraldcraft.smooth_azure_sandstone": "Smooth Azure Sandstone", + "block.emeraldcraft.smooth_quartz_sandstone": "Smooth Quartz Sandstone", + "block.emeraldcraft.smooth_jadeite_sandstone": "Smooth Jadeite Sandstone", + "block.emeraldcraft.smooth_emery_sandstone": "Smooth Emery Sandstone", + "block.emeraldcraft.cut_azure_sandstone": "Cut Azure Sandstone", + "block.emeraldcraft.cut_quartz_sandstone": "Cut Quartz Sandstone", + "block.emeraldcraft.cut_jadeite_sandstone": "Cut Jadeite Sandstone", + "block.emeraldcraft.cut_emery_sandstone": "Cut Emery Sandstone", + "block.emeraldcraft.azure_sandstone_slab": "Azure Sandstone Slab", + "block.emeraldcraft.quartz_sandstone_slab": "Quartz Sandstone Slab", + "block.emeraldcraft.jadeite_sandstone_slab": "Jadeite Sandstone Slab", + "block.emeraldcraft.emery_sandstone_slab": "Emery Sandstone Slab", + "block.emeraldcraft.smooth_azure_sandstone_slab": "Smooth Azure Sandstone Slab", + "block.emeraldcraft.smooth_quartz_sandstone_slab": "Smooth Quartz Sandstone Slab", + "block.emeraldcraft.smooth_jadeite_sandstone_slab": "Smooth Jadeite Sandstone Slab", + "block.emeraldcraft.smooth_emery_sandstone_slab": "Smooth Emery Sandstone Slab", + "block.emeraldcraft.cut_azure_sandstone_slab": "Cut Azure Sandstone Slab", + "block.emeraldcraft.cut_quartz_sandstone_slab": "Cut Quartz Sandstone Slab", + "block.emeraldcraft.cut_jadeite_sandstone_slab": "Cut Jadeite Sandstone Slab", + "block.emeraldcraft.cut_emery_sandstone_slab": "Cut Emery Sandstone Slab", + "block.emeraldcraft.azure_sandstone_stairs": "Azure Sandstone Stairs", + "block.emeraldcraft.quartz_sandstone_stairs": "Quartz Sandstone Stairs", + "block.emeraldcraft.jadeite_sandstone_stairs": "Jadeite Sandstone Stairs", + "block.emeraldcraft.emery_sandstone_stairs": "Emery Sandstone Stairs", + "block.emeraldcraft.smooth_azure_sandstone_stairs": "Smooth Azure Sandstone Stairs", + "block.emeraldcraft.smooth_quartz_sandstone_stairs": "Smooth Quartz Sandstone Stairs", + "block.emeraldcraft.smooth_jadeite_sandstone_stairs": "Smooth Jadeite Sandstone Stairs", + "block.emeraldcraft.smooth_emery_sandstone_stairs": "Smooth Emery Sandstone Stairs", + "block.emeraldcraft.azure_sandstone_wall": "Azure Sandstone Wall", + "block.emeraldcraft.quartz_sandstone_wall": "Quartz Sandstone Wall", + "block.emeraldcraft.jadeite_sandstone_wall": "Jadeite Sandstone Wall", + "block.emeraldcraft.emery_sandstone_wall": "Emery Sandstone Wall", + "block.emeraldcraft.carpentry_table": "Carpentry Table", + "block.emeraldcraft.glass_kiln": "Glass Kiln", + "block.emeraldcraft.mineral_table": "Mineral Table", + "block.emeraldcraft.crystalball_table": "Crystalball Table", + "block.emeraldcraft.squeezer": "Squeezer", + "block.emeraldcraft.continuous_miner": "Continuous Miner", + "block.emeraldcraft.ice_maker": "Ice Maker", + "block.emeraldcraft.melter": "Melter", + "block.emeraldcraft.blue_nether_brick_slab": "Blue Nether Brick Slab", + "block.emeraldcraft.blue_nether_brick_stairs": "Blue Nether Brick Stairs", + "block.emeraldcraft.blue_nether_brick_wall": "Blue Nether Brick Wall", + "block.emeraldcraft.blue_nether_bricks": "Blue Nether Bricks", + "block.emeraldcraft.crimson_stone_slab": "Crimson Stone Slab", + "block.emeraldcraft.crimson_stone_stairs": "Crimson Stone Stairs", + "block.emeraldcraft.crimson_stone_wall": "Crimson Stone Wall", + "block.emeraldcraft.crimson_stone": "Crimson Stone", + "block.emeraldcraft.crimson_cobblestone_slab": "Crimson Cobblestone Slab", + "block.emeraldcraft.crimson_cobblestone_stairs": "Crimson Cobblestone Stairs", + "block.emeraldcraft.crimson_cobblestone_wall": "Crimson Cobblestone Wall", + "block.emeraldcraft.crimson_cobblestone": "Crimson Cobblestone", + "block.emeraldcraft.warped_stone_slab": "Warped Stone Slab", + "block.emeraldcraft.warped_stone_stairs": "Warped Stone Stairs", + "block.emeraldcraft.warped_stone_wall": "Warped Stone Wall", + "block.emeraldcraft.warped_stone": "Warped Stone", + "block.emeraldcraft.warped_cobblestone_slab": "Warped Cobblestone Slab", + "block.emeraldcraft.warped_cobblestone_stairs": "Warped Cobblestone Stairs", + "block.emeraldcraft.warped_cobblestone_wall": "Warped Cobblestone Wall", + "block.emeraldcraft.warped_cobblestone": "Warped Cobblestone", + + "item.emeraldcraft.emerald_head": "Emerald Helmet", + "item.emeraldcraft.emerald_chest": "Emerald Chestplate", + "item.emeraldcraft.emerald_legs": "Emerald Leggings", + "item.emeraldcraft.emerald_feet": "Emerald Boots", + "item.emeraldcraft.lapis_head": "Lapis Helmet", + "item.emeraldcraft.lapis_chest": "Lapis Chestplate", + "item.emeraldcraft.lapis_legs": "Lapis Leggings", + "item.emeraldcraft.lapis_feet": "Lapis Boots", + "item.emeraldcraft.warped_wart": "Warped Wart", + "item.emeraldcraft.diamond_nugget": "Diamond Nugget", + "item.emeraldcraft.emerald_nugget": "Emerald Nugget", + "item.emeraldcraft.lapis_nugget": "Lapis Nugget", + "item.emeraldcraft.piglin_cutey_spawn_egg": "Piglin Cutey Spawn Egg", + "item.emeraldcraft.nether_pigman_spawn_egg": "Nether Pigman Spawn Egg", + "item.emeraldcraft.nether_lambman_spawn_egg": "Nether Lambman Spawn Egg", + "item.emeraldcraft.agate_apple": "Agate Apple", + "item.emeraldcraft.jade_apple": "Jade Apple", + "item.emeraldcraft.bee_banner_pattern": "Banner Pattern", + "item.emeraldcraft.bee_banner_pattern.desc": "Bee", + "item.emeraldcraft.snow_banner_pattern": "Banner Pattern", + "item.emeraldcraft.snow_banner_pattern.desc": "Snow", + "item.emeraldcraft.bottle_banner_pattern": "Banner Pattern", + "item.emeraldcraft.bottle_banner_pattern.desc": "Bottle", + "item.emeraldcraft.potion_banner_pattern": "Banner Pattern", + "item.emeraldcraft.potion_banner_pattern.desc": "Potion", + "item.emeraldcraft.rock_breaker": "Rock Breaker", + "item.emeraldcraft.melted_emerald_bucket": "Melted Emerald Bucket", + "item.emeraldcraft.melted_iron_bucket": "Melted Iron Bucket", + "item.emeraldcraft.melted_gold_bucket": "Melted Gold Bucket", + "item.emeraldcraft.melted_copper_bucket": "Melted Copper Bucket", + "item.emeraldcraft.iron_concentrate": "Iron Concentrate", + "item.emeraldcraft.gold_concentrate": "Gold Concentrate", + "item.emeraldcraft.copper_concentrate": "Copper Concentrate", + + "entity.emeraldcraft.piglin_cutey": "Piglin Cutey", + "entity.emeraldcraft.nether_pigman": "Nether Pigman", + "entity.emeraldcraft.nether_lambman": "Nether Lambman", + "entity.minecraft.villager.emeraldcraft.carpenter": "Carpenter", + "entity.minecraft.villager.emeraldcraft.glazier": "Glazier", + "entity.minecraft.villager.emeraldcraft.miner": "Miner", + "entity.minecraft.villager.emeraldcraft.astrologist": "Astrologist", + "entity.minecraft.villager.emeraldcraft.grower": "Grower", + "entity.minecraft.villager.emeraldcraft.beekeeper": "Beekeeper", + "entity.minecraft.villager.emeraldcraft.geologist": "Geologist", + "entity.minecraft.villager.emeraldcraft.icer": "Icer", + "entity.minecraft.villager.emeraldcraft.chemical_engineer": "Chemical Engineer", + + "subtitles.entity.piglin_cutey.ambient": "Piglin Cutey mumbles", + "subtitles.entity.piglin_cutey.celebrate": "Piglin Cutey celebrates", + "subtitles.entity.piglin_cutey.death": "Piglin Cutey dies", + "subtitles.entity.piglin_cutey.hurt": "Piglin Cutey hurts", + "subtitles.entity.piglin_cutey.no": "Piglin Cutey disagrees", + "subtitles.entity.piglin_cutey.trade": "Piglin Cutey trades", + "subtitles.entity.piglin_cutey.yes": "Piglin Cutey agrees", + "subtitles.entity.nether_pigman.ambient": "Nether Pigman oinks", + "subtitles.entity.nether_pigman.death": "Nether Pigman dies", + "subtitles.entity.nether_pigman.hurt": "Nether Pigman hurts", + "subtitles.entity.nether_pigman.no": "Nether Pigman disagrees", + "subtitles.entity.nether_pigman.trade": "Nether Pigman trades", + "subtitles.entity.nether_pigman.yes": "Nether Pigman agrees", + "subtitles.entity.nether_lambman.ambient": "Nether Lambman baahs", + "subtitles.entity.nether_lambman.death": "Nether Lambman dies", + "subtitles.entity.nether_lambman.hurt": "Nether Lambman hurts", + "subtitles.entity.nether_lambman.no": "Nether Lambman disagrees", + "subtitles.entity.nether_lambman.trade": "Nether Lambman trades", + "subtitles.entity.nether_lambman.yes": "Nether Lambman agrees", + "subtitles.entity.villager.work_carpenter": "Carpenter works", + "subtitles.entity.villager.work_glazier": "Glazier works", + "subtitles.entity.villager.work_miner": "Miner works", + "subtitles.entity.villager.work_astrologist": "Astrologist works", + "subtitles.entity.villager.work_grower": "Grower works", + "subtitles.entity.villager.work_beekeeper": "Beekeeper works", + "subtitles.entity.villager.work_geologist": "Geologist works", + "subtitles.entity.villager.work_icer": "Icer works", + "subtitles.entity.villager.work_chemical_engineer": "Chemical Engineer works", + + "container.carpentry": "Carpentry Table", + "container.glass_kiln": "Glass Kiln", + "container.mineral_table": "Mineral Table", + "container.continuous_miner": "Continuous Miner", + "container.ice_maker": "Ice Maker", + "container.melter": "Melter", + + "biome.emeraldcraft.azure_desert": "Azure Desert", + "biome.emeraldcraft.jadeite_desert": "Jadeite Desert", + "biome.emeraldcraft.quartz_desert": "Quartz Desert", + "biome.emeraldcraft.emery_desert": "Emery Desert", + + "gui.recipebook.toggleRecipes.kilnable": "Showing Kilnable", + + "gui.emeraldcraft.glass_kiln.experience": "%s XP", + "gui.emeraldcraft.glass_kiln.time.seconds": "%ss", + "gui.emeraldcraft.melter.time.seconds": "%ss", + "gui.emeraldcraft.ice_maker.time.seconds": "%ss", + + "book.emeraldcraft.piglin_cutey.title": "One Last Thing I Need", + "book.emeraldcraft.piglin_cutey.content": "I was trapped in the nether for days. A ghast broke my portal, so I have no choice but to act like a piglin and to trade with them. Still I don't have enough obsidian to activate a portal. Would you mind help me back to the overworld?", + + "advancements.emeraldcraft.root.title": "Beginning of the `Green` Craft", + "advancements.emeraldcraft.root.description": "Obtain an Emerald", + "advancements.emeraldcraft.hard_currency.title": "`Hard` Currency", + "advancements.emeraldcraft.hard_currency.description": "Obtain an Emerald Armor", + "advancements.emeraldcraft.green_light.title": "Power of Money", + "advancements.emeraldcraft.green_light.description": "Obtain all Emerald Armors" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/lang/zh_cn.json b/src/main/resources/assets/emeraldcraft/lang/zh_cn.json new file mode 100644 index 00000000..04279b7e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/lang/zh_cn.json @@ -0,0 +1,199 @@ +{ + "language": "Chinese", + "language.code": "zh_cn", + "language.region": "China", + "itemGroup.emeraldcraft": "绿宝石工艺", + "emeraldcraft.config.title": "", + + "block.emeraldcraft.emerald_slab": "绿宝石台阶", + "block.emeraldcraft.emerald_stairs": "绿宝石楼梯", + "block.emeraldcraft.emerald_wall": "绿宝石墙", + "block.emeraldcraft.diamond_slab": "钻石台阶", + "block.emeraldcraft.diamond_stairs": "钻石楼梯", + "block.emeraldcraft.diamond_wall": "钻石墙", + "block.emeraldcraft.gold_slab": "金台阶", + "block.emeraldcraft.gold_stairs": "金楼梯", + "block.emeraldcraft.gold_wall": "金墙", + "block.emeraldcraft.iron_slab": "铁台阶", + "block.emeraldcraft.iron_stairs": "铁楼梯", + "block.emeraldcraft.iron_wall": "铁墙", + "block.emeraldcraft.lapis_slab": "青金石台阶", + "block.emeraldcraft.lapis_stairs": "青金石楼梯", + "block.emeraldcraft.lapis_wall": "青金石墙", + "block.emeraldcraft.netherite_slab": "下界合金台阶", + "block.emeraldcraft.netherite_stairs": "下界合金楼梯", + "block.emeraldcraft.netherite_wall": "下界合金墙", + "block.emeraldcraft.azure_sand": "琉璃沙", + "block.emeraldcraft.quartz_sand": "石英沙", + "block.emeraldcraft.jadeite_sand": "翡翠沙", + "block.emeraldcraft.emery_sand": "金刚沙", + "block.emeraldcraft.azure_sandstone": "琉璃砂岩", + "block.emeraldcraft.quartz_sandstone": "石英砂岩", + "block.emeraldcraft.jadeite_sandstone": "翡翠砂岩", + "block.emeraldcraft.emery_sandstone": "金刚砂岩", + "block.emeraldcraft.smooth_azure_sandstone": "平滑琉璃砂岩", + "block.emeraldcraft.smooth_quartz_sandstone": "平滑石英砂岩", + "block.emeraldcraft.smooth_jadeite_sandstone": "平滑翡翠砂岩", + "block.emeraldcraft.smooth_emery_sandstone": "平滑金刚砂岩", + "block.emeraldcraft.cut_azure_sandstone": "切制琉璃砂岩", + "block.emeraldcraft.cut_quartz_sandstone": "切制石英砂岩", + "block.emeraldcraft.cut_jadeite_sandstone": "切制翡翠砂岩", + "block.emeraldcraft.cut_emery_sandstone": "切制金刚砂岩", + "block.emeraldcraft.azure_sandstone_slab": "琉璃砂岩台阶", + "block.emeraldcraft.quartz_sandstone_slab": "石英砂岩台阶", + "block.emeraldcraft.jadeite_sandstone_slab": "翡翠砂岩台阶", + "block.emeraldcraft.emery_sandstone_slab": "金刚砂岩台阶", + "block.emeraldcraft.smooth_azure_sandstone_slab": "平滑琉璃砂岩台阶", + "block.emeraldcraft.smooth_quartz_sandstone_slab": "平滑石英砂岩台阶", + "block.emeraldcraft.smooth_jadeite_sandstone_slab": "平滑翡翠砂岩台阶", + "block.emeraldcraft.smooth_emery_sandstone_slab": "平滑金刚砂岩台阶", + "block.emeraldcraft.cut_azure_sandstone_slab": "切制琉璃砂岩台阶", + "block.emeraldcraft.cut_quartz_sandstone_slab": "切制石英砂岩台阶", + "block.emeraldcraft.cut_jadeite_sandstone_slab": "切制翡翠砂岩台阶", + "block.emeraldcraft.cut_emery_sandstone_slab": "切制金刚砂岩台阶", + "block.emeraldcraft.azure_sandstone_stairs": "琉璃砂岩楼梯", + "block.emeraldcraft.quartz_sandstone_stairs": "石英砂岩楼梯", + "block.emeraldcraft.jadeite_sandstone_stairs": "翡翠砂岩楼梯", + "block.emeraldcraft.emery_sandstone_stairs": "金刚砂岩楼梯", + "block.emeraldcraft.smooth_azure_sandstone_stairs": "平滑琉璃砂岩楼梯", + "block.emeraldcraft.smooth_quartz_sandstone_stairs": "平滑石英砂岩楼梯", + "block.emeraldcraft.smooth_jadeite_sandstone_stairs": "平滑翡翠砂岩楼梯", + "block.emeraldcraft.smooth_emery_sandstone_stairs": "平滑金刚砂岩楼梯", + "block.emeraldcraft.azure_sandstone_wall": "琉璃砂岩墙", + "block.emeraldcraft.quartz_sandstone_wall": "石英砂岩墙", + "block.emeraldcraft.jadeite_sandstone_wall": "翡翠砂岩墙", + "block.emeraldcraft.emery_sandstone_wall": "金刚砂岩墙", + "block.emeraldcraft.carpentry_table": "木工桌", + "block.emeraldcraft.glass_kiln": "玻璃窑", + "block.emeraldcraft.mineral_table": "冶矿台", + "block.emeraldcraft.crystalball_table": "水晶球桌", + "block.emeraldcraft.squeezer": "榨取器", + "block.emeraldcraft.continuous_miner": "连续采矿机", + "block.emeraldcraft.ice_maker": "制冰机", + "block.emeraldcraft.melter": "熔化炉", + "block.emeraldcraft.blue_nether_brick_slab": "蓝色地狱砖台阶", + "block.emeraldcraft.blue_nether_brick_stairs": "蓝色地狱砖楼梯", + "block.emeraldcraft.blue_nether_brick_wall": "蓝色地狱砖墙", + "block.emeraldcraft.blue_nether_bricks": "蓝色地狱砖块", + "block.emeraldcraft.crimson_stone_slab": "绯红石台阶", + "block.emeraldcraft.crimson_stone_stairs": "绯红石楼梯", + "block.emeraldcraft.crimson_stone_wall": "绯红石墙", + "block.emeraldcraft.crimson_stone": "绯红石头", + "block.emeraldcraft.crimson_cobblestone_slab": "绯红圆石台阶", + "block.emeraldcraft.crimson_cobblestone_stairs": "绯红圆石楼梯", + "block.emeraldcraft.crimson_cobblestone_wall": "绯红圆石墙", + "block.emeraldcraft.crimson_cobblestone": "绯红圆石", + "block.emeraldcraft.warped_stone_slab": "诡异石台阶", + "block.emeraldcraft.warped_stone_stairs": "诡异石楼梯", + "block.emeraldcraft.warped_stone_wall": "诡异石墙", + "block.emeraldcraft.warped_stone": "诡异石头", + "block.emeraldcraft.warped_cobblestone_slab": "诡异圆石台阶", + "block.emeraldcraft.warped_cobblestone_stairs": "诡异圆石楼梯", + "block.emeraldcraft.warped_cobblestone_wall": "诡异圆石墙", + "block.emeraldcraft.warped_cobblestone": "诡异圆石", + + "item.emeraldcraft.emerald_head": "绿宝石头盔", + "item.emeraldcraft.emerald_chest": "绿宝石胸甲", + "item.emeraldcraft.emerald_legs": "绿宝石护腿", + "item.emeraldcraft.emerald_feet": "绿宝石靴子", + "item.emeraldcraft.lapis_head": "青金石头盔", + "item.emeraldcraft.lapis_chest": "青金石胸甲", + "item.emeraldcraft.lapis_legs": "青金石护腿", + "item.emeraldcraft.lapis_feet": "青金石靴子", + "item.emeraldcraft.warped_wart": "诡异疣", + "item.emeraldcraft.diamond_nugget": "钻石粒", + "item.emeraldcraft.emerald_nugget": "绿宝石粒", + "item.emeraldcraft.lapis_nugget": "青金石粒", + "item.emeraldcraft.piglin_cutey_spawn_egg": "猪灵妹妹刷怪蛋", + "item.emeraldcraft.nether_pigman_spawn_egg": "下界猪猪人刷怪蛋", + "item.emeraldcraft.nether_lambman_spawn_egg": "下界小羊人刷怪蛋", + "item.emeraldcraft.agate_apple": "青苹果", + "item.emeraldcraft.jade_apple": "翠苹果", + "item.emeraldcraft.bee_banner_pattern": "旗帜图案", + "item.emeraldcraft.bee_banner_pattern.desc": "蜜蜂", + "item.emeraldcraft.snow_banner_pattern": "旗帜图案", + "item.emeraldcraft.snow_banner_pattern.desc": "雪花", + "item.emeraldcraft.bottle_banner_pattern": "旗帜图案", + "item.emeraldcraft.bottle_banner_pattern.desc": "瓶子", + "item.emeraldcraft.potion_banner_pattern": "旗帜图案", + "item.emeraldcraft.potion_banner_pattern.desc": "药水", + "item.emeraldcraft.rock_breaker": "破岩轮", + "item.emeraldcraft.melted_emerald_bucket": "熔融绿宝石桶", + "item.emeraldcraft.melted_iron_bucket": "熔融铁水桶", + "item.emeraldcraft.melted_gold_bucket": "熔融金水桶", + "item.emeraldcraft.melted_copper_bucket": "熔融铜水桶", + "item.emeraldcraft.iron_concentrate": "铁精矿", + "item.emeraldcraft.gold_concentrate": "金精矿", + "item.emeraldcraft.copper_concentrate": "铜精矿", + + "entity.emeraldcraft.piglin_cutey": "猪灵妹妹", + "entity.emeraldcraft.nether_pigman": "下界猪猪人", + "entity.emeraldcraft.nether_lambman": "下界小羊人", + "entity.minecraft.villager.emeraldcraft.carpenter": "木匠", + "entity.minecraft.villager.emeraldcraft.glazier": "玻璃匠", + "entity.minecraft.villager.emeraldcraft.miner": "矿工", + "entity.minecraft.villager.emeraldcraft.astrologist": "占星师", + "entity.minecraft.villager.emeraldcraft.grower": "花农", + "entity.minecraft.villager.emeraldcraft.beekeeper": "养蜂人", + "entity.minecraft.villager.emeraldcraft.geologist": "地质勘测员", + "entity.minecraft.villager.emeraldcraft.icer": "制冰师", + "entity.minecraft.villager.emeraldcraft.chemical_engineer": "化学工程师", + + "subtitles.entity.piglin_cutey.ambient": "猪灵妹妹:喃喃自语", + "subtitles.entity.piglin_cutey.celebrate": "猪灵妹妹:欢呼", + "subtitles.entity.piglin_cutey.death": "猪灵妹妹:死亡", + "subtitles.entity.piglin_cutey.hurt": "猪灵妹妹:受伤", + "subtitles.entity.piglin_cutey.no": "猪灵妹妹:反对", + "subtitles.entity.piglin_cutey.trade": "猪灵妹妹:交易", + "subtitles.entity.piglin_cutey.yes": "猪灵妹妹:赞同", + "subtitles.entity.nether_pigman.ambient": "下界猪猪人:哼叫", + "subtitles.entity.nether_pigman.death": "下界猪猪人:死亡", + "subtitles.entity.nether_pigman.hurt": "下界猪猪人:受伤", + "subtitles.entity.nether_pigman.no": "下界猪猪人:反对", + "subtitles.entity.nether_pigman.trade": "下界猪猪人:交易", + "subtitles.entity.nether_pigman.yes": "下界猪猪人:赞同", + "subtitles.entity.nether_lambman.ambient": "下界小羊人:咩~", + "subtitles.entity.nether_lambman.death": "下界小羊人:死亡", + "subtitles.entity.nether_lambman.hurt": "下界小羊人:受伤", + "subtitles.entity.nether_lambman.no": "下界小羊人:反对", + "subtitles.entity.nether_lambman.trade": "下界小羊人:交易", + "subtitles.entity.nether_lambman.yes": "下界小羊人:赞同", + "subtitles.entity.villager.work_carpenter": "木匠:工作", + "subtitles.entity.villager.work_glazier": "玻璃匠:工作", + "subtitles.entity.villager.work_miner": "矿工:工作", + "subtitles.entity.villager.work_astrologist": "占星师:工作", + "subtitles.entity.villager.work_grower": "花农:工作", + "subtitles.entity.villager.work_beekeeper": "养蜂人:工作", + "subtitles.entity.villager.work_geologist": "地质勘测员:工作", + "subtitles.entity.villager.work_icer": "制冰师:工作", + "subtitles.entity.villager.work_chemical_engineer": "化学工程师:工作", + + "container.carpentry": "木工桌", + "container.glass_kiln": "玻璃窑", + "container.mineral_table": "冶矿台", + "container.continuous_miner": "连续采矿机", + "container.ice_maker": "制冰机", + "container.melter": "熔化炉", + + "biome.emeraldcraft.azure_desert": "琉璃沙漠", + "biome.emeraldcraft.jadeite_desert": "翡翠沙漠", + "biome.emeraldcraft.quartz_desert": "石英沙漠", + "biome.emeraldcraft.emery_desert": "金刚沙漠", + + "gui.recipebook.toggleRecipes.kilnable": "仅显示可烧制", + + "gui.emeraldcraft.glass_kiln.experience": "%s 点经验", + "gui.emeraldcraft.glass_kiln.time.seconds": "%s 秒", + "gui.emeraldcraft.melter.time.seconds": "%s 秒", + "gui.emeraldcraft.ice_maker.time.seconds": "%s 秒", + + "book.emeraldcraft.piglin_cutey.title": "最后一个请求", + "book.emeraldcraft.piglin_cutey.content": "数天来,我一直被困在地狱。一只恶魂摧毁了我的传送门,所以我别无选择,只能装扮成猪灵并与他们交易——但迄今为止我仍然没有找到足够的黑曜石。你可以帮我返回主世界吗?", + + "advancements.emeraldcraft.root.title": "绿色工艺的开始", + "advancements.emeraldcraft.root.description": "获得一颗绿宝石", + "advancements.emeraldcraft.hard_currency.title": "“硬”通货", + "advancements.emeraldcraft.hard_currency.description": "获得一件绿宝石装备", + "advancements.emeraldcraft.green_light.title": "原谅战士", + "advancements.emeraldcraft.green_light.description": "获得全套绿宝石盔甲" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/azure_sand.json b/src/main/resources/assets/emeraldcraft/models/block/azure_sand.json new file mode 100644 index 00000000..22ebbbfd --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/azure_sand.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/azure_sand" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone.json new file mode 100644 index 00000000..97c9f392 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/azure_sandstone_top", + "bottom": "emeraldcraft:block/azure_sandstone_bottom", + "side": "emeraldcraft:block/azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_slab.json new file mode 100644 index 00000000..fdf7ebb6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/azure_sandstone_bottom", + "top": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_slab_top.json new file mode 100644 index 00000000..2efae258 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/azure_sandstone_bottom", + "top": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_stairs.json new file mode 100644 index 00000000..684d2010 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/azure_sandstone_bottom", + "top": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_stairs_inner.json new file mode 100644 index 00000000..c89885e0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/azure_sandstone_bottom", + "top": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_stairs_outer.json new file mode 100644 index 00000000..72184f53 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/azure_sandstone_bottom", + "top": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_inventory.json new file mode 100644 index 00000000..b4299bf3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "emeraldcraft:block/azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_post.json new file mode 100644 index 00000000..f8a2f358 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "emeraldcraft:block/azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_side.json new file mode 100644 index 00000000..3dcaeb36 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "emeraldcraft:block/azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_side_tall.json new file mode 100644 index 00000000..78aab10c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "emeraldcraft:block/azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_slab.json b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_slab.json new file mode 100644 index 00000000..f049a90e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/blue_nether_bricks", + "top": "emeraldcraft:block/blue_nether_bricks", + "side": "emeraldcraft:block/blue_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_slab_top.json new file mode 100644 index 00000000..92992576 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/blue_nether_bricks", + "top": "emeraldcraft:block/blue_nether_bricks", + "side": "emeraldcraft:block/blue_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_stairs.json new file mode 100644 index 00000000..0bb364ef --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/blue_nether_bricks", + "top": "emeraldcraft:block/blue_nether_bricks", + "side": "emeraldcraft:block/blue_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_stairs_inner.json new file mode 100644 index 00000000..3365754b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/blue_nether_bricks", + "top": "emeraldcraft:block/blue_nether_bricks", + "side": "emeraldcraft:block/blue_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_stairs_outer.json new file mode 100644 index 00000000..26a24fbc --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/blue_nether_bricks", + "top": "emeraldcraft:block/blue_nether_bricks", + "side": "emeraldcraft:block/blue_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_inventory.json new file mode 100644 index 00000000..2a735400 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "emeraldcraft:block/blue_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_post.json new file mode 100644 index 00000000..76e9c266 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "emeraldcraft:block/blue_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_side.json new file mode 100644 index 00000000..c2e771e0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "emeraldcraft:block/blue_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_side_tall.json new file mode 100644 index 00000000..94a4f999 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "emeraldcraft:block/blue_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/blue_nether_bricks.json b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_bricks.json new file mode 100644 index 00000000..2461a391 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_bricks.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/blue_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/carpentry_table.json b/src/main/resources/assets/emeraldcraft/models/block/carpentry_table.json new file mode 100644 index 00000000..5804630e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/carpentry_table.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "emeraldcraft:block/carpentry_table_bottom", + "bottom": "emeraldcraft:block/carpentry_table_bottom", + "top": "emeraldcraft:block/carpentry_table_top", + "side": "emeraldcraft:block/carpentry_table_side", + "saw": "emeraldcraft:block/carpentry_table_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 } + } + } + ] +} diff --git a/src/main/resources/assets/emeraldcraft/models/block/continuous_miner.json b/src/main/resources/assets/emeraldcraft/models/block/continuous_miner.json new file mode 100644 index 00000000..b8517415 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/continuous_miner.json @@ -0,0 +1,99 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "emeraldcraft:block/continuous_miner_wheel", + "texture_mfront": "minecraft:block/furnace_top", + "texture_mback": "minecraft:block/dropper_front_vertical", + "texture_msideh": "emeraldcraft:block/continuous_miner_main_sideh", + "texture_msidev": "emeraldcraft:block/continuous_miner_main_sidev", + "texture_wheel": "emeraldcraft:block/continuous_miner_wheel", + "texture_wside": "emeraldcraft:block/continuous_miner_wheel_side", + "texture_holder": "emeraldcraft:block/continuous_miner_holder" + }, + "elements": [ + { + "from": [ 0, 0, 3 ], + "to": [ 16, 16, 16 ], + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture_mfront", "cullface": "north" }, + "east": { "uv": [ 0, 0, 9, 16 ], "texture": "#texture_msidev", "cullface": "east" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture_mback", "cullface": "south" }, + "west": { "uv": [ 0, 0, 9, 16 ], "texture": "#texture_msidev", "cullface": "west" }, + "up": { "uv": [ 0, 0, 16, 9 ], "texture": "#texture_msideh", "cullface": "up" }, + "down": { "uv": [ 0, 0, 16, 9 ], "texture": "#texture_msideh", "cullface": "down" } + } + }, + { + "from": [ 1, 2, -6 ], + "to": [ 5, 11, 3 ], + "faces": { + "north": { "uv": [ 0, 0, 4, 9 ], "texture": "#texture_wside", "cullface": "north" }, + "east": { "uv": [ 0, 0, 9, 9 ], "texture": "#texture_wheel", "cullface": "east" }, + "south": { "uv": [ 0, 0, 4, 9 ], "texture": "#texture_wside", "cullface": "south" }, + "west": { "uv": [ 0, 0, 9, 9 ], "texture": "#texture_wheel", "cullface": "west" }, + "up": { "uv": [ 0, 0, 4, 9 ], "texture": "#texture_wside", "cullface": "up" }, + "down": { "uv": [ 0, 0, 4, 9 ], "texture": "#texture_wside", "cullface": "down" } + } + }, + { + "from": [ 6, 2, -6 ], + "to": [ 10, 11, 3 ], + "faces": { + "north": { "uv": [ 0, 0, 4, 9 ], "texture": "#texture_wside", "cullface": "north" }, + "east": { "uv": [ 0, 0, 9, 9 ], "texture": "#texture_wheel", "cullface": "east" }, + "south": { "uv": [ 0, 0, 4, 9 ], "texture": "#texture_wside", "cullface": "south" }, + "west": { "uv": [ 0, 0, 9, 9 ], "texture": "#texture_wheel", "cullface": "west" }, + "up": { "uv": [ 0, 0, 4, 9 ], "texture": "#texture_wside", "cullface": "up" }, + "down": { "uv": [ 0, 0, 4, 9 ], "texture": "#texture_wside", "cullface": "down" } + } + }, + { + "from": [ 11, 2, -6 ], + "to": [ 15, 11, 3 ], + "faces": { + "north": { "uv": [ 0, 0, 4, 9 ], "texture": "#texture_wside", "cullface": "north" }, + "east": { "uv": [ 0, 0, 9, 9 ], "texture": "#texture_wheel", "cullface": "east" }, + "south": { "uv": [ 0, 0, 4, 9 ], "texture": "#texture_wside", "cullface": "south" }, + "west": { "uv": [ 0, 0, 9, 9 ], "texture": "#texture_wheel", "cullface": "west" }, + "up": { "uv": [ 0, 0, 4, 9 ], "texture": "#texture_wside", "cullface": "up" }, + "down": { "uv": [ 0, 0, 4, 9 ], "texture": "#texture_wside", "cullface": "down" } + } + }, + { + "from": [ 0, 6, -2 ], + "to": [ 1, 7, 3 ], + "faces": { + "north": {"uv": [ 0, 0, 1, 1 ], "texture": "#texture_holder", "cullface": "north" }, + "east": {"uv": [ 0, 0, 5, 1 ], "texture": "#texture_holder", "cullface": "east" }, + "south": {"uv": [ 0, 0, 1, 1 ], "texture": "#texture_holder", "cullface": "south" }, + "west": {"uv": [ 0, 0, 5, 1 ], "texture": "#texture_holder", "cullface": "west" }, + "up": {"uv": [ 0, 0, 1, 5 ], "texture": "#texture_holder", "cullface": "up" }, + "down": {"uv": [ 0, 0, 1, 5 ], "texture": "#texture_holder", "cullface": "down" } + } + }, + { + "from": [ 15, 6, -2 ], + "to": [ 16, 7, 3 ], + "faces": { + "north": {"uv": [ 0, 0, 1, 1 ], "texture": "#texture_holder", "cullface": "north" }, + "east": {"uv": [ 0, 0, 5, 1 ], "texture": "#texture_holder", "cullface": "east" }, + "south": {"uv": [ 0, 0, 1, 1 ], "texture": "#texture_holder", "cullface": "south" }, + "west": {"uv": [ 0, 0, 5, 1 ], "texture": "#texture_holder", "cullface": "west" }, + "up": {"uv": [ 0, 0, 1, 5 ], "texture": "#texture_holder", "cullface": "up" }, + "down": {"uv": [ 0, 0, 1, 5 ], "texture": "#texture_holder", "cullface": "down" } + } + }, + { + "from": [ 4, 6, -2 ], + "to": [ 12, 7, -1 ], + "faces": { + "north": {"uv": [ 0, 0, 8, 1 ], "texture": "#texture_holder", "cullface": "north" }, + "east": {"uv": [ 0, 0, 1, 1 ], "texture": "#texture_holder", "cullface": "east" }, + "south": {"uv": [ 0, 0, 8, 1 ], "texture": "#texture_holder", "cullface": "south" }, + "west": {"uv": [ 0, 0, 1, 1 ], "texture": "#texture_holder", "cullface": "west" }, + "up": {"uv": [ 0, 0, 8, 1 ], "texture": "#texture_holder", "cullface": "up" }, + "down": {"uv": [ 0, 0, 8, 1 ], "texture": "#texture_holder", "cullface": "down" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone.json new file mode 100644 index 00000000..5ffcdf87 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/crimson_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_slab.json new file mode 100644 index 00000000..c1b0df64 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/crimson_cobblestone", + "top": "emeraldcraft:block/crimson_cobblestone", + "side": "emeraldcraft:block/crimson_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_slab_top.json new file mode 100644 index 00000000..cf347697 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/crimson_cobblestone", + "top": "emeraldcraft:block/crimson_cobblestone", + "side": "emeraldcraft:block/crimson_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_stairs.json new file mode 100644 index 00000000..ef965820 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/crimson_cobblestone", + "top": "emeraldcraft:block/crimson_cobblestone", + "side": "emeraldcraft:block/crimson_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_stairs_inner.json new file mode 100644 index 00000000..2bfa63a4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/crimson_cobblestone", + "top": "emeraldcraft:block/crimson_cobblestone", + "side": "emeraldcraft:block/crimson_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_stairs_outer.json new file mode 100644 index 00000000..7d096f8a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/crimson_cobblestone", + "top": "emeraldcraft:block/crimson_cobblestone", + "side": "emeraldcraft:block/crimson_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_inventory.json new file mode 100644 index 00000000..f8dd2dc6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "emeraldcraft:block/crimson_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_post.json new file mode 100644 index 00000000..ebb6f00d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "emeraldcraft:block/crimson_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_side.json new file mode 100644 index 00000000..a7a8f54f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "emeraldcraft:block/crimson_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_side_tall.json new file mode 100644 index 00000000..436138a7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "emeraldcraft:block/crimson_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_stone.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone.json new file mode 100644 index 00000000..a5d88a30 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/crimson_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_mirrored.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_mirrored.json new file mode 100644 index 00000000..0f981e36 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_mirrored.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_mirrored_all", + "textures": { + "all": "emeraldcraft:block/crimson_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_slab.json new file mode 100644 index 00000000..641740a2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/crimson_stone", + "top": "emeraldcraft:block/crimson_stone", + "side": "emeraldcraft:block/crimson_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_slab_top.json new file mode 100644 index 00000000..76e8e31b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/crimson_stone", + "top": "emeraldcraft:block/crimson_stone", + "side": "emeraldcraft:block/crimson_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_stairs.json new file mode 100644 index 00000000..426307ea --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/crimson_stone", + "top": "emeraldcraft:block/crimson_stone", + "side": "emeraldcraft:block/crimson_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_stairs_inner.json new file mode 100644 index 00000000..e20c5069 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/crimson_stone", + "top": "emeraldcraft:block/crimson_stone", + "side": "emeraldcraft:block/crimson_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_stairs_outer.json new file mode 100644 index 00000000..dc4285e8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/crimson_stone", + "top": "emeraldcraft:block/crimson_stone", + "side": "emeraldcraft:block/crimson_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_inventory.json new file mode 100644 index 00000000..73bf0bf7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "emeraldcraft:block/crimson_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_post.json new file mode 100644 index 00000000..c0cca471 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "emeraldcraft:block/crimson_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_side.json new file mode 100644 index 00000000..9686c28e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "emeraldcraft:block/crimson_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_side_tall.json new file mode 100644 index 00000000..980e0898 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "emeraldcraft:block/crimson_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crystalball_table.json b/src/main/resources/assets/emeraldcraft/models/block/crystalball_table.json new file mode 100644 index 00000000..f4597938 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crystalball_table.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "emeraldcraft:block/crystalball_top", + "texture_ctop": "emeraldcraft:block/crystalball_top", + "texture_cside": "emeraldcraft:block/crystalball_side", + "texture_cbottom": "emeraldcraft:block/crystalball_bottom", + "texture_wside": "emeraldcraft:block/crystalball_table_side", + "texture_wbottom": "emeraldcraft:block/crystalball_table_bottom" + }, + "elements": [ + { + "from": [ 2, 2, 2 ], + "to": [ 14, 14, 14 ], + "faces": { + "down": { "uv": [ 2, 2, 14, 14 ], "texture": "#texture_cbottom" }, + "up": { "uv": [ 2, 2, 14, 14 ], "texture": "#texture_ctop" }, + "north": { "uv": [ 2, 2, 14, 14 ], "texture": "#texture_cside" }, + "south": { "uv": [ 2, 2, 14, 14 ], "texture": "#texture_cside" }, + "west": { "uv": [ 2, 2, 14, 14 ], "texture": "#texture_cside" }, + "east": { "uv": [ 2, 2, 14, 14 ], "texture": "#texture_cside" } + } + }, + { + "from": [ 2, 0, 2 ], + "to": [ 14, 2, 14 ], + "faces": { + "down": { "uv": [ 2, 2, 14, 14 ], "texture": "#texture_wbottom", "cullface": "down" }, + "up": { "uv": [ 2, 2, 14, 14 ], "texture": "#texture_wbottom", "cullface": "up" }, + "north": { "uv": [ 2, 14, 14, 16 ], "texture": "#texture_wside", "cullface": "north" }, + "south": { "uv": [ 2, 14, 14, 16 ], "texture": "#texture_wside", "cullface": "south" }, + "west": { "uv": [ 2, 14, 14, 16 ], "texture": "#texture_wside", "cullface": "west" }, + "east": { "uv": [ 2, 14, 14, 16 ], "texture": "#texture_wside", "cullface": "east" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_azure_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/cut_azure_sandstone.json new file mode 100644 index 00000000..4badbf3c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_azure_sandstone.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/cut_azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_azure_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/cut_azure_sandstone_slab.json new file mode 100644 index 00000000..40e7524e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_azure_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/azure_sandstone_top", + "top": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/cut_azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_azure_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/cut_azure_sandstone_slab_top.json new file mode 100644 index 00000000..32dbbadb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_azure_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/azure_sandstone_top", + "top": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/cut_azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_emery_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/cut_emery_sandstone.json new file mode 100644 index 00000000..84c66c76 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_emery_sandstone.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/cut_emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_emery_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/cut_emery_sandstone_slab.json new file mode 100644 index 00000000..51565740 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_emery_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/emery_sandstone_top", + "top": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/cut_emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_emery_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/cut_emery_sandstone_slab_top.json new file mode 100644 index 00000000..ea97abbb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_emery_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/emery_sandstone_top", + "top": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/cut_emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_jadeite_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/cut_jadeite_sandstone.json new file mode 100644 index 00000000..5a500157 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_jadeite_sandstone.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/cut_jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_jadeite_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/cut_jadeite_sandstone_slab.json new file mode 100644 index 00000000..69992b60 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_jadeite_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/jadeite_sandstone_top", + "top": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/cut_jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_jadeite_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/cut_jadeite_sandstone_slab_top.json new file mode 100644 index 00000000..82bf57b2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_jadeite_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/jadeite_sandstone_top", + "top": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/cut_jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_quartz_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/cut_quartz_sandstone.json new file mode 100644 index 00000000..197f2648 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_quartz_sandstone.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/cut_quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_quartz_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/cut_quartz_sandstone_slab.json new file mode 100644 index 00000000..34372f2c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_quartz_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/quartz_sandstone_top", + "top": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/cut_quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_quartz_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/cut_quartz_sandstone_slab_top.json new file mode 100644 index 00000000..8e4472df --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_quartz_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/quartz_sandstone_top", + "top": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/cut_quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/diamond_slab.json b/src/main/resources/assets/emeraldcraft/models/block/diamond_slab.json new file mode 100644 index 00000000..6116a2a6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/diamond_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/diamond_block", + "top": "minecraft:block/diamond_block", + "side": "minecraft:block/diamond_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/diamond_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/diamond_slab_top.json new file mode 100644 index 00000000..610ca5e1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/diamond_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/diamond_block", + "top": "minecraft:block/diamond_block", + "side": "minecraft:block/diamond_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/diamond_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/diamond_stairs.json new file mode 100644 index 00000000..7a8f814d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/diamond_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "minecraft:block/diamond_block", + "top": "minecraft:block/diamond_block", + "side": "minecraft:block/diamond_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/diamond_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/diamond_stairs_inner.json new file mode 100644 index 00000000..a48336ea --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/diamond_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "minecraft:block/diamond_block", + "top": "minecraft:block/diamond_block", + "side": "minecraft:block/diamond_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/diamond_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/diamond_stairs_outer.json new file mode 100644 index 00000000..493d9435 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/diamond_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "minecraft:block/diamond_block", + "top": "minecraft:block/diamond_block", + "side": "minecraft:block/diamond_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/diamond_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/diamond_wall_inventory.json new file mode 100644 index 00000000..8cce79c8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/diamond_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "minecraft:block/diamond_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/diamond_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/diamond_wall_post.json new file mode 100644 index 00000000..7607c064 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/diamond_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "minecraft:block/diamond_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/diamond_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/diamond_wall_side.json new file mode 100644 index 00000000..456375df --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/diamond_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "minecraft:block/diamond_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/diamond_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/diamond_wall_side_tall.json new file mode 100644 index 00000000..abd0c498 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/diamond_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "minecraft:block/diamond_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emerald_slab.json b/src/main/resources/assets/emeraldcraft/models/block/emerald_slab.json new file mode 100644 index 00000000..c6e1abf9 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emerald_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/emerald_block", + "top": "minecraft:block/emerald_block", + "side": "minecraft:block/emerald_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emerald_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/emerald_slab_top.json new file mode 100644 index 00000000..3bb3b50d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emerald_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/emerald_block", + "top": "minecraft:block/emerald_block", + "side": "minecraft:block/emerald_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emerald_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/emerald_stairs.json new file mode 100644 index 00000000..100e0839 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emerald_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "minecraft:block/emerald_block", + "top": "minecraft:block/emerald_block", + "side": "minecraft:block/emerald_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emerald_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/emerald_stairs_inner.json new file mode 100644 index 00000000..2ad0b911 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emerald_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "minecraft:block/emerald_block", + "top": "minecraft:block/emerald_block", + "side": "minecraft:block/emerald_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emerald_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/emerald_stairs_outer.json new file mode 100644 index 00000000..7f120acb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emerald_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "minecraft:block/emerald_block", + "top": "minecraft:block/emerald_block", + "side": "minecraft:block/emerald_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emerald_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/emerald_wall_inventory.json new file mode 100644 index 00000000..f1d70089 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emerald_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "minecraft:block/emerald_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emerald_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/emerald_wall_post.json new file mode 100644 index 00000000..c0486164 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emerald_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "minecraft:block/emerald_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emerald_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/emerald_wall_side.json new file mode 100644 index 00000000..ba0bd442 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emerald_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "minecraft:block/emerald_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emerald_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/emerald_wall_side_tall.json new file mode 100644 index 00000000..8c0cfd50 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emerald_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "minecraft:block/emerald_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emery_sand.json b/src/main/resources/assets/emeraldcraft/models/block/emery_sand.json new file mode 100644 index 00000000..73c42332 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emery_sand.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/emery_sand" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone.json new file mode 100644 index 00000000..5418236b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/emery_sandstone_top", + "bottom": "emeraldcraft:block/emery_sandstone_bottom", + "side": "emeraldcraft:block/emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_slab.json new file mode 100644 index 00000000..1821527b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/emery_sandstone_bottom", + "top": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_slab_top.json new file mode 100644 index 00000000..3b7f0188 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/emery_sandstone_bottom", + "top": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_stairs.json new file mode 100644 index 00000000..ad9910a4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/emery_sandstone_bottom", + "top": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_stairs_inner.json new file mode 100644 index 00000000..c778385c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/emery_sandstone_bottom", + "top": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_stairs_outer.json new file mode 100644 index 00000000..3f73a8af --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/emery_sandstone_bottom", + "top": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_inventory.json new file mode 100644 index 00000000..108aafc2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "emeraldcraft:block/emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_post.json new file mode 100644 index 00000000..6c5200aa --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "emeraldcraft:block/emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_side.json new file mode 100644 index 00000000..7cf8b0fb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "emeraldcraft:block/emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_side_tall.json new file mode 100644 index 00000000..6a23b29d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "emeraldcraft:block/emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/glass_kiln.json b/src/main/resources/assets/emeraldcraft/models/block/glass_kiln.json new file mode 100644 index 00000000..395351b4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/glass_kiln.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "top": "emeraldcraft:block/glass_kiln_top", + "front": "emeraldcraft:block/glass_kiln_front", + "side": "emeraldcraft:block/glass_kiln_side" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/glass_kiln_on.json b/src/main/resources/assets/emeraldcraft/models/block/glass_kiln_on.json new file mode 100644 index 00000000..31568c39 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/glass_kiln_on.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "top": "emeraldcraft:block/glass_kiln_top", + "front": "emeraldcraft:block/glass_kiln_front_on", + "side": "emeraldcraft:block/glass_kiln_side" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/gold_slab.json b/src/main/resources/assets/emeraldcraft/models/block/gold_slab.json new file mode 100644 index 00000000..f6f2e28f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/gold_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/gold_block", + "top": "minecraft:block/gold_block", + "side": "minecraft:block/gold_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/gold_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/gold_slab_top.json new file mode 100644 index 00000000..d4e00b2c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/gold_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/gold_block", + "top": "minecraft:block/gold_block", + "side": "minecraft:block/gold_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/gold_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/gold_stairs.json new file mode 100644 index 00000000..50644b54 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/gold_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "minecraft:block/gold_block", + "top": "minecraft:block/gold_block", + "side": "minecraft:block/gold_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/gold_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/gold_stairs_inner.json new file mode 100644 index 00000000..92d1d964 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/gold_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "minecraft:block/gold_block", + "top": "minecraft:block/gold_block", + "side": "minecraft:block/gold_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/gold_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/gold_stairs_outer.json new file mode 100644 index 00000000..b4eca4ed --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/gold_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "minecraft:block/gold_block", + "top": "minecraft:block/gold_block", + "side": "minecraft:block/gold_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/gold_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/gold_wall_inventory.json new file mode 100644 index 00000000..2824da33 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/gold_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "minecraft:block/gold_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/gold_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/gold_wall_post.json new file mode 100644 index 00000000..93f91735 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/gold_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "minecraft:block/gold_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/gold_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/gold_wall_side.json new file mode 100644 index 00000000..7a508ea4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/gold_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "minecraft:block/gold_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/gold_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/gold_wall_side_tall.json new file mode 100644 index 00000000..a3531a15 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/gold_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "minecraft:block/gold_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ice_maker.json b/src/main/resources/assets/emeraldcraft/models/block/ice_maker.json new file mode 100644 index 00000000..3ddfb239 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ice_maker.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/ice_maker_top", + "bottom": "emeraldcraft:block/ice_maker_top", + "side": "emeraldcraft:block/ice_maker_side" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/iron_slab.json b/src/main/resources/assets/emeraldcraft/models/block/iron_slab.json new file mode 100644 index 00000000..06dec182 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/iron_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/iron_block", + "top": "minecraft:block/iron_block", + "side": "minecraft:block/iron_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/iron_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/iron_slab_top.json new file mode 100644 index 00000000..22feb3ff --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/iron_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/iron_block", + "top": "minecraft:block/iron_block", + "side": "minecraft:block/iron_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/iron_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/iron_stairs.json new file mode 100644 index 00000000..fa9d92bf --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/iron_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "minecraft:block/iron_block", + "top": "minecraft:block/iron_block", + "side": "minecraft:block/iron_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/iron_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/iron_stairs_inner.json new file mode 100644 index 00000000..5b048a23 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/iron_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "minecraft:block/iron_block", + "top": "minecraft:block/iron_block", + "side": "minecraft:block/iron_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/iron_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/iron_stairs_outer.json new file mode 100644 index 00000000..4a0f993a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/iron_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "minecraft:block/iron_block", + "top": "minecraft:block/iron_block", + "side": "minecraft:block/iron_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/iron_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/iron_wall_inventory.json new file mode 100644 index 00000000..ddcf1837 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/iron_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "minecraft:block/iron_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/iron_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/iron_wall_post.json new file mode 100644 index 00000000..8b2e07ac --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/iron_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "minecraft:block/iron_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/iron_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/iron_wall_side.json new file mode 100644 index 00000000..b47f9ce5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/iron_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "minecraft:block/iron_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/iron_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/iron_wall_side_tall.json new file mode 100644 index 00000000..59e6d0ef --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/iron_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "minecraft:block/iron_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/jadeite_sand.json b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sand.json new file mode 100644 index 00000000..08853f59 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sand.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/jadeite_sand" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone.json new file mode 100644 index 00000000..abf780e0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/jadeite_sandstone_top", + "bottom": "emeraldcraft:block/jadeite_sandstone_bottom", + "side": "emeraldcraft:block/jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_slab.json new file mode 100644 index 00000000..e7c6d7c6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/jadeite_sandstone_bottom", + "top": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_slab_top.json new file mode 100644 index 00000000..485ac116 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/jadeite_sandstone_bottom", + "top": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_stairs.json new file mode 100644 index 00000000..fd888177 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/jadeite_sandstone_bottom", + "top": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_stairs_inner.json new file mode 100644 index 00000000..4f494abd --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/jadeite_sandstone_bottom", + "top": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_stairs_outer.json new file mode 100644 index 00000000..3a57b969 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/jadeite_sandstone_bottom", + "top": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_inventory.json new file mode 100644 index 00000000..6bb5854c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "emeraldcraft:block/jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_post.json new file mode 100644 index 00000000..076dfa69 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "emeraldcraft:block/jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_side.json new file mode 100644 index 00000000..6039823c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "emeraldcraft:block/jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_side_tall.json new file mode 100644 index 00000000..a4b1de3c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "emeraldcraft:block/jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/lapis_slab.json b/src/main/resources/assets/emeraldcraft/models/block/lapis_slab.json new file mode 100644 index 00000000..29c51a9e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lapis_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/lapis_block", + "top": "minecraft:block/lapis_block", + "side": "minecraft:block/lapis_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/lapis_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/lapis_slab_top.json new file mode 100644 index 00000000..73e8774b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lapis_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/lapis_block", + "top": "minecraft:block/lapis_block", + "side": "minecraft:block/lapis_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/lapis_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/lapis_stairs.json new file mode 100644 index 00000000..8291a13b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lapis_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "minecraft:block/lapis_block", + "top": "minecraft:block/lapis_block", + "side": "minecraft:block/lapis_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/lapis_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/lapis_stairs_inner.json new file mode 100644 index 00000000..b4236e27 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lapis_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "minecraft:block/lapis_block", + "top": "minecraft:block/lapis_block", + "side": "minecraft:block/lapis_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/lapis_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/lapis_stairs_outer.json new file mode 100644 index 00000000..d4c3cb06 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lapis_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "minecraft:block/lapis_block", + "top": "minecraft:block/lapis_block", + "side": "minecraft:block/lapis_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/lapis_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/lapis_wall_inventory.json new file mode 100644 index 00000000..c7f11b15 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lapis_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "minecraft:block/lapis_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/lapis_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/lapis_wall_post.json new file mode 100644 index 00000000..af99918e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lapis_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "minecraft:block/lapis_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/lapis_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/lapis_wall_side.json new file mode 100644 index 00000000..5f296a48 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lapis_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "minecraft:block/lapis_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/lapis_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/lapis_wall_side_tall.json new file mode 100644 index 00000000..bda6d57f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lapis_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "minecraft:block/lapis_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/melter.json b/src/main/resources/assets/emeraldcraft/models/block/melter.json new file mode 100644 index 00000000..378b891d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/melter.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/melter_top", + "bottom": "emeraldcraft:block/melter_top", + "side": "emeraldcraft:block/melter_side" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/mineral_table.json b/src/main/resources/assets/emeraldcraft/models/block/mineral_table.json new file mode 100644 index 00000000..fb1a9ad1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/mineral_table.json @@ -0,0 +1,12 @@ +{ + "parent": "minecraft:block/cube", + "textures": { + "particle": "emeraldcraft:block/mineral_table_front", + "north": "emeraldcraft:block/mineral_table_front", + "south": "emeraldcraft:block/mineral_table_side", + "east": "emeraldcraft:block/mineral_table_side", + "west": "emeraldcraft:block/mineral_table_side", + "up": "emeraldcraft:block/mineral_table_top", + "down": "emeraldcraft:block/mineral_table_bottom" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/netherite_slab.json b/src/main/resources/assets/emeraldcraft/models/block/netherite_slab.json new file mode 100644 index 00000000..2d91233b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/netherite_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/netherite_block", + "top": "minecraft:block/netherite_block", + "side": "minecraft:block/netherite_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/netherite_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/netherite_slab_top.json new file mode 100644 index 00000000..f2e4228e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/netherite_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/netherite_block", + "top": "minecraft:block/netherite_block", + "side": "minecraft:block/netherite_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/netherite_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/netherite_stairs.json new file mode 100644 index 00000000..0c13abd4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/netherite_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "minecraft:block/netherite_block", + "top": "minecraft:block/netherite_block", + "side": "minecraft:block/netherite_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/netherite_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/netherite_stairs_inner.json new file mode 100644 index 00000000..f89ea7c4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/netherite_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "minecraft:block/netherite_block", + "top": "minecraft:block/netherite_block", + "side": "minecraft:block/netherite_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/netherite_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/netherite_stairs_outer.json new file mode 100644 index 00000000..1bc1bdbb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/netherite_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "minecraft:block/netherite_block", + "top": "minecraft:block/netherite_block", + "side": "minecraft:block/netherite_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/netherite_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/netherite_wall_inventory.json new file mode 100644 index 00000000..ebd6a579 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/netherite_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "minecraft:block/netherite_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/netherite_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/netherite_wall_post.json new file mode 100644 index 00000000..1c17bb4d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/netherite_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "minecraft:block/netherite_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/netherite_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/netherite_wall_side.json new file mode 100644 index 00000000..06f10f33 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/netherite_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "minecraft:block/netherite_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/netherite_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/netherite_wall_side_tall.json new file mode 100644 index 00000000..a3c171eb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/netherite_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "minecraft:block/netherite_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/quartz_sand.json b/src/main/resources/assets/emeraldcraft/models/block/quartz_sand.json new file mode 100644 index 00000000..2cc73a85 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/quartz_sand.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/quartz_sand" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone.json new file mode 100644 index 00000000..135bea25 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/quartz_sandstone_top", + "bottom": "emeraldcraft:block/quartz_sandstone_bottom", + "side": "emeraldcraft:block/quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_slab.json new file mode 100644 index 00000000..cb3a24be --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/quartz_sandstone_bottom", + "top": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_slab_top.json new file mode 100644 index 00000000..8666754b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/quartz_sandstone_bottom", + "top": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_stairs.json new file mode 100644 index 00000000..180ea2f9 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/quartz_sandstone_bottom", + "top": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_stairs_inner.json new file mode 100644 index 00000000..8c8d83ca --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/quartz_sandstone_bottom", + "top": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_stairs_outer.json new file mode 100644 index 00000000..8fb63b75 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/quartz_sandstone_bottom", + "top": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_inventory.json new file mode 100644 index 00000000..aa87bf0e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "emeraldcraft:block/quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_post.json new file mode 100644 index 00000000..fa240fea --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "emeraldcraft:block/quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_side.json new file mode 100644 index 00000000..b6feb2a3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "emeraldcraft:block/quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_side_tall.json new file mode 100644 index 00000000..1d5ea9f7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "emeraldcraft:block/quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone.json new file mode 100644 index 00000000..b29f6f93 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/azure_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_slab.json new file mode 100644 index 00000000..d2a6c0b3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/azure_sandstone_top", + "top": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/azure_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_slab_top.json new file mode 100644 index 00000000..d1a34a7e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/azure_sandstone_top", + "top": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/azure_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_stairs.json new file mode 100644 index 00000000..11dedee7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/azure_sandstone_top", + "top": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/azure_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_stairs_inner.json new file mode 100644 index 00000000..93d9ceca --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/azure_sandstone_top", + "top": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/azure_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_stairs_outer.json new file mode 100644 index 00000000..f3c72e03 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/azure_sandstone_top", + "top": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/azure_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone.json new file mode 100644 index 00000000..8b9d1bb0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/emery_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_slab.json new file mode 100644 index 00000000..908f81e1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/emery_sandstone_top", + "top": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/emery_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_slab_top.json new file mode 100644 index 00000000..70c97ec8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/emery_sandstone_top", + "top": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/emery_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_stairs.json new file mode 100644 index 00000000..05089226 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/emery_sandstone_top", + "top": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/emery_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_stairs_inner.json new file mode 100644 index 00000000..4447bbf0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/emery_sandstone_top", + "top": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/emery_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_stairs_outer.json new file mode 100644 index 00000000..0ef74e46 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/emery_sandstone_top", + "top": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/emery_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone.json new file mode 100644 index 00000000..adf857f5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/jadeite_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_slab.json new file mode 100644 index 00000000..c126c104 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/jadeite_sandstone_top", + "top": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/jadeite_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_slab_top.json new file mode 100644 index 00000000..cb40ec0b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/jadeite_sandstone_top", + "top": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/jadeite_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_stairs.json new file mode 100644 index 00000000..835c52c7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/jadeite_sandstone_top", + "top": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/jadeite_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_stairs_inner.json new file mode 100644 index 00000000..d6d838fe --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/jadeite_sandstone_top", + "top": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/jadeite_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_stairs_outer.json new file mode 100644 index 00000000..8483f0e9 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/jadeite_sandstone_top", + "top": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/jadeite_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone.json new file mode 100644 index 00000000..e68649e2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/quartz_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_slab.json new file mode 100644 index 00000000..fa744c70 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/quartz_sandstone_top", + "top": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/quartz_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_slab_top.json new file mode 100644 index 00000000..fdd5a8bc --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/quartz_sandstone_top", + "top": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/quartz_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_stairs.json new file mode 100644 index 00000000..8dc938b4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/quartz_sandstone_top", + "top": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/quartz_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_stairs_inner.json new file mode 100644 index 00000000..5f91af2d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/quartz_sandstone_top", + "top": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/quartz_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_stairs_outer.json new file mode 100644 index 00000000..fc4e19ad --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/quartz_sandstone_top", + "top": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/quartz_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/squeezer_0.json b/src/main/resources/assets/emeraldcraft/models/block/squeezer_0.json new file mode 100644 index 00000000..91d48ba0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/squeezer_0.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/squeezer_top", + "bottom": "emeraldcraft:block/squeezer_bottom", + "side": "emeraldcraft:block/squeezer_side0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/squeezer_1.json b/src/main/resources/assets/emeraldcraft/models/block/squeezer_1.json new file mode 100644 index 00000000..3c0719a3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/squeezer_1.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/squeezer_top", + "bottom": "emeraldcraft:block/squeezer_bottom", + "side": "emeraldcraft:block/squeezer_side1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/squeezer_2.json b/src/main/resources/assets/emeraldcraft/models/block/squeezer_2.json new file mode 100644 index 00000000..ba49ec44 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/squeezer_2.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/squeezer_top", + "bottom": "emeraldcraft:block/squeezer_bottom", + "side": "emeraldcraft:block/squeezer_side2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/squeezer_3.json b/src/main/resources/assets/emeraldcraft/models/block/squeezer_3.json new file mode 100644 index 00000000..f30b1888 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/squeezer_3.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/squeezer_top", + "bottom": "emeraldcraft:block/squeezer_bottom", + "side": "emeraldcraft:block/squeezer_side3" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/squeezer_4.json b/src/main/resources/assets/emeraldcraft/models/block/squeezer_4.json new file mode 100644 index 00000000..13f04299 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/squeezer_4.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/squeezer_top", + "bottom": "emeraldcraft:block/squeezer_bottom", + "side": "emeraldcraft:block/squeezer_side4" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone.json b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone.json new file mode 100644 index 00000000..729386c1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/warped_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_slab.json new file mode 100644 index 00000000..b4bb7037 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/warped_cobblestone", + "top": "emeraldcraft:block/warped_cobblestone", + "side": "emeraldcraft:block/warped_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_slab_top.json new file mode 100644 index 00000000..687b2882 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/warped_cobblestone", + "top": "emeraldcraft:block/warped_cobblestone", + "side": "emeraldcraft:block/warped_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_stairs.json new file mode 100644 index 00000000..00c615b7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/warped_cobblestone", + "top": "emeraldcraft:block/warped_cobblestone", + "side": "emeraldcraft:block/warped_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_stairs_inner.json new file mode 100644 index 00000000..fb57a596 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/warped_cobblestone", + "top": "emeraldcraft:block/warped_cobblestone", + "side": "emeraldcraft:block/warped_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_stairs_outer.json new file mode 100644 index 00000000..a6ebe5ea --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/warped_cobblestone", + "top": "emeraldcraft:block/warped_cobblestone", + "side": "emeraldcraft:block/warped_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_inventory.json new file mode 100644 index 00000000..105f715d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "emeraldcraft:block/warped_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_post.json new file mode 100644 index 00000000..748bf711 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "emeraldcraft:block/warped_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_side.json new file mode 100644 index 00000000..ae709a23 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "emeraldcraft:block/warped_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_side_tall.json new file mode 100644 index 00000000..74e0dbf8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "emeraldcraft:block/warped_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_stone.json b/src/main/resources/assets/emeraldcraft/models/block/warped_stone.json new file mode 100644 index 00000000..1f5767d6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_stone.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/warped_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_stone_mirrored.json b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_mirrored.json new file mode 100644 index 00000000..fbf20a40 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_mirrored.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_mirrored_all", + "textures": { + "all": "emeraldcraft:block/warped_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_stone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_slab.json new file mode 100644 index 00000000..d9d75940 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/warped_stone", + "top": "emeraldcraft:block/warped_stone", + "side": "emeraldcraft:block/warped_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_stone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_slab_top.json new file mode 100644 index 00000000..1c84e03d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/warped_stone", + "top": "emeraldcraft:block/warped_stone", + "side": "emeraldcraft:block/warped_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_stone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_stairs.json new file mode 100644 index 00000000..9e2d39ca --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/warped_stone", + "top": "emeraldcraft:block/warped_stone", + "side": "emeraldcraft:block/warped_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_stone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_stairs_inner.json new file mode 100644 index 00000000..8d12c20d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/warped_stone", + "top": "emeraldcraft:block/warped_stone", + "side": "emeraldcraft:block/warped_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_stone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_stairs_outer.json new file mode 100644 index 00000000..4c7acd6f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/warped_stone", + "top": "emeraldcraft:block/warped_stone", + "side": "emeraldcraft:block/warped_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_inventory.json new file mode 100644 index 00000000..a9f631be --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "emeraldcraft:block/warped_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_post.json new file mode 100644 index 00000000..de14712e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "emeraldcraft:block/warped_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_side.json new file mode 100644 index 00000000..303f07e1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "emeraldcraft:block/warped_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_side_tall.json new file mode 100644 index 00000000..5a5b2d8c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "emeraldcraft:block/warped_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_wart_stage0.json b/src/main/resources/assets/emeraldcraft/models/block/warped_wart_stage0.json new file mode 100644 index 00000000..821af38c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_wart_stage0.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/crop", + "textures": { + "crop": "emeraldcraft:block/warped_wart_stage0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_wart_stage1.json b/src/main/resources/assets/emeraldcraft/models/block/warped_wart_stage1.json new file mode 100644 index 00000000..38d9c44e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_wart_stage1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/crop", + "textures": { + "crop": "emeraldcraft:block/warped_wart_stage1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_wart_stage2.json b/src/main/resources/assets/emeraldcraft/models/block/warped_wart_stage2.json new file mode 100644 index 00000000..e7b1a033 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_wart_stage2.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/crop", + "textures": { + "crop": "emeraldcraft:block/warped_wart_stage2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/agate_apple.json b/src/main/resources/assets/emeraldcraft/models/item/agate_apple.json new file mode 100644 index 00000000..d2acab8e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/agate_apple.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/agate_apple" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/azure_sand.json b/src/main/resources/assets/emeraldcraft/models/item/azure_sand.json new file mode 100644 index 00000000..c49ea2b3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/azure_sand.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/azure_sand" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/azure_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/azure_sandstone.json new file mode 100644 index 00000000..efaaeba8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/azure_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/azure_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/azure_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/azure_sandstone_slab.json new file mode 100644 index 00000000..a11b8cb7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/azure_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/azure_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/azure_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/azure_sandstone_stairs.json new file mode 100644 index 00000000..505ff0a7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/azure_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/azure_sandstone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/azure_sandstone_wall.json b/src/main/resources/assets/emeraldcraft/models/item/azure_sandstone_wall.json new file mode 100644 index 00000000..208e279f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/azure_sandstone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/azure_sandstone_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/bee_banner_pattern.json b/src/main/resources/assets/emeraldcraft/models/item/bee_banner_pattern.json new file mode 100644 index 00000000..0fd0d6f8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/bee_banner_pattern.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/banner_pattern" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/blue_nether_brick_slab.json b/src/main/resources/assets/emeraldcraft/models/item/blue_nether_brick_slab.json new file mode 100644 index 00000000..01c84e36 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/blue_nether_brick_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/blue_nether_brick_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/blue_nether_brick_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/blue_nether_brick_stairs.json new file mode 100644 index 00000000..508a482e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/blue_nether_brick_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/blue_nether_brick_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/blue_nether_brick_wall.json b/src/main/resources/assets/emeraldcraft/models/item/blue_nether_brick_wall.json new file mode 100644 index 00000000..5bafa7b1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/blue_nether_brick_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/blue_nether_brick_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/blue_nether_bricks.json b/src/main/resources/assets/emeraldcraft/models/item/blue_nether_bricks.json new file mode 100644 index 00000000..2faf3277 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/blue_nether_bricks.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/blue_nether_bricks" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/bottle_banner_pattern.json b/src/main/resources/assets/emeraldcraft/models/item/bottle_banner_pattern.json new file mode 100644 index 00000000..0fd0d6f8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/bottle_banner_pattern.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/banner_pattern" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/carpentry_table.json b/src/main/resources/assets/emeraldcraft/models/item/carpentry_table.json new file mode 100644 index 00000000..80164d37 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/carpentry_table.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/carpentry_table" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/continuous_miner.json b/src/main/resources/assets/emeraldcraft/models/item/continuous_miner.json new file mode 100644 index 00000000..f3e6a8da --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/continuous_miner.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/continuous_miner" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/copper_concentrate.json b/src/main/resources/assets/emeraldcraft/models/item/copper_concentrate.json new file mode 100644 index 00000000..125fc901 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/copper_concentrate.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/copper_concentrate" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone.json b/src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone.json new file mode 100644 index 00000000..989797fe --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/crimson_cobblestone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone_slab.json new file mode 100644 index 00000000..9c575b22 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/crimson_cobblestone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone_stairs.json new file mode 100644 index 00000000..d0f81d30 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/crimson_cobblestone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone_wall.json b/src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone_wall.json new file mode 100644 index 00000000..0321238b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/crimson_cobblestone_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/crimson_stone.json b/src/main/resources/assets/emeraldcraft/models/item/crimson_stone.json new file mode 100644 index 00000000..00953dfd --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/crimson_stone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/crimson_stone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/crimson_stone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/crimson_stone_slab.json new file mode 100644 index 00000000..2d085186 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/crimson_stone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/crimson_stone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/crimson_stone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/crimson_stone_stairs.json new file mode 100644 index 00000000..c805500e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/crimson_stone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/crimson_stone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/crimson_stone_wall.json b/src/main/resources/assets/emeraldcraft/models/item/crimson_stone_wall.json new file mode 100644 index 00000000..794fc31f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/crimson_stone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/crimson_stone_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/crystalball_table.json b/src/main/resources/assets/emeraldcraft/models/item/crystalball_table.json new file mode 100644 index 00000000..c1b5e7ed --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/crystalball_table.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/crystalball_table" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/cut_azure_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/cut_azure_sandstone.json new file mode 100644 index 00000000..7f4cab6f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cut_azure_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/cut_azure_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/cut_azure_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/cut_azure_sandstone_slab.json new file mode 100644 index 00000000..d9e837a0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cut_azure_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/cut_azure_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/cut_emery_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/cut_emery_sandstone.json new file mode 100644 index 00000000..b6fd3cd6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cut_emery_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/cut_emery_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/cut_emery_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/cut_emery_sandstone_slab.json new file mode 100644 index 00000000..4f9d7ba8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cut_emery_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/cut_emery_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/cut_jadeite_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/cut_jadeite_sandstone.json new file mode 100644 index 00000000..abea42c7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cut_jadeite_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/cut_jadeite_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/cut_jadeite_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/cut_jadeite_sandstone_slab.json new file mode 100644 index 00000000..86eeab6a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cut_jadeite_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/cut_jadeite_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/cut_quartz_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/cut_quartz_sandstone.json new file mode 100644 index 00000000..ea3e743f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cut_quartz_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/cut_quartz_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/cut_quartz_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/cut_quartz_sandstone_slab.json new file mode 100644 index 00000000..d652ac60 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cut_quartz_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/cut_quartz_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/diamond_nugget.json b/src/main/resources/assets/emeraldcraft/models/item/diamond_nugget.json new file mode 100644 index 00000000..698c79a2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/diamond_nugget.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/diamond_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/diamond_slab.json b/src/main/resources/assets/emeraldcraft/models/item/diamond_slab.json new file mode 100644 index 00000000..11393158 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/diamond_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/diamond_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/diamond_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/diamond_stairs.json new file mode 100644 index 00000000..a888a396 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/diamond_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/diamond_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/diamond_wall.json b/src/main/resources/assets/emeraldcraft/models/item/diamond_wall.json new file mode 100644 index 00000000..3a6d9db2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/diamond_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/diamond_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emerald_chest.json b/src/main/resources/assets/emeraldcraft/models/item/emerald_chest.json new file mode 100644 index 00000000..bd4a5da7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emerald_chest.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/emerald_chest" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emerald_feet.json b/src/main/resources/assets/emeraldcraft/models/item/emerald_feet.json new file mode 100644 index 00000000..d668638c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emerald_feet.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/emerald_feet" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emerald_head.json b/src/main/resources/assets/emeraldcraft/models/item/emerald_head.json new file mode 100644 index 00000000..424a8026 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emerald_head.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/emerald_head" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emerald_legs.json b/src/main/resources/assets/emeraldcraft/models/item/emerald_legs.json new file mode 100644 index 00000000..efe802d1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emerald_legs.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/emerald_legs" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emerald_nugget.json b/src/main/resources/assets/emeraldcraft/models/item/emerald_nugget.json new file mode 100644 index 00000000..dbd1ff4e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emerald_nugget.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/emerald_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emerald_slab.json b/src/main/resources/assets/emeraldcraft/models/item/emerald_slab.json new file mode 100644 index 00000000..fd1546d8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emerald_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/emerald_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emerald_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/emerald_stairs.json new file mode 100644 index 00000000..57f1a4bd --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emerald_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/emerald_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emerald_wall.json b/src/main/resources/assets/emeraldcraft/models/item/emerald_wall.json new file mode 100644 index 00000000..f92d19ac --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emerald_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/emerald_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emery_sand.json b/src/main/resources/assets/emeraldcraft/models/item/emery_sand.json new file mode 100644 index 00000000..b8d2e666 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emery_sand.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/emery_sand" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emery_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/emery_sandstone.json new file mode 100644 index 00000000..5fd5158d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emery_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/emery_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emery_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/emery_sandstone_slab.json new file mode 100644 index 00000000..2a1d3880 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emery_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/emery_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emery_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/emery_sandstone_stairs.json new file mode 100644 index 00000000..d2f099b7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emery_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/emery_sandstone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emery_sandstone_wall.json b/src/main/resources/assets/emeraldcraft/models/item/emery_sandstone_wall.json new file mode 100644 index 00000000..256ce921 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emery_sandstone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/emery_sandstone_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/glass_kiln.json b/src/main/resources/assets/emeraldcraft/models/item/glass_kiln.json new file mode 100644 index 00000000..49af4e66 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/glass_kiln.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/glass_kiln" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/gold_concentrate.json b/src/main/resources/assets/emeraldcraft/models/item/gold_concentrate.json new file mode 100644 index 00000000..f56a11f1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/gold_concentrate.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/gold_concentrate" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/gold_slab.json b/src/main/resources/assets/emeraldcraft/models/item/gold_slab.json new file mode 100644 index 00000000..445d16e3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/gold_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/gold_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/gold_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/gold_stairs.json new file mode 100644 index 00000000..01573bf6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/gold_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/gold_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/gold_wall.json b/src/main/resources/assets/emeraldcraft/models/item/gold_wall.json new file mode 100644 index 00000000..4a467e31 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/gold_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/gold_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ice_maker.json b/src/main/resources/assets/emeraldcraft/models/item/ice_maker.json new file mode 100644 index 00000000..fbce3de9 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ice_maker.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/ice_maker" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/iron_concentrate.json b/src/main/resources/assets/emeraldcraft/models/item/iron_concentrate.json new file mode 100644 index 00000000..5d5a5560 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/iron_concentrate.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/iron_concentrate" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/iron_slab.json b/src/main/resources/assets/emeraldcraft/models/item/iron_slab.json new file mode 100644 index 00000000..b002581c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/iron_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/iron_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/iron_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/iron_stairs.json new file mode 100644 index 00000000..fb8b0716 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/iron_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/iron_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/iron_wall.json b/src/main/resources/assets/emeraldcraft/models/item/iron_wall.json new file mode 100644 index 00000000..92a2a8b7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/iron_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/iron_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/jade_apple.json b/src/main/resources/assets/emeraldcraft/models/item/jade_apple.json new file mode 100644 index 00000000..26fd5748 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/jade_apple.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/jade_apple" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/jadeite_sand.json b/src/main/resources/assets/emeraldcraft/models/item/jadeite_sand.json new file mode 100644 index 00000000..960a91e5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/jadeite_sand.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/jadeite_sand" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone.json new file mode 100644 index 00000000..cd4673f8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/jadeite_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone_slab.json new file mode 100644 index 00000000..8bd83759 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/jadeite_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone_stairs.json new file mode 100644 index 00000000..51e2899c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/jadeite_sandstone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone_wall.json b/src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone_wall.json new file mode 100644 index 00000000..481b1695 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/jadeite_sandstone_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/lapis_chest.json b/src/main/resources/assets/emeraldcraft/models/item/lapis_chest.json new file mode 100644 index 00000000..6087b04e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/lapis_chest.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/lapis_chest" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/lapis_feet.json b/src/main/resources/assets/emeraldcraft/models/item/lapis_feet.json new file mode 100644 index 00000000..430e9596 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/lapis_feet.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/lapis_feet" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/lapis_head.json b/src/main/resources/assets/emeraldcraft/models/item/lapis_head.json new file mode 100644 index 00000000..f3f882c8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/lapis_head.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/lapis_head" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/lapis_legs.json b/src/main/resources/assets/emeraldcraft/models/item/lapis_legs.json new file mode 100644 index 00000000..07f47234 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/lapis_legs.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/lapis_legs" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/lapis_nugget.json b/src/main/resources/assets/emeraldcraft/models/item/lapis_nugget.json new file mode 100644 index 00000000..fb9ba160 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/lapis_nugget.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/lapis_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/lapis_slab.json b/src/main/resources/assets/emeraldcraft/models/item/lapis_slab.json new file mode 100644 index 00000000..6194bd67 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/lapis_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/lapis_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/lapis_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/lapis_stairs.json new file mode 100644 index 00000000..8a06f639 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/lapis_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/lapis_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/lapis_wall.json b/src/main/resources/assets/emeraldcraft/models/item/lapis_wall.json new file mode 100644 index 00000000..14371ac3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/lapis_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/lapis_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/melted_copper_bucket.json b/src/main/resources/assets/emeraldcraft/models/item/melted_copper_bucket.json new file mode 100644 index 00000000..c0dbb310 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/melted_copper_bucket.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/melted_copper_bucket" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/melted_emerald_bucket.json b/src/main/resources/assets/emeraldcraft/models/item/melted_emerald_bucket.json new file mode 100644 index 00000000..3f598e45 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/melted_emerald_bucket.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/melted_emerald_bucket" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/melted_gold_bucket.json b/src/main/resources/assets/emeraldcraft/models/item/melted_gold_bucket.json new file mode 100644 index 00000000..7687252d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/melted_gold_bucket.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/melted_gold_bucket" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/melted_iron_bucket.json b/src/main/resources/assets/emeraldcraft/models/item/melted_iron_bucket.json new file mode 100644 index 00000000..4c95176a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/melted_iron_bucket.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/melted_iron_bucket" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/melter.json b/src/main/resources/assets/emeraldcraft/models/item/melter.json new file mode 100644 index 00000000..be82124a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/melter.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/melter" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/mineral_table.json b/src/main/resources/assets/emeraldcraft/models/item/mineral_table.json new file mode 100644 index 00000000..722c4f02 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/mineral_table.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/mineral_table" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/nether_lambman_spawn_egg.json b/src/main/resources/assets/emeraldcraft/models/item/nether_lambman_spawn_egg.json new file mode 100644 index 00000000..7a2c6da8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/nether_lambman_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "item/template_spawn_egg" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/nether_pigman_spawn_egg.json b/src/main/resources/assets/emeraldcraft/models/item/nether_pigman_spawn_egg.json new file mode 100644 index 00000000..7a2c6da8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/nether_pigman_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "item/template_spawn_egg" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/netherite_slab.json b/src/main/resources/assets/emeraldcraft/models/item/netherite_slab.json new file mode 100644 index 00000000..4d24347c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/netherite_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/netherite_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/netherite_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/netherite_stairs.json new file mode 100644 index 00000000..3b8fda24 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/netherite_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/netherite_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/netherite_wall.json b/src/main/resources/assets/emeraldcraft/models/item/netherite_wall.json new file mode 100644 index 00000000..58c5f8f2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/netherite_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/netherite_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/piglin_cutey_spawn_egg.json b/src/main/resources/assets/emeraldcraft/models/item/piglin_cutey_spawn_egg.json new file mode 100644 index 00000000..7a2c6da8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/piglin_cutey_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "item/template_spawn_egg" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/potion_banner_pattern.json b/src/main/resources/assets/emeraldcraft/models/item/potion_banner_pattern.json new file mode 100644 index 00000000..0fd0d6f8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/potion_banner_pattern.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/banner_pattern" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/quartz_sand.json b/src/main/resources/assets/emeraldcraft/models/item/quartz_sand.json new file mode 100644 index 00000000..88e60561 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/quartz_sand.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/quartz_sand" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone.json new file mode 100644 index 00000000..737d4c25 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/quartz_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone_slab.json new file mode 100644 index 00000000..1e49dd5d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/quartz_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone_stairs.json new file mode 100644 index 00000000..b2e52438 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/quartz_sandstone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone_wall.json b/src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone_wall.json new file mode 100644 index 00000000..49dba48d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/quartz_sandstone_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/rock_breaker.json b/src/main/resources/assets/emeraldcraft/models/item/rock_breaker.json new file mode 100644 index 00000000..7061b6b0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/rock_breaker.json @@ -0,0 +1,22 @@ +{ + "parent": "block/block", + "textures": { + "particle": "emeraldcraft:block/continuous_miner_wheel", + "texture_wheel": "emeraldcraft:block/continuous_miner_wheel", + "texture_wside": "emeraldcraft:block/continuous_miner_wheel_side" + }, + "elements": [ + { + "from": [ 6, 3, 3 ], + "to": [ 10, 12, 12 ], + "faces": { + "north": { "uv": [0, 0, 4, 9], "texture": "#texture_wside" }, + "east": { "uv": [0, 0, 9, 9], "texture": "#texture_wheel" }, + "south": { "uv": [0, 0, 4, 9], "texture": "#texture_wside" }, + "west": { "uv": [0, 0, 9, 9], "texture": "#texture_wheel" }, + "up": {"uv": [0, 0, 4, 9], "texture": "#texture_wside" }, + "down": {"uv": [0, 0, 4, 9], "texture": "#texture_wside" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_azure_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_azure_sandstone.json new file mode 100644 index 00000000..e639e9c1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_azure_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_azure_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_azure_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_azure_sandstone_slab.json new file mode 100644 index 00000000..9f028b57 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_azure_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_azure_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_azure_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_azure_sandstone_stairs.json new file mode 100644 index 00000000..9211bdcb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_azure_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_azure_sandstone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_emery_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_emery_sandstone.json new file mode 100644 index 00000000..780e1702 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_emery_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_emery_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_emery_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_emery_sandstone_slab.json new file mode 100644 index 00000000..b3b964a0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_emery_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_emery_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_emery_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_emery_sandstone_stairs.json new file mode 100644 index 00000000..813fcdda --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_emery_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_emery_sandstone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_jadeite_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_jadeite_sandstone.json new file mode 100644 index 00000000..8eaebf3c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_jadeite_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_jadeite_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_jadeite_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_jadeite_sandstone_slab.json new file mode 100644 index 00000000..07384e88 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_jadeite_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_jadeite_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_jadeite_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_jadeite_sandstone_stairs.json new file mode 100644 index 00000000..8e1fb15a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_jadeite_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_jadeite_sandstone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_quartz_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_quartz_sandstone.json new file mode 100644 index 00000000..33b55a08 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_quartz_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_quartz_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_quartz_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_quartz_sandstone_slab.json new file mode 100644 index 00000000..874e3b4d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_quartz_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_quartz_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_quartz_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_quartz_sandstone_stairs.json new file mode 100644 index 00000000..f6528f30 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_quartz_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_quartz_sandstone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/snow_banner_pattern.json b/src/main/resources/assets/emeraldcraft/models/item/snow_banner_pattern.json new file mode 100644 index 00000000..0fd0d6f8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/snow_banner_pattern.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/banner_pattern" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/squeezer.json b/src/main/resources/assets/emeraldcraft/models/item/squeezer.json new file mode 100644 index 00000000..2b2c3b6c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/squeezer.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/squeezer_0" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone.json b/src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone.json new file mode 100644 index 00000000..c5306b1d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/warped_cobblestone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone_slab.json new file mode 100644 index 00000000..969f50fe --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/warped_cobblestone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone_stairs.json new file mode 100644 index 00000000..dffa8121 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/warped_cobblestone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone_wall.json b/src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone_wall.json new file mode 100644 index 00000000..43a114ab --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/warped_cobblestone_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/warped_stone.json b/src/main/resources/assets/emeraldcraft/models/item/warped_stone.json new file mode 100644 index 00000000..3838e3e4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/warped_stone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/warped_stone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/warped_stone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/warped_stone_slab.json new file mode 100644 index 00000000..af678c04 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/warped_stone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/warped_stone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/warped_stone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/warped_stone_stairs.json new file mode 100644 index 00000000..274ad3fc --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/warped_stone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/warped_stone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/warped_stone_wall.json b/src/main/resources/assets/emeraldcraft/models/item/warped_stone_wall.json new file mode 100644 index 00000000..d5f426ba --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/warped_stone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/warped_stone_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/warped_wart.json b/src/main/resources/assets/emeraldcraft/models/item/warped_wart.json new file mode 100644 index 00000000..60d82ae7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/warped_wart.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/warped_wart" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/sounds.json b/src/main/resources/assets/emeraldcraft/sounds.json new file mode 100644 index 00000000..2a9ba229 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/sounds.json @@ -0,0 +1,212 @@ +{ + "piglin_cutey.ambient": { + "category": "entity", + "sounds": [ + "emeraldcraft:piglin_cutey/ambient1", + "emeraldcraft:piglin_cutey/ambient2" + ], + "subtitle": "subtitles.entity.piglin_cutey.ambient" + }, + "piglin_cutey.celebrate": { + "category": "entity", + "sounds": [ + "emeraldcraft:piglin_cutey/celebrate" + ], + "subtitle": "subtitles.entity.piglin_cutey.celebrate" + }, + "piglin_cutey.death": { + "category": "entity", + "sounds": [ + "emeraldcraft:piglin_cutey/death" + ], + "subtitle": "subtitles.entity.piglin_cutey.death" + }, + "piglin_cutey.hurt": { + "category": "entity", + "sounds": [ + "emeraldcraft:piglin_cutey/hurt1", + "emeraldcraft:piglin_cutey/hurt2" + ], + "subtitle": "subtitles.entity.piglin_cutey.hurt" + }, + "piglin_cutey.no": { + "category": "entity", + "sounds": [ + "emeraldcraft:piglin_cutey/no" + ], + "subtitle": "subtitles.entity.piglin_cutey.no" + }, + "piglin_cutey.trade": { + "category": "entity", + "sounds": [ + "emeraldcraft:piglin_cutey/trade" + ], + "subtitle": "subtitles.entity.piglin_cutey.trade" + }, + "piglin_cutey.yes": { + "category": "entity", + "sounds": [ + "emeraldcraft:piglin_cutey/yes" + ], + "subtitle": "subtitles.entity.piglin_cutey.yes" + }, + "nether_pigman.ambient": { + "category": "entity", + "sounds": [ + "emeraldcraft:nether_pigman/pigman1", + "emeraldcraft:nether_pigman/pigman2" + ], + "subtitle": "subtitles.entity.nether_pigman.ambient" + }, + "nether_pigman.death": { + "category": "entity", + "sounds": [ + "emeraldcraft:nether_pigman/pigman1", + "emeraldcraft:nether_pigman/pigman2" + ], + "subtitle": "subtitles.entity.nether_pigman.death" + }, + "nether_pigman.hurt": { + "category": "entity", + "sounds": [ + "emeraldcraft:nether_pigman/pigman1", + "emeraldcraft:nether_pigman/pigman2" + ], + "subtitle": "subtitles.entity.nether_pigman.hurt" + }, + "nether_pigman.no": { + "category": "entity", + "sounds": [ + "emeraldcraft:nether_pigman/pigman1", + "emeraldcraft:nether_pigman/pigman2" + ], + "subtitle": "subtitles.entity.nether_pigman.no" + }, + "nether_pigman.trade": { + "category": "entity", + "sounds": [ + "emeraldcraft:nether_pigman/pigman1", + "emeraldcraft:nether_pigman/pigman2" + ], + "subtitle": "subtitles.entity.nether_pigman.trade" + }, + "nether_pigman.yes": { + "category": "entity", + "sounds": [ + "emeraldcraft:nether_pigman/pigman1", + "emeraldcraft:nether_pigman/pigman2" + ], + "subtitle": "subtitles.entity.nether_pigman.yes" + }, + "nether_lambman.ambient": { + "category": "entity", + "sounds": [ + "emeraldcraft:nether_lambman/lambman1", + "emeraldcraft:nether_lambman/lambman2" + ], + "subtitle": "subtitles.entity.nether_lambman.ambient" + }, + "nether_lambman.death": { + "category": "entity", + "sounds": [ + "emeraldcraft:nether_lambman/lambman1", + "emeraldcraft:nether_lambman/lambman2" + ], + "subtitle": "subtitles.entity.nether_lambman.death" + }, + "nether_lambman.hurt": { + "category": "entity", + "sounds": [ + "emeraldcraft:nether_lambman/lambman1", + "emeraldcraft:nether_lambman/lambman2" + ], + "subtitle": "subtitles.entity.nether_lambman.hurt" + }, + "nether_lambman.no": { + "category": "entity", + "sounds": [ + "emeraldcraft:nether_lambman/lambman1", + "emeraldcraft:nether_lambman/lambman2" + ], + "subtitle": "subtitles.entity.nether_lambman.no" + }, + "nether_lambman.trade": { + "category": "entity", + "sounds": [ + "emeraldcraft:nether_lambman/lambman1", + "emeraldcraft:nether_lambman/lambman2" + ], + "subtitle": "subtitles.entity.nether_lambman.trade" + }, + "nether_lambman.yes": { + "category": "entity", + "sounds": [ + "emeraldcraft:nether_lambman/lambman1", + "emeraldcraft:nether_lambman/lambman2" + ], + "subtitle": "subtitles.entity.nether_lambman.yes" + }, + "villager.work_astrologist": { + "category": "entity", + "sounds": [ + "emeraldcraft:villager/work_astrologist" + ], + "subtitle": "subtitles.entity.villager.work_astrologist" + }, + "villager.work_beekeeper": { + "category": "entity", + "sounds": [ + "emeraldcraft:villager/work_beekeeper" + ], + "subtitle": "subtitles.entity.villager.work_beekeeper" + }, + "villager.work_carpenter": { + "category": "entity", + "sounds": [ + "emeraldcraft:villager/work_carpenter" + ], + "subtitle": "subtitles.entity.villager.work_carpenter" + }, + "villager.work_chemical_engineer": { + "category": "entity", + "sounds": [ + "emeraldcraft:villager/work_chemical_engineer" + ], + "subtitle": "subtitles.entity.villager.work_chemical_engineer" + }, + "villager.work_geologist": { + "category": "entity", + "sounds": [ + "emeraldcraft:villager/work_geologist" + ], + "subtitle": "subtitles.entity.villager.work_geologist" + }, + "villager.work_glazier": { + "category": "entity", + "sounds": [ + "emeraldcraft:villager/work_glazier" + ], + "subtitle": "subtitles.entity.villager.work_glazier" + }, + "villager.work_grower": { + "category": "entity", + "sounds": [ + "emeraldcraft:villager/work_grower" + ], + "subtitle": "subtitles.entity.villager.work_grower" + }, + "villager.work_icer": { + "category": "entity", + "sounds": [ + "emeraldcraft:villager/work_icer" + ], + "subtitle": "subtitles.entity.villager.work_icer" + }, + "villager.work_miner": { + "category": "entity", + "sounds": [ + "emeraldcraft:villager/work_miner" + ], + "subtitle": "subtitles.entity.villager.work_miner" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/sounds/nether_lambman/lambman1.ogg b/src/main/resources/assets/emeraldcraft/sounds/nether_lambman/lambman1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b0113dc4db85ae002cd5f693d3fddf7a0129fc42 GIT binary patch literal 10285 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/nether_pigman/pigman1.ogg b/src/main/resources/assets/emeraldcraft/sounds/nether_pigman/pigman1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..2ff33b68a7ebe555e71eb35e5f06abd3a035edaa GIT binary patch literal 11757 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/nether_pigman/pigman2.ogg b/src/main/resources/assets/emeraldcraft/sounds/nether_pigman/pigman2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..2b62c36561b07db5269d1d03ae39da15c60ea7ef GIT binary patch literal 11252 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 XyRoSg{0&bYFCQI?+dYwYvLE~(U_4_4 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/ambient1.ogg b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/ambient1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..fde2d1241f7f45a61fafeb44ecc301a73742ea80 GIT binary patch literal 24516 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 RPk0L}h*BQ~`l0_n{ujmY2cG}{ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/ambient2.ogg b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/ambient2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a9d075dfa25d2cec27a6b9dbc746952d016d28ca GIT binary patch literal 19469 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 Rxwzh$T-@|duJtBzaRnF}Fd_f| literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/death.ogg b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/death.ogg new file mode 100644 index 0000000000000000000000000000000000000000..7c966fcacbce44c301bfae98297763269016822d GIT binary patch literal 52584 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�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

rjl2iG`P2t*4}&c%Xld^e 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/hurt2.ogg b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/hurt2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5f1bacd3c517c2544bd982278df58a3c0e8b1368 GIT binary patch literal 9378 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 Z7@hFGVc&P(l0XyR{m%{M_g4M>`hP#`(c%CA literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/trade.ogg b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/trade.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6dd40c467ac12a4094cd9c82da3937d09666b36c GIT binary patch literal 9111 zcmc(EdtB2;_UHrxgov0x5&;97!~jVMlti=;u^U1HNq9&CM1qfENKjBLFKw;cy#WG- zfNTf>0g*yTkf-Ho>!baF@{*Sdf{3k)4}7%R?$+Mg-TrpH6R`c=`}^a5?tgcf?{MZj z=bZVT$DBDc*?HhVJg@<8OQ`f~cPn_H)}aC6g*f&>jv_tR`oe}Hv;G6%#;0q@ZHS## z%HNBX5&?USWAANrj(_vN6_f268-F;Ol%91kU}w$&(&2Q4Y?V1lL}CZB0$H$CzI z<9KqJyQz^kK_Bzv-6S_t!?m2ztz&Mfkr$OZ-u3*O`b1zQFcWvh<%s;B*5@|6?V8Gd zMuN}^>A+OBqc?=gL!KIP%2{ip&N*}|UOp~TmwnC+LS`a_TCGqf>vKcSObCRYkWNZ- z&TqAjx*c%NS!d-kYUTHxm2=tF&u_2cts<{BWmfj9&=J;CLhgAh7uY4Py(0xF@jwsN z*+kPlq&Z_edeLAU01P)97g>Re>LE_vqOM1+m)ik=04RtjEH(>umZb8u^ah`gO|&`_ zqoX%{qL(?@``x90RdOK!aT44}7S3UnP6+@ig{Er`E`OY4u*e%6G{v1ZKn(yA;yFe3 z;9~wxz42q{jaUD@u1!k<02I)aZnnRf07dq24?in)*@GtVh}dvX-b{F#rEr;E0QTd8wfSRI6j`Id`SP<{NDx|~CQTfFMn!#7h~a%ve`4|? zq*zr2lyQ)x!SEmsZ0KgAR7h{BQRwJn#M~*?7^%>S{j9MvmUG=~h~-RBo6Dt#=mWU; z=$;iqYS+L*eeP#r^wcuesM~)vn^)BU1;*IBEA{XLHMmu#IglT5O)NNQ^>(5_N{!5+ zMjEKs4NOsG=wzR@#@yz|;1lN)Gw=MI`TozDf1OwT^=H++dDY%()i(o~dl&ZZy>s;c ztgE7{kw9Jk7-}6>VYyj|UNw#$0Wd(_9ISgJg!U-+mK%K1s}CHnK6kvXwZv-`1sVow z4HmU&)ofIGbxV4~IjgbT+jT8%?d=(LE$RRFYSTpS0KgFd&#`P`WHxau+bY$nhDo-7 z1VFfiD9B-s8G@pqjC1@OKkbohI~u<$^EV?v6l)pF4TbeOR0RYoLq&5zG5?R%s#qHU zov)_6s9k|3V6Tw5GDU^tu~wLNw(aKkjDdf3A!i?$o@<8`HCd3Nc-YA|LD- zk#WXI3(1F~+l+3|cv!$k05_an7S$2fwGXp;FESWDNvNXYP84{E1jO>@^uL9EQongGYg0$X5MfWBvn5xp#)94#<va4)r^gU2tXRNk0}{J zpx4VCfd&bJaRLL320_!WLU-c!%ORTvU+6V;-OL!c#9al@epZ&yn_Al289|e;_!3-9 zd}1OVVww&@7i&Mi4q{4zViFS*?-W6DE9Ry1Oj|2)LgJk&)mwS~>mL-+!5K!Vh?}B_ zD#7Bxt3?itH}!Y~7Y9I!lOmdxW;7&-MW>`vsmR;llFaB*Ns|xxkCurux<-;D^e)Q+ zo8dpYknGbovY6}#zzZnXi$NYONa+pq4uFd>8Kq^c2up$vM$<|uW27c`Mk02HF%(6& z=wLL}7^S1uxGJWn&V)FSEw`;i=>#N$4#dcUF|k{s%q^&BTy@hn zXo9gG=FU~IMTVdloIsMe_l|)Y<0^=UB3sg}x^HVg9|g5%)z;qA?H@O!x3_;c!M=n4 z?^@vk@KJ#+h|6E!vAG_1%8uaC>tYS+BvhD?UZj_z$rc<>Ooz4tPF5GLiL+ldo*8<= zXyB9jTo-W(M&ZPxxAiBGhut(%X+~Fi84G1G-%g%$OT|dj+Xh;sPtCAfHa##CCTtsU zJ5$+WG)NDzBIq%6Z_9$BOuAGDyQ3bKpF%9viq5TKx}^;2`jAm7cHdpvvtR=-9z-zc zd^pMTf%zb_`=-7MaJ^u(E`y35b<@PbCfAwQic2kn`cztXu|f=7zPU4DDEHK_?))OKO+E1-yC^97T1)z1+KO-up9U}_X92BmWQQC-G>P#5TBAp09 zoh^(Li}AejuxCW8pbb`Hi+NW1svfeYK~d@sk>NLsyG9n2PEAIL;y?PN9!0iF+q3m4 zA9dDPom|=z;+smR4-itzrbFDLL>7zNq0E_(b5cl_bO^dYqEts8O+HfzwUS)MTJW$K zrBACB9jrSxAli!v8eI<8@ArP*nHBWKsveH4>EZ2GU7x$^Tvn;9o04}`nbqOe_9&_N z?5en{U9*w1HqfMzibeFJs}yli^YCN8U8R8YilKdQR#vM6P%^p&vVxLX@nHM=03G&! zACSV~s<#w$3)~jPZEFG8^1N; zxBRRVLGUde0MAzKsTHs5nJe@A%OJMM$u+Kt?1xap6lM_f{4Kh4^^;bK7>>Ws|CZ$% z$F*7B^8Npa0#fpdZBu^IVDk(T6?R)))&s;^&>_HN^BT+|LVU?pH5r{onAVLoHe=#5 zw?>Gqeu0td+D7XOt*e5A?ixaR%X!Iz!m8E{rm5ULJ;2J$N z4VMW_Y6jr){BprVgYnEufUdhxe_{jg3z--?wny&y9S-C@erJmoGp4t`z7Mmb*4xQl z15X=HSbZtspm)oj6C1vQYY)TuTz2UD9k0Etj<lTAPrmB`@;@&-K*!T(N7ftzMnbSq1uC^ZavAH<86S=*=VAB=Aw1#W0Js1o` zH5Iy?Q0f&^Vc+3-S{BX!0NUM5G%m7=F^ah4(HfqRm3}t2jBF+y#c088NBVn`N6epF+Na$zp;KUOX zXh1qFpN^Xr`}ZKjU@%cgbn1mm0Qwk~39P-uR1RU0ddM)^Q(2LkP1^QuNC!uscW8pAB8rIFlR7zkT*FV{?nn&v>_pe8X@> zah&z~>#x81S6N`bc2;^i;ZN&9eZa|o{PX*~kf}Q#R`#-K9jXWkZm6NgOEoYxWz5*6 z0Y(bcamVS zVS8iV{cvP%v&MVC!H1KAB`OOxR|NT>rKlWCuuqvOPsgvH2u9;tD$^bEaT*HNGjb25 zfR@^`n@K2bY6r`j5`4$}wYj0W(ILWtq{9y}C%*}xasB2j+y3*b?kAs;Z~gko{^>u4 zo8BFl;_!GZJ6CZ-`5t?ML8H?Mh{jM?C%&wtHBrtj-Qml~n3u>~7mO--wY(vEduGSn zg$k!Sy!`Tv3*dThnT+b|uQ4^oNxAQf$jxS0s6dM*0zM<%t|Vc0|A$L2 zWJed*hreL7gQSk^e@`Rf7 z$XG{XURE4*>rJt9adR1sv1dlo7yS!HGB{l_TQ%BSgc>yn>Yj4ZL4WjG`4rJK{g=pp z9N<2qOfs80+hl(14wb)L=|E-#29e3m2?TI|Gn{sLcCOzWUO zPLtVd$2$oENrmdRJYUWIB@e`rdxIv|X@8`(flpKn2E(r!3=+sG0tY!?M2_%tDbY45 zSe}F)4zU%W4fLY0R+2ZMPXN|L@#0zM%O%t4NoR{6bcgph7gESP?I>5PVN%2xyCB7W?WdLFbYtFiXyh39|Ku&M98KUv&ptMH>rD_xp&AfGE{UdePWyqLX@_o zTA#dcF8H!rTU)z&eMT5_XoJx!iTKwBvcdM~m&{>Gqbzm&Z;S z$jM2^x<|T`iS~rcDMy#Oeh$R?2rcnVgJc`8Osr&4w1vE>5r6U$;!HGAUeU%@h$U+ptmRjgO)wvdpRMcE_Zt zk?4&bF^Ius?MA8f#^~Q}osl8;?%!_wWcs_*Zm*TYC*li#-ul@GATBc*jPugdAEFzt zq5|(~nq^orLZ0vwFve}@Db*6%K5`S3@b_#9SWXI=ZGiWb2)bI+1VuP(DU8m?W{Dqr@%vlVJ>sw>Fh0-!C+iux6f1 zMAKPkCUdtMk1@Q&%stOzV0~P}Fg3Jop1I!Bfz5P#>j6!D7@Md7f$XL$1w(d?)pkH# zkE7yWVZ@~@ANLVOUP}4=-LjT+4>8Y!sCdZ5r2u((lThpKnH#{lR8tzVNpC+T5V1D6 zYy+U@5}N#8TUj%^>g=AzPyTvGq#{6Cdw9JK z$Rhd_@Yz*DA6tdhVmLCXvu&~afVTclV#Q`z1U$~V$&b<84xMHbII={rOoeAOmoXh{ znAf8Co_ds5*Uza=?e4u)FFGy_q?4%ue(QwlmpcecBecd+gQJ_Bg^Zr%HQ^Wp;8jvq z8mjyY{^nQzaayR{^O$_1Q~mS5zPy6q2AvrIdWqwC1jUa=s9bL& zE+yKxvgw-HRbO40$1_*<+Iri8V~i{cNtU3cpg~+9U*H$9Id%71y}UiKI?sQC`Tpv=n6ArpEJ*9|2l2u5>u5tf8cAlco1Hj`Q;6r|gRC z=7gUcc;~+S*W4z+-!^yHTL4T~%u2Z&C?)Zc72a46?xF6GioOa1?PB5Arw~d-4X&>u zzmb{I%SHfg`~FLpPb`(f5G5E6@@xsN#}sPv8^I7t&NT`-KIwM+Fm@ihR_D20?BF6{ zXzNjxHe5|MQE=U8OTr{k6`TC*^Zh9j9o=R80xzBBM@Q|Zz2oQqPKVxGCJIA5h)&Nq zcbtx}#c1p2@e=K=DP=ixfOSlZXFR!Ob1v(=x;hx)E4b^XDJnT8CDZM_S&k|TS;MVH z*OXMr@@8DNI00a^6q$t9>)^rjZg!;GAzT{x%CW4EHS*0?THn3g&&~`6Z;JnVZz22g zj@KR?m=0U;k{zSGDw)d_BW9k92Ba##p(opw*lV8o7-g)IK?Ot4dJ8@SB98 z6yPjprJSm)5E~Hebh0(QPTQKq+$O-`9NAZGOwB7KM-u`(8qfFSHyO2Oh2{c{jrUxM z+sO(heK>4s*_xq|u9H(XTU@V7**ecLDdrelQa26Q_dPP|0ZrG4DxVA6S8X}Y+S#0% zz%+Zy+rr6Ml&_`eik&20qt7QnnxobC-AeR1`+B*JjHW(?kx21)+* z;?d7i{5eKdqT+D^D0dbK1gEQ&0TXcPx9WYccm{PO^s|~`cxkmy^!3vA4dpf3{-2|~ zvk(0c8myqqF5Nk@G`9%w0{pqcK=*T1Vn#(dQhhDB{A@H$`ixYImf9;r zv{&Q8*oMPQ0M5`*CZO;m*De0EsM@?#DYlq|Rg5F~JXeKV>r;eLIF@rOp!bDhJiRCA zlsq}2-OwKzp@?2*=neAlwm7mpfci?beKay9+T#_Q3)5Uuv4SP3PRyE`Q_$#b7&E^% zD)(HE;&`Br9vdzajb{xTM^i%l-|+yXn054Tw#c-%!t6jUwzLEq#s++~@k-4^)Yqx# zpMKrPa-?(b@w#g83yq4`bJ>5?-t+SA?D4*Ak6LHZQn zh0N9I^zv#+q)wqp=msKIH*~(&h&#A8{TsJun*01zwSa9iy2o z$>SJ6Ai3C0p}}-vOiE(#iWvceBn^x4R+G9ti#6Fomyl?nCi=veP+cS#9*M7vgpn%C zs1!KOWq2&k@9#@Kn*p=^3SJXW)RQz-Wy^D>PS~a_{PQoM^T*j}RtZ0fWs@H#m5uYF ziB;4#1CvIuNoNh~j`vg5<$_&D%LB%ANohwr%aQ|5%VZnpxUy=cv&hWXr%~S7Vt0@A zF;BotucgA*4W}yA?q@m0K|2GD0t9!2e--*bjHPtG%mqwDt@GhrH{x=T<>vBy>dpyOS7qbf`=)ZqPeW#7YCx)WC1E`+*y|A ztLGDp^7sOMlp||!1F5&wv1qHGGGTHe!KhN6;-x8BCjE+Pq%1@w??_(I>I}>dptfL| zdHO(q*=5g@bAt~Oj*dRV6l9_71+^rn$}pVoT*X|IX}n4Mg3r(z(Jp2u0!*Nu&M|>jHv{){>Y`@vO_6pL z!N?JF(6U=!uR5}JC0fW6oPx<$wPmq#naDFWniU0|uQG2rB@ydHok=_odUa-U z{xAU2jbB`vN4RviCs<9gZ|riTdZ~_ddG0jlzMb9e1?1hcUlAL}b*AL)%805AtUy(P zRkjhHk!=mM>z!zQ=}AMJ2sCxJwlDG$G@a3iY@1SMuR(~#tCTisoF`sV#>+9jL?wxv zNO%tVEV}t7##eL^uK_@Yp>RCzxy1!Zbl8uz&bRWH-7L#S9Ln80m56%o)EY*Cg+AA1r7H|}!63ew`vZoHzof^3_-RetQE zaO2BaYC3DNCl2NX>7pa250K-BEba^6b{oz|m)5R4YYo_3nOL>*jf~F@4*iY*#@WGs??Y{^-jyJy zHd{3ZR_{uz>3Ct1GZ*zH;LRW2IKBRCpX>w)4EXE6|5o}tl%uXomTQ-=_zF6^*(8mT zn9*Zc-utzBCqruq@`~3s(uvY}>@NJ&aJd#Or*Gl$D@tE28pEFeAYoT~s$5Os-QFWK zr}Dytx?qyK19@8*1^zIKv2`0EscT{}z6DA)b}5#tF-VOlTLWKQWTSPJz%&2;dS}V4 zFsT;1J)&t#Jb2EhpiRi@By4b)G1`TZz!c4OCIm~h`GHSN9M1N%u^jIzdQ>Lf)o&OE z{EBcSB1OtY##ig|$SFtj1_+*e^MZ1tGy0RpbwfVO%RIy7plnjaZW=x#q?$<}MD69? zvz@f<*tKic4IduC9IMYA*y1Qile?Jq&``j&>NWe&GfirU7TIr0*)`|hP^4;r(9ma?IT$1}Y^CAda@e-MzG%vjt*XIt@ zlp#I|9x6Q6t;iQbi#Hd^m4pWahmb#bW-m*+HDHT@qI9a2Ag#N~Nzs1c7+`S&e zqK}lsj_t3}&P_amHzH$_+k|377=~}peGV$cJ_a2raoQf;@m%S#=agZ3zwZdud%aFB zKG+dKPqydvVD?TI&hpOdkDa?Zl+8LdI}&<$eZ{7?%7btwb#7rg1k~MCFyUDG2q~+XtJ<)jws2+^(hFv*r5uRpUi{=40nE z1rp*&h7|p8oJci5$UfwF?%(m=EAvUiUDRYh`%$lxqB)CccOK>eIE%^l3J+b(W=0*_ zC!zAiSO>62{D_}$lFEM0G--IgTP6a9MIl@_^Bx~S}nvn6$allzOq|x`w&SoEnlA^r%jG zw9Ep0ifEPrco{qNV*1hjNvHVA;mXYWZi?RU3`&9u?Gr_<4zo07mKOJ=c zHLJ<@YNXcu$dUNo9#rM{$E1=O`{jRnAy6hRHC5?8QWE6+Ma|wH?q2@zKO_Ep@J<_s zCVR!}(f`HdRC{uA#3^XU_I>uC@p(<@%0$l1k#9{gN2f-JG4bghTju<-$*V%e!o-y^vh*ld|Zw8I?B#nSw!epIkxiLt4f zDFx|iCkrw%((*}Wb_nocM~59@v4w|0n!JsWNx8!xAkItQb zf(3h<*o?W;_8wrbHfURwTT6Wdh2@gWcqPaP#py0I*wbOaUbnfIL;X~hyATBSwy;&g z-2Ol_6rBOfbue?8F!TG?%(*7;(>rhQc93_P8Z-Ny-bw1VOJ2X33pm8Qd4~;`Jf!01E&D;&Cc<9EDz7n=WhfJfkHx zYstNXvYA23?BKW8e0Rt>01zWUj-Nu>?a)a90Fq2pbkb`di&grBHoNl5K1-k&0IWeg z#|RTL>aT=bFN1Hr`tSA4v{(QDN{Ldm)jv%D!MVAHwF(hQP!}e~DQq8eAR+aOhV zq%Otwg+g$D`u^}Q4?p_;jS1iYkb>&b-?4 z(d;ltv7-u5#u02eoC)H94N0dKa!7_oiGnnV$(y52V#^$9PulCF8PhsdG-HO)St~q2 z8bZeMO`9&M7l&3`^8QySDYb?=f&S0NeMb$Tz;IhvsS^Caa^w!vT#z5;jaVSi?Clt~ zkPwkeh)@xxRTOT0@a!dXjk?2%LdCDd=iL1{=l!2^zFJB9>gTlkD{03yX%B{Sj;|g+ zez)Mi)*aD{t%2g&$Dr21%Bj_HpgYD@rW)v^QE3jp>2uy67-CgL<^^0Zm1 z9Svix04xB62{7zj%A_hF5|nY7b?e6@!NG#qqdEUH0*GQRlX<~lod#6_cItz<%K=gU zkJYSLO8|7f#>;mk-?7gx1QC5!lW7x;^_sKOXyy!e&LegTZR68bg9~%)Tw_iusT>K9 zB!%EIP2(cQBz86N1mCDegT`|LSQY>pX>*ET57svyX7*ldI{1ho6_tGu;E^?esqK{g z5d7i(;N5N8^xCc)uQrO{Y`OLudb8cFvh7eLPSL#Ggik{CI2^0YInn0T9CN&zoW1wT zuD2Y)nD;6U)epT}@tmnSd@DA-o1C;~&@sXGpYUR@GiGQnQ-hmr+cx^f?dfs2S4pw@ zCw#=2eZP_tronxtOgn&@*EA1MqQE8Y%m(deW(j(ep{Iu& zF#C!nKt{#J$D=?@Z6@eqJ^c#G84ze-)%^HE6;!a0Y$Wf zfe|YFHaEP1y_R{i!mjkqS=Y&Eb*F%L!BwtJuCZ6z_sNrQ@ z92W~n7xk+&vd_e7qNj0uEzuhQo`Z5dA7K&$q#l6M4hVs3)xsKTxIRt+M$>vBdAu=i zLBMkbV>UD2Hp0jar8$_6cIu;VjAyp`aP@Epg+U2jqf_BRnQ_P<+}44^ zn)#uHP>yj3eWBi2-y!t>l#qe6X^07u*rilyOF6ipgyJMU91caF5kR` zP>5^lT+lYQ9K>tPgEJ>uz#$k_7pPkpFlcX^$sjn8%nJazclX zj!s<&CF+GUL6Fw67#yeCf4hggs)ma)qfg{41a%2PGVuw}1>%JY(nR8g zdQdBgHPlr%y;``fk@QmUS_1t27@!@I-IC(*wC_~F)g3*Ye4~fATXjp`j&qr%GH*&A z4K-$md$UIgd96F*?hJKm#v4FKxsb;t73@&NfSLzC_Sp^vI4=*h57NwP2LMV&(u1r( z$;^0Q`!4_q9RCX-1i=k&DM)&7TjUwvP?#qIxtgCh6M^kc4{SWlFW&-oCQ=K@Z-+bB zab^k-Z>Rkyzc<8h`I#pIyKnIT;K`0X$2YUQ<@^5;1xU`Xv`YT5+$morNOL;aeClh9H$le*Og2ZsEF#DY z*U*^Nrv}ry$@WfoY))V}&+Hd)p~5)PQf6Ki4CuwNxMSyTn3qO}S}my=+TKXq#)3wV z1h=x(KVHm(^SIy|Juwe16ELY60+;9Kt8V4+efe>q>#nwZw3~TV!~-4MEwBHu9WKec zwPG!6KJb@^V0P4fC-LIYcH2j0Uy950FeH7n`wMXG!5N>5PJDOxm;GkPJ9f-S`g9|2 z_j_gsrL87@1mEc~A+C~H(=Tt+DcF^*hh=Y2n2^1B-`}vqIRaDXP5~iFekvtnc3?@q z_s9sm1Zhq|<=}>ES&W7I0f65P^A-awOw)*Rkna|#_IwQgTY2qTjpMLd(bNJtqpM8p zvp#gWbnkV5Vh-0Kw!nxVq@xV+kyI&}3;hId0D!|0XANa6Xu7m;zXQbZYIGkzy6hHN-#KG%i@aa+eed}Nl21^LA0j4`00AAbF)H`r> zWa{?X#*-iZ2G~2fI_)4}fxiI&hf^%iOy43?eEnzv2kDI9_d=Mga4;HMfFat7DzYYK&haY};ZT{2URiV%9`ZjW~TOEZ;ONdi2LyLx0%!PVBcI@9MvKCP{MO+L>QT>{bGserTgm zDDY-51Vgg0_Ej~Zoc!Q!k9(G^?63OIk{0@L)!3AJblA!F_YlVFPJXiDT0mA<6ieE| zRpsct_ig)-X*YO_6xnole7wL};FD8#iDq@FjPTJyU!mu6_qF*Sfj_6k9Eb z6@03NxF%e>;2EZwQKJG~6e+DSsd6&K`al zOnQ7zU36EKo>I_y>G;-%8OP{7apXvKhFDidY+bNtPZ1>DgEK1z0qvVFeyYDJv@upT zm875*qghA0EJf~V-4C_`=H`Z9M)}6Ki2R9Tg5~V%-`}BL@nYNwCtKKJt@z!At-F1K zmPZ49&dauw3ezpe(7Dd3j>F@AFPx668o8J6eVtSq807Qq9uNOx>8ynLyzFP5_?COq z8r}SQ>p>d;2WQhFiR#ZO$VlyVw16uWQM|)0cE@`c7gu6=1dh$qeB{BRbai1mS(L5c z^dpk*_9Tt}fNgMmgkIs1dBxwNuAyU5d5e1942_=_+r;b!u5T6KG0c4le& zb^Ik-3c1tIwc@Fe?4)11C%q|~EE$zz^wo0JSlYhP%*b)(w3M+K5(*JlK%`FN5>xjB z&V}fz`4sw#^1ZMVg%S>)mHiBE1)CZ)olhlr(OK)X0-BlA~MqdY&CzX=t_ho9W>X95X{7os0LKU;2eZC7Mk7>Lqx(o zY~Y=cw7^UFXP~i(z1!-Q!9SeC`_Iy5=7`l4@ZcowvvnCIi@HvXYHDsupWlY6Lh<}7 z&HLXOI!E7tYuR6lC@`zudHlg;BQ|=x&{B)#AS#~vX_16Sez`0(v62&`cE2*Mr>x&# z*|SaepJ(lws8hB86sFVM$A%S$_HUvoYLMu;lS1QZ8eDez50 zsbzmh9y@ff@ts{jvTE1;&bdJ{dq`_=OHg^}H!TGnwCK1W}_-w{C}M`Lq)=W8S3rMB=$6CeA_MQQQ}wfpZ1`t=P5{S!cCqkirSbb~vi~ zilx&rpXk^z$z=McO(KWte2jGp+M|KLA>Cl%qn*a6f{+#nQ(cOwka~+Tu(R_6jPV|P z*1OrFQTS)_2V1A;;{zpvQ%XI&j?qUS-x|2*6J6j|7;youm4XIBetoOVJ+`(+04?Xp zsS^@leH!5{f*oKQ#}{D;JCA{O#-)yB}u}evp^Fnup@OF+%Bfj-j*HW2plkA|2z&&0Y*IA>{w`bd1)Nk$)JLk5ij~dEcxrxbj4|SRmW0? zn(uj2Ekj427E@qd<0*_4C(9dCayU|%Rv{a=_qtg;V91!MJ8;ypn!}P4LSi7Hy!w}L zp^9KHL`*fT6yUiIC~CV8Y+ObL`&>}DjNp8#Y2drxKbY~h%zb~zeX;8g zzeg9bL%!=RB>Z|OvX7Z>4`9`#4LJ$bLnfaEt}|!4b3Ln9ZSRv0TcB;$id0OhR;;X8 zQoS5pPm6QMA(oVY^+9WBeJDO=Mn+TUa|11&s;MPq`3&f2em5Fp-43YESs+4ntPrx3 zO`ZEA76aSB_X<^TC#!YNry0;vdN`u-b|`)q5!oRx^Fx(a&XZxIDU!N@N2eNLG>hl* zP9H!QQtjt76FyqK`^b0K*M4|Br3|zPEurq|oAYHv_*7C5UIG__NhjgDdFzS-XlTk= zw1Y^ciX-On<7daUhVdk6T7Ukchrfe~1@qhmbn95CYQ+saDT`_mvKg}ftf`T)i+8Cn zz}whp9nX*C4PFmE=MicW2f$Q0??3)C7Bu-E`w=75|g#?hv%qrF-=9!oebf`BNo2$JV2 ztpu#+0K~4E-VjX~jZ<^H_c`m3mLhb@lAu(ogxaeiEu2P{g03l(uHR79WzO1nBzrng zn$wp;40E^yr2B%lMlR%w_FPPN3Q6>(K#a&pUKqsyCVN0;^8%YTTi=ML%u>Yw-1%jx z=|kX$hp!%5?axsBCM!SxYZ_E~rs@&j^l#^W5dLp|3IF@s!Psh|zc(NVFj{g8Y=N7* z=j1Wa08V3w097~9j2(^IdavogF4E0X3)50MfUYs5O0*I5%%2^cQ~ zx4d46ITWgdBBHI0#8z7*uhI{Kum;VG=SbLG_b<1pbmZWBtq+YoKB~rE%L*kS`m7Y` zAd?Ti$eg?^o;$Qn@oR2aVSlFfRMB(+r+vp+?34&^F3m|Wr>I-$3mTMXanlZ_ z8iMVf&P%13c<^u#m2{LIOF~T)O`-Z!mxF%-M(DA?pU*gbTz#zyTm7)$@aOU`SP#OK ztnaT)zyLW7D1NkWU_bLLO6>&XO;}plVu6^zU184+^CF^jSP7IX9${;=e!PgMM5i$l zVw%pmm%@OS-JXV6U~Q&Zv{EU$f@%~4AGD3U<9=$?I0Y$fw?-JlI_8X8sdTScrid zR<^|<$-sMO>;pgf^$)=9w%WzW?xH)tSQh`Be?0?S9mT?f#qb7ZVaUSb*j(scNNHdl z#|bN`A7Z$*taxP)~#(R3M{BcWKKoRux< z8Iw&l=(uD%XJ?cHRjZUH5sFLF^W373E zixdql;;6H%*;m0%H(K7V!hHY(z>{E<)uL$F5(1q1>bI{BIB!7ye6q&ft=(7S4g6kB zZL#_8L}vRwua6~;872R4bIY9MehQowPjYKY5hKZ_`|iU_vlyeU1h9Ybz2bG4WXkwTVSPYg*51|z^z$N z4a~WHQj8pih)NINGcR^q07Dq@C{u+Pz(fkwUaTqzOg5IlBQNO!JPox^#I+M*kz}~h zDbz3!DAy`gC@I|kKfF>S$xSu0bVq2!3OI?_-FOw znHAva22wGoDpz{w>Lf+ReX1wdFJDI^&lWXD%%9uxY`qZh?p@@2ZqJBEhL5M-o|OgM z5wv~TLw&OOqZ<$)%S?=I5;`@cxv-aDSi4p`?2@uK(1q7=y_1iVDu-qe(Q5Dn3y<%m zA1Y$Fu^(?_j=)Ca2vy-J6sFahrkp9ndVND|k}r{N`tcZidIJYqVXDJpkzo)jydv~@ zK3Yf1#kfUAG$VYtu6Pw|`Z*rpBw{iPx0faQh<8 zVfRtR=Lxmr5-~b(8Of9-s=Q?V0T!)^jBT}VZ~Mx45;FU|O1fA=AbW5X3Ah8^k2Q(} zQb(gJP$p>`BbX$(+gQN)&&MrB6d@2x-TA6!AhlSXj zRx(qXFMk8cuCnF~x1<>STqo{9RfUFS`UC>u<*`fm^l|r>D3gj;*<@esCm0lx`7O1r z{B?NeT#W4@nF{UP8|;E0Z8+|0o{|)p7)W)+Wx|1CmUc7g{euqo&n$oJ;mW!a_8B>B zU*;=O6f!B=F~iHP&+SyBFakgbI(7DD3&K#|@?DDOTpX+wJ3nRm!D=ja|& z7B~L^uyfmCy-5H=5m?N(9p+y=DnEVM?)dt^>!8=T*YCWx>D#;COQm_obKP2X8ZY~M ziZ%-ScUyRlfr^CMaXX1kT8|{sB z1d^XmEr!Fcgw0CECBp+XoGRbZsVDqYoN{x~Wf)_zXF0ehIb)M2j8r+MQYSOx9|b7y z+fz>~CDjfgbM<(e$rapuZrvS>cS=x&B^vh0C%;jcZZ{B3k_1b#cQqP5sM5Z|jx*a( z{v-G6v;LqRD-w2tzleCG2~^f5ipB3Pj|9=hF#I3!ZJXA>53u67!KKTppE%`!;=JD&$pIG%c`POfmXt z7THKVsb|^MMbYyhaaUd~0dL}V!<}3!UiP6;g5E^ZpoY&*UuZjA zE)3qCT!Nh}hH49YQ-%^=NG`2Yyeq+TJBEozvGHmvRVdaqg>?Bsw|rTF%DZs=qP`L0 zVL~52-sC!ziHy>q2FJ?dxR9tlE50Ovp!uiM{P&dg`DO`H!?S9A$zud-IW>mQxyjUMW@|Ua^I4lD{H`>UTv6Bl zQWbDOkYBS%eN5QY+w3XhHHe4>i3SP^7H(?P6=@|Rim}mI7=+5B)(7YcI52mM*Q6$}b}-^KhcjBDiS zW-Q0UYP4Id@)AU|wufWg4#{F7<3K_Lk5~ z#&M9TJgG$JW`#t<6U8AR^W)$@FMxZXTVC3**v;SHuxPqAcx}+}379MuEDjU%7W4b( z8sbx%#-Al~4sB&J_QY;!_X+4Mm83%~=gd+g(rSkrZzJ=U#|07mrRiWWvQ;Jj2dBZw zhSo6o&c&o~eO2#S*JSH&R9aO&vdr-&?#L45F9%&hJhvB3q))mUz&%%jj^PVOZYUIr z3VSHk0|bF772-x5UXp4F&*E=W_X(-IAFZY7^aSBWoZC~(?2kFa z87K3LPDww`F{I2<{g3`^yhr}WI_3GaZyt3ye=d%pIkD>>iQdTxM#}iY&4gpCi)|U~ zsu)WB^W$~_E%CcHnyNB%vCW1i(M&y54-Fbrok_j;c(D>qz8iy?ycIEtXJ>@T!{sG+H(X7kX2kbADO{bQ@P;&~4GDvJ~vrbV|@HG#)}$ha&|BnimXPScgz-F8K49yJ@qJw rwYB(;otLM}NYZ5>dq4YcWe{M$7V__KixI12aN7w1AMCQ-9^n4~lWW0r literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/villager/work_astrologist.ogg b/src/main/resources/assets/emeraldcraft/sounds/villager/work_astrologist.ogg new file mode 100644 index 0000000000000000000000000000000000000000..480cbdef53b4ce168dda4b7474a983c434e9e775 GIT binary patch literal 189785 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

cA+cirTw^a2%)nMoG%{VEmxRg{e5 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 b8kw+4R;%M`wOa91_5uJ>C~+X(&R($-3Qm~h literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/villager/work_beekeeper.ogg b/src/main/resources/assets/emeraldcraft/sounds/villager/work_beekeeper.ogg new file mode 100644 index 0000000000000000000000000000000000000000..de1fc0cc4398662ffb1404e8ef546c5453d6a0bb GIT binary patch literal 114754 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 bVHNeAT~>NBkY$zDNlG46>NKs=w`ElhBDgm{ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/villager/work_chemical_engineer.ogg b/src/main/resources/assets/emeraldcraft/sounds/villager/work_chemical_engineer.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1d05e94975a1b4a4b26a8a7c624364fd35ca4a20 GIT binary patch literal 42548 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 akLoUTM8>f3?p;}jf^*JgzXkem_{{;O>SHee literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/villager/work_geologist.ogg b/src/main/resources/assets/emeraldcraft/sounds/villager/work_geologist.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ed47cfac6b1aa7517de1a77a6213eb99aa05a671 GIT binary patch literal 223598 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

7yW|>Zk9gu&{_N9J_x1LgPvxH8s1KV+ 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/villager/work_glazier.ogg b/src/main/resources/assets/emeraldcraft/sounds/villager/work_glazier.ogg new file mode 100644 index 0000000000000000000000000000000000000000..34add1141547e9fc747482a37e4b5ed005820ad7 GIT binary patch literal 27182 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 p3%j348ez)kN zKfv(9-qlV()7_TM$=*W$L_V7`oA7<1`$9lscwf5vWmUtETJkfZh z`S^*pEYQZo#mdIs$(rKqUy;0ukMt=(Q~-~V8e7}z{*QVf5G@Gw>JATef{ii{H1RXH zUuxpB<6PVQh}6W0Hag2Fq4s}oY@${-K%g_A*WBl0au<~y5R$fZTruvSB<(dM3fL$= zXw68T|Fy?y>5^ZS@92Wyxl48V;;+b7w&!i z^!9@AZ?+IM;pMyp4XNd?xiL~J+*SRG7x}9ORn&w=^esza=S%`U5R#b8e{Sbb=D`Mx zMe!WH6|ExGvH15q`Kj)JsK3)<1HA^O2~vu?u3Ub-yPToVzRdx+^Z7uz)B4mgDP_eR}@? zE7`nEw*J2-1-sw(Knj2^JKUH$-0nQlzSH5(M|q;*-yp!I3fg>a?xIQ_q8%PGKvMF2 z+?lA>yQ@a?uMv*T4gx6%F}1ldbpqPZ<{xqwGw_fd^H3iHRB^14|MT_c#9x4kuxHsM zJG`b6`DlKkme+t-y3bUPF8%EZV0i!e4_kVF`cAJTb^5}m!s{7B%@Mj8Ty=%187CHW zLeS3xw&dwbYx|VepYDNBzLXCAoAbMxL0M8b2-MMIGO63?%>h39!F0;Pi5EcIm;LFB zU+b;|xroFJuIf77zw-WZi$c>(M6={9&>~_o!?EtX36MLm%3SX~e_Z#!yN?23H}i42 z_N=#TK{4knuCwQ}C$MA^Xa4?#dqFZocDNaSK9f^?M8Lqf0`77xRe$UL0M$nC($2`OFboJ!;4cP1IK5 zf&N7lU{p4%j}On$pMd0Ds(Tkt0f37CHr(c&zAMZF|CRc-n6$3m1=4^pzmABkp01vO zxAV&sFJx_)$+#DKEC@XoZFcM3|L$1-K@JE2P3Q?G6D^{IIx<5v6wm)P@W04$yWSDU z)ERe2wc?KYAYbpcsOFC7z_lk@qUt&~Oa^Xv4c)ZXd0;XmW<8{5J>qRWQDbdX8}zc~ zAHe*D4SLM$zmRhbk=v3n^UvbX{10+IamUO_#BeCb-+39&>6dI9kzSaVyiOi>e;WV<`uXva>d88yrOiL0EjFUfucs^fe?|;I9T8O@5(N|sL<)Kk zXsHd*I&FMzvLS7gL6;=A7~WLK=6dUN05tVsjQeJqg^DD1bpb*M`aaIsh&S$bt2wol zo(9j?hnP`iDt<~}**gQ$0^p|jUZ|DMBI@C9w#QLIRP>?mh0d{u^gpD!8KyceRnVM!}RRp?2pT|^i1 zQIhMf2ek_KT_~-J3P2FX+_6F^pTC=TT}8Pt6#87nfd@*bqr&e^t9=0q5bSxX zuN$fGw|@|#O7qYb#^i-+8v=x6NiHbRg7R}>ytX4WZxkSS_A4*5C2DKi7bXrHa^I~6 z2zQf44IPE@M=dU$h$_h&ws7F788s|E={)ba^J9WCzlVkjC3_O$ArH_37>hOHSk&M{ zZfM@1p)$1kxr*vt=%^x3N%g3OT46PViZUR|P`R*r*s!FenogREC+v7sRmp}QgrGMq zxuGYWLxIk#YmPgw($%&1!OwduNX4D~CsGZ5OR}y;N(t)Ra*f5H}hRL#6 z%;#k0H-S-A0|fqdKqV)m;s;u&m9#OaoQMKCA2p0Fsbics;i(S^3NLFqzhdD>DvXm3O5 zJg61hft*U`agK*M^y;x)XjOQ4fUx|028iXaLh@VZKwk0G*g^o)BZGkQUeH#Mu06r*m)ME97?=E!MFp@n~TSfUUG}$6j2*?3^iH4Cv z$-3Gqg#ceuNur7r?#;&>oXz51=lO7(f?5UB@v2lWF-knw$rL?zsZN_q&#r$J@A106b5D3V|pg zq;jHHhA=vSn+huWOlT1pv`XRMVxsonBG27pDm!4EW2zzmyW=9DG?lF5;^)LfMJgan z0GbN}6b?<)HM|D}m;qJk|JAEQ2?(@#h7$DY6r;Y91P{YSzLPmpfPMm4et3@E@_1(y z3fzEk(jAZU{^v{A87i)Vo&meEOThdo0d$@CmWndZu~!^>%CV~*8~>l8BQTcZBAxUJ z)lul(-=gKE z6@KrlKoM}#;&Nc+axARAX&KE7tY#nh+ZjBtfNFsG0R9Oqg5vmOIzx%oBZ9A{1tWLaoQ^9|MHz|RuZos5AtsdzyXi>KK~_XtDN}l zv8ZEtfb+8dO8`1L>HLJCtw?qEKLjWs02tL@0?^UFxnn6HQ2&WNuO!{HD4;iBdBbsm zp7SrhW`XecFR#O$f7^2a>&!or{vE~t|Hc2$E9W8H25$n0 zYe}_?dB_F8*w8Wc?Q_MYyu3jbr*bishsVm&24FHOy!16OUPYy(?WSc^T8OsxJzxa| z*27V1MHT+)n?{l4i-wMrpYwnf^w_~lVIdz?97`7HEWb-)CLeP1RF7LkiH#WsP#0DK z0;+Mwj=hraffZh8l)lRr&`yXOh zJXK17D2R}yWDne|tA63wD~6d4p^>6OJA4Bi+i^n{pB>^N1bA|P^D)cAA9Rj=l6a<2 zYN>seOQ7G;t{?^D`|%&8y1x&;XVm;j`vzEFE`Z(x0WAtxfI|P;#NxwWsQ(w3frkW6 z319>MqPetZuqb*iUt{|V&8eLJD;aU@DcV8_*B-_WKaWg$6|V0Za_jX;Km(p~Xx{@G z@ra>K9JRpK>8eONlw%Uv-)2^2s&-y_sA1^HZ}pp-OQ`0$aOm}_NyBAeIk)&$?inSd zT-cVZf&upLptm5<=_|t5sIDu#d2RVW{;c80Yk||o{cR?cid2fUZ(lGeP@I>Ln0?1J zy&1}w`AJ82<+z{Y=js_i3lpH*U((X%mp1o7=daMS^9V^kRMrBPW8h)~?E{OT{_FR4 zHj5HcGI9!vkDoqMQPX&?t^1!NhS#rOpYSRG_t&rg9wNL3g8lJze28$&7%kbWaNB@P zwl=eOawL=A8(X|GF)}r?cXe|FKIY~wU?(RRCr{5|clY}5F;HV!fYjQEDLB49HrVBCyw=bOcv^T~z3edZW!DAyTO-RNjGR!XD zval$v-$FG-FV`TGAmLEL`$ClcPf*j2%my-Yp48~tUl78vg8wEkSGW5JmC}e^{9!G_ zn(P8QDh(Xo7DqX6z09i1U;FqYSbfMT>Pgn9t@kyA**kPbwI|Z99^2M{9}HVfEQJ#{ zzXVJLJVhQb;k}6Ck{ymg0Yv;@I_2$0e_niHq#m|Wb$_wKr)+(FV5+aOO1IChe{Ivd zbR@ju3eE2~jVu||g6HzawpXf`1epzO17)2{WvebzcNFw$P(HmTe2(D!%}|KRmz&@e zD8m&)_VlBK6s-!)S8E*(T@(-jbf#9+uOP|bF z?y03h-k&IIX4h%%!lhbEOdgOw#ds3C)~M+Wv+3p4oR^7-7J7u6jApyI7dw-+wHHTk zdqX%$7ekUHwF|V=#?b8Hc0-K1nYO7Pr}QijP(?K=l|~JfPc>Msa*-_VOTK$U z9;_{>QS|A(QD;tlNuU#h+|j3nT=RStCi(g9WzS7NbGQemZlA07LZE|00=_cOVB zi7$0)ezRP*6ojgtH+o-UHj-X`m$Ui6*ZHK~&?vj(tV2VCzx2?gAusDj8BHO~RpLuz zQ={vipUH$l*!DFg=ld`B#qJ3Wx?j_SKb3`44a#k61=8uXZWvsZzw(XT?{2D4XStP- zH#d|#D1r;_V^*(x70}8!&Lg@&A*9HWb`S5lK$7g!n1~6VC~9y&vy6Xvt7?3VpUd{t z6_8A4%_~IFdo!BZriP~0!d_{$bwe+g?LYiePNtEy7!qXQvq9E6)-J*^{K$LV*F8O+ z@0GRtSZ&jD*-exlb$3RSr}9qEMUob5jeK z>6%5thPefd+ir2fgJuGy%h1yIVckd{%8G+tBTKFq2 zb-%vpSMx)x`80uPKPKUFtok2n(22Y6ecKtdG%NUU)UlVBu1D5bQa&*W6$RZHk*Va} zC>`0xT9S5XK3=1P5l;LqVV#os;AFg z1-XX>_@)$6b_yDO=n=du*!V}d?W~pwK5b#bV5&%tFD5Uf)FVf*dnhs4F)zjJF>?SB z)wS5OqDQaF0*hE|Aliz{b_Bx%>%3!A?EHHz?YzC1rmrJOy5I-+==!6Sy@{QrROg-M zq%qA3kDcc!yxn~_n~R1*B>ilvA6U^Bo2)iS>90Nr#N-E$Dx-D;vBtgjrq;q{Lvivk zH_ta<^Qrh%b&5202FIZ;2XTQ7O1;`WdJZwpPPwmKZihhA#ooJf{y;KCA4E8x>U>8% zSh-^5%Ol&fnttc=qYgWfcug-6@83Bor*_`V_qHZ+*7B1ahpO(zd>nc(8(A`n%lv6$ z?UuOS+uGgs({E?7t1q`cq_8JR?9ckcj){e~xgVs>Ra0Vtkf72S{y-S4*|&Q4jo2!A zbcbLZ?MToaSfFlW{XJ4yK0c<5#+Uy*&vNSy?V@(XpQEn|KA};I#Pr#jXC~6%8k7uX zksKdP&#UHezts0;WqAc=2FzBG7Ro-aQL~by^)*pL>H~}3t~1okV$m_$L|UuGYy(2T z|KV3zD$Y60Y38*sydJ)~3YiAyHHlo-Ec#>SNF*QTRvMTP*6d+X=GSK$FL!nr_^mZv zyb-ABDEP-=`$c~Ouk+BzAII0V$u+BKV9M!JCaBb@qzN?J1G`kxP8=7ZI@%|Z%+IkF zDdGl|GWu*dVhzrJm89cqg3)BFV|UH9T4o-gKRDRPLy~2u-dU|rX1F!$56gokrmCM; zzFs#SaSjdQyCUt_vY($uJkX`NxK!PO{jUA^Fjcg~Re@~qLh4Z9M%C$4|Qd-}Y! zp?@M<_G~P#Q}f&3j*KHZnf*9Nk;6Yk4GQhF!AM!KKi;Wl&GCP4E-X}KajXL98XT72fm^O802!E4afXs7_l^APp1McxxRr z&>ZlB;AW09c8An_*Q+A+wHm4ZRu6Sumc-9kd~#FA5AQvA8LT8Wuj#m~lCe}3%pD-K zX3Syx8E$e$ruj>PrpFe;^&MD`PtXz+vA49g@+C*kE?&Z~CMdw#O^63$bcW03i-&vK zN5TVpdrKa4 zrx*=OD^h851r3Y&f+YM4u25Jtr&mwsMVfUyrmlxW*0o`afs;nT@54zkur*t&`ELOq ztcjT^29I*3Ay8rLs~1V1&8~^3$}{7#xqP@IsY~9wd%1L%ry%D){qlH%BX+nrveL99 z`4b+f^ldUno@VO3dCocSpm~5GG{)g_Aqd$pO>KiF4+jTm*8V6mbEw@PEVEx1*oI6V z93IwK%bd@?xDfj}3iD~YvwC^(>3z1!SB_2-Ce>X_%9)o<*lX?9a^}+-YnCIm8$)g9 z&rWOGFSQ1*C(D4;I{Cz-FRk1T z-chTyWkZK!4GkK9UYcG|3;ZICjW{DbomXuw7Z1V=*WG4g-JAzlaD95vz_ zK0=7v>|j#K{`yQaQOn1fxE2!2vN4($^zI&*SuE<3^%m27jsAU}yEsR@dl7pqPWCoK zt#MjPNsD@2pA=uaybHUgpx#)i{QS*FL+$~fs7{S#&quA{MnZ(L;IDFwHF8T$V%X_m zkAt-vHMowl4%D3dJH546LLynlbu=X^*v6`FtkVt?4Er2c>0D7TjG^4ax6?GvdN_aI zSM%tvcS65r%JtG`>nL`x8lyV#bBtgt^S2+SBqdN_XQt?r$=`2g$u;t(DLw)7Sy)SA z?G6F45J^C+@*^!V{9b!*S?ICMy3{}!HE?z#9g!e95FV}H!ka4Yz0x|f^6T-U2N+Eb zY5R>~Wq(J^5PYcJszpNFkxNxO!phvyY3{s!7;x69jkdL-MKSy8J7RNre4{H(ek@o} zJx8Fll+@209yBZ>8}vJtSOpKlH~7?>*t+>O$m#zuRrU#VSFRE9{qTqOz>%>G=E-Cu zT8j;FkF;R(es)_+oNPA#4p%F8O%rc&u)pV-K6Ty?+V0pj5RyT*>M|kisgFN;;8FO!o9Z8MQG+4t)W;?(I3zw&< zpO%!GZWLZfkmb}V`!Jg)PQ?s?X*CpQ+VxWJw8|tWzhf}$u`S**)f_w}H*_8p3X>`? zQmDHU;Y9vcAb{hUl=jv!s`||=R>8YFX3&d^^9$Uz>So>vCgrMA2~@TS+H8*)F=yrB z$b(f^w)oVQwuua~h?-H3&4f$@jt_Dm)GW6p=oxsrgywvlXmZK9sJgeF=yy?1x}3;| zZ?oKgn?jHqQEp7j4w-fH^MgJ{)^b~WxNwdRcMgVt;^-*h*?>gf{CFQt8&YdU-=)+S z_EtAw9g0`b88lGAd06y}1-EWVb(5$~j3P-Iar!c|!YG@|LjJ9E1fyEgECgm^z7$k7;a=lQ*Vty^lEAr3z@UuF9_{3}; zeWmGnX7BzmU5)OMc4r^fA-$OQTHg%Y?MVLaEgF0zP2%Bx%+sU`iESFqx3A#BKQ!fzc zdQ3#8Ntu%kZ>iu$T@Re`1J?F}MBI>GSDz8}`oa!&q<3s<;Sf(F7JZ;v#Pd|6!EDyj ztEV5E5kIL?&b5Nm4!>o#XTWdAM&b3 zmDinAs0Dek>9D)3Uk*%flCY0O$2!_dW$%g)Uke@KM;)idaKTR{S$o2bTN)UulM?$!#8oGqc=8Am-e$7AL za_CoUy90`f_w|LPqlbsZc;%BmR$F%=L#U@pVgvL2!{^BlMt0*vT$sINv0FX02QSb^ z^By`Qau;3{DX7tbqMG&X>%|b$6Xk*daVs#lto2dBEU4d;nq@QbEJm>3f#1H~CYYWO zK*^OW7c@63FH3I{gik@zjAk{UN;>USy3RP?G=t|J;w$^R=kwn8P8~(1E+e&UZwa@c zV1FcUN!71-A?>;cdsT>u`;*k8mh_;1-do^4IdM2SayWjY!3o_ae%Hed40dvMb9Hrf z@pK0}ySlk~c)NOfx_Wwef*oAk-Q7LFE*^K9Jz44|+U|efmnRaRchojeB5IMau{rFv zxLFg#$4_zXYGC>nDEQyOk|m3+}By|8?o=X%+&?ZJr(CNpHWLvM#ilkS0S~UQ04d>+?*N z$SqJSU9jn5OcXP6d2d>0VtR(~^?I5=VSjvLnDx!7%@G;exXj5LKL4x|@PV7XgQWbS z`y}#F2^c+HF)w|gZ*{O9vgS`LOj$1XL|0oJz99QjL|64y1N-dmrC5qhKK`79sDg(M6>oU09{%zx8e+gpR{`BU zXzuY|qkuy&GoII8qQLUNDP3X_Ws?tiwv&nO?&|4)aIL|@xCb{62m`yduPlkEq20x< zIpeQ!qTD;~A~l@~<60EKJ8sWk1&sP!pmJHw-p$>r$;7 z@jU`}GCLnkHczu&Y$0uG2Xyggvx18y7U74NV}o%ivAj|~u?5-XtvfGQZJ%o{RTVRgp|D&IZD45(BPc*Jp4XWzw^o)7QbLUT#1EM%NA{1+`-=9fCjAIj9UqUEVq{!@)a$|S0e>)0s``&i&0FyBWE=3>B^zP-L8|$JT zZRD)l95&OG3eF>gFpVy?u)f1$t_j8zN&AkAFwTID>*_<31s&u9R-Nn7)E~*ZwtZi? znDT||ersE2;_i9bdPnc?StDoy4kF54%9ieigQ^D3IjlH~R9mXpLv~}rm*V2q{XF($ zWW9fn(qQ9*M3qQKwM~{h@a?@-3=MeF1;uIrh9zNf)%T*bF~mK)@9qI#cHa)lNB$62 z7w!CA$ZsZ6=tDhx_HnU-jR^Z%m;>WnjdE5WD(OYro3n3KPh~a>e2rk7)Kuso4YqX` zv=odZeKzU?x0aIkOUKByO$Q;5MzQOS^+v^IHD)V=vCjJ4s9X4pr<`@&X)Hz(>=z75 zy_O#c+m>3{dsJ;|>Wdq3(bfVT zC?B|~PrsP>G~LE=|8@Jg!$^RICDk6Saci_ekHX=bX>U%4FB|IQIa8OGgq6u|@9V-8 zjWC?`C&9DJNIvpT3;3QK%HJ8;7cLNzQQJ+nA+Fn_{7jCH7|r|}Y{ph^O|Qw%`VM^! zK%*N48`kOIH~cpiH$vBqt2;dZ2=hB2EU8W98of*fPjg1Z=Dc^4RGyuDw|{zs7ten{ zm|)vB`TcQ{0oXz{HVd?szNp!2hLgo3LeLY;tx7h9mrTGQ2bYqRZ zwC}tRq&T;sVG=@Gurb+1nwyJMb1Tev@?c^SB2>pAc(~8 za>+?N4=khow7*@RY#D74_AWVV6xeoMk-mC6y!P+{<*ngcnd-q3C?;OKi#)mDMr`S% z>JITuMu$(`aNz;bqijT7CqTd(+4c5m?aezTWI`mP{pqJi!NU*){q`UP1J%&5d>Qmm z?X-vho%f+QI>G-Jt+>_sJ10e*3S`RQAv%Ep`5hr8>Kk8fb3u| zztuhi=Z0;imogo<3JH?<-X9;1R%5@*As*~~%vI^F41nO4H2TP`S_I)rY}hwY*n|zhsG+?7H)i(vCgMF*V=3|V?=JnVey>>o1$KtU|-1yoR7cpn;Su3Rv#E)KVq-R_{wjg z$NNyo)M9XDQAKp^Op1}@*T$}bhKt2_iU){&aq3fl6ekn9|EdS^^S66vZ&=Ug)p;M^bI8X5YSrBRM|!`4Z*_*E@PM&@PZsTiIEh z|5W4MvQ?PV5rOr(#}(`XA;XWW!OwX&qkby+Xk!@05TS5>%zvhB>TCK~wp-^Mz6mpN z?#hy$`4MY3KlyUeP|p2=~&P91p^ouX_`S1>(Y#Xmwl2`g(9nbI5X3I+w|19g{KNgsi5cw9W6gW_{Ja z>iOt=8f2KNni24|P!1g6oW6Y*oo9R%mUH3KH$@mbJN?~$MtzFw%^%nv86EmR>{zDs zhaEu3$w#DeWNfs!ye|eRp0kc7h9Z1-LRf==($FE!^5B!Gs&h#$;xu9TiOjNgwB&D5 z1Z>?Q2Nbhloj;a3XK&x(5@yI8K(VL>&D{~Ob)M6!OGHRH(nqsNDLlkTn#3!e&uj)+ zM3WS{Vq(h3D@rL+Og6Gnpx>&Lmw#c^KiJ*uzCX?0s z8~2?>-*LOHtl3L5Rpf(pn+7aJr7!I9d(@!y)eWB{jdD8l8(OuKn)TdJW@Rpa%vfPn z@Qk?Z%C8iFUT@>0znVoBjmhVsex~C?nPRzvtc5mQnl9I7B|0R3@AJX@WAtvy4cl+dJQae7qxDjG^fSyQaS-v;* zdbD|JbJpxbfg7B2r|w=;aS&j_Z1BA>{z!R z{+#aH03M9I>U;KHZ4$D24qVTOw#8QPv9-9M)(Rv>> zd_F9uoTg@QihZu(WNrLRN2oeBU@op$h$;#u1;ykoyjI0&&eOPf-&^mP8(Zr=c-h;> zxM1e*Vv8hdk4`kW1rck}2e>`H^q86^QmzKIc<=;qzz<2@4}SeI^7lz0w$UD3f;Ff4qw zM@*w^44I8MT7Be}qzQ*8sheHQS?qv~1h=h^_lTFy{n-8P`)&CRjh+!cY7eWbaYIz= zn`2``-J)GXaZS)4B$G6=DhHv(+rBqrdLst2%E6C#Xk{lKMZ%TDB28)=S-)N?ZquI$ zALvQClT0l8Y8jC3T)&L^BCqsi!Wc46am$}Mrk3d<7$v7loC&HV3u863ir{q#;UCK%RCy*nVBH}o z5pv@%xbVzB{k)58e}0d(!nniMUdVr8Q_XmB1u+(%#@ym@21@vFBj|Q7gIUc{!6}9n z0ds{@jhzox3*P?r@q2!Lm|*K;d$S;97H5oe-&<~8Cacf0W`!@P);FHFw1517TrnP% zbtWgAtB@xjb^hrMOB^KdJsbmvTI5OeIz|#&0_6ym?>=pw_sa1alDDjx(~N%JEkXI} z7m7yM+>~)m>?x=fraNkl|CAzh)F)q2yR{CVf(dw=;Zvvu_ST-_9X61JZ`dp(??*>( z(t)w`Jhq|l9-nw^N_}-&^dk#n`|Qy#MifatK1D(IxNXX`GH!?|e%dE^28Oe&`s`eEF-A|HLZB`9f_O zo0hlTaFoW2vtkx1{Pt+Qzj1PeARdGWqc27}3Y^Y^NrA-n{h?p+WF!ukCSI=l!b;E@ zUg9r5Z7iQgc5c|3-BdEjDsO1w)7%l<3z|f%H3U>6;V$}VaCGJ8-8Xp?5{wxeH%DLL zGINsZcst&Ph;T$|JoxTvG8CQ>2c3EK*ArQa;IJ zL9heg-u&sDD08o)=E-U6Dc?gcHScqK#B)TYon4FNhTV5rmHjPW>4Rdb58Ax~g9NN=qG)_Fr1Hm&SLcvNFV=E}QgkjE z(g;^C!yknOd%Xfnl2f0T#|y$&2O`Ia&nk}yl@9Ne^{h>p`j#wBa<b4hRu(Pt6-6LRV>*P&uU(X6^}bWMa#LfUhC zx%Wl?uSk4?=@bVjbL)8zfo)CN8WXrGxK>e`)s{irUND+&LcsAa$l=I+*ROs=oAMu! zY2sRwT;c)3{~!+?TsMNvAJBikM`V4rcBObu)3fJRiYB?T;`33f{)ClMk$gh2??)B# z3a*J4PSAtbN%np!``(?;e{YDU>z|W|*HZs;5&^tJ0%DcepS$bn?B(g<>gwd|>gDF* z=IrR^=I-g@?&S^!4kx_8E?`eLcNeFsfvXO^Sun_ts_bPn>r-l%T7lrH4Iom_9}Jl| z$KsjD?X&n%Bre-EuWrjvoO+V1Cd8aVbogV2X&ARe4XF)*E+-w3C-9A*8;H~;@*CFW zkC3o$8E-KVN62TQeAW}YF5S0xAI2T*J^bNN_lSu~0(ewssI1T(rLkQ@M@NpfJcs3= zE1aw6ht|8ySg6-D7i6y?zGc14K5|n3Fl>*Ah!sbpcBF;TnpMq4FN%8-!Sn_--MKdw zC~djA^5n{HymadD3O3AkyXEEPWcIb>EL@sYFm$`fHau3yMJUXv4diM&vO9)oj{&|G zv-R2lPLW^v6MAvuSgt@Y%Fi^=Hy*K2KM}bBUJsu6X&LL)Zc*A!tPA`cS>wE&xFUPA z6h%wz(5>nB{t`2$LT&Bnsp24S+~oxw>lRV?EJ+62RaEk3>xrCiV@_%?vn7Rr$W!2u zH*vSfI)~L(CxVX57(S6G?-tB};#x<`1|qtRAoau7YthNcriYs7qSYN~eEUwcJ^p#e z-su*(d|oA=GhB9>buoLnA-aA?7n~k@s#JF;)VGE|JrbmzV;g!Ih2wOGu&V{ip*5SA zk*&zwy{l85g!Irl;XfuH7u?^9b#sy4$(QbEDor5jEJisvx>IU08eo0?YqSKY7^;^aru3ZsZBEj1P zsyWu=ABagKKgSI$7q(-RYDs9y3|vudC)1IdnAlvbCo-Jbt`8Gu3i4H&#T`jKF0bu3 zTMQV(8{}y0cvkilHp!_S5TMht=;-zFh+k?WLAo;;wx93Wl-fJZPwYIq+q5xj(#1;1 z*?_BEyO_Vs`C?Gr$gb=4)U+SXmkNewZU<*;X#CY&ss-30en7Wc{}m z?&iNSdc=ghx>^eL+xv8C0yFc?x7&P;XB!$3HG$sm@)5D13AN`eCnMO>?I0;wJ#?IS_w_9U$aM&p48&R{saw&9B^i8tT^@A32-{qdEVv@ z;EN&#m5tHSzw0h5ogRP)zz#OOf>-TPX^_p3HtztiRGE)RTRn085n(pcb!BU7!m(b@ z*6lDC#dJ3W)|+M%Y?gC>MEn~r{Bs^tmW!mdqdddo7j7XVFoA`@hYlU3E|mNilZ+0d zqiKrkKyfW~5SM)1HG+_=!-p2`Y8a^eI=4Rk?pt8P#`4(GSxE}DmfCo66(su~EQNF%WiojNG8d1fOjbX_x|AM1|9Zn@ zDr?MZtHgf6xT#gt8I)H?w<8`utNX(eGWNY~?)P&Pxp|vt*#X9^PQUSO2tcQ0HyL+< z$gb#zxJ5ge!u%18%|!sdz;8Q{Gl}ej2u9Q-A*vy@`!M|8jNdFtccCM96o+N&OvM z-j%+F`zfY^Ln*Aj6*`aM6V>zEC=+nUjPH7IE=?)s-5Mdmee`U|Ro$Uy_OFMD(M1U( z82Np~1lxrK*bzs4Fj!$Lb0?#{tT4~^HRo(Y$+B@B+56I}#P!l*o)n`kmaPhEc zcm)jUQq2fp87%{k&ILLq5o>dT?pId_9ULVHww0m`Q5JaZGLh9UJrPTZ6BO zG)Ia$!Z=VbYr_b$G?t?!YtEh5dnx&r#>a}qB!VPHtB6#f)@EAU+oRjGZsfk55|iMT zy~{a^=)Ki4GIR$;S{)>j7MR1WEJbr0O_Z~1N~GUq%8J_%I(~{i(B2PL^jdvE9`6jQ zjhWHa@95BEuIwa*UU1m>6e3d@7%i1f!+TdRx9=+FZ7O2AK5Hri@ZCs}mvi!;x65R( zAAMg-<*$t5KZ~p01VKOftOJ?W(S>R*$I^?rxDBRD2d0+!3_B|*$vdNce1A4~ShHLb zIv9K2B8dl+;%x6%pHwy4dbAe$nJmJLEZ+CcZVy}XT;*K2tIgvDiC&NUPZCe zr$yC>1FAi z1vYxn#r);6%b{5LRr@q?!~zEPq)&Q%3=MBr-8*U;%b8x0_sk*5FR(TUN}BCw_6EK< zL;TTPK*MZY>wwlz;ue&)R#`nL+2b56T@Lm@tuGF=L>iK(NBhgA!W%0B*G16dZFSD@ zgmS7!t_~jZfo)fd=2`XqU{=;-?L)LqF zc#R0vwOx>sZ|F=tUHt7nxNqR%#&qk?2H5WR(0>B6GKER8$c>qp%r)ao_UV0#uX zcoOa__AqB#iC{mGIG8}rZ;O}Yav=w;V}2T!7#(VuF1k9nIE=?Z`sy!2h9VZWg*MWT z+}eAG+yY|Xd}utlG4wLQXTm?jP&WNT4y?4v%z`4Zna|^~)WsXA`J`=D&8OQ(N5+TC z=Kf9_CE&5X4PPmQ(R5WnPI19rW@oosLvncXN{xok0~%Q=C{<7=c!O(Sf3Ry0UoED} zb>lRXbWU-wH8O<$tFTs1bPQa3*Cp5s4k?kTMLUgw6JO1D2}zW7U<_ zi(kBU4}Q}gh4rx63e26pYEBF3;{876ZKBf0sg@EXs1J%}6E+XhUJNe1b~+QrIjMJ9 zJ!xm0m1RQ5O@JCs4qSJUGb8q=l5Jj0@rRO%aJ>2vO6SmV&zduFXiBfgZmo} zc8fA|as3932cI->M>0J_HRp6#d*vs+jD0LJg6|RhcAeaHId->+8w%+Te<>OsSD zM~s>ea)Opi?L4pX=Ccrr_ZZQ!N6S9wTE2o#Ve@qV3^a4E2}Gmp{Z(Tw zz^2FaE;Kt&lV z85#1E^=nELB{is6zi8SPe)qxY%AwPmX^y#WtO~+39(!e0} zOAw;Cm4{e*(<`dtdz7rmhtVsO@A|Uq@K7zwPRVkV>LV}VDB4S>8k_YQfL{=rA-YMq za^LXZr<0JDVP$<_v*|>6`CBXvQmhcTcwfHwo-@Q=-euYh>@wORWhB~Of8M8}_+`^V z)N`i!qUE%2EbaZeZ_;g6jj(!61GWZcF(ri%&DR^>;5hYF%7ik6uYm7n=GCw>#V{Me zHo_G2Y`K5ul-yia7P|oHk{^G-X7vR zDEL(u>+|?DQxELz7Q!V(%6XdX-p?Uzti%r^2OF#t=D@6}DGf9M$XuLK#8IgW?_$mb zf0RRIh2+j*mROnR{1Ud^>5N_M=XW{#<0U2G#nffUOy9@Sn*sUca5Y{r$Lrc_F>6@I zz_K0O*x4}!KPy7lmlBXD?8BF+v)42xa^TpOrccx2-N-jKrqw|ni+kt8%C{r7ur^IB zksH%6|2!L%eZFW6jZP^6Tk5t@-W8hhD(QmJ5a9*2JTh#5YQHah@v4ZV!eY$IPxP~! zMQ8hn`Wkvec;VH=NvykYc=MY?fz0NQe2Rkw%IJloGBQ@47i3MGxrF!8w3&8tR}t}GE@x$HWrBmvtOj%n3MhdQv>9F--tyli=d~2 zj>b1iFq?to@2nk5h_McFv!0ao6ykjBp(A;E#}oQ0G3MNy4km+{{6S00$?ZT&KJl?j zgC+di-bO1rXT?9_GW|Q8V7pjCR6`T?fcI5^R>==XMcK+oZVpgjGoN?cGaW(b!2<*d zb;v{ABMyW`aSW>gD)>&NSp%Vee$}WKx?x1BVhdg>nV;>Qej?|I|245x%ELOfy!6?r ziS*b*){E?@Ps6YdshXN(2@<3^)RYWqjDKh)(qn8Jn*yI`Ix1Gbz+a_p=1rwr9Yqx? zd#!k(2tJ)0ytLkOR}dbMjxZ!ky6aATuA~vnqj;qMX(j|e(y%|Cy=Q%VlpHb6E znk>6)`^;i!nB-y|YtPDYb82&&6sDRh9xxZUT0Q1m)iPD$P{v&Hg3G8Tf+~4&roQOL z^$H~so5W^ePrWAx?=8u}v6<1Wv&|la?HIs;r&A_F7Gy`mr-Bfg4eFY~i;*cPn+*Sh zbrQN(?tr)~pgDa0eON;8*}nTrEVwc*Dg4(DFYc_XiY|XSy;aY^sb2eeZy!DbE4T;W z%w%j@ugypocsdx^e08XxVmqW9PR z&@DPIDXUwTqReNGZvOLM9A2yc&lv>pLpl)WdAo5=OR$@pn}wx?lbg4PEf_d=0N#Lb z0(*j8!A>sruE0wXF4pGe=Ekr)T33qegj%8W3Ye0tgREF@E|1cUT?@as+F$T*;nzDN zjWjj~?vzg$8>wEF?|Kfl`dH&5k;~k8SwAnTgsFzk0k6X;KeMH>rr2F59D{)z8F;~s ztR`|A)C{7k#h3%nSk;}m3))N0ny-Ne$eDci^L~iqhnvVj$RR#s(~!{}eynBI*s8N; z!)fb|-ay!xJ-KJqhYwQqvY1Qvp^*1GGlS+7lCUXGiwzn zl{V|++@lv0e$osoJ6HeQq&|}fi#OPh8E5`lN?0D>WBV4qW8-IC8?f2{gYWbL=h>^$ zx4cmH#>uzvvrR|kTZ20cvDv{dcEi{2=XLF@+-(7VCFg*X-*-Iw`>yC{=4`2t_HC_f zB_0DKWtIAk-adNpbH87VeJ{zs{TU&bsP9i*4r~TFP@sr*vZ_YG`kKpkBb~_4clNXv z4`zBXfpgc8o`Hu35J%i<+x6v+0yq~ycDd^IqbzmDj76_em zuV7_W=S)7_S{t(4XjwtMalbj5LVrw0ojO4wi8LwrXGf@VK< z5sYvsk=ASMog3ZqSe2_@HS0c1QFPEL9N-z|Z}X3<2%=lJavX!|KgT2WX4{wcXlbLt}Aa3&{d3HHN#B{C=LQ!1Z-<@jJyWnBUw$!4yiDV3aAtO+hU7v&vM`p@2(p@g0$rzD0pPF|WZGRw&^58(9y?5Fpc@>(gAfi)_w`t0cFmV<@P?3stkml#09bvBDxDtJMy)f{xtP+L#* zq`Yi&y+@FYMvlHx{LPF#guFyUeKhq(iztnXb!5UT8y?CAhm)xP34#KQjsBd}TOxAZC-?iE8D_cXp6f8ST!&$pZEUvve9!rP&-cIg|L^mD zo%4P?Z!fWzm-j#ImdF@gtb}tfPd>X2vHnJy=D|0pR!~||o&5qf)O0X&cQjj2Vz(-9 zB&^|Zh7=IYfjQpEUH_g7%0M#q#DjqoRphbAxJDtW;Lgd9=fuI47KC?qcWTke%{%Pt z#pujI*N$L}&%x9{o~d=?yOGt`)YV_iIfUm?NFkzr!+z8G^O@U&bnJ}k<_H?F^^*=U z1jFigK}@^3<;6nROHrA24rTb*SH(QXf8 zB(b&?!B0|2@#+2>y97#a`*jbG#j2=}*aW86uR9p%@MRxmvgY*0$Sn>8Xr4b|D$QCM zwd}7=PlC|j{ZZcZQOp>689(87wSS(#We@e1CszoG={L#fpJn#c?-S-iKh-^m>b4d0 zUKptDr8q=fz`=l`6KwL9@$~_nH_yM^l(9X=m zLh^42yqO??1Jw86hjh*9$_Sx0eZHr*Bx6@f8(DQDRHWyF-2(KmD zZcK7rl4fYecVmqRf>>X0SQ}!u@-+67(GT)rbQ2jgmNiT}+_aW4)ASX3eCXmIl{;qR z#DR@$RpQzlMnsVs^ac*T?_ubHZSA!?DeqZB% z9(b;>v)-Qa;h?77=_%U}0sI`KQR5PGIHMb12Wg_|<>lGyk2sjmV%4Z91us49mk_1{ z%6!p?uxp}MJVH;-G@ofr;GZ`>QUKj(i1O3gdL+LQCt{yWta@rx%Ai!8EiYP4s&s2> zjp(OFwH;EXeI0&%al9nfdoEw<_xh*fp*@Y*Oq`*H9YoQOGUIqm+J`7vGA81vp&*oO z{p?8Fy{D4&5X^Teg|Ox86-JyT_g4jMc-SJ6F~#}Qi4w(*8n>)gYZtPE;jca>{rqAO ze#Dm_CJz!MHU?$H0feb1;<{Ia+nZ{2w*GR*p8Ka65@>molS*FlWNxh#wc8xn?2N4S ziV+s-Q8#?&+7=jA5I+UDFC|F<5*d=LvUv3ZL50$MJ>Wsu-EQpoKe?s<&2V^2T`Q-D zRpr*(-a#mgl!|)>lj~AOlc&AW%%8th&X*Jf3~@AeJ_(_Wh)b5W>1hvRG zvO-&U$y9h0@lP8$c$1+Jq@l4zjFwjWvXX3^fpm_Lmi2__0n2Mbh@HO${kFx2tn`-@ zD7_liuhW%{``w4PFxM}2VP~u7nC~be)5#`#zuY4v#>@ z9;=x@EFASbXYN5K65fY#Q>qod_ADJUFS2?DI5=Pb6fpW#<~r?`rreoG#DfCkCv}P^ zOd>rs679le*aGPw_4iR-*7CkO!W(>>o0k4$ppvSEz3=1#hcZswfv87^$Z2R*z2aod zziHU8hcbnM2S|@Nz9@3$^Fux>!&vE@x!HQWdzVy|%W(rttQa7_tF{CIU=!SB8xgEN zT7Q<5UA&L1f3vIjUh0*A;=Cwa>I|yTU`Y+Jarq7ulJzp2R=TLMx_i`wOvHr+%9*nk zh^52*aSv5-I%RvlBMN;Qo5VB&DS>iZYcuZxF~ic?^y}W4A@=u=(QAt@yuU&(+}a`U zxgGA!4!=J=GVdlk6Oya)=(w(e?7Xph$ZwD@rX_4{8ckXo2gQOJn*_O?pWnytBxiJE zY7-@|EvHWHrqu50ajtAN->LplM=g;~I=5Bh2`dWyG`MIJtOIDwaHKrVJ{-pyyUHfT z0wD_*Z`{6Vanw?V`jUpYu4`7gY2O|@DZUsPjaaDm^6Yt z>Ey!NF4&F^0WN`J?Q2{%SM}Xj-a&bJ9}JD0D@0t=FARCL=ykQ7UdKMFJ=#EwL-x~c`U#v!0mw?Z zy4^TIHJmv|Ok_~~F^aSSXH+g%;mwQ5lh(B+L$T(4F4dDNDe~M$0UTQQAC7~|7N9NS zF>$`KVwYo-zhF$#MQ$Ga!;$g*_oam>5u4MS_VqM!QV&Y3gXoNLDs#o4(4xtBQlg}n zK&~LnBZXOyAIZ2LYZo0!sSE?v0J>(r;Q>L}6df%`hMmM*$fz6pTwh|Auq`YalHR3c z`@yAKP$3eE+iu1piny;yqJo5P7l>XOo^m{UN_?Mx7V=k04LTe?#`<}UxnN;xkftgA z1%Lt4j?Ol@SpE=lB4asJuwh&YsHbMyC}vZr0hxwia+jibs3VcnyR56 z=Y*WMh#e{=Me!D8!!Eb9tZMpn1qNCG^TL^L2R-9REZ&{mXC_~*H|}Chc|$()x*n6e z!x})$2Uy}d8wyWjnOoa|5lK$T2w4f#CSy^9deNW0?pp5LwJ*4!Fzk*zaRbj0Ri)}b zA)C?8(vRX&wdetN(-b{@wEJx8%-7Rx0)JN+`eKZPCU}w`3_W3O?0kf%jJqn>BwWD+ z-lD?zWhmU?7(p?08XR|g5Z()G)3kft+Y&xsvm-#*EM74aRG=s^UIuJT-K=!tJE`*L zT$*vX8BqoKYv=p7M2>&=$`9{nfkLR}>#;sQaE9PQx_wOc*_W++SN}6@ml-%~+Qj|* zrGF{m%)?*IEm(X%c@P4Hf_dxm!KYlilAzH5A?<47?oGS4)7MCtpfbb95QLSWDAHCK zKi~Az_}6^Zj$D{QpTaxGhm{)xjHU7?OzcaJU*C;q-er8JNKSs1z8Y1*ckgza+Mpe; zYu<@=9_Fkb++Ay4Ka(QcEGdfk`@u5|LMH;@naBtrV+RHyf82h$m@(FG8UkL#zejIQ z00kDqNF_RLod2-+cC+Roc2=N4b<_1Sk3hkWkC3eZFQ_INdq$N z+1wu=5msSEaNXwLX>B_RQWoJ7P-R@BxFOYo9pXY9ghLbFW-acVi9g`~kRJSFdF_lX{O%)aEth~kw^Y@(LuAPQJ3e&vocwd>gsBWp%nbB-pbRHqeP<6>`Ya_37cf5Vd?(V}=lhG+XXCGW!#O}M3RJHNYWH|p!Q|n~kj2)>`8<%>B6ga7d*yG3 zlSJ^VhMR{dIU#>l(d}C(hpMV7vt`K)uR=c9vnyjW>tU5ax!B-rt&;fCuz`+`17ao( zLrpwCpk~%~8EO11a-FqP7WaGEd}ZHF3id(Xv~|<@v==MZJi7#l16_Q=Y75qasyTz1 z;N877d%ta!UWCd*d-ab8shr1c2h&N)Mv&6KZb$Z~2Xue#Wc}yjN8PJ}!hs!!?WOlqvn_|_Q!^!M@hb?`hD6)F+t zFLpkp@xGWu$}a4dRp34LouQM|4kSx%7d^Uot|w`-ck^|7l`kH|+!))pV#_)nS(XVx z3deapF=zZYyT6-tx#m60fBG&zse3ijLz=Ynv5EHX_1eLj>xF86#Yu(YQ)(DISkW*s z!`cHcztsJKWuD2*m9dXvZq(uMTrS8l)LMpQaeZ#sI0mJu0d@<6Sg6ELm7tpoNF)X3 z2!sgEdK9_Bit=G^THos{Fn>A6coWDDzi5UOEgeV{yx!su-wJ}Ci~jk=t8}*6biW@8 ztNJ>3P#O@~scHo9FuPhx1-^YJftiY4k{BAxjAYa^4qdi>Dt54C>a`LnP;|=mAsT}p z=!cW*GcqoBa`9I1H}*KDa+Lu}lCIMW^fUUBEz<{oVFgD;wN2NozkacH`K{V@&VAO0 z0v50sxWU^{YjVtaY4@&vBSLR)c`EY$?Ssq7cB|`ho?Q95Sm@y~omq@WLg0<0xHaNb zX7<{HIZ+reD(b{9&%wKnTq|WzUax*k26(+}Nj)!^7^+k5NxzirP?ch@uJ0wVnGta~xL(Jr7BEg;f! z2-32dhbss0E`ohmvHR{|Q3nd4x`{lHZder@-z{a%5=!@~=&UrIo|(>abWhgLu=MXg z_frxur`Oo;2JoYv*j1SO7y2t5GOV^u!;9=wI6gMHkN$A|{Ca{K8?9g%L4ANNTSz24{!CJt$@rlGap$0)PO7ttYU5;9!$RxVJGT)2rw zJ?dlautH|-MMlMn@U24&j#i!~ufn-6m+DJazVrOL@+R>{18Y0{(ftNCo)ZR9&h`h< zqcvQKk=Q8b8>xzkQYC2cJ1MIl6Z3YgxMy-<8ewzL^z1dn_$wD0CsF_V_e(gevALei zXi^UD>&rRA1nU`AX<^MflM{m1NuS0Zu*f;g?&UT^NbF53HYRYWL)gVr@On*3I%{WP zi>NW^sSy?U_rQGeggU2osER!}{)MDh160W;@Cey{uep<8)xz~j6d*#js3>%^F|^zT z1DF^zHH*5nsQTtA@kSh9Ie4o8e>XSXl_E!TKEw5TAxqonzeEgwE5bKQNpOm*7G!fP z^n4IPtl>@c@JT9F8o0=xm+z-RN0zzKOX&=o{%NtDq$ZnTZT(41y2|l;h1|90`8g-{ zv^98RwX%Tt$?t<0h>!Ayl@C@tz^&ZBG}lLnb#uora*x}a&R8=Qh*f=&1$xSi`1u<@ zcR!eL*#d1U+m7H|UcD;j*9HaYO-gMFb|D{}<|&I^C&Abz4_|apelW}{bLDo4Xhr zwNcsrHcMq^%z^g5Dk|QbQq|Zr4R75^Ab+T0qzYyyOFkRmwE0w0@ZwX+L>mQ*NA26q zIelM)r!KKx77P}h2ByVu8h1I~4RcKjiCCOK>SBmnj+oO&QDQwC?P7=9BuR?Q18zXGhrFI))yc*7~ZXABJtPuLsK>zuP zAi&)v3$p-F#M|ZS8yw}Kf~i= zMjB@OyF##}J@$BX$UV>@=fmJ=TPDXIMK*ji=mL-Pbf(aUwTy#){bPRRGC#3IX`Jq( zLuGap*R$pvRrtZ1BX3Z*X5E6`^ipdBYI^qh4#(*ipm;Uk53Ki;K2XV^Rv+wY?5qnu znY*JW$bhRuKSP}WE3$S|hGW&-CGclHksE5Ax$^YU3lX5q zNaoJ_HM6RW{xqd#jU>9k?{w7UMC#ihkNg8&OS2y#`EvibId|qvrRc#$oS6Bf&O0Cu zyHEp&u3gQkFdV{gARMzjd??i4`8005`{2N1;B#ArIr_7bW16oSt|pl9E#fOxju+z$ z7l#e{fHQiXk6DLhQovh+ix}=v zZ39C9p8AytHkyDFKCARf*(~P{&%U2nH{@Iz#lbO|}4C-(q5AZCmbkrfXZ{Z19Wi z71PXg8OZG5&_NjS6gEdNaysZS_PO*}RNe+i1C<@#M-}Q-dToz2{o+c=nSOjbNose| zgx)Ds;^yV{Y4>@qpC8&G`)qT0LEm8baL+5-=GE#!4~ugy9Mi_B|Ar~TXMKon!^^&!WJfxPiB|xn`;bdXLd3a!< z=zf5j>stAzkC1&W%jPS}w<3Yfm}#rh&YpEwfW@9YEd_1-G*YaLVA*rv`LCny!dKG_ z`=nDx-|gTF&Nsm}fHVJ4AP^dLvXQAA1tKMFZfy}2#ArCK#d+=m@dZMiP`4CE6KvWY zHT{T8-49LnpQ@4zhs+I;vXuBNYeKxjB496nKKT$x6^4%l%*L?yQHgj#zHW%O_dJ~L zY6i>;G%046Bzvq?cDinUbm@bg<|T1LzLzJZ4vzYT*VzQCpz0kF7IfUfV!L{a?T_$c zF&6lao&lTNll?~gtR#wE1HUdS$8j9$1#_{Bboz}w7J29-t^^z6()Tz;<6Cow-3MXM*oc3c5mSFqo%qdY4A4}TQvHR+KrgL zWW4Iibk&bH87%)e-XhzmthTL)8ku$f533yDoYqNJwy3+tmNd=(pG_nqDx3*4(Ovmg5QF_hvZ*nB2?p;ObuJ@VNkE-9=M9zc_9juW_*T*8T z9hbeb;n$Kx1&j$Sd^I)W3zkM>SzR;gxw|B%_OXn3r)9+1)4;7jzL|C~=;3Bd4TJQ7 zxctt&Y7!D>Nua9;_$?b1W>~AR|BGsA4bRb!h=qfeK!zX24|IT zGh01dL_7BXNZg)3T0S~5PT!G8WNAAA%h{;J4yoEeLgqz%lwN(xxve_p!?O2!k1u*m z@go5zF36gUtq1q#ENjPhZzF~H;vK)CA7esVoCFQO-R48}J1C#JdRiNk9IOcwkBjk8 zB)V5%qJPpd&ntbPf^w%Rk(?ci4iT>XQIeDr&VSu_tfy(=ykKjuj@#-%i;SP6Ld^va z|1E+?$D!@$QESIOv)YDT)n>?eZ5#0;Vn`GD$nH4u<29B9#El2t{}JpBifORVUjCoM zt4(!fgx#)}JFTPou z2lMDXdr{eUn(R9}A_@#%V$FEU-PBrk^RsCP@`o=j0<3{GX3Up57KGz6%Am$Nj!V)P zc|r;X3v7Z(qaR#t!MR!JWW)&?OQK)r*k5gapPFbGC+leWg5zF5UzR4esuo znEP(*Ui~cZ=r9n)S!58v*Qj1!>!Q&3g%bYAfp2OhsHzpCYR!7-weuEaTQm*%7NiKR zT&IK)j(#RU@LNmkiFW%L3K~J!J1ZVYg2QjRF=;3Q(w=n&8^`cmc=8rZtV0tf?7LlK zR3vc~(;2wX+{L$U;~n!Wn2U}bc0orEe&9`3f9;tGyzzvJCyHBr>?CJpu@7G+G8lNH zu)y*p!;I<Uf;BaG;Tob z69$u5JXO$kh}-|$&7j6g8Zv1NlQF{ufnd<$x+<{!utZ;AYWJQ<`^%v({uQDtup_H5 zVBeK5ePKSBxjvE1)dQE3ksH^4_HYb+bA`In3|zU2Fe+!oyTnVOM~QNG%Fg6;-thH+ z#aqGI2-v8b2meXsEU(Gp4wlsVeSc_a;RdSpg$o(*z<`uTEwqj)UvwW>w!XI8UA~-$ z_4uEiTe~8B#IILc6qqdU@kmLYh`|M~*H#@}a&D;>uHLUrqa=fJb2$SVY7>uQmwlyg zy+GW*db7a1HX_s_8IiuY9xAPxg=_=`_3Nn7N?hL7AV86de#$+Y*}Kb!^UkKRNqd-Q z=}+eVTinpBuY_`LkbjH~erG1{2#Zo{iB93$4BUElC=LBPucX_yp5yc9v(CM~a?d6w zmL#ce0NXz#{*qpl5`J-Qohq6gt!u%SP;6N$qE~Ji7)OH#b?h80rPX;g=gft9LW6hqclY3Jw zD$P0r_ho|=a@(_x(Ea^Tb8^L?S^~dxilIfkSJhpWs54k?SctRSu&Q9DweGR->gqe^3@aZbxz6 zeCi^+-VacPEM!`fvjnGT{a;k4YSdI8kKeI2aE>T&L{k{+QS&n?YpxAz4mDxTv+X6* z<!Lh1dQUJOuq8csQ-nJ%jNWLJIl2d%C=J^bGd#^$zp~dU*KzGMUwHy?uQ=og96< zy`8-RgDMgHpxR-^h0M_{062?lG?p(y6xu!lyb&IOg#5PHKT0e%y$3lyUSGm)MHUFC z_W71uaK$@0nLf*(z0bCs0TFdyE!cU4O1Zq^_$YXX5VQmLF57_J3*oJJC%A0*D^2jh z#U*Q6oJ-}#jD*sj`RANoRv32yGfRdH^)>7j8H1u2HiXAm=%B=++UB9ALUo_R<+5JE zZ`ILR*3jhc@%Gz34;FbtzXx4&ycy7#jKy_un*X_~+1@dDlh2GPkGoLt)Mt!fkWsEt zSdQmqBUEv?zo4;j#3Xc<*PU7J<)hGnv_0}XDLOj78}+IEkp4$*7n@->cbOR`(IgIu zO6hrOkggJ0isQ;sM@)Dp?4_MJdu6hyVqr||Ut`t%72Dh4H|#DX<*3{HneYDH9Lb8& ztU7u9rbiqs;PB-F-tS^#(>Fcyd)Y5Xzcb?95K;C1VcvXAw&a>9?+~cQyx9DxcaaYL zcf?8m5sjM(A-|6Ubnj9TGg2@^9u^Zm8nG-#&iMD%Euatf zFW6h_j2`0iq=%={+w8MBmCd0??hsV6RsFmnlHvFR^IEZ1v1!-8$I^xuFi7(_9-|Vplygxb`T6?9 zNBFy76K-OC8rGU|bde6YQ;+q*Nt$utx`S#N-3LR)bW;DMzCo^g7^NAu5*n$!Q1rVX z$}0TO+b%+OU+SW7`RQQ7a{Ag$)i4;rJg;%zpEd!?e#7DUa@^#|MBT4%f+=2xE%4S0 zK6XdL+N!b{u6N;W1|NNvEGNPd!Cwt=FKI=hTm6zuz0`(Ry10} zKC8u;Vnu8#CY0uIb3ed2ci zx(XdFH}fqd<~3g*e7nIf;O=As^H^>Mo=t0VEsZ@twMX4@0u3()(<6~o6(+C))`%X7 z-DW#>nv2J;HmJktK~y2Tjt9eAVW*Y88T3z` z9I(K(BuHw=+cX~F~>!g=O2^S`n6X^(j`cbRU7 z7_u>J6P##6C0B#7MG9=YMoeu(fIxbBHp6AcZ~#iu3m3d2;C)`EgSen@Et% zdsF=J#u?PwiJ$r$QO$%D1?; zqc@o~8vTbm#sY+(qvSR;3e-5%Cv1`XQf)Q#$Td0Tk6z%EM^yN_e={U3a3s~vmGb!k zD5>hR1BPR%`kmVBe&5VqJoc{bhpUlSC%3b{FdluLrMj&C@b?)iF#7pf-~ww8LSiBK zjO;BZW>_RCGQ7~wk6zfe(rg)Nv#>p_`r1SNfoEHhRWgx~HRR%JE-4sI6fmG{#X_xX z#M}ZZ(sZ?VUtVEpwlWUD$i7Ix-#biUw&h(*>RlXAPpYzEQ++}Id6>rGjTJppIrr$n z{Rty#U68%D)ST}0q!b_Wn##*SN62_}&VU+T#2>w%5xILI z)l0^&9WH<4nsddKY{sri?z-%!CA7H)Rz%&0ya(hi(O&Vuj;5}WvS$w0Y^bETWP)Up zp$5chYf}7zM-$U}fBSl>*k2vn$FN^{^uK8k2n#4RdFW)XL-}}s?UC1^@Ao;wmoFaG z$`K6RbDA2WS?cB6f-qqali(57?E!ipYWIv3iKfk}XaiGaGY4bz^pmILRDu9kj)y>aE$|3!@O;6>q=n_fE`IW$3 zfsmCtZKmlqYOOJNp0ACp3I*e9I7;MltHH(1AX3sMkh4_+L7GTLG ztlf7dp`FzYi9ln}$;zs7>{>y=PQxuu?K$bFoMM|-h({Uy89Q$cMAa+Ur4S_xqjTNREa25n60xkiPg6!AN8DYlA%vBm{HbcK5bP{*Q!fCnOp(mf<0Bl zMzxg>^t#=9ujY-)>%GH5pjtt*2~t;+MgUP&=uy>~smtk3Rm-7Ib!TLL;6BdflcNyf zMhg8`k^rpDX<4yM-$_nKvy?bLK5L$NncAkuR123e);kG}6DfS%-;?e|u#t9oeuX|C z4vpNyCyO8uk$mBg%_$zjAu6oG6+!;~)%>p2QRY3m?y7O-Qny~Kq2p~5M{DCmC|PsO zqpcE-LTG(-j#6;b`@mnBPd+}N*6a#{`V&6#|7&qrZ9A<=eIuz$D!@_l{1|^k-GtNk zsZQA_`#Zr_l_C>hx3A;HckvOUmyfyAp1>`e6DA}gx0dx5R$g8n+#denS~ zj5F~aO6PecEsy(g&-7!-(ThLN?uZodhKe6zx;w3_RPw*q#IiuGfek8h&oj+$Yc2$T zsBJj3ZZLH{AdcBHBPILPhdu+M7r%Q!-10X9{=H`|RbutJQ;y?O95(>lT~=k+f8%+l z1!Ft*kMR1&)EUDS#hxw1b^+c^oCseC^yjc>w z&d*XcVcM-|39kUQ7RYm3uD6-s8mp^Kb;^~PSsR@LDD($Cf{m&1-MnW}J9d!S*J8*X zCbiQ3B=!B7kDWPkZ4*I%M`@eCTO}55#2(O2eI}^~E0}7w*Y-H=m5nL~G&bF!Z1-NT zw{lX}sG3Iia?r<(_o3vS)tGs^-=!@zRdvxQgA1MZQnKUvW4NV>EzO_6gdp$lyULg^ z?>4*_TF0snT-wYps&@WU?YKDBc766RW3a)YRf*3&<8}Q`9BxYxYA-3GaX6{c-<5hW z<12V=rK)XrPBjr3X?-o|>1L-{&8~{fO|X7i)%zdxOE~I(ZQ78mzfE8~&)zEIt0;MU zFa^NJ*C=Ls2Ceu&?Fre5=a%Ma1=;2+{CpH56T1&%jDEKm(|y?1&+HqrAre6f&1mM~ zHb9VuY!z1xkgJo6FouMK+;``PeKmqb+$HTWOF_XVgj)1KLY1+#q9Bh?vQnyWbJKMY zD~G1}W(sHtXp+1?KS11hzCr+9IComTF!5Y!x%Uo3fuTFl8Uaza1FK@&#`(9x0kFvZ z=!uL})j5q&G?w8-w2Tos9Idq3kuzIz_4-Spdd z!sZ3d^V;k$ucv&pRXIPW5D!h|)H|nT2=be4A7&*k=u$)tQOd=KVpC+fxzW)KX_C2< z%57U4@jMR|^-aUvmyZoXz89HW399~5C~m8ZAe~$fk+b#+loe`8Q7vy|q)d8^^n7A! z7`(q5NN%8)dt6ag>Yko|fqHT(<8DLk1i@>o10fWIxc3cIi32XO2~5@>F>FJ}+`%Yg z$HQJd)oRA79sT?e>9A8_J?<~~oy*_d{3YdKhKF8Myr=8FSl1>H{IYo{TPhxH| z7h4%P;Ik|4Sdr9p*<0akW$#{j{7Xv1#5%p?SRUV^rUx{~fOc;vz|=xc@Ohdp<`F7t zxgK__Gn--Ey@R4dPW`kJ0WqtfV2%?)ej#pamQvbi6`(+fF~JAQre)vO$g~H(JofOk zCJbJ1D^S#GeoBp$qM`6N-Odj8TJITE?W}B5AfZot{TyaMjCGn5;%Ee4J<<}z$xv{d zfo0+ST|GRMj3+lOyu!y5PNd`gqlG}~DZ=j`C_&C@xvd&Kfrf`zX^%aQlGet-PNer5_GP--zUQLFhS7`of|DcgfacyzLG(2Fdc>Ci2k zWRK`>lkO8!Q*2f-FBba!R*Y@@mg`D&9&!y2F*{F(W3_ES(q^;4=!vH67II_c`1~Wq z5wiRgL;jfVE`M|2I(8)J?8gD~Vsod}=ws$)EmSPzQ;7ms`#M`5vAzb#9wuBZ@D!DN zX$W7T^zEyyS3j$Er%kqNm?9$2vr_F`^ctQi4i??3?KJoi9Ber)ml~m;$6#o_zc&wF z3XG|#{=0v&bKWOJ#Oh}S{+!dP8SaA5&*p=InxPni5zyfQS4?}@j{+!?=#&lu@6F~* zsBNlXaE6dC8j|6QEp2icq~POzW;I%ex}fr_%uRXy;(cPlU4u$Qo?6munj0^?LyQR(^yR8lt&J2L z0I?C*BoDf4iiyCJ5Y%>7BX&I*+zoEXQ<~Zicf!q$bTr9#-kcx4c)YN!7t0ev|6|gh z(E)Ar)e-QvV3%q9)=ptWGPEJ?v+tc;ryja4Z`4W;{v5DEw0Vo*WqL@97Kj_YUw2uy=HHa`5#F_VWt#J4FfpK>;A3S7oQcMlt3=nFAUk znH-$QLyLlyC>;j9rOTijZ~;eC@-?ZsMHO-=Utc?}ftF_npI!c|PdQ)X{V@u0HSYd# z&T8g7m$bQ)&3}N$tLE?RMqZ^f^`|6S?l(`mL7FG0F|kj?Kg>*V&hwwXk!v7|=afc| z_aatlxm|wMuTdztJr$i^-y%o}3sjbOZ#(X(B+Znj{&zB+p1o(d!tU&MIm=*a>@|%; z-4a14V-NB{JWy{?^7Muq_upFQlkq@uFD$5Te1^XMG!gIj`Fvp~d4WSN;@JiTV7HMX z!k*!lY;Q58t&tCsv^6AH{*0n28p;y+gnx8TD_@e}9i>IeiP>ISK)*c zi|LEj4qx-J&7lp3%oc|`8fzsNqX+#ZLH24-a=ji`KuwS{?^)U+Ic)x91csYj?aYD8 zbOjo7ADi|qK~|1&8pzWehNeOuO)?jfi;dcZv287bHRwZ~vA*HHqW}^~kj`fqxs3GR z$aqtdTdjQN{R8iA>@C6KSuWOGt;>D;w1c3gc=K*foJ z{jG!DZkIZuFD7(8+HSqPy0AdSK%|rT`B(LW)B*if!8bJSGby7dKLICWA$$46Ut_bZ zc3zVSmd{b!JHM4TZA!LXHVpO#@d>7U0(3c~%*gY4dlg;!_1U)$*(=T`*8-LmrXD`x zJHEU)0Jj>gvVOJa8-V=B7XD9XXOI;8JhUBF#H8e++Zu*QA+!d8A$w-G0^Z)OogPAO z0%asjRRxnb+h}P9WydHa{ZDLnq^NGI=iAv_$MO^8S{R&d`kA-9ixer#L}8I9j(O?z zaC}BT2AJ5q>HT~1{ynO=?$r;UhC*E3PtW=7omFkF1R2Z69}pUl;bT9=-rq+M-@}@` zJ}<#z?~~0soSho=vSC)S)58UaMXbQ}40e-}sO#1%+Kq4En^|9a0xC&$jH@lKJ(VJa z!-jeNv>?;^g}1?LLA=2or;S;9>A0~fJ4ule-wW2JB0r)mw$C(nN;GC>=bjj`r_gB% zpV(u?cF9U6gfIAPU8a$zvPFCK1~`YnDW>32=zg&#b(K|$_%i^ zvy0xScz2bafADB#D8EVE<)Wy5pD;D#NfR*?pi1K`N*`kUbw>*1E9NxWeGoeJlyZ)H zr3#02<})3&ckz>cYU*k?AhaGk92<&FGXAu{#(p^WfMuk``)AnpzlC8WGhV|B33IPZ zWwvk)tW4aSZ}&35-5yxqNR~GeyVt_PJwiIun74sLO4qdf(opj6itpr&tdb;N&Ce6> zU#o;m*y~og(aUq{QP?ue;NKJK5QsgH8Nrkxx$G$CByN}uVY9-mvpZBP@TPpo7hty*=@_s-nOwTnLq7WtH$&lu*1zsQr}= zUlXi3Y!N&z4YTLf0*F@1^SVE4}{y^OJ!=4)nVK96}~ z)<*6JQ3Q*Jew#DA64kGCsKCCjLKhlqt8QL-Pm9WZg4AjC4O$CRzUN<~>)NjbyvX}c zF0uRFInkS8%nelbZ!3f97S%0p7%jLI&7FpL_b%<#akLq;8OW&>6MNi-t)U1Kz@Sk5 z+4O_bFXQ1>Ej*DtzB5^|P6u5ePox(=I$a?ii~pyALNDzpxJ zXjoxI|Mb^F=GTGQoSHxnsIciONF>l2d#(_E!RS`p&#nW=P&SlvfnOIZ zxyz27xK1TR+B0Uj<`0HQnggx7t!?YT1H-{c&l*S^h*u(BIZm9M#?8XoXDUnHBn}JG zQsYZA-ww<|E-nCprg2w;ogpp5VAZnU}8J4gx^WsLy%A2D*pUQMlz2q4@rDRPn;EFMdc&TF2c9n_)N8>4LPbKjb)V_uA-wy(83H1i^7@2BS3R z<5%PofmXZ!(Yj#|=k+w^!}!A+{G0Q39j?BbJOHo6e%|y(X$xl77FSyyW)`K?e#s<9 z8%?K&Z?1r@im2bxdEhO7q^da90)FQgqU$*Uil0WfE<>%#MK|6B*c*~9uo}o!2OAg)B|u8a1Oh&}eJ8B(lT4gJwH-0~UmD z6O5R|j|{@O?SLLp2DD_2lU1Muw!z=lrX2R!Dm2caiNOx1yhQP-vG6Z}iN81V6%|0b_dBH8=@ zm~$t!c22fecksK|_PTeOc($0SH$qc(+c(imSoOQ#zH9QZS%-U`Q#|{z*IYj-z;ZCG zu}(qN+KxX{V3-ZnuyZX#17BGp%-|!2_(dG{^iPKP!#pIM>7Hw|;V&~%ZEk2t51%V3 zL)dm&Y)WkhR^H|Y2zrB-QTU%Ts>>+Ts6Zg$htv1k%R>lKyL^=s%+93`sZxr+yzhHu};A>1~CudrN)h^u=1O0 zd`*$IP0u=z{4_I{clcx18-P3G<9~Gi!ezILzbwOPo%hd88JzSa?g7_Bj zu)VFdNc`j}0z-XY(Mxx`bF>s$V}Fp`=+h6IjPlTEN2}C+exH2(lE!a+jS?r+*ULTD zkTbL5I^I%uE(AoR8o1t7zG?adD>PaDZNOJAX~tl^yW`-jO#>k5Qv$pm@Gz5>f$=$N z77$33#st}K-*HPmu^kjhETL-?mqrRs@WMmsy0pF^l3_*1k;9MqsUs5DJ)mbmLXhCt zLCMv*fK{|I#YJ!GfBPwc4xu<6@_nD+y|r~|YdxyC8x$sA59Z(PZ+C5rL`R(ofQV|`e2(7U@q=HhuNDWvko6)orodqBEnl9IuchbDO=8?^h z=)Rhqxb;errLd{oz;*IlY2B6~2q1Jxjr7C^-cD2UO{ainw^T6vLAJZq&5}is87|w! zc0vu5;se<2P`&L%bbt7}Ra>~t^xlU9tyD}us&Qbni)gEHF0~lu1nXRy86H~jObVxI z5q3-J^%pMDXkp){h6!mAZ|>+mIDabIwzF~K>;JYGH#S@$s8$d(RaRhb1)%&&&Jfp2=5t!y0lidjTY~#&HABcm|Kn+g6@y^*ZKCv%Surw+Wr~L3kEtOFHvpnr_3jrqG9@Nh;VM z#D2#{72~!JhJw{*HA-|}qv!kCE$ZF-AWsZ?ZrH@`~-mk6`||Lx4I|3eY~v%)D=aVz(cHxTIO z;|~l7{GZ7Rp#N!_0_f%K;B&fb;TPcJd}6X$72CEl^IZQR-LxB5KHz64^=rN5(h*nuZM#vC-J#F-~YwBHf(Ix1EQ zc?(In)`XbzQyjrHv0HeTd3L?E_rAQd-VmLR0lu@QCZ>PV>%9Aq4o3YV@gY_1AUxYH zs*}1%UyP-p35@Gm`&nB%!b<<;HY5cO6#?`C#nL0O>{eb_<>CnZN3fT>;eM6a%wQ{N z4!m>%EsZz_)QLQJb$|ZT>qbqFr=k-NG=Iv=FB0U6q`<3H2!9-Ag z^61j9s@$4~2`x|ec~)*ueCl9%>AnKs1j4oaGg1X*eY2@7wV?%`?%=nEo;+5WfboMw zuo>T+bFb?Q`3SFUmxXD_kpi{jhWXrlKg6AIyk;&yQ}N{%*x_u(`_4~MBL|Mjm!G33 zyW)K>Xb@PVrw{0(Cs9eQVAlDoj zGXGf}u()~iVqvF@blCdFnzOPNbF;Za+#IM8GOaE@qXDkO9oJc5XEv$37X$q<_^7!? zi)OTR`iH&V-yUymFOqe&zHYC@B#y}+HgkMYGsxm%%D4TnmdO@^`NT04obK0M5D|_G zD5uEm*D%Wtw*vSFdI3Rq&z%NcL$x-DFI4!GOW4W=P29+OQJSK&`B57*%Q= z2<8ui%7C!c|5wy`MkW2n?Z0i7X~VRfm8q4fS&p1EwQ}W1bCNqJ?#cL-t1?Hqcjn5S zTR|W*_eyaik^@l@7Xl&zH|IY8|GA%i&*1?N81K*LdSBP;QpsoRG4;sXuObc(1aNOj zg{-2A@7`@d&0CxoPanMhxV*sX;=!?m&it6J0!r1-4VELyrf|}}RK=V(1cw3gJk{ZZ zd#bOef?COu9Au8YbV1v!8I=xLLRK)}@9Svdp%Dxy3tIu)xgAl-iOjd)phV-Sr9KQU zhIW!(f$lwBm@I3Tru=2v4tQCTr5UYxZuGO&y=lMHe|7M9+SX~8(_%NPm%8sJHF!Dx zJt8x>Y z5$<6XJnVx%2>X%Xp-9QO={x1s7FUNa*p+!5z`IbYoXLtd%<~3;i6U@yUz#*{u<`wD z1v5~BWO3~w17AJf_EIQ)oOveT%`NgqcJZNgcTzT^Z^ltf2)bd~Y*<|wGA@ol*N47@iGgTySs_C7T$98};!vrSF}WJb@-;Bi zw6eV%AAU7%F5-rJGJZ2ytQ~BP0j-ChR`gqy!F+VJ5I={9)!#5Yu9zs?lY!#BQ{j{C3M^p0g6-_63Q7l@JH+=*fUJA_Cb@=oKbhZ zh-s3vwN1C4d!e~i?gjMH%Itv3@-w@|#~Uv;L=t{J9-cDp$|u(dP4&WDmeqea-sfN% z+iwW?eZTuY$5iix)M4{>L66^tys5i3IuW(#ol(F`HVU%u&+T~WR|G(&dIcaoJJU;H zI>nm1l;gP7CPB%nZt|dz(8ROKI|IRwS3TmQ^YQ#kG@x;AE&EvL;xe?qB)Uoa*|3-d zzN1$tV!e8>+4!b7_tQIR+x}HgSW1e0zhANo2*`!m(qZhfArMDhF_qC>X9Vr1vK1wX zgoP#_uQv9#YWtpvIK}**4Y_Am>@Oyrp-nVw0MP1yL?V3)fZu&c};LdD}-CgGtUv1>Y-@h&= z(ub{cP5DPv5&9Y@3`p9rIoC?YM0hLvT5>+UZbRufngO+pX;T9WlZdEmg7E z*_Clv!l@3ta2{|-Ivmvxci%1UN1oTHQ8L-7SW?&CabAS)+z+e9RcizWH{E>9H}UtH zg0U>PK^+#h^F@BJ?;_4(36tSOns&K2&9J!oA-6+6>x7zVG4JuBR@Xn7yfmIZwyt}= z%0&9m?)4mHMgt{HB~iAw`71xO^ul6Gtgmi|>M(sYum`5Ry{hQqZ z2ZKPX-NQB6;Tt+)L4D~I=Sn2tEPc~QquJ{`9MeB&?xUd|)>dnT4oh*>Q5${NL6Z4# z_sAnhg*ki6bi@}fJu93JuMkE@q;$o{F1&)#i!HV@)7frZkP~5WmTz0qC_>&(;s{S6 z_{K$wQ;YDIrXex;sFhsv>j*fnLK|#Q|4Y!?&-Fiu;efTb_PcrId9z2acYfu07IS)n zMV5_?u6I}Dz#I0qL?(yxEbr~x)bwAKJ5}8Gmz-~-5XLF4zZ6ljJv8TrPf{(PHs4t* ze>h-LW7-va%rVRiJ)$fnkY%prPj2T_*1{+>oXfg4)3-%z z`##liH(v@8!iK4U47#4!Ws?tKEph?3Az|=v%I~>_W`IAVrKL3kLp@;0Bh)u496dhE z8qhT|8$?dO`VE=>zLVl1;hWr|0&QH3ns`wecxf?O#ilLcUH7)x27016IQ`9f!v5Y8 z_6Zs<->|5Qcy*jRP47yBr3Rfh>S13P?jNv&3wY=y+z$LMgu1LKO&0*_%_l`F<_}DF zVC_P7BWT@|&(P4!ndg@OSY_JX$FdJ*-{C5iRFI|UzB;^+dzaMHDAh7%ym!RLci=mL z;+jb86Bmz!)A~X@sx=<6U-N4P1KTx@2YVpS-Z^la!-sFzw%Y6+kSH#GuR%yy7)iXl z1_*wuK&m+KshM$nqznvC9;IkCM&#CuoL(6>Q+scLn`%BLsNsetj3mF(aQIQkoL4MO z_#Js}AYpWcDPf%>dn@3dW9}O<+Y@(w9SUr{_1#r%|IE^_eIh7sa=i%~ZmMaj^f59t zk0D25_o|1|7yVt_!s$w~B|KeJz!hTJta^V`E|v(aBc5y$-UhmI)=kR&a^VpQBvJ2n zN@GwG2>cq~WO&Ru=;*11l1sc`Zc8&U(#t+$zfPF6DpI;$FEk9Y1K4ec!}|RXKzZoY zV6}~*{`H~>5+oVG=-dnHR~D*TMf0Q9x&~tHn^yg4*Is*^X6iaWG~Tze%2`h}{Fwx~ zo`8i?GB_0;+zIs)UO2Q8YE?RP10DSK;gAKXmE~Xg1&gD6X}Y4z}KJ0ovZi zLH1V&a(Q#bsq~uYCi|copJx?`z!E4XZ`k;gakT`usmnp?4;S-Le!lU0zlfL59u_HJ zf9j;RG(jg8EY2n*&U=4=u~UPiA>Vsq7W6+YU_=A48n~*7BnA%jn)}t?hE=@h0b1 zFI~y=^5*ctXD+ri_d*g1iqF=q{No|hVOMlCF7{3K;iJ&n+&hP_W!V$?f@9}7wrKWS zlRCPqAA%A=-|QxK(m?5We@<{%1Up5~kCvQl?gu;%M?Qv!X&7<0$+64FUs%*-?Ps}+W?o`kDC9Ph9gxM1R zJKQFl)s=9(HV<0|l$com|CWiW|I;Z>aUb0eVWegJxD6KpK7pQr{+>SWo*up-Aa6%! zM^BKik3Y!A%hLzs>){0Sszkmqr38TBGK@%0`tSDQ3LfL-AV#p?K63{b@xq?p9#Jr6ZpaU7wP@Jm_~b_i`Mk48lx1} z`xqK!0eIlXH2`O|FBjfv)fv5b-1=K&PP?-&Ro1hmRymwH{9<@mF9s9MBb-ZFW_1Wa z$HA_I>5m(WaSWGKM4RYy*^C^B4lv3a#P%3=ylTub>E+dPU0|J%JNM^`a$e6kZkGIY zdrtlP(_^%nS*qhNBJ^%c-`Enhdv zf57#kK-$goh@6CVf#7*f>a*)pBz}h-^Q!{Vr=)-dA?H)PxMi~MV`HzdnM9{kZp2bg zaBk^l^#l&aTCmZ;0}8b3A2IiKTx`#;mCC6GXZZ&dc4Cef5m6aDpRb z$LIO@2BK$LKrmVF5k=H#S@-c3ipx(a?^_KTmgi)l)=N2^P>19*&h5%aNA*5=KV)@e zqY1Hi9}r;v*Sn*+k_SEBEao_HnGlVTWPzXw+%9OtRzK!ui3A{m!D_9s(WegF`D~mN z;g?o= z-{H#E`ytOi288_h!N~@pG!Iy8>L^AaaTugcgzavx6*?=}PUT{Q+r&`vtR|Qf5IZyX zW$z~%yYW}!Yv_0TGuTg8Z$&BeOV&}B!tZ{^tJMr{p-|afeAuW81x-KR)N@y*brq1t z!AatD!AX_tCU=70bMgB8e{%aKew@3%3EWG7*bDTvVCBGVVK%S;GD-8P-{*x^|Ie?h z3=L{1p}DAumE`H~{Y9L2lQ)qH=Qmrjw;Kz7NQ({WQ_iqMZXcH9@$maYYT!hRT7m8V zvU)Yhdm?m2XH8`s$iM1Nyu=FMXdRp1W6rh)jG}f!n7ab*COjw1@_uKxzhYm|o@`ob z12AN_!lWse|6F#LF%XQ9kywQKJaXgw2YNY&6}1mDIoRF(a=f9_!qMKa2;nq9C%% z6z%M&lAWVhhhtZDiQ9yOt>ur1xZk*a-Neo=RG8DeraF6nYuq)g*GINvtLx0?KK)$w z^wh71rj+Q+G2x!OKC=R>~>qK9)X}_vay`{MUloU_!4&<1L*Ra0ua?4*W z+66T$k4jE+Km|J3aJaXCR&Yd3KnQ)I(2+va1f&3$Ni=SF3G1`J{Z2`-v=s)8lZRsi zzWqALtGyd`5NRBgb&>RaacZTs}VijLe5=Z0&i3 zy);}K+-hE%%%cyumukK#kRX>^9-*;9b%D%s3Kqx!Bq^bpCINF7a*43RXGk(H5Jhuk z3?=b!7rPrlpDjXg4j@s@jJ@M!7xA-csR=t(D5qESGo+!qMgw!Q( zxY!Jr-~8%Zou}nm^x<@_zwRtZ&&8X2P>p&nTMxc-z@cO4k~I>2!V#Oc=vDh-W6ljz z_FnkhM!sgT4*7Xa4xW0-DlmfUcO)!Y0k;!e7owiiAk1!fDWBDugglB+7F?&wPRIPP(z>uSTQ4DQ zg4zKkI65YGCUIPtUHMAPvhO!e8Rh->&qp>nz!t3z`!qZx?K`lKf&lO)&6OgRcpc#**sVN6HACq z(7<(?=yc6HNFz)l&PBWPdbJ8#fZPh1?{2LxXooEQq%7!wWI1x~+T3B-8mNIE9j7+k z?nV7ZKvx!CVR>%G%e?NPNX#2*hkMxt3R{lelFb4R_Z+T@!W){MJ~r z7xU=7j+OS>U#?xvqI%LX)%Y9QjI)}+^$No&vVi#y_t|Wr%sJ8)umZghf{F$2DtAHUxlMTG@EN~ zT%_p{q^C;nEyJ#GT@CzSS0$xOXoY$b3U%f5eYTz?F$jy5R9VIGe2-vuWe0B>Q>l}K zIj(fGa-u*pI{3|{3WsU3Muk4o3g3k~v*V*GGM%O3eUxo)nQiDT@HLqtgtC&Tuv+|A z|K=r0UwY)u3VgKXRO69KhXJI)#68Ek<9`}h6l|GqDEvyE0Dz_yIAaQ-6D~RuJE)zD zNIPPyeWVT0HrVerRlWRFsX}@6wJ0phfy*Pbbt_I>%ulkQIz< z)1+I_l@?ofl<2h}@Ytk;hCPHk=cez-kn{IoNKpPz(v z*w60tL;xf+1{m1>d0f6wdWs#)KZpc?THmTrBE1bQmH}IKPR}y<0QK~W;4?wgosed8 z2@X6bf4gW4{Xt$q0!h15c9Tb1WU01EiPB?MAfimrNvH7lXC zUWz4Z%TD0NTMjbdoS}$G%u4Ktn&Rrj+#I`fbzhPLi7p_qXjqtm*6- zTlqM1F3|x$l>ZU!O?fB(Y)nv^(ygD@B*-IPw~V%%7kUN>wP3(|o{NwqOi*$k-gR-c zqxXKb%0hdrjJ4{#^7?Q^+(GC;=-%s^RSF4pQ=elN&}j$!~M$)o8iOR8U@edz5=51HK?-AqI}<<7OSenJub*^ljfovam|Tb)=x zobHvb56ZhM3-O-Tda%^_5iWAoVi_Yo>@hVQXteqhNRipUd#WpgUt?p(J1ciJu&-9} zJbEBX>x{%@*|*1vkS8wjE`$Rz*aXb<(^FQ!pTgN=~l;NFeISde9J zd?K_y@XH*d1D|FO-C7Rna;gqj6+`tgvi_7c@dr%8LVI+5ZNz^?cDM)$_Y3)T1RLKq(tp8vy=i}k~-xZ2l0JsWYyW17ooqBlL_bK&OX(q`V*!d=#Y|vHX_Ey2k zYWr2rl_IXWt3hJkS~&O&5d6BQARL|@@Be0$7 z-A_~an|Jyj|35dxum4jSPIDiRhV~oFc=>oZIe7#J`1^YM_y+oUI(qwaL6cmIgs&gh z9KlUy1ar$ZeV6|9-A&SW*y8%b>pSYXGf*GNY#p0xnOlIa=H^$nxM*)ux}N*j`@R=hKAZxT4)xcETrwZTe$Pz zr5ad~e1;5WTu&bU9$I)8F{HmA8I ze-}T8OBhQ5qKDFTPRGD}jn%vhCHy-Fh#Y}ca7JcAGw#uo{LiU7{I@O3^?bP z(#1TM$*`@FF*A+_%l>?Sor_=bP?nvNnO)@^z|aVL_-#NKd`M@xg4_7I{*PLV7dvg~ z{wZZNWSTy>y;(D1-PBj4)b~@pQ|fEs%S@&H03MgRLo-)WQr7Yd9`YJr`UNo>HeqjY z$k^*@K!@$_d-?ic`zIM|U4uuQxulGzQ@cXPG2$V>?JP|K92YmJzr9FYch9{%tpfLO z*}FYFISpU_e5t)-)%Brn;Oh19J@t@^y=_T*fJGwTU}5^3Mp*M0_97)zbB<8@?SKJ2}n@VWTt(LG%YuST)lATrE$sLyeytRY8 z^{(AjdlHul?yS3;X>EH$N`#H8xVdVj@v4LCUmvPW_dv*9$u|FF;)KfePz4(&+J(G zKfAm%zK8MlPsEBEZwJJ=60ccpvkMP`NjThv2@DoS0fiBN%NmCgcecP3ax`W|NtK;Vu zW;0f-{(EUuZ1e8l4=qpB=_~k)C$iShOzihu$J1M_stmQn#&Rv6(t?so zb#f=S1hB8;KXbtt>%O&Q8(q=yRu`q9cWcA5e1U}pa0}l?#;}XJp_R;`E5#)p$NnJs zSFUMgNr=6yD4{e>2_`mtyXofZF%Lh_{5Ep2~NYK~@Yw z4i~i_G2!JdR8#@f&77ej+MBo+ng_X*8w@H|b1y$V1O-{IoLn5t#y!i+@xE}LM`Z=i zn>Li|CK7kb7|i)Vjy&`|884}JH!wJUgHLcJlw4Udn>`&5h`1)4qiIW89R2gb?oUH# zrYmgo3GO6!_e8h`P`)wNa<_1g}_t5C+@tuFWGIrq!Fs9D|8|U}0Tajm`xMe() z+`4g)jFep`yI^ZkIt6=FAHIW?dd>}o(Q#c$Doi3cQdiPsP}#-F6u*F=-Kxu&E&<_f zYy>n%-z+8EA=wvQK)Vq;Hh;!xpm~-KaU%+A#{%>9e^+r@eI)Jc+7Q#Q{T*CD7~F(i z6OkxHWI-Vd8~?!RYo$JRVCX6(TG;h@73u`>CkO+|1X} ze6us}QQ=QGK!dhA5}9js9E+r`z$WW;*G`Lz3>OWw)BZ+_E+l@7WJ_5B;f!4;h6W2@ zJO_}tgb${Kr*N_4sSBi7rB?fp~EmDJ#cB=K@vr4s{!mh zSsTi_nKYn!+&0Yg@iLAL*n|DrD`dg?%JRQ z%3#|*(GWwEp7ffWv5$_eN}FE?-aerkr`~9p@b5;loqP^6q1$C7x{R8c=2EERIbb$? z2rjom60$O_B5ycME#N8&07z;Vu}?5{9jA{(CI0-&o?}o zJ6S`B+u1nQOSAXAM5iRkIc?Vcu#sCqMObaWmVH}&r#Z%e{pPm?bca(SuTJ+1+3Oyz z1V+Io*kmtSb>+FHj$4!20^30OT*7KIkH`&)BJH|Mn+Hqf6Vk{{n(gyH5r&|`>|~jx}fx(9v9uT(CBpa`;_OE1qCK617m1o z@i^Gk z`;5E=)lIJKLiNMRBM8~e7=Ol9JZrbsY~dFtc~53M>?tew2d>P#K;bSfC_48b06#Zk zb5C11_T|BjT;Kb__pdJe2J`ZVcrq&zY#1B=+WpTJwqsfcg!dhe3jY_UP#&Pv)_QDR z7DKq+NOa?@mfT5PZ)Yr2A@VjiEEHH7;#xv^>&c)HtNH4W8W0=?uUP~ew^+oOT!M5s z#fGrMHy?dCky-~=vX&7?X+ z)$amu5_E((Y^QFqpHn$b|o zR3T18^;9jV{I$KZZo@xwNUQU|5kdkn&P;p`zZ#?$qX~!ZFHvjZYdfq@ak0omWI{wf zHqq$44y2|#1KVD>+O@6wXF4m^k(n$kQJX{vb{|LyYo*V*fmwU7J8w&+p~+&`2*E4vT#E|jqSNZ0}t zQVImP%6y1|hErFIVPNLHL9V~UMs@%Ts5l53$pPfJ;cL7!Zjvuw^m-ITqtBk+oOk;U zQ(tR|$Vpxlacld2$jwrmFuIp*S5Md*Q9p17)PEpI#D(V_J0@JT+G=zDP!95skKI@L zcqAS+YyUdOrzDc`??Rlw>c~O=W|{WEPl937t_8Ou#}cG7r!x4^m@IjF$bF5(|5ab~ zV`?7K|4)r+biMt^@Bcxqf_(CB0__I;xHMnx_Z+Dv+LotP8XM5c2eJ< zMCg*e63IuG+Aj$_-G3sdxeja16q{%+eKd?nuc<~y>`mr+Je}j`aw^VpJXAi74 zX@&nBK5(1iU9YmWq3&<<$P^=bU8)XewRSY~z_wa5)qZBg00Q5>NQ4yMz2=3q|MBJXGu{-W zV91NpD0`!&Eh-%;9`2k`dNHn4ji$qVLpLT(%A&IpK-%Gs%~&5E%$na&aAK+7{p`sW zgjhlsLtXy`DmKxsZ9ivTN$Os5|GVV&=+yjh$L^h50x4grXCibPv({j%#{X z&Hs(KA9`}g=U7y`Z5XR(5nK@Ui8WDs@r zHC})^L*ONqcE`@_O}>E1?6c!fzH&Yx!E)FezA?*I^NW|ij40mu)EzgG>I<_fU})D^ zHbA;iA?4RIml>uNKMtpKhJUolaAA*oiBAF7whsQ8=f^Z>bJ|FOA!%S(GmQNgglf>7 zg0w2Rd#c8i%zB@gOv{gJx*+2-3U|5te8Zz!G2j_S#uKyi0bX8V`iC;0>MVFU{TQQw zG1mTTgdQLje1fwmshazYFSvQr>FWPV700wO|0h-OaUXGUe_F2x`1|KX4`d_bF4^ix?Dg+1^(9hny=t5mEXt>SNAHg6S$;P81LDWxZ&P9WgZU^^1 zF(7ovy)a81NgKM6UH-4yV&sloV{K|PQTf{y4{%8A#}CEOzi5)P|K+I8m;bH^b^c^K zfXK}KU~6b|h+ATA?am+wrCqhYNzdj42;?0`q2ooJi(#^Vv)Wg3VuChgs(uy8+85x3mUVtLIiu)Jed$ipZ;d>IuxX00Wz zneVO1PA7SifPIZj?~joCLPx|?oja!PJ_ z_#4Gl37IZL%0J*zn#JhTkj8^|SeRWnR(KuU6vBSP*x+>ofkId1nbgnIi-CX8y=pU4_Sd1Z-G(jmVV+@4;QBQxSy_8f zTrk0&@=qo)g5;zjCJ~=S@CAD;RLy?BG(S_Wcg_@h;q=7Sq&HcO_l#P!cP=f1Gvwr^ zspLLh$QNYmjVd70Z!uTJI(WI-Rs0mU4ysS~?p3`1Z>@Dj&i9{grFs2gu(ldweSRn> z$q7C#pa|sB_&ac9WJwdg9?aYs7pLJo*Q!qxd>lq6oD6!S+e9w~FpdG#DOt zFpfR5ndt}Zka&z;hir9HRs1ebvPW~S5!SIByWk^z3lXjP#x5uLk9N2gO3xc1r3JLGGS^k^V0 zzoxT3PLM_$q-NI>X>QuwTJ2ix;46p&PQMyDf~1cPp-pWM4#Jz&vQ9I*!aJis)ebN*=zb8tq0VsiQsO$;oyU-Q|EZNE0-Ij z>Jwzux7(7)HI@^CWMdkZ=~5%qjEDT2CS?;#fz1fn5~tDt+cw6v`2DH1Wm0W;sVu-X zwB|&R*gOh9oT>N^Mc9o;fwaS{BKgHGgpL>-3xbbeGlhLJt;}c~()<2_kL)gSw-l`1yWVCs(mjc#z??lTd%J{XrfMKT0YD4+xztR+%HLKX-b*Q3e(VzOpIJZkxYdbc_P3DN*ClI)IVY%X0lO8v@Gl@06 zCamD463|o{mSO|SVLUB5|H$vyQLbqIenqG&O$L&TWxLRKNVaWA9m&&79y9=Tu-(Zf ztiH>mX;tFApsgNh5700hojm*>_jVn5YF}S*i(WQRR`Y}u2;}( zY28@FNisQ1)~uMP{mxr#ejSR=(AiATkMK%_PpOU1C5w}9w7yK-TKojisk3*(a>m}0 zo1>Py8qk08Tm%w3Y;Imu4TYD+O@$%PST5xV;IA(D9(~KB)d{v!nXdO!HMiuD037HR zgF-r>ZW;&MLPD4yv$22|5^%(@kG&z+%vSi_AP1_j*`--(YC!jAK5ufW`<&2fKY9!^u0C={Evm|Pd3#T;XHY>wYcO){_gg${zqUCgPWwAGpwr6y^8obg7_d@yTZb4-CK?_T=r z+Wykl_o{$vU8KBO6;@|pm1s;2&veZ$I)e6aO+Sa^P}1-^b%=AQKuRAS2vK= zlFTP-sNTafGOVxPtOS*lpX|7YOgjhbo^vm=vtZKv?9{x0Q!tBK8=R;b( z*V2MsCx1J|<~C{gm5o96N%G7BEg*rXlRPI(A%%|Rgw0;OtH(0vlxf3BDtOJUs|9G^ z@%8X;`a9V+Z{^b^Ho(@7sdwRIJS%V?tlmVcp#a?gmchI82j#4u4pfKqMFRoB#*h|utVs>)^=y0@2+NQ4& z`^+K1k(7ofHx4wqn;fF0HoWyT;vnWU^U7_SUAPT9#D%lakydK=Vpg;BGIK;DZN~+A zGZc2h8|-pXKv43QlwXzpHQT!0f)1P4yD8a_;mz~Sqh=sWed=ovsF~btD_i(d&e%EY zkaGLUrl_Cz-19=LgPq6YQj`WX$M*i~7Oes~qsK;|Wp~zha@nBHV~VpoXDSTAdb6|1 z*-*sMUN^WbUT=15X6h0ToRs+D`6f^9O1&%H)0vl6n{KRS;uI?R9Tob8wUsvaRZ%Wl z2D4AESa44x8o_#$8>I{==QmN;C|0f1o??@a5>w2t9E%U{!Hi?=_LChd%H~5V2;VfD z4Dm*^Cx3Tr^lUk)-HouyyH#AmfY&F^+|!%lp$ZlyF}4n$QmQQZV=U^A{9!p-;FPW( zG8l0sM9pk_dWDRm!!*xe9@?Rq>T+QV+f&2FtnPH}WBme(65aZ}UCZ0b-G1&mc94J| z%;X#@J6CDrBhS7u_0QYkPoicDxaP7YH;Y~8R}@8I7dc~{LKkM98gpVB(hTw|+d^M_ z(tc;e(=UcMx{|{Tsp%(S6SbS@Q*Ko{n-huT+M^NY%1(eb#-K9p9DRJ=onkDekGVtA z$`j^!pS}LK<3p?6*hYjLPf2EzjhsQ^nOwUNywWBoY6!;1;Z`wqcxec=45Q5;F+%_US3li~X$Xx_Xt*NMXIGeJ7BP zbEEMoycP*_( zAOM-QDZ?R#r+mzLyU7Iy5ii z2(G^)(KvtV6=vIGe`Cu%t0~eu1jY$F*zQJnBbWoAeM9tW09QvdoMCkfaNGPO!z+N2 z#!G^&zi_wh8UIkAr&~u$FmfbB%73 z-UwP$>?Xq7GGl(a(am{pqh)`=CDJ!nt657OqG94_XoPtzzOgRCTdL{Vuj&bSKCmTA`PgT)xgVv-+u-L zx}3X11}-s!KhH=%d~&$A8^{cR(1-<4KVQ~PVd||&{eMJl7`4|>^JCAS;wHnVx(K70 zhK_$WW`BQ~s(XZRb0b*>DYiif@z0nK?>}$*9u45X2u9@hB%?|#1J4S&T)rHG*Y&=n zy0kU=U(M$`zwBUwWtU5`!+P<4B2(tF}lWTrF zgc&FJ>2=Rn-#UwNUnnw@)*O(PdR4z}Ty)$r27`()>Q2{F4l=$k?ga0BTmHp$(r@V! zt;_J>D1()|;N&cAVOTeKK+-qKy$TUDg!Cc+ArPg9*%+8Vt2Z%E4bf2Ad#x d{(U1d#e6~Ja+0ZtxL4+#h_d{8CqKSJ{{w(;vC9Ae literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/villager/work_icer.ogg b/src/main/resources/assets/emeraldcraft/sounds/villager/work_icer.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8e9e19dd2bcef4a462aba0b8e7e4a32747d5bc92 GIT binary patch literal 21988 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 V9$b3G`?LL92{%N7r|b9k{|S@tMcV)X literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/azure_sandstone.png b/src/main/resources/assets/emeraldcraft/textures/block/azure_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..9117c797de4ad6e8c6a90882625966f38aff30f9 GIT binary patch literal 1845 zcmbVNe{2&~9KT_}Q34J}!Vifaw;{;Z-d($1cL#-ycF>x2%&ufC5#+dgZI88g$K92- z6O%1uXvYRVO<<_N+p$Wkhw#V_ z5ENWB3aF?l^KmuR9L;0%=Av_A3?v8xjYVVOkf<^-JC@{S;8>r=F*FI$s_j^@ZV+AK zDMuZW0#K`oGIC^r8MVSNZEp4 zb}XoAGK1sMXw($7m?R~DlQd1^gc&!RjSyi}F;>P&6QPHc1oB)OCr6Y}(m2oIAOyld)KrKi(^xquX_6Y0 z{)Rfee4ha*t;dtL@jzd~;j{@=D_IT0ND1;lwCan?0QUk_iYOc?Sq@={cN=AJ#k$!frknF%O2VKJJmK9XWclCfIzh(d-S zhM*pa7yR)DLJQy--v@4EaO0Z*`o&tc!Qq#giD=JQzgF^Wff2yfNK4h z)Wf0wxL&qHq2PawGP!n7i4VhJ-_VEYh6O*;Ef0vW&nd8>jWfi*L6D4u+ga?JSsV7w z7W;~_)^3?tUB7Hw)0aPf)|_$Rz^op+=(jq{x%u?Ey!OnI8@47QhkJwMHyL+rC_fGH6IfIDl__8kX!lvylrO0#A581BU24t}D z)S8B_tC4B79Y^X0q!X1p%A^k(M=Y+onBSyb{^)OY~6QV^~oyQv{Biqj}?dyH)_h$Ub$M-+Fy!p&KbCE^2zw2u^WW-)b+&y=6 zY2WkXkv6dZ#;d(|Z(h&ey(3b$bwE0%be8TtxIFk_MaRwSQ*ZQ5o;deP+v2L+?(bb4 ztzT4SU*7U<&fp`ptsA1~q_IUmxpx;c%Lfzr|gbH{N+*PX+R8#nS!Y}Ta~`byiI zN9*$fo~+J|XKPwFCq6$rt^PIU>gff6TSWy~p8At`{KUZN3)e2)da3sPMTh$1qp;n@ z9q0E<+E{vM*O{}u$i+KroBO-pTiMmqKidZ~)+P4M8WWkZr~A&xXP+RlC#-tolKx|J Mmy|j8&tLw^pK<7nV*mgE literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/azure_sandstone_bottom.png b/src/main/resources/assets/emeraldcraft/textures/block/azure_sandstone_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..67b2732c463d6b3ce7aff321740e43fbbe4af38b GIT binary patch literal 1855 zcmbVNYfKbZ6dr7;mRB{cDZZNNU=wZKoyW4v?&wxw7u>BbP*@dfNEv4C!i0G_Gq?+; z)zmgtLqQ-Bv4}s6G=@IZCdEiwU$rSdP}7pOp(0g^l(b?|ixI88vn(5J?8`}J=FYv} z{mwbxJ?G4(-0a1Pans`v1WELI+`dNYpcnX-(yT0+8BQ(+=8&jBG=eNx7*ZIv4CrVvDB&e1Hq?FyLwU}Lt+4tCpW*_g zyr)tH`IXszwz7XKD}TFo{SOQuq2n!`-m2nUrq52Xk)4JXoY(qbY=ny}Fp2O7CBXien;be=maVhesb zu~J=EXdDj)gXW;cEUP6r>2Nr3g2E}v1Q8~!LeiO#Nzzir8Qef)RbJ6~Swam)rdTf5 zof!0VECf-B(n?xHCMXylVicS-6Glj3Ajd{=O1Ub8jdLsx1Rw%Q*C3XRVwF-^m$g#) zZ>Xco_ZfiF`g~Cv5A;P8qb4*xa}5k5BFF>Ln!iE;cplK?a+L*{YoMDcMl=fTQURmO zs$Z6c@q@}8cNulLjDxYGb5`&YCkM5;_v`^~Mh8xeBB0!a#Y9>Cq>Uy?+G>4)u+s!F z2KC7tAE|UM3BVPp1Vf`r(k@w$RcIJ`XSsLY z>vH9)a)1}$f|j>91NCOQY^1|xGf`$T?5@v8dnHY0Bo=txP7LZ}=6Q~GSP2T)1B?j} zY^n(`sWy|tZULs$G?q=XTI^|7s(5_ATV~6REEwO<{m=b5Di5oW5gwYys7)h%Xb-Q! zgRO{EPd->383{ZZ&KR0ujY@E0tdRnM!y?oCLn|;w8!QEo^dItK45rBeJ;Qo>F~PK{c~!a zbv|j=qNm=BZ|`zVqRy@!$VBTJGe131nPeT=)_Tg@k9<5V2p!+W@BJZldFwknXVxA+ zd3f{Ak6H&m!*2d@t*tVzxb~5~r=RWcUug6{ol=1yNA2REShr_U77|!m)7NO9HPTnu z-rak*>zh@>)jyB!o_gga??B96!u5%xse0|S<9)N%UvBtzP20;kCknl@8!yWFRW(PR zYaEOzTwcGas#vrA)IFN8zUt!a{E;OmuV30<)HdT>?=QVV-Q3@&HSLHw3%Y_|7S7#L zThKRi`e9G=u89;jbkrU@`S#5l8($mkM2htNASbw+PbNiI!?HU=^5?IttFO~6+Xpl7 zLp@E^qtoJdR*$yy^taydG;8l2EUKJ+=GfJwN54icPV86}cS%>awkCJ1OOTR~qzS)#M>fhy|x1zTY4sV%8!ivwxKW3(VpW=Ub^m! T!E-gnFV35p?fx*M=#4)Cn`NCx literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/azure_sandstone_top.png b/src/main/resources/assets/emeraldcraft/textures/block/azure_sandstone_top.png new file mode 100644 index 0000000000000000000000000000000000000000..8325fbeb258e5389bddf20b7656086439b5a8277 GIT binary patch literal 1699 zcmbVNYitx%6dpjS0*w_DX^c%KLw~e^dF^AiGwHUL*|odClucPfTTweZbGJL`?#wtd z+uf~@sPS1%gbLLfu}KMpVB4hP4;!p#`U7Ku1PM*S7+bB6SQG$~Tic{$Y7Si0tcH3))~1_QokIG5Suu9fh;Z-0z|)7^TY)kKiB_t|3w^48ns z2y*9xO1Q;p5w>%ZmLNn~ivS{>&>3QOIc5-Vf%b!csxg9;MB647)bu9{rhi)Hn4aBXjs7@CDxonEZLHi)(e zA(Yn)fVv3=muQy*^{@oZP^`nX8Ff&!hon3t?ZhdXqZrP~qWK4d)(knyHTxdU+k#(S zEM{3cN0O;jiby#L&FCO$mSsuGK{^~bMBrvdwZt^8ni~rme87|pMYj}9MQx2@L`zy; z40@UiA)y!5s%D-hNEn$Gb&@71JESa7mWnt%X~eU}Wr+lFkN~P>LM&ax>M_mI%$W8! zs*A@r8GzIZLea)8eMuyWCQQrU1;fY_a!a%s&gg(_2BwxYB;fCYZf>-r(K+4#qNN#O zO^X*UDpYV8<$3#JYS5}(iYjX=JdCaQ*`s2o(# zWF?xpCDhHiT{l5t*2tnI{wr9PxTt0%L>RM@5IX>=s~s3xWRl~xxMo1Z&^zby{UFbW z3@xg};epxQxCIURd4^^g26qs2)?Gp1f~skWssw^QF9!J`6h-DF7efI?6md$X0A9no zA~@^x09=f+l1Bm&SJWdHkQU9=kT}^x*=E2`@I2ub!RY z$^0s=pxKP!M9HoMFDBV30AK{UZRNHZ$jPT-04n{5yvV^!Eo!Ai12l9%w*E`%k32O})VG#U-#Ug)SMC`}R!qH^ zJm32%+IDP)yYgA(`9mcSr5Ar(cc5*)XVn?rwF(WbZJeBX{J67p-`T6R&s;obj(sVu zzg#i()%ePnf|1?|B|dd|(*MFjRsW?kOE->GN+-%*KXz^|%Fw&}%wK-Brn|@dr)N%e zJ#}UMQs~g7k00xu?L6A+-!{X)Pu=+WV%w2T1K*5oW(j})FgLJ4{;2Nj**c^QADZ1; z{mMkytMh@Lz54ZqPokCV#M1F=?|ks+^{S%OiOuGO8 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/blue_nether_bricks.png b/src/main/resources/assets/emeraldcraft/textures/block/blue_nether_bricks.png new file mode 100644 index 0000000000000000000000000000000000000000..f951a62912386897970b231efb55844c671570fe GIT binary patch literal 1734 zcmbVNYfKbZ6do{EN=0m&G(;$wj5JvSyYtxh)YZZ+vWqN`Wur@Nh1r=qyCb_ZyuiO`D>HL_r#2Qd*#~653FDIFq zJNJI~JLi1&oHK7XHPja5Z^=gxq`>F(1mJtKe&^-FXJ3ER247Fg-WC->o_bclbCCCj zix6aei4Y8FA%8v1N^ujzNnv10#$|{`kZn7XGQ+k54Gn{cAiA($CcnT?fpcMdtbW2T zyFpa&b}OK{yCKMSx3f+T+p!(pmZTv;9B2%hjK@TkPP(uZFAc}~G>)Muh}Q1Hs&s>B z$lrvzB?X{Xlg-GI77DdHO{9%*QkF`TB1k(<*m2TqBuJXD(Pk%_zA$J_;dnaW*_pNl zzg$>U(_|XQ6N!W=VKzxh1Sg$NCr(f}MHwN&sCJ1OlQfFz)(nFOsH`H$njnd&&d7wN z4$Xx@Pgg>S%UN1cP0IuY!;_4RlO{qBDFx)%EKcrFVkzSsi-Q=515r~Umds-1sH911 zRQen0?D8W9ptOE}*2bE?#N$~Ls#enp!$=FVCRz=4$p8-kRq9Y!P}2$B+^R<-({2SY znxq6JDV8~?ri{y|+pQmr12yasL{3Vm<*W7p52FDWMiEeM!eXTCLCQ>17TQWy5DuCk zR-k@~6Zoz*p;p>#eFO@#hGR75U%?zp^O6#0V9Y|Ci2z&{BN&=hl6FfmNr8r;cjnde zKDWC`k$52n7t}y)HR`Kz+eoL)W~5AH%3Z&o_KB*-h%E4VTo}~HBnTYM^Ds&aK^S@7 z=`aF|C2S0b0dFL%ED0@)aIFKI21T>W~G{fqZ;KEov1ptSor-jE>V1+gj1(5U~@?r(1O1zd}6i^j`YWFIt~aKEHWo>^Sx5D;Gw}A_e_rGoi^V z$BusQU6|eX@r``M;6J@(aJjDi-q4G=tur~VSJa&u_%#pdn;)6JH{ElQLLBVng4*Gy zOP{}WZoUNRY#FHkDsR#Du8A%prpD)rm-l{V9{BQ-+B(WP+LjzY?_77}rNe=RQ-*8f z6?N66w;O-j$1MCkA`ur46Sq zjBK>FP0SS^ZAdOGGKB}Pz53A|?wgm-+ry5F{gajLV<(F?-M3xsIa@wfzw6fENZs8B u2TyvRvHZ}x)VDn4ISFrZ~O_Z98(ei literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/carpentry_table_bottom.png b/src/main/resources/assets/emeraldcraft/textures/block/carpentry_table_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..0cf35850184002638e1f362e7b0e0015897c2fa7 GIT binary patch literal 1628 zcmbVMU2GIp6rL6lT}neFCTeP#3_%c`-yLRm#tu!pyRZvPt;^b$Xrj}ZJG(=7<__LJZ4hl5Q6E5kAVM)DXw^22Au10V`=U)usu2wpgBpz_`rw`YOELA2NoMYy zd%ydgbH01dIn>>?Wku+&5QbqZQptE4jVpuqmPYh_ZX_q5;Z`TP)5EaktAe)y8++*v z3|rb_X8Qa-WxJ$7i&Ayi52%vmAT)-xwU-=K8vs7u53;5$6IUlD3Eb3WqIaXhC{7II z%;b;@b_{i8w4nh_)QR>@cw0$A1QzgBykzBVPb$eonO8#dV3{WHGQ=N{iH^V^-lufq zG3Ww(BPEa;%X4@{q*#FwIsSf}W7r7IL})flGOWZ1Qdq>R4}q+?x*?_Go2$0apG@R@ z-;rp#SS(V-Fa_N#&5EK(GaSuvBtnqhpzW(A()QNW7~;UwT+{JQXyXB++7Ao9OdwAy zAy`hG*7mA0A;IX9>d-931R<4yx>mN0}I%`hp=oN>*Syhy&U`->iYI| z29UIhQn#_FFP2p|;rWR@D2%Egi=w^EpabYM@L<8!Kw=Mab4?J9BgI^x`q0fln6F(_ zcgcOjKf+3RHo*X$&q3 zdVC{oJyeAU)KDlQX9AIda!Nzhdx64g|aSHl`9M0lPQ4bV?U zR8ABDYv>#&)XvADRtU17c3%IV=O1)URE28(hIxY84AMtRnjX5?!D{vF0K2QRyor}H zMpCt)5@bRPQUK^gb=kaO1uC?~96+T1kQWu02Mxcdx}YPA)cP-}M`?IlgxI)ieC%3v(atUfooB76Fs2~(S~ncv_3n1@U`Zt_e^Z%(Pz#w%EO~e z&OF-tmOgg4_3EAHjnux?n@_#tH;s(`eA7k!^`|>GoIlmGCPy7jA||ECgN@i#jkKkz40dL1+X literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/carpentry_table_saw.png b/src/main/resources/assets/emeraldcraft/textures/block/carpentry_table_saw.png new file mode 100644 index 0000000000000000000000000000000000000000..98438d9d54d059252a97fecf2d5af0f8553e58fa GIT binary patch literal 2009 zcmb_dU1%Id9AB|CO(YO$D~Gmp-TIIk_jdNNwf3J%XmF-oAzh(F6`@9ak(T%PfBOB|}?AmKjYILD9?M zsx>&{yxp`TQH=pZ_@7_{siy1OkmPLHu!1?ysW5cRq?&VUu1_43=)~3YS}s@eUDK+O zg<$yL0Id~rXlB=IbSlFZ760wB^A z!<6If*NQ%sQAKG*s+)|yMJ}pBr-I4l$}yYIXJdL?ry6%3z5g{IF1l8irN-T@!sgnl zE0~nCIYsXEXc#vX@)5Tr>=3Ga(s0f^d3~NVtIJxxzbwDA@b3AJuRz!9i^rtz&kwd` zZk#?u%k5tr|KagJ$6xwzfBzdj-#*&K?0&iJqXX}!2Qv3B&0bxoFWpQ~*Oljw{Qe5{ z(8!5vyWak5Phb13?epV(C&0zuv`aU?x$^gsZBpXL@TV6~o%{9Tg-6b6^K+fMx(oW* zg{j>O)WD4kqdR8t)n4trqx+67*73DV-j<)|hQ8Y|pVJD5yH44cdlH|vy_(-bm7d;t y^2}=={Bihp=dH!B6AAR(>2CV52Y-3%_-xzEvsWfRMiUEB^VJGN`A-JMkNpEjdxi7> literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/carpentry_table_side.png b/src/main/resources/assets/emeraldcraft/textures/block/carpentry_table_side.png new file mode 100644 index 0000000000000000000000000000000000000000..c51a755c77136dea20410c62725b3dfe276a3f3e GIT binary patch literal 1656 zcmbVNYiJx*6rNVPxGA+I@lo5vj?)K;Iy;Yj&ZTRb%&y4>H?Et7MhLd^xVt;e?%Z)^ zHoHkJgot7+6|_Z+x~&NM&w@&Shz2bspcGrEQK({Q5$T_X^-&@INa~$^kxG1ZU}o;z z``z!H^WAgKOeY5WHnnVPAqZkqtUr>(?=8-Krwc!K{B~2qFSpVEltmC5+njqH@y1(Q z31UOLmKwH)z>M~)$n37~LoQHKnssdG|i8Bgju4-IW7?^{3sM{9Ca!ss}MK-ds=x?Z- z%eNT7(#GRW8*BQK&o@n2c61DfQ5R%Qw3Qk+Ad`d^Dwqn4j$t={QnArl+M-g#Hg$3!tYb>(w&^pQ(>> z8d=R4ASq5Igek>I0jN^-Y3;TZsL>X)5R?8xUesU~O4~)rggqIo)_+Mo2K&!AWm^k{ z`D>KbwN)kFfaAX544VxLe>7Vj)N!9PaYMVzmA@p2b?al1o>b`A;w#+XxqVxr2d3Wb z$g~OfPLFJLcWt=##qPJSzBqEn^n5!p^TODy*DbAEjPx zOyC7hvGk15#?mV2C zcDJoU1QiNF+r(g~R?832RErN<4K`Y#{e@VIU^VzdQE5U%Feaw>jCZ!Xn_}vVNoMBG zz2E)LIp00!Om}_V#@w9Sb4(^vuFuN^;5*N_Z&?JNJ-tx}d}S-%&6>%ybcJzenfhK> zWil;UBLqWw$X`oyvS?v>xdm7fq5{z-Q$ix**rt%27O8Rf$w2Xh8s|9-#DEASU4vL6gH@ukE^ATw zZ>TfNHyD7@`u!Oj3;H68855db(+P8;g;~S1I{U9+o}ma!gjCVd$N8{=CoQ zsaNH&5Q7U^V51xH)p#5P<#3ou3z2l!@27o|rn3?Ue2fc)`d9>kr-?9O4+D-fx3oAp zGf&#AW~ZIQ%}yfh0E|fD;0PtvPTDWNi=4j(l07?HLFXmvH9Mu0G0Ze9_>pOOK!SZvg$=E7=i6;2Q&z~wR0m6X#lV}= zDLn7JO$W0pdsKJv?t;N(-{&+`y&8CV$F`kW2bbxul-bwrx^+#r(_LG*mdsa9H;;{W z&HgyK{F+?EtaKmmlQ*?q-hO^^D1L8mL4GMp_di`ce0JgjH9j+V;jkD z)Du%j^`b6x-?neF7nh!1)Z9q*ZXKF=KH3u=5BGg|IME@?S1=C6~5+MH94aBwqHTZ8vB-#=TBPBT+CkW=&mcyAH6>N;F0VD zUoJoJ@Nbo?pV{}8v;5iVKVoB}R}=BQ`Ly$$iE|%V_B?*a*TSPxQMY$} z6KV|~D|_zF^;cK+yb%fwS!^@6VnCxzb`&i`ToQgug{>yAIDcy#~gDv G@A?xQu20ec literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_holder.png b/src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_holder.png new file mode 100644 index 0000000000000000000000000000000000000000..9c694b4a4398283a9c4f60649006180b10975540 GIT binary patch literal 2037 zcmb_d&2QX96n9Z6p;ZtP7gP{f?gdJ{_IUlV98-Ql@vfD%$F-g8 zCJ6Cy>j5DlE}#h1TMmc=SE@oK&hQriCnSUf9FX9I==1K{O<)_Mh?Tq^&-~tdzxOro z*2?nb`O{}l3xY7;ZZ%io{bc^kor3@8fB&1n>+!gCJr#sAPvy@E;iKKB1>vzPL1#T% zcduZ|!wT_umsLh#3}``ExHO6h-C&v6WxXJ(OTT^br6dMkU0O3-)r}q24_Z43ySB63 zp*tJY_M}S}#f1?D1tH6bI0^?*ibr*6tQW&N-&Q1X49Pa?QX@AguDdIu!xJVN6;q~2 z*F?*%AXBw9{eq~e$Wl~GK~-5rST%9g7NStMu6=gUaR)*CI zPkIWnZCg<_Mbl(J$mw>Jk&zsw=L!u?meM4Mvw%lpu90;4W>%Mg>BNOFF4acqG)xdM zWkg~HRn*+2G0>wWF5XNAW8)rG*novB%2L3h5*zn<#?wB3i0bnAfB^`t>y|cVatXuI zM4Byafg96+%tWW1?U*U6EajUCWlLK?^IYytjGcs$j3*t=2SuV*3d*A6MHR}Krs>UN3 z`A@J%vCor`fX_ildQ6Fi+$<h=8X$mF+I8%6iwPzGm6fK%|gwa=MvU zK_TyfysvxJs$Z)?oOB`+Q`co;sg|r;1Zl_zeV$gxUrhq&LNYkE9_W?_p(wO8z@rq> zoKAabk@TjkL2xm5^Qbfzl)Q03NSv%Dij>1Gj>{Rhf}Fwj)b2HQvt%HSD;N`+cV=Cp zc}X%)nr;U(GIF$tPSg(j43r*HrxRGp{cK1Q*62a@j?xOs!}zCU>u~lOGjz+SS+Z~W zL^ciGl)DBqVKdPr~rL+HN*FwReB{ z=JveMm^=B^j~70^+yCJF-l_M#U;E_F&duFBZcBYx{ID(j6z!eA`}(W*zI*h|TXXM! y{p+WH{v5qF{8p$wb7C?1D*aYc1gH;){rNJVy2OR55FK=Z;z zrEZN5>(>M$(wc-M$kd$KIraSonz2{z8j3cO<`$+Mh`VO*^1}0$&s-}UlToJ1^A`=;n=swiN z<$Da^&;|lU8$)VIrHUpDv$h4hkq^j_Xd}|9K_(0h)T~Rewgt>_tB6jzN5Oz^*8SrTJNPXX++k^*taXlk4yi;)z)D2a4z7^}12J@5B= zLpq8nNxWc$=X*$ht=Gv3PAARVxUAejK=iAI2~-LCeQpZJ$EGN<2sl{)F1v%4BpK2U zr-P%b0gTbmAvu6U=3Lb*Hk3`8=tEMoRRx9pGTvVeq8x8$d0L7_CE6}K1Ud>JOFIN! za>_tpT|!l1{|mZ;yAUKFng@5wzo96w)L@ScoMt26OCAuJ&>sYu;`>Y$_@svlT1?$?8luC0Qj2Why_d43UxHMKnj7ZiJZh0d<;# z87O9^fevfpID5ls1?GPG4bbvn^~0;Dq0|r2IuEHnA6%&ssBwr7dxo<7$!0f~8s@)Q z%dXvZgcjiVT(*YA3ju!=uN0_aY8_t~r+c1xUZya;yP|N7|+ZX+`|Fp9^^yU}m&h}rwp&j}?w6f3M zdu-+9rM<_{p<7A9*B&fw>uY-IImfpfGj>amDOjd%iM$ zr>l#2JG}bDNOMz5Nv{jXk;j)%M9~ z!Kj;q9#8Ly;OJ$w7-4)!ej7;QdC%Z{(3wyXq;in b*Nu2$@x|_I6Mng9UHAUlpl`ot)rNlnDnQr? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_main_sidev.png b/src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_main_sidev.png new file mode 100644 index 0000000000000000000000000000000000000000..4427d88bcab6fff2bb4ed73f83d6d3434d50e9c1 GIT binary patch literal 2179 zcmb_edu$X%99}?4c~lBUy!hO16C&!~zV5Y~o(cDLLW zLJWrZ0NW=0gA!vzqtyc1!~_&70-=^dh*Tl)4~T|DN+Mdp2-FwOUhgho3KDda-JPBJ z=J)u1-^}c54fQppGar~q5JYLDHr$BcWzJnP9X}ua)ca_H{Ns+ z#PmH%tl4gkJ|jV0bpu(CBX?FcFq$ALtFi`wt;icYV5Op6sgETs>vH=qecj& zl-kuMTDrPE23NO2QKqV%A}g~JHlQLKkXbdYSyDDgTWBBR3FZ>mx zQnqbK43o)Z+!?{Gn@NTfMUi27hUaOFpsjYz23cCODhd|D$bzO~*ov-^jztjH+w35P zBb`V=HHv06D^C+9jL8Cn;oPi~QVuA?BF<dodWKbHZNV6@B<%(D%rQ5od(r;qA zIDCTxOl>q;^f75Hs#t;;X z(}hAc6hbCLA*V0_^06jGll6?X@VYrD3~Usncox&mdTCCK@vKug*8c<>kXUvC8r5Yb z(S9S8XJZ^Ic?HSK-vGs`k%0~V6)Zz3p_?keIV&niBF4~?6j@|a3h8Ox#Ex-v!u9=; zP^iJw6G|EnSdBG{$w+m`$B8~4&AYi=xY4K-(JUKi5Jkd43iIPu6dA`EhpY#B=>P{k zbVBeTI^c~9GyonbAlVBA2n+MWI&5=PP?#^{`2i5;c!A|<7>`3*kUb(D2Z*ITA`g8s z5Lv(IEzEz`RPZVU={vULtW8HgQmta)!nWsE&r-B9-%2ZFPB9XI&PoVU(2)R=seHFG z2?Mv6!GzgN3SpzS(8UDI(i3(Dm}pTFvvoVtV{R6|1yCh2 zosb&yPZj3IuG@lfIdffjUw4|t0|kE+k0hjFs!V*~Fugyu5yTWV5?&MwbaZro-1#nB z_VT`tV?&SJ|6ZWHk6H5YMc4K<$B*xwU8l>vB||Hge(P(Uy_ub*|mLd*??z^TT(+***Ogz3aD8)DCqcckY^NeHnW&eZd7w zst%3uyGo~RtE-za`p`j_HrOz*yL8&ml@AV|-rI6yUd5R;n_P3})}Ng3UOv`xsHcBz zm(@9->?#c{%>Iano;xu*wM#i54(}X`EG(zKAKSg6ZtM9El9f#--oG^R&eo=BJBQ!i zvv|SUIqTZrS{^_B)tvGRErCSslGo4s``AwOWzP%iDyM$oI^25s>gEMUmo2+|a`fcI ZyXB#;yAK>0O*p>^k?Q(z|Kb%d{S7Ps=9mBg literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_wheel.png b/src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_wheel.png new file mode 100644 index 0000000000000000000000000000000000000000..1c71e97775e1f62d1777dc4cb1575987ab301939 GIT binary patch literal 2064 zcmb_de{2&~9KWf9IhdKj2tvfm(I``{_xswrtc=l4RM$t{*b#1emg3Dr)>%DvL z^ZoVte%^b#;%%GiYFE}`7*-c;jdY-Qz4z2CLjSj1{2QRxwN~rB4u&mR<~>!|f#DSx zw&*QA(dl-^?v@oZ>j$ctg#LWiLTC(YY|2|e>4Gkvgelz!5ffwY61c90h;2fQj#*)t z)?52*xTUWxq4aerl1enK#~br9a*%~C!1LLR;mG+AQSd9Hu{TW-cmd*eg@|S^Al?~^ z<6+Z=xZoE_h2dE|Ao&@QmRNor&eBYPq5~Aeku)RIqRdHn@kgL&wyMb;kvogA&{v2^ zyRIcuR4$kE=QzJQ}Pgjj$-SUtD6Syc?3zb+YJ#Y z)0q;oR@trL6lp?)QF&ldjGy*ODgafbjI+A!Od+_cP%s0t&~P1uWy)A9ZMvqDHZSA4 zygVlWqBa&Q$EcV~Hd_wixGg=Xj3OZw(N3b*f>Z}|%x+tOEj=jBHC{EA9JV2FO*>(l znNp+TrIhh-*lSD>U%O2=R5Rx^%(8(I;KC5W(ui(aAQ>saNHR~$JbMQnlxcbf8Z%X0 z>zxZ_=>&s%%*w1d2Z~gq0vG%zSXE@rw6g%!tY<+AQkIb-@G_Hf*vyzV3XHPjX3s~% z;ka#TdIl{x9h)}d(U!2tNTNuxex{IaEG9<{#|4H0qmdAS`0?wyDl=S?;W#LfT0j#? zUgQI0P+(LNvLeR{G~fi9E!js*rQ1_M$zDbFoXRNyUJ^(p$tIB%&ydNa6eLxsut5n1 zfW`+)_U*Qgb|J_t*pIh2J^9G3x`P_qTiiWc;P&DuqvHj|$UyOSLWod22|$%7PU{sI zm|q1mZgXjfoL)f}Gcd>0+#IlBa|*FFAL&t-%ijS#SI#~OIH(AsK!SkClB~e-Kenj{?~da?^vCY z8uf1#7S?7R!Kj^uDRi!T!}5iKKFU`TG!Rubx^Padmu^Rw)um{pIT3vP$HCV&AKP$4 zOZ$F!)HizUsj-o%=^Zs^ZoKEW{x9Ab_`SOS+vPh)w&H+X8opl}%3Qxk0MGaa_Mg)Z zl-8=UEZMz#^ zxa<7z&5PH4@T4z#Vep4%%|EX@HMXMhxnEW*n;%_$P5hgiUYT5U==tp%mT!IW>x=P& zldn^w$45^rJAb0(qYtN-1gEMFJ<)XQV;!f}{)5@Gr*|}*d}Mrj@n3acuDbNIc$89{{bW@t4aU> literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_wheel_side.png b/src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_wheel_side.png new file mode 100644 index 0000000000000000000000000000000000000000..851cc4374d8686c7dd532be175371ed27b18ce21 GIT binary patch literal 1978 zcmb_dU1%Id9N(50(xe5^fJHQ}Td?(GZol_-mtJFf7kh`jG$aR&g3;O8xw~z4cecBm z+$G{e#0Nhr_Qi+RJXC1GCy|2nL8;hEC_bnZM15(|ml{zlLJS7}kLw?Q1jSaD+l9h#lgy2_v+~Y@Fe!r_B(& zphN3Ntu)bu@pTyRVoFFtY5;B2!3DFS+c0h;9=q7XejHJ(*ue%>5|gM(HlglJZ!kbp zTP${LboIsaIwqocbdHA6N=R39RGJSkKY=4M8zMY9N8Q|)L=%|V5W|>+B|_YGp~l-T zv)OD?7@a+E-0^KviymLM2IpXmGn^#QbPFmFjgn}XieM_zlY(vvLK9jfwo{(p2$h7A zNNX&avc3UIRb#^#-W6;kvrIw{(wH3&Rxls<6^`v>(##Tp)$_kb7hb&m%gf9XIl1=U(6v+VKlBcB?bKiH z;woU~r$1O6oZhc}|JKlf{gY43?9d;6Rz3aY-tR7~?Y?~C&f-nx*qPnN%HJzzZY8&C NVRS6_;o+BF{RgTodZqvX literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/crimson_cobblestone.png b/src/main/resources/assets/emeraldcraft/textures/block/crimson_cobblestone.png new file mode 100644 index 0000000000000000000000000000000000000000..341ce12b0c56ccb7b858ad5dd08340f437693f3e GIT binary patch literal 2003 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 D*(V$+fARM3l zashx=v&O)iC2!441}lyaTyE}Oeld_fj-5|Q2<0craTAH#wFZOk^N6Br15k3UL_)7W zOX3FM3(tt3B=pi4(RRcc=<7Fi*Ar`%F&p2{9I54z6tnWIM zlXCcI%%R9Bi!GXrZ+Hhesmyka+;HK>j)tQ(v%ib2XKzdV(|keo{G-!bZ5h55Gbe-| zxBjw}xgopyim&%1F{T5Tn)l6?oYt#R;dd&FNr6Y@@glpGcMadjh0PUY+6lCh!PC{x JWt~$(697|oJqiE- literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/crystalball_top.png b/src/main/resources/assets/emeraldcraft/textures/block/crystalball_top.png new file mode 100644 index 0000000000000000000000000000000000000000..df36d8bddf15dcb8dbd2fba1cae62b2c8865d74f GIT binary patch literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`@t!V@Ar`&K2@)9xIFfU=?A$j) zr1zh@NwTDbgha%JBmBZE?~5HvIJEf06p6_Nk_o2{94MF-!`yML=QP72)5k^)Dh{g{ zB^bTC7$Xk1MKBkz>1$3_0R2YYqJA)y}2vyj&YoDQ-gNxdv|r$zNPKB zyGb&F&Vfc{B-8ydf+8BDi~z$#FFKBJVm9`X;<3qf@XqZIF6%emSR~FAxJB$+fs(qt%edq09dlA8ny~`++mb@VZZGo zkf)0wXhxYhRqLMi|ixr{UV%~Zj-B2yp*G@#oS!ZKy7k%Tt1lJIY+ z%geVJK+=XnWgE--qG@Flmff)zg;5k_S+o_+8i0xb3-+5b=-7+gY;dA6c)#eB&-vS76%Ov}6wmNH*{hERE!*-6ZRYGU(J;p7A!)tvpRHLPJnd zu3CfHL$1ftQu!1(<>+GK{=)FP#?!q1%LU zHH8+eNT(kcI|MJodA%g-VhZktLcFM3wxr8I4EPA7k4se*-oq$fy4lN-aW~75t!PMc za*Ir|j2v%fK`+bovZeh2DEB*AP};Bj&;8p>6;+{>x?>)vHl6h0gQ|rNHe0No9biv! zlv43R#_*EtRDzF?ofH5HQJhxqSb;^_bP^!af5?kPm<8i@S~5X<0;%<1QjbFZQ%>0~ zhC=-{%EH=`5--6~-*ATIhJ`-LEf46Z&zY#9{XV@ei(xC)ih=g%#u4qvqv0z8J)zW&*jSF!`y;WJy$ z*5tOjr!I9}8{XIRJ{EiTLu*Q`S30Zq%{_r--aPpuCv*7^ z+UD|;_t4i??jL=za?gqHCz^lwl?8*()*PEZ*>~UBp|Q5~spxB)atn2_$t1l#^4s)i zTpX)CA&sBe{oM4W@!&(xT$!l-_~pinKT@aiKl{HEr^ExN-@1_6c_Vi7$qG5IE8^of zXDbFhtKK_axqTor>TlZi&4&4t-yZC&s(JN%=K8JiVB_Vn!@pb*x^|wQnc;ih-W+^D rJUUzd=2Jq~;KKdb^JCag2R~Z($GLNtjqB08^V<+R!htFO(+BXGVfdyzm+xIY*Yhs-|@{yNEe?#5e zzRCcWR#lre7WKulnkGCyxfO>|7i3Yim#H|A>4zRFx*AMw#cs9-(KwRqLf|7egHWMy zQGE@UNm&jqCQhyyFl`-`ytNC?Kn3_PLGdh>n-yq2lHu^Jg(WU>FB_Lwwgy#^ZW@)v zpkY?x;#Wa&*66?o{|eSM$w00JaLlF!a*%QC97Q&jlw?#uE;fw46Be$gWx3BqhFQQH zUVl$FnNG@4PK-urKEzesRaGf%dp@u=m{t-L)+c0|x@3eSLJVkt25~V)8`-c(XE`HA zvk_g_V@8-`VZ3o(L0U1$g2s9Mf1ZEDHE|V!!Zq^*wHc(3lrlYhv6XuDY=p!0S-~W$ z86yELsDuQi1t|b^s=jPqvjR2RQXXQ`f5?j(%tMA>0xs;zVYU8C>M_`VCMerlD9m4@ ztnMu+@dh0CjbPerSoo*e@}Q0ToQoS;tmDu&+ze;aN>^shZflR)I>WX+KRSG5XZI)P ze?555YY%oTo6YV>J$B2?`v;#oJb&Qg+L;TRC*HiUhuPV3`u_KB+Mp4aSCUi7C6|By z_}dT1e;i%@(p;I`#a$Ww!Ashpmkn0)cJpXNI%?RN{S=DIe0vH8I8rTHa?Kf7y^A0Kg_JGGtLK4G-= z>^n2RV%yUn-T6BF;bd}Vdat5vx^i;$SLe-eSkxOnD+?n^t)JsA_;nVOv*dv)K~ e`Bw&h>zq3K)|ab~JTn>e{dBTdInn*Zvws5P4j={q literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/cut_jadeite_sandstone.png b/src/main/resources/assets/emeraldcraft/textures/block/cut_jadeite_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..9f4baab1ecc06e285cda319a37cb706e630fa61c GIT binary patch literal 1683 zcmbVNYitx%6rL7IrO-s91=P|E(}c9vdG4c~v14g>7j_L>H|>U&7{uw!-QBS}bEh*? z_K{!=i4vMdXo;b%#^uMn+|;4NtZ5oo}c@U)iHEg>xuIbH#cooSlDa}c{vB-$KA{ka-yn>6z3m1W`nMzFP^lvHHLSG`0 zux&%2=~OC3rCby=<21|jJk4-4$B_s@S{dDz(xh(H6&d`%l1_~o z=0nho60L3(WI}?`Y002jig7~90TsD~GX~6L&bT7eAPF>}+ZMvIC9IKvHnbA(Z>USl zw-`XuhQlQr%le{eB@>n%*p0#{2(m2Nie?NzcLECzm@)|LMsC(Q(HMfy1d3>1N@Q=M1o_G+>DFlJW&>%npWQ`EXjD-CekaRQFBb@ zNteuVF5cyq+>%_}?}ze$lLf{7%KzN|n5m*Fl#;j2<=e=hsh>AE|a> zdtd$FI=inN&m2FG4Xvnd_^#qXd*#gNb3abkzPAh8oa)~G#@BV&Y6CeCATT47bmmeD;_+`R2p>Mp~XZ{oBwARj!&F{AQgpI7Uxb zAKm%U2}wKDHS`Bz2Oe+JuI)9ikBGl67!#qh$JRe^WITMacIxGw%%fMftlc$L`|agd zCR@+XRsOWGacuO!S@QiW8!iNYn7rFld-bWocekHdwQ1w*i)%+N&^Kl_U0i+NY~=0W nsXY_w;-U-NJX?P9=$8u>jiVF9^tPcL&Tk_W=oCG!Anr1L>Z<4Rn!cG#<1<}MMIQ^fsLm?TGhkE)sH_Ra8(WyNnf0a8v@9v z(NPoZ9_>j;qr*~2CfeKZ?L{6DXuuZnqL$Syz8EGdygV8^(=>rsAog&W=x_|;gYiCG zfF{6wl%JGXFNX(06zgX~ocA%DW7q)A1ZdVnGAz&dc~1zhT?Ddb$_n2f*-^8FzQRPt zwhf-93xxtz@KDf9(`+adq8X0nI1(X9tEAgvk<_i$Izt3llBpWD3U%CJ6jLx~hY93q zH3ZFQ(CSuACL|bL6b+iC7$>9(P?j1vBWGqS#$|~HS)c*kwh)$WV2up4p_PGuL)}=u z%>a@%9&gxK(icr@n6T`wJPM;G$dYI)Q8EDC4=k87CD4^eZniqn7`$Kt(S~LM!fgGZ z`syy@g5VrX5O*b2U4{kAy=V`Jh&Bil9E0R$JS68!u;|phyvP426XY4D3XMZqRZ2@i zy#b!_-UdZkBa629uV7i?6=-TAidogfG@uPVP2deBc>!jji3}s}Jd5XJg3xC|Ma`lG ztG~Mwk97%tHstq{9K}}LjmPe&rOYNM=* zS2BhdC8rX?gyf_Ekcrx~ddCV>X$u*ENdF-(sxS*Gc0n{jM;fX1Us8`o{?ks`Rzsox z8f9f|QHj^#sBbvKM#DlMjg|*=)aOjp&?4IVJ`8KRD;DWUxF)p27xsP5tUY*krj`B5 z_2B-63qLRaeb3gDonJn6%k@q3oBIy$NIp+aJ=6W`*H_O5_MB6WB&W;9eah+K*>^V{ zP+ldr+z@+b4!8mK#>J^Y_gf!^Z;kDJ{o!pVMvk4Czb3r4Vdb)qURis5U_E$y>qXz3 zlIKq~McvKia$@dG@~5(J?b7DR5KVqizS;TmI{y#R;*%$DsGeQ!aY{Rtnw^|#c^ofK zj@d74I)9XWCw=AFyFVMfH$Q#z`-MMNJh1M^;Gu8#Uw2J?*M9Iy>6cBp*!azE%dg1@muH4*~|B{r#l9&ZyO)Mjz9A0rMZRkaHo$kmsL4mqQR$&}?vbu@T7}nIBHDx6Q96S#CG$TML1#q8-BNe8B#r?d8;b@+1cnW7}#!u0Hit&;(BhZ}Sj;!}B~vvlPpc2tnF|h9hT5!>%hbNWfMs&2%(q;4Y&ahy6}~ zK%OpzpqnLH!!F2#1f#ODNiiPU4Ji*)l@iYEx6*mzszQM@(1GFD2+NePW)eEkPQt&T zE-l|>07)B(lx(c%i>{YU*iL8wg;5Y>MYJ6oGy&BCY}jupAT)s7taGC=1Eb~}i!S4$=pIZXUcW;#RG6`!T($>DvI7DHOCz~yFUk613@6aMz;IjWMuDc6pb@BQ ziNTeitY7do-UUTjqsor_uV7UX6426R6tkwweSk8JJ_0W(DTpu)Eo2yZ=UqM@7R9Iq z6IvQA*d1G2@Nh`v7@p%u*2Co8jYNd7VLP&+fUp!GkUkzwQw6TUA7_2uMpBN;EU7d! zD5T7)G|8%dMdf8x;pjwhzXX+jHw%jU)&IGFyQQHjl+*Xj( zwJ=I+cs^qUS#c{NKqzhs0F@|AYxk_c5^W|45a~bU#S+Yh2`3|4AlQf0`Y)+RA^$12 zY?nfz{u*U|ZCQyI;izx8!&1XSAElND4Akc=)X=`_efaNwl}FVp3F zdq$*K?>jZW{IOk9H;pd-@ZyIDxyq_L-jN&EZ@k8KO0oB5j-AQP+}h>$=5|VZM@P%` z+R61*UA~`xz530ShpQ5a#LeNk#Y?FvX8wAU{l)C!rHg0hYj-;zj5eL0Ufl4>IX?8+ zS)!%u*t1>CcaN*y>hV)p#y@>}qB*oXIyKpv+xb25>500Ur@ilPW}|PM-?0DYWXl%r z=$elzKfm>Hcp?5)xp-&e#No*Ut@Telur{&z;Kcx|?%Q+q<*q}AQ&U$??ti{@ zz#pvYNuByKH|GqFO;@DH$~N8Znjc=+_gv+PHQx^Rp2^kyc+zuZW9!A>`}V}-(D4QT qgD#mV@2AhL`mJVa9~b;-etOpZX@o=V((#s8_WTJF%R0vZ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/emery_sandstone.png b/src/main/resources/assets/emeraldcraft/textures/block/emery_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..fd6979749429328b4f6e8bcf77ca654bce4b52d3 GIT binary patch literal 1772 zcmbVN4NMzl7(R$5Fj13@OR5gV4^rQukgCNMMs(K>Bdm2MDi zb~m7QNdc(YV8L0c#E6z!4U~nn8cVjLMv^Ke$Wnqb;Uqq)U)fpL| z6w+)M^mHu*K~B?(YEmXB7!hG)f-;bLNC_avrg3se2_}qlECGT*0HUTsES1K}9g-%g z9n#-Wr6BrMG(>^RL$89!$=CUAzJlDWk7gng?cnHZC3!J zNs3pJf~kXQNV$yK?fSu#p+!x+$Vp+fc-<%c*8jjJJe+6?a?UxjRfid#}699xP1~4?OByE?1k^&7w?@a6G zU3PneBKi3sTu?nV)u_v9w@_A#1veU~gu8Ax?Gjau5n14J*f6M%f#*3I0FDDjABh9b z#Nrf8U7RT)&3Gv=T74xxUny($rS>}{Hl$}kYCrcs_wQ18ScOdRu6gv@)YFHq?@Ds=P%<1sgWJTJx1Rr`NC6@B%_f%97~mCuay zOzfT8bs^8$7vG=L2o^$Z*~mh)`})LU!`Pf4XJeOFY(vLaow;47V^>;VWaNjw4~>GB zrLy4Mf;xT;^ZBiT(lg7q_>ImQ_*C@e-L6+bXgpKpdoIFoyklWh~j$%8fNfom%R7B z_rAa9>-Rp-bFVcv>@6%PDnJmV&{N0y;Ji&AoAcoN_5P3pPFv)cY~O#xYbBTv&_UOL%2B z2#Iw)3TWvRRarDUJ+$Yl%lAvkqby& znhS%TE{712b84gN3QdqOJkH5DX(9BGvOs~);p8qQoHZ`+I0%CXh-xatk~yp#k~B#T zNq?g{cYK!tNUhhKv$3u(kx0&js?~PGFjfdz7p?jeGQfR6mAVuj)OJHROY~@D#;pKO zlN7%sg;y`Can)ti?ba{GiJDr(s367E(ls)GvoW|!(pZ@WY%4;m+?eZjf?WY!@4lYk3|#(hN7$vj&KlW zx`G5|yVDjh2Lim!T;ZfC(!p~aK?tkzti*TeS+FWE{7?CPiU_Na3*WOIy*BmqVd_K` zUTk8edYZxEl~q_ovl+v1yj}?|jMq~DzzCMN#d~I8Sw0p5Q0YJ9#WGBlf?AAIKutSj z>%XKP4*kdVvRw`Z|7(=lvo$5Y3Wt3|U*;MX{K&OD5QTkCfemeG>0%jzY&hy+Yy75u z*QuIQH_->!-(EJoYr6lt%a@X9X8gdTyDVY~Gt*km>ovS6{pd>quQO z_NM81GT&fm+I()Nh}WhJUlraU^S597=z|*j@I;zDis$mKaX^hOz65bIv!xn4v#YHDSUU=aWrePO>a}>-m9QhOy%2 z^beCsHDqX*Fpm6^Y~Fw5@btWT{PW4+`Ju&6&(3eLTVEJI^bI|&&Stjd9kSJzrZc_o zv=f7)13Px+?MZcAb7bO`XLi`qnZ-L#6mK$&)eUw`C1zv!y;vZ48NFhfFb4CtV$`(t z3u99gi$2nSeeuKckrz$M=**o3`ozY*-t<$Y5c}TtC*Ph=Jkyf?ed)2Dbai!g>zO%c zQvDtoDJXuf>g*f7`k!AVPy0Umk=l5`*pTiUIG?<5?AGXmA@}~yRD8Cr`P(_C<@RwK rIWbc-OdM@1GyIhNwJ-Ai&>wk6<{HIwhR0vge^8#<26lM&voHM#5fNn< literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/emery_sandstone_top.png b/src/main/resources/assets/emeraldcraft/textures/block/emery_sandstone_top.png new file mode 100644 index 0000000000000000000000000000000000000000..8eb6e4aa703b44629387658c8e87d98b5abde175 GIT binary patch literal 1648 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 ZhL~D2*IdTNB!$0lteH8My&3bD{R1dQJgNWy literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/glass_kiln_side.png b/src/main/resources/assets/emeraldcraft/textures/block/glass_kiln_side.png new file mode 100644 index 0000000000000000000000000000000000000000..fa48399daaa1ddac7c8606c6b60be91cb8aaee2b GIT binary patch literal 1931 zcmbVN4Qvx-7(PabV@ND8k|_qxV}uQ9@7nA7bF8qf9jw)Ev+FDyFu2}b*GqeM_3lc$ z%}6pq2b*Iv1o;{NFa=~02w=pqC>sc=BL;EG+=xyCk>KKACaA&hx~>6(e_V2R-+kZn zJ@5NI-}}C|zO;DBNkMb#86R%1VNLgDfc*NTU!PM zO?Z-ZFO`=%pCu@P(~z{_Wi(MP1kezayC@nWsQ@FxUZ$GmEy(ccE(B(23*yOfV$P72 z@v}v>B2!jd?51i1l$k~rErfHU1R&rTnS`TUke7(41&Q+#V604|2posV0Sl6^7=)KP zOJS=ZGH{N@pr*8X9c(mfvnAV75MpTQdF)e`^2;2-OE(BN;X&>RTEl$`1 zUlznK%OL_qBaw(Ef@=h^8r7Q3W)#z*I-MFI)KU#ElTkG<%^qX0F%l)RA(<6;SYaf+ zLRhvSz|+wXxKNUoml84o!O$ofLbV!92`LVwsU$8G7K3r)G=(xjhGTeH0$6Pl8}bXX zAo+#Ap-wK}X8=g+bS7;)&=-zNnvmqe)gX+7AP+=K?wSyTx)@0aixgA18n`)Ii6%r? zMTV3G(JctUv4bida~ZZ;m4h+CSss?Bg@}}W&mP7`%8UikVL)z7uf}k<79%h-p~IiX zOaz9FLY)H5`f45o#Z83Hd><5K4Nc1Azk+Fs@ChPEf|yy3tY**F$ndB+PZnGdj9}UaW1g0m= zH0{e#YrT3(Z8GU`wHe29)C{K2@zQ!P>C+|m+XO1CWWm^e`hV^(5m``$WbmPRl-g9% zhbUqtaIiIr>M3JhNQ{Ck9M2enq?AgqAe52<42>kF*@sqOls4jL0O>#E#VAY?d~$>o znfz*?)_+Mo6!?!SWjh)Q`qwDqYxk7+7##EsWtePO;3L`c7#{RF5j3=pjYFjnlrr6J z%XeqBaxIIFsF;8Ivn5C{%v^R(X;P#buDV9dLOr@ z+P-PCu2t2KoSFa3_2uQ|gLS^0?QCb&tE#ms=j9fO-&t*o`LCV~_x5C*?iddp38&@H zvouon7Goalaf#E-LFU4{%N&N;$ zMeWCZs=e5`$uGOo_Pg`e9RBXbZMjISxxsaDLL=V$-k}?}1|E6Ial4)6(Zfw&^t`*! z^s88N`}KA1LpmRR={2p%ISrY2z~wL+ji(1XxMczE+DKntpJNK{DL*m5dk&X7)_a=@ zQjvo0f}3ZCrQX8lnub0P?>M%=dvt!I>ch%qo9Dd0Ab0s@x~Xb&&z1tm!Ssp+_Vw9w zY!_mKbw|n_6@kJf+2g&Q=eK{{zUo|C$=nFSTpRItJkW)V<5}U3pBsCw>{mezA63@P zm;$L<8(txA{8p8^XOq_#h=f<1&-m){`NzI4=8ug8jWd4Oa^vovSu49N8I=P+9lAO5 q&Kiy8`^K}^OJ)vKZvAoR-EmWQ6Kg)1^;VhkyR;V;+d2wX)&B{Kh^(Ff literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/glass_kiln_top.png b/src/main/resources/assets/emeraldcraft/textures/block/glass_kiln_top.png new file mode 100644 index 0000000000000000000000000000000000000000..711a2da4025804f9e31bfa329136a4dd21f80b7f GIT binary patch literal 1973 zcmbVN4NMbf7`_n~QRkqWbHrdg4wukLd)FUY?xd^OB0pNhiW6{|Uawbr^yli`VGI7m zX{I$2GF)fGfi7mm#SJn=P(W79jGO;+Y!GFGDbvn4t+)*qF>K%Q)9B*>BWz;>jxHA!yo*;{6P?w)9m@dym-hDAow z!j=j;1b8|Yg3A-3b@Ssg0l`oo=|L58OblrhXr&@JPbuddHEyL)+DW@;x4;9eB7*hU zS%Ky4?B7sFmLD?!q&1l$HlFB<%M~%f3mNM`7~_IG5zXh9d1%y3^K2T!Uq`-3dEbE*&sJsc6VS_v<^{XKyFMe!&LbSjKFY0 zshWqS5*RiHHL+I4R`w*QT1BW7k3m7!SV@8WSFn{LY%J#@LClPcET&P9yBL8ZN)iUv z$#TFj@J{vUe73=m$FVlX2^M&B=0Z3-!=O>%8jVaTSB$!AG7;HsULf5Roo&=1Kp#27 zSP6yILgRF*R;Hm8S{a_I*2q#ZwN{2Hahk@}6rQTJOzbzZRH>K+6Z@_IbN^C~0aZvk zpPEOkO)-6lEQSXMTQ*)j%jvb_BPRooW(+}6VkPJhN=yOTii}S)Pp!Zht=CQi(tpT{ zF&NL<1TV?a>BT^;|B`wr@E;Y+b}SV1uThS!JyPNmaL_lzVWeS!k4Vd--Js8LprP%& zy1@rQQTl9SdVW$>%C5G`8JRN{-0od<>`>pw`z|LRN$l8CYBP2$h0o17)mK%-StM(e zQJPP8-?>$Nx4iq6f`Q4Q_}RbTyH3}?SFL~h-c(3JRrr$-!-A#c5fmiD~RtFy*3iy+%N-C~+wUt}>H;qTTkfuOM{RRAB09w!|kt~Zoskw85 zyEQx#46N=dsgP8WHC?5yrjg>lupfd9(HC(Ed9!~Yj#?s(TF^I?Fe%*b_l3V$3vCYU z8bP9RQo34c(gs_;`osHu_r@6i54Bybfvf%p$hSi6rlH1;ppo5n?aU{QgL}WeHaOUS zj1BHUZeG0FIJC9tcz8ad0XwRJOU&E_1Y zUUFDr+ZQTwbgFN+=60UyS+VmhKCiCX<>;9?vSBbeWT`)cuj+}FH1;;vMlY87=OPJ{ zsN;c>=Wf4T7j^xcb)jEcBqxjX;k%XgeWBsu^_wmA7tXJ~l6I+~y8`;4skiyg6bTf& z%+a2FF6~l|)Hbuq)i$_szj@2h!Bya&XUxl~3+!omU0SC$y=$I})E7#B`}O@z^G)ZD z#6Q11I42lfwD5vKA26R7s%_dIc-T`$dC^w5XjQ4ii)G5Kfl$C{myYiwA!X3L+!fYsvw literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/ice_maker_side.png b/src/main/resources/assets/emeraldcraft/textures/block/ice_maker_side.png new file mode 100644 index 0000000000000000000000000000000000000000..81737db1d5b1d7fbdc4030b6e2637347c4d12b83 GIT binary patch literal 2007 zcmbVNeQeZZ81EK7w!tFE)QO2U1r22O^X__Uvm1=N!ESP6AGg6~#_ZbncIEEcuI+ZW zse~-S3^G1Ols^!KV04j%X>ejPf-FG?!NC%iC;>6ToSF<}Dk8GD`1W?YfEhw)()R89 z{@&;LJ-_F9pKdEHS(BNuI0HeDOmC5=9KIJ=cUmfZ?(Ph-@RhC=RT~I0Z;^GUAp7=b zBgpLQvVViQ!MBzd)d(R-YCRxg5e=ddByUAb6T}cO(R$DzD=zHD@sk)TOD=4^!$ zeM~2p?{NU7_4$%MX5vS2OLLvOfcC52$l@DJe8!)jgiPKX78WW?ijK(X57ewnMxG>Qw0U%+C zX?Z3E9x8$kd{Ib*GhO^=?U7d}!&; z&HIQK(2gEv-nDZh&L6b??_+sYH!AntJ-+S;qSVCsvGi{`3HvW zAQ1SvW>IHW@W>x|^qyYPs{r*9rHc;+1Z+B$f^rt*iP}#8&9uHGtd7y znAUc(0*!v2MHc(BuG}1S+4jtOb~ZA&?MF{pcIxeay2@+Dmi7I%_n?6leEH_j`-f|~ z$99DJ#^xaTPh_sF4v_=57QR|kweZ4W=aEl09l!E{y#1rXcgf1V;QH-fCu(cI`D*m> zE$w|hDIZU~#&2C(chx9vs{Lf7>%cnX*2IaYx`xyHM|Q0d2U}0f8TVy$(32av>wE`Y zmYx0{F<|~xo3;9#vB{iUCByck8#~JK=Z^2r|Dy3*`;PX|XBc_b<-6 U6CiqrtY5FUu*B1|>Xo*C0m?V4;Q#;t literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/ice_maker_top.png b/src/main/resources/assets/emeraldcraft/textures/block/ice_maker_top.png new file mode 100644 index 0000000000000000000000000000000000000000..feaec19e4e1647adef6b95e94632dbd5c5f64a1a GIT binary patch literal 1880 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 X>R(T>;moGbjgP6fwA^#7q-OWO>_V6! literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/jadeite_sandstone.png b/src/main/resources/assets/emeraldcraft/textures/block/jadeite_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..26cba90e7e896e635351ee9acc03972baf05bdd3 GIT binary patch literal 2081 zcmbVNYitx%6rMtjS{~LG1**|;D1lmL=dsTjy3}^Jr3>AqwA%*-qO&u1cZcro3^P-9 zTT((RkzjeMJQM`Pgoi>Ec?e>_MD$OI7!=#4)>a6qi3BSGB8YgW-EP1XBy2J}cjkWQ zobP<++%qdmJkv*|WTYSnGRjrtEQR+}{d#N|{9n5+Xo0uK<)S$%f{aMluO#H1E#na6 zk&B|YN~>}gv%C~GaDwCmhFDmJXavd0jmaEe12ohJ0%F9D{dVjGhKhn6t2Dbwx9k8x zv8Y}FW%V8}UthyB0+u@s&55zlK^SNp8ViRaDjTz7{eD@v)?X7C+7Hoc>{y;25Up~T zpbkj^sM%n_dCEkiR>nYCNQO2|L1~h*5~P)&j5tZLq=hvyX#9u4Xo}!xOPz)BSn$b? z1vO1(2_hPe8lpynqyz|xVHkp>37WV!cLPN4FNC~Kk=L3NLuPpZ}I z7-Tw-LRe0?ji_;%pkPFdlL^W|>M8XD1wMh3Yn4!caDgX42!ugIQz4d0VCA5sNor8K zhwH@lT>+r9Zg(QakX*vyLxP2TX4cHy1%+KBa2of&V1Z}-k`m@%&SIDg078xgFf^eg>ySc{0s}*K#yj7; z9F7u2@{1w3p_We1M_mOD3&mJ0IBlT%>AKylE23&#ga`>fGH5?b5#cH1LJ#dnKbv~{utlN@3tJaIJ!N2Fd=(PW{*GZeUOx$TjMrNL zzzhani$f^zU>OY9M}q)5y-!~Zz*NbvML7lJ1)y3F(t5{zDx{Y_>dUkAOc-0a6sn~@^%DC z>U25typz|3OIufe_fqPVNuG=CzcyYSUNbv$>Z70gW=;O|*2v?_*7TgOn5X1tPu!R} zGc&vWxs%0zkDJ=eXnjr2ZS@PPyUNe*Ygkg>d}2p=*Y}$ae(>e(9ThWfXL;s#3=e*_ z)QapJnOsVb`K9yh%=a!Ny;P1MXL3(p&2?NkcC+XA7Y^hsdvf#mulx3Q3JcRl)|G#8 zIdxK_A;#Cq4ZDhOt~T#m`uyf&?xzd)R=nQ++412;ZP8?@5IL9Gb2R6W;;Xr~s_+(~ zf!zIOBz^9ODP&vn_J$khzMZ$Vb!-x{YT~|K6=~B>)Lv=Swj{54qQh4=`;$(=n^Abm zIxK&54da=1*w|{@3+7b*@#o&`#pT<|8~lxbz1m9p=6BrAu(zFi_M4Z%@&(B~A8$Zf zc8+#swsfxFouYy6lvG3PKo#9}^Fa480Vdc2-NY9b6H~Ow` zosl+u$%vm04qKSER&1Ww*|O}y&pR4>FLy2PITU#2+L7x&WL(>{I{$3%+kotj-FUJ4 zM_Ze!jwxK(OM9BC_f+p`JSERepL_o3mTq=QXoL7s`nKwSU(c<9 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/jadeite_sandstone_bottom.png b/src/main/resources/assets/emeraldcraft/textures/block/jadeite_sandstone_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..8839600de3e8e413a07611adc9ae9a06f54bcef7 GIT binary patch literal 1886 zcmbVNeQeZZ7%ziOw@JnVC?JGdKsMp7?S1Y#jt%a1>>?ev?e>8p(rbISy1TZty^jqf zWF`U$un$2q7%U1ZZei#UK`@&Nae!z*Q2`~$n0(HVaKQWn#J9KG1q^;RY5VqlfA8~q zp5OaCPuIAL=8a67kOo1}NN1tF1iVM7_oGSR+0a;J07&(q7__Nn90Vm# zoDAmVrCTAYcQO^OoZM7$1eo1NsN~$u{+{i;LD0s zDT+v-XgD0!hV@!O@}aoJVnHz-s?%uzLL=Ak3Kh}t@{}P9c2=e(PEk0cKrl2yi72kc)R1C8hECwbpyZE{Gc?Nj*#OHcGQi>qtXL%|f?Os1 zh3Uld0|Y=?l1y+s)R#aYK_M#zArMAfkcXmWca6xRC9Et2C7LY=0XL_p(TIdiVkt$C z+=AdAIw;qW%dpL+9!w6LRl)I$5SFv=+r!!^g|#9&49Jb?H9DgkHxW2a7>zTq90J1z zp`^fY-kOI&bt?J+D99RyQmB6fGc@59qyPnC<^q(DMMd6+zzHP@o8T8DKn%Ro-#_oP z*<6y~<@{hlE}1tMb{5!7xW#1B=(KpuU6Lf6ysS_>%{uK?1n8sXIEL`(Ek*<7@n|e2 z1FgxS3?7Zg?4>mw8r^ffX5jR1H1&3y``%A#Yx$_QWx3zCK6vJ8XUFRc?v#hfmxZgj8U5!vCm%j{qV>762Y=bz?_QU+ z49X~VWM^Jmv8^p>Z)f$`9UXnaJs01ZUODcT?fh2qgTssRx^Ir74rN1|>Mj1orQ}zZ z*}YR;H_kkB$eI7<&hM9Z7q74HdZhW#_0+BVxgG1;KBe9`aW`6AmfTR% zziBZ(EK;|n{_enb%f!(5m00iYLqvb)D(+rxd(u5<)UWy{(>iA#SO0*{f+Bmz+$D8? E04WuoegFUf literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/jadeite_sandstone_top.png b/src/main/resources/assets/emeraldcraft/textures/block/jadeite_sandstone_top.png new file mode 100644 index 0000000000000000000000000000000000000000..c964fbc8c93ff4797adb80a1dc90f54d1f4b5fb5 GIT binary patch literal 1705 zcmbVNYfKzf6dr1zT0yZkKx=EKLz>j+>^$~8GOaK}VT}u9y9)Tn4l{RmC+s|!8Q6s% zq_I_Ku#Ih6V<<$aN+QOlRxDaEB>_T{8m)a8ZNy-(HQG>Pt@aN@?<~6;YVg%fX6HV> z`<-*Xd(N4?bv0E5tJbYT5Tqbb&4=K-(0=Y-0smh<5c9y-J$iMci6HkrXg@hfZ(j+5 z!pRh(?gIZAo1an}LNkfvBvq*v}uI#!y*ev3hrq4C)++ z$<-YO*wIlF7CV|nzl3euik2lANT2{qK$A*bHJK!frFa=QwwDPEO+l8D+fp)^T(3DQeYPMo9|(!)6YX!?giYlakILj3l$EjVMb zm}ThwpLWQ)@LuP}v6EEVZN28O{KLr5RyO zi)SvXF5@!FarVXd&@J_{DrpJxktJsUFIa%ZXcEdzI&s<^raTNqF>d#xq>mxVMQBiy zkcN zXi1OaGMdU5MiA{vU@_570U%-NW%-U3SfowF03`i~yjX;pTEt2S1}Kk0wf;-$5zv3a zF5AUWh`&ae+FMfM893}4_AuM9;3V7ffC~GZ0UO%Pz#BgzNRBhWmxs3;csg`;|2UfO zx^KnErJ_pq=Bd{{*!a;Om&83o!+D#JcLn<6d)B-(HT%o>!ulxN!fQJ8y9VgTHUG PKPG|78vao^dv2#BW)PecUx$=p~(+!CFFe~Uje!weU7I^uA1LR=JGrW=ApqRt;;)P05Hf(trhleS;K@A=;M zd7ty$N>Kz;ip4IDf3Gf=_Nm(dE(2FmrcL4Oorf>)v z*~8nilq~CPk`dinnicJw*6a2FGz7&Zcs(@Z1}F8V4gK23k+7w>alRS zd`hvz%`2W`V~U-OiA56P;W#e|47fRkhP`f=Ad_A*(r=dpV|5xu;C_hWG$V9b^VI)8`9( znUP#Y@sKE5SXihnjM0ix4vL#hCKS`5I-Ld}G;)!k&|ZxoM+{n^IGK@nkHU)rtXib) zV!mQV0MmgG+#bJKLH5Z61Vg>F2gS9R8d5)yW&Ai#zU1n6&N3+H;@q5|$N-D`v7TH} z5#?O*38wwak2wI+TCIK`!*X%E{VrrBsQ`rG6J%JlY%B6`Xa*;X`4Yn=6#$wMYBV0w zB5|}LN;Xk+4JImmkTPtssEIMcQ44s16$|C)A$vHARyZ@F!+_kFL8H^#a06+;$r$}x zn32S=0jO1Ec}LN(P$Q`)9)p6aVQGc_Uogv%4pDN`AZFf8=WwV;$U$JglB7j+i4t%O z*u@N;PqkRmCDFmVz=E8SJOfTmvJkk5AT&BH-cQ$RB~t}ip#_FZrOXJ>N6Ygp$uJl} z=y4DvX0&TeoF3QEu?(v*=op6yGqE_KqX+j>B9pIH!Qg%t?6(^TB8J8ZO)Rc=Xjoit z)X+3z&=}cRox{j7db`6oxPPw1gHuSmp4*OkHr4VWQ+OF9w#avS=5b4XBNq?%R}4ur z>Pavoj9LO5i}CW{WGke0Z_9H7>-lpgvd{xV(gboS4d zzo)PtTB^^<-X|`TOA9$1Xs#%t#)GPDXdpG{f3w!VHl$?@!a*NYhyDf(KKw156M$(6 zG-!0&!Bz+gq*AFwTh#iIKfF^lDJc~CqoKRIYxD0N=i9nUQkJu;DqPbF>^U1^V(kmR#es+ka6&V z9ozSxDeY@Ac4p=ATwhpb&*c~J8E9X{D4qoN_sr_ccqld{A*)69WQ<3Fc8mKEL zD_3mS=||WNS$Pk-9*9%J>XI$H_Px8N{m2AU_?EnnmY!RjKw%$WvtHEV4Fn!_3T|cecIxNySNepKy|ww9+Jk zuU!&fcJtnih|>=}ajtLAXUw{Ex2~7^%VQ)v<4f+{>gb&uQawKUg@k|1Zvt2t-$H8A9BTKB><|70?!*k; literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/melter_top.png b/src/main/resources/assets/emeraldcraft/textures/block/melter_top.png new file mode 100644 index 0000000000000000000000000000000000000000..cf2ebcc0a5392e1df8eb07f7124ad949de062c5b GIT binary patch literal 1906 zcmbVNeQXnD7(XT-fS;eibtc!)wb?Zn#yxv{AW9?nJyRGdE zY=LPCE+___!0->qRH~qXzzECOKgfp+7czm!z>#d&KNd5lDH9mP_qwhDgI`>7ckjLL z@BKZ`^LwA?xvdo|md~B@;v5Kq=DNxp9`IHv_tSac`QeUQGkDF8l&zK^=$U!SJq_C3 zu7RK#3psC%T;qO|q=m4KVgx^{i-jWq4MD}rViAh2V`bRS207k_jCS=PFvr*spUI86 zBX+iyD{B2bV~ zwFSOxNUbbKNED4mqq?X;Cx}55CkO(?^r&911qiJa=VdCU<)uYa3=USJMJ^(90uL*U zlwYWqZ3ysmGK6p>N6SlDnSfwujEbPR4pTzP02w-mi`0vujB$oW*$^9Md07HjJco_c z3bG*83V%bLTYkg$Qp){sec7CG#L=YFa=`f!c>q&BYY5nb4rqSAtZ>v zF!0Xs@Vv`zuMmX*7Xk~CXL%{?a@x%}VK!^^Iy~d9+fBN7Nv3$3bvbMZ&_~B{42cB{ z7QLS^X=&PkX|1$Tul1W~LaS$t7K`6cQ)b#UwcjDo^-2~@?Pvby{*@vJs*nmjF^^K4 zO8SsxoCFRwo~@orc0+a);^0iikQA*{f(@aS6kr)7JIy_@0+Y1SS{9K0Ltae6Bq1P2 zDUmG+0=522>Y>1YR4LoZP|&|dnOS?N#HZk(Zz#iD!vY_U_1#f^Mt`RoGcAA_=2o`5R8Z8=+bjK1?x_w~K= zx6L?Jm$G$RgqiDl?l&i19vp3#dasS!)EzrL<%qv^?B`T_U+VYNH$9G1`D*onq{M69 zqcqTsn>PzOS`zMll^PmuSI=Jc>-8>6!n&O%;gqVurqa!trua740elQD4H(VN)$&WpWU36xL%kpy_nTydV(xMU`jR zvuDqOx`X2;6FdDQ=RD;^D&6=}>GAIF@W5qFW&f3D zm$c%a?D~Sc%6HZuIXT+K7IyqtcC_Oz+HaiJObq)5n?CE@Qn&kaQgyMoj|i&I5oa`2 z=~(fmyT1($JYe46Ryn;{GgRCc9@u>L@Y3F;`|{>M>7cWws_CgK`&Zo#Y%z8!e?^yb Lh2v1^+nfIcLT##g literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/mineral_table_bottom.png b/src/main/resources/assets/emeraldcraft/textures/block/mineral_table_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..f25f600622a58ce05eddbb8f3c5fc98e897fde1c GIT binary patch literal 654 zcmV;90&)F`P)M?BgmVu6@$tdq5sC50rm8sSxLz+@E@xDQoD0Jsq*PFC zc<(UApsM)y_fK*zh$te8wHD_r)*8Hb&pwn8Jg3u$s-oH`r5>yN-M_UCz%Y2mF(6X8 z-R|UE$T=g@{uk{XoO4*~@ZY|@QtSRyEm-TA=Lu^qDHURjY+IrC&MikE#9D|k0fu#5xLz+$fs8TGTBo&!YDcvZLSUK(j4}9>3MnPNz9OoPaXfMwV{pzg zO(UfgV$8JG*!RY^B|bmzM+XPn9p@Y(joa-DV>;6`JwF`4SZnG1aB@ufAcTPb_3Ix* zgl*eMDN)MKwq+iVjeQr^^~8@K->J2-Z5tv7;`2N+O%wj*Wu?{wUsWLlPfD3>ONa>G oJC^12HiLDgXcg07*qoM6N<$f+UMRi~s-t literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/mineral_table_front.png b/src/main/resources/assets/emeraldcraft/textures/block/mineral_table_front.png new file mode 100644 index 0000000000000000000000000000000000000000..ab729929f3fa40c5ca4f0c06c0883b245c1ea5e3 GIT binary patch literal 723 zcmV;^0xbQBP)5xzRZ}pC(l{6l7zhIkmlcdKu$m>XCH8>DCU8a=>;S1->W@0BIx`|N zUPNG2G0%F=ySne(tN#A@vA<PM$+-)?{5?(U9Z7*I;lwk@?*YOPGu#P5In$^Ww- zN7U`@uXUb1Aw+U6-2d|zyWI|e`}=#2$0N(KFbo6JH1YYjKag{wZ5^dlY$=89cEfHr zl2YPd5tLFqKR;uw6oHL~qQc75BflRGXE7+%}iJO}Z!_ZS}Mnni9V2q*G$~cbH zT1hFTj!!U3@pE;dQ9FIpH9v;|kx71n*A<*|d z^E|WP?>V2(s1F~0t|3H3G9nqRHO^TMhdqbGo){y`vXFCOSv=?SWp~c9*|gYo6>=_= zQUPchOWQg`64P`dgh&Vhk%HC=YYnx6F$S#-_RX6eDXrvOh%utIq3=7i)_5P8=b2@R z)LLm8OVc>Uam(RwplKYo?_0EndG>%}yB#C8|m7FWa7(@!wbVjL4*LBx}OJTIu z)OvApiSiZa9QNJ2FA))zWx;z-j4R6$czs=1S7E!|@b>Lzq?A~e1(8hKHuQZ@*LB#N zn=L6Nau#wHoU?czSQd|nV69;oHsqW!M&rHz6t&ih{{UyauSlT9wk!Yu002ovPDHLk FV1mqlQg;9V literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/mineral_table_side.png b/src/main/resources/assets/emeraldcraft/textures/block/mineral_table_side.png new file mode 100644 index 0000000000000000000000000000000000000000..5c6c4f3bb827562a28e898cdc791f25baebd3946 GIT binary patch literal 732 zcmV<20wev2P)t}iXff~! zHd=;;?yjl2_tyPq(7lG9=mh5+ethQ>f4_a34yO|Ueb@1S^-CDFP-Iz#_ny<~ zk;7rcm<5o$e*GhF-uzBVkP_tk{gL&0Mbp%z6mZUAj3b0VSr#-+McX#q-@jtJ-Ll*5 zxVyWj@7HK;$WsF6JX&jFOjzp(!4qSm>ni%bqbLft+bu7@`;u?IzeA}E?;RkJ&!2zB z)zyZwEKw@I#6NRLDUnj*_V$+DZpRm2|G=NW{mS8RWLXyKxnx^bA9fwU&9F2_Z7insGe$ zO67=me~~YXCxl3h34o%=DNBX-j^pu!F&1MC-bbVqLI?;U$TCS)l~`+;CPR#oWjV7r98P4JBsXRugmh6iay*U* zk*KQbvTzYbN>Vx}F~%aqBT6aqXU{&td(S-2Xsxk!VV(_-k2A~SY1&Br+BnCBVq z&x+S|O;uIo>vfBBXMIEPD3znNVV*VKd-6P^X;y>~$TEr6`oC98Dfkz4?~d{ZZ4p8M O0000z6_6ElkE5!7sIB^@}D~FjW-)H zY~n#9wc1;qY!_849|W4Ez+fqFBQ%CBZ7$hB%|Z`XVA?Px;?jXZ0yi{?SQSpvNjnBJ zMtp+53(ZDBBfL+aIO~ybSTO64By2#8)Rf z@tEa6JRIanl?kzUL4TijGhWN79T)^CBnUl^=n;IhrnZ$&Xchp`Ju! zJkJ&>s#q)ri(Jrh(i9^I0!6bF%aRB|y1k|cN~Gz|t6Gqut2&158J3Cr7J*{*coKmk z9Zn%{*UXx3g(gH8RRT7}1Zh8|GEh@%IJ?Kmm7QxU1#>VDP0vMGriQgMmS?#c>n^5i z)3-T5)FzWPA0x(+&(~bIUTXoRQ6XeRw43U+A=L$4tH)7cYXOBh&(FpdV-5tK<)kbt zS1nX$HDo*%^9vKj7pyW&%__PJZ&?Fn;6aICX+$^8k!(1{psIyLnps3gMVcOlCN0g- zd+&foQVcC}VUfEXid3Tk5Bw)sQ$^i!@&M&*TusnCm5sb=N9zy53->h9Is8hR=poyq*(1r6zBt8|x>JkaLCAFXrb|tfi>8aiA z%U_S5kIjr18#cao^XAZQ(t9qf7p9-vw&(J6D-2FN^wVWYI(B+_={{y=U&F4~_C5U# zzwkmja-=^y*WEs!Aa(|}Dw}@4@XU#U7eRdCRqFcjYhQl-(S@IX_%+;rF+F%*AjGNT z8;)=7KKt$N$K~9fy7MLR&|vb_hIIFg7f$V;CZ2tQVAq8E*Dk4VY~S4c@;ehw69-#% z44#xHd`QeLY??AKgXx^ue5Ajy_x+OtUwyh#p^Fck8cH{PXBMY_hTTxtWm_Aiz+X46 zb^k~-Dl*)7`2H{0MNj^c9=ddW|M!8}vy?0QsHXV%14CDd%^i#PWw$3+9zAAnIfTuf za^|{@}*N&)eng l&(f{!0zc!GUFxL2$DQn1^zc#mZoU5rkZA3Y_byxa{68ax#Pt9G literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/quartz_sandstone.png b/src/main/resources/assets/emeraldcraft/textures/block/quartz_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..5fae67660ff8d0af42440ce8fa4f9d78be7b4711 GIT binary patch literal 2214 zcmb_e32YQq7@lGzP;F=|QN)AEAc4lt&atz{3@li7OS^?Fb=ibNjJ%zByF2O5%rZ0W zZi^ejErxI;7_b3@93}=O#nh!pBgS|{Ds4*eBvuU|F>-|aCmD`)J=brDInir)qGqmvVULwrcM;aQWfX=D z?UX}v%sGJ>f~YArAZcM}ODPG2#;{3KQVAe7KobwcsH}R3a|aF*xGZ^y*^U4mNO)mP zu4&QXtd_cv*wP^K5;0{mJ}D(20}3<&o>JnfA*4J+)~gCG9p%k5UZJ^AyceEK4E;X*8=QNRg^BHgCZP4N;d9rmU&BWf6q6M$ zk|WJ`L0ut+7VHjz;qQPV)kweu{|S~vA)@IDKsn0_h(ao%MhU#Yq~O)!nvNW!=D2^!LJ%7P(|qXc?iUhO_n9WE&@jcK#}A) zw@8Lr&P9eH&5%-9lHBgF#JYHQe!fo=8!Z*&=SyflD>@|zT#y7JfTYvOv7}p)Ske`7 zuwqzpggFu9=g-t-v+30}qzLfZ1dWBBS@w#Q@CEB4!fkuri9+dJySR_ln;DP4|yJ!n)m&FkneQJMEl8|o{1vXYxryrlQ{;Iv_f z{ycl_+O@u4#+}%+dF!z=>Af}DzU0kwGe!nm`j4;1N>^OpTAG}H0v~eZ)Fxr+&W%{- z)r;-t`uUeHL=GQ6@2`Eo>+rtC64rX7eRqbr(l@<4`JHqBmS@D3Coe2nJid5$WAD-N zuc}zvJZw!-8`icv^VQ?seEApYcbG9dc9mi~OZ)mOdaxHZ8D;#ZqZZU||82|hPrg5S zYFS0k^Xq1=N`G0`dSmBCy}L@gY3MiqZrJ~N?AY3Lb#L&E%%YQTj{Llg5sSAe6S3Oz zY0>6Lb=R3IzJ-&U+E=CDn%`YA@xa=qk8P)8KaIG0Y5IXRPaoNQDc$o&$FEK8J}_IE zdjq`YIe0X9XvByON7iPPi63@d54N4&KH==e_`6*tJH{86Ju0poGv#1U(q9a|-PX8& z-cvvHzV|_N`)AJ1tDPguR%8}k?z?C^zj1j-|K>+dVI6-3(yd?DmSf#Kwz!DDJT5ct Tm7f{wPr_eS=i4)N!P0*Ks5$-f literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/quartz_sandstone_bottom.png b/src/main/resources/assets/emeraldcraft/textures/block/quartz_sandstone_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..7a2b9b6b0570a3f273ec6f7535702bc02b1a0b61 GIT binary patch literal 2240 zcmb_ee{2&~9KS*MX@(PV5#r2oi^=$Ly&t_^dzV%++KpB0wv^6|%z@Xt*Y@a->+Y^= zHxyKi@*`VVln^ExWH=KRq5{ev2n;lW;fMGm8EAC!BPbEbgawHZGT*gb12~WnFS)yS z?|t6)$LITb@7I}hpD z{4|1$-zWR(^g7Rryr@J?f~5F?DHV-FG=kXYrQ(7Z20H2oK{@8Y20!n^P+4+dwH6QQ zi910^u4qxgqLxaZ*b){w37hvkYESXdKosZ#nuQq#KT1+f1QVfk+ITOW_9L>x{X_B%Mq?Mq|I7#s&%bPhgdtuO5tKE-FpG_B;=EG@ zg084OMTv|Qs(K`3)af(|V?#@7<(Q--wOMz}0WLuY4vZ!t-J}_(Ek26n8HOjRIi!sz z$qdw^NOGY09;nqvk-XW$TgbbhP&JaE3;zk0L_VOXQ32*GM};6D;;|rx=9uK2N<>ki zV;G(J&VIMkS*o&~102KQoSzHe63zKVj^!xU#*EB&DPqDJAEDVd= zC<}#?qM2mL0A)3^8M>hVDpiK7P>4LT9b;`8^5H9F4HmXJyLuLZ#%wDhqiMzPf@rJ+ z2PPU401}q%mPcXW;WEgWO@;t8`T$*IV44!plY$CLgOIIf70PYQt zb;@RzaA0EsxDC(%r~Q6P3P?7}Pje&L-xGaCstix%RQ-t2XUP>qLM#a2=1O3Xp3lSS zanx%3d+GhJ`4GmonvoiDuL{#+cWlA1oarvOuN%$WfdW5rM-qrZs#JL3jD5{dAV^-X z+g0i-X>aiEY}-aod#3y1C+m#tb6YqzGg9l zU`M|1nbuZP=|>K2>oX79s*WFf?g#q!U8eUp4NhpBy418$YZ#vB>@Oplsy{cL+&!V72rED0j7>}~tTig<*o1RD&Y=9 zOUFC@oO-3L?9j!HH;BO_&C5E*BilM}c-J;|9qm4@U1yq3wk#Rgoxec8#IN`@d}a0F wtKvfUTW5n)ULJd9`_Q$>@OLxE9Go(ox2&dIUTWFF82=dVvP#!S^Iv)MA9uw0Gynhq literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/quartz_sandstone_top.png b/src/main/resources/assets/emeraldcraft/textures/block/quartz_sandstone_top.png new file mode 100644 index 0000000000000000000000000000000000000000..8de4898fae67437db47ed3591f1e597880c7a06a GIT binary patch literal 2118 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 Eg8d=SZvX%Q literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/squeezer_side4.png b/src/main/resources/assets/emeraldcraft/textures/block/squeezer_side4.png new file mode 100644 index 0000000000000000000000000000000000000000..b6636906b09026c31065d72837deed8a1677050a GIT binary patch literal 464 zcmV;>0WbcEP)XQ7{+`I`(N0TK2l)=_o{u8)1u|2Uc#Y?PP@}O= z1Hu}aFEH>~P`5Drrbc5uTE&t!mb5W+LD{VZgrN%#chmSX$KIbLhAselGyn>~LM917 za(E~pwl?B0W-{pAvA=Y}sk8b)V@bQyLKwcxLGcXd+`>$Veliq87i6X;0g(9usq`3i zufg%j9BUK*FcX5`SIeZw6O6_alw60DJ_3OK@buO~8|r%|O^uSBouSAK#TUrVLa=H# zR6)3;@Cv`W5vA2Gc3y`yaF~tM2&$;WeK7`k~E_ z#^aqC+*c|TmZl(cyR&yo?{=5n zZSPtk79W3*U;;)(Dnt-NLI8u>M3WjZ!KmRCD^bHEfj}UV1{)vLG)QpvdUq+NMbfz0 z$L!2EzsEP3!;{A07;8LM=GHsG=?p!N$EiBgccrwQAPC;BZJ2XT# z{(MBtvUGu>lF6ha>2zpDlwx?Er)ZX9SrQ>gvq!Z+id4--SqlMZiiV$1&IA}YiG*A+AIK9h=r=3e81>-OQRm((JCWqBynx&aB zZ3@%5;d>k)YD1x%k4a-mByuiHtG*khks)MKv>EQvA=Ls+t;-N$eK!hok)4e$_zegw z%?N8+JiAa$*^qI+-(DCmzNA%AB`s-|PnZJ(z=A%4r4ik#gWyp{+bbCnX zae2vzhw+fS)64O)3}mP5$<7aGVwbIg?0gB$2N5@Px+RwM04GP%yemRRynrLUG{ZY- zR+KmZv-4jt6jX&EK5aX8ZQAk?8Wa;PY)__oR>6&#R$Rf;iV=WlSAvfaZ3#e$$aE`{ zFz{d*jGIlyAToL%U5vv_O}3K2fVEM?)`Lionks%1bl*REj*rl?iw7itZnW55#6KSq zAt}2(UY_QhqL)VePaQqW3T{5D>S;!wF)zk|8ii(~?WcZKb1hPLcK)iK%zs$azDv*70O(|69sT=VKM{Daf-A7i7BU~TW-&<~u+?;Ad} zk~=Yr{bt*@VmWLs37s8Cyp*gOu3S-AE#RR|3txNd&Bw8Z@?ATxH`lBc_UubsxcJkD zU#&KZii_Wd1($X2*YkI^-=>F_F8=(-Ge^2*A^+&5kCU~(U6OzP|KI=jec$i@ zeP7;7h@bE4J<%Hg0AGEqE=hQg67ON2!gG@|ODVjDTVr460KjLgczXal-uDB5Apw*j zjZeekP=c{YaU+vKO7kpM0Sy4N=Hyv%BAevF4AMl=8mQ~|X$Yi@8YoqPA(&N5W>K;E zESa1iZy@rs3AGWLGaHJZX{sROj<~q=LD?GjkRVm zJi}!%e?#qFe$Id(Erz*mywDem#chJ)V{Aeg{erv@%^4h45>6sHCYL417@Oec6fqhr zs%1%>XIKNnm5)4VDXd`3iLZ8_~>TsUaKypNo8&ODPN`ou{MGzE; zn1MtJgFYz67^zIh3!w@Wkv#_$vc`z>_`iaU1e(dP7F>v#vfw5Xw$dgDbSsH!88gEQ zh6V4!pPkohwFxYfNtuNOE@^%=sE^SqWoo5TBA3c~-Ni6ePjfs@6Qo|JfdqY|6lFw} zYJ|ujhzyB5oK#2@$_SYxG6P2>q!L#U#z>V+p~x86uVaW@F$)Iv8~^A2g)AjhA#Q$Y z9UcfAu7jIsGFu1@>kPiW6cbXdpsN0n!NdPg5_gKp(9=ixf!zAusx1 z9Fxi0ah8lS32Ob9)Pn{8VX8<&GtvAk`ThVo1 zb=q<2+`WZuw$jv_K<7_oyPx=t1kTRj_BI{6bNAZUl}oBJ4=Fuk~d_wWDZj?1G@jw?0X^+Hs}5tNUc-XSaTfQH5DIG|nxWxTsvFnm9HQ zvzVxyQeAM@Ab_AhwHced%0@=JH`O89xr%H9@U|=_!HL0#On@5FJ1E|dT7=# literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/warped_stone.png b/src/main/resources/assets/emeraldcraft/textures/block/warped_stone.png new file mode 100644 index 0000000000000000000000000000000000000000..45504e5bc35bdb571c07cc8939392a4ff7e2238b GIT binary patch literal 1691 zcmbVNeN5bB7%#?|8yk~FViuy92aKrYfaj| zec#{vd!Fa_KF`zrjrBW<3QG$Kf+z~s1)A`?*uEWi;pf1?IFDZ|^}3xVL9DvZz6*#~ zj;3$ej>M{mw&eVscOs6EsRP`g|mXwGIRA>P*r6x2}O!=rRuZYL?G((YDh}G$%YHWjK zTd0xrBLk9NCr?Y9$3<2OPL5{v+AzywsGW|BCCyDs_P_wJppSB~SZ>x!b9|Wdh%76zp3Q6(9xOmZ zNLHfhWuab?6K;dztdW5Q{uL}sViXxFz%eT-h(SizVicKIQuLz)GO%InoqOqg(C=?F zP*h3a1+!_#HZoZ2=Q)ArX_u4Bx*H0KLCv&)Cc$99M`3-OiXw}0q$&acAE9}k_1LLf zMGNjqKm$pFa#RK!$LIG4kkoBw!Qy`Tf9`KE6kLTMamPG%ZQAK0)+r`F*mSOXnqgON zlu*cQ#)v?&E5S!eb_zh5%1tYGtiS?oG7d56Kjg&%%tTQu2@F^h!)pDP)MK#!j9s=1 zp)h}qGP|~<#24YXZ`i|p!@?i=mIpQ5=M3D?W_qub6GTCIFi;b&IH)!~*0FbM$;kTt z{nLF#d)7EUN&L3@^m=1g@dS8((ra+vK1aTBr02@MiN2jBAJ#QwzMnmnX}R`j@}c(X zwlAjpr_#hs>Fmv~=J$AeTl!Yta(pB-49tyqd$peq9J^XP=KgQ?la7m{c}3|N8k8*MIy)AE(cG8qW2O)5LM*viJG9 z_q?l!OTvZO+KmP6#Z>>sm0Qa$itqeBaQNN!X5!0NzaEVquzw%H+WNrT+n(P2CoiHw AHvj+t literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/warped_wart_stage0.png b/src/main/resources/assets/emeraldcraft/textures/block/warped_wart_stage0.png new file mode 100644 index 0000000000000000000000000000000000000000..e49f5c7c45633106df806dbbc2689d5c0126b287 GIT binary patch literal 1717 zcmbVNPl()97>{iIw{=lig;HS&*-NWU^740*XUDRgneGlW<1jPQ^<-aO-pquZ1UQb~f`( z?<~YLQcysBqKu=2p#|aOsd0kv7Rg1Q^uo9-{r>qEk{AYM>73;OFR74zxUrj(_HLtt zcek(`NT;3^PmUoo5Rn{-<7g0Pa9oxqb|D+{X;l&@kbJ8wt#OCqrq>iJG$o>?*fQ2k zT`akZW&>9@Pl!6uN-8L+njr%X0vj5xIJ+d~Ee*P`RXsEF#lFf?KhG1Ws-w|J85s&q zd#dKTt_pNj*JXx~vz<6cV>!-N=N76Y!)ci0A&o_D5&3kOmnFt@8bXv5X5(xo6BA4w zqeRsdz(bk<16<&eVLF&N53ouGBqDL1F|1Z#lRnL9)~9zcT`b??fJy6lg^zu?L{Z@) z%WK;#jF}+&qO;CULev(?=rF~kw#{g+@@NuRNeRkn+M#qXPgHYGS*%oeVjS_P@lqDT7xq%_;W=Auju0gBxG;kmQQ>aISu)A{`)Z$QJKw#YhWmOZP9Q`ji zz_3fx2(g&M2=$1X#63wYl!O&Jpeb|A+3lULS1QevcEbT%$Xe^C#d@t`Yp!j}x}r_! zdLFFDS&m{%>eaHu^ijevfL&iJVc+b^I&v)8GE7Hy9oLaDA%^Z?Vt}qQ-(RJ8$g5z! zKVbV^TPM1XHQ6E9k^^A+GBU9(m%14Efn_7xvgZ4rOG9=F(cqr#@UzLw2X2HJOYF|< z^t8!Kv(X?FClvz`<|m;nVO|0xkY>~2J_;Nxf~nb2pD?3$sf#HrquqRjQnJ=#Y8|BX z)I0Id(DvQgA1r_Svj1AtU*V=H9la?{h4}ot#jnf8&|(vdIdbPaK*TGbNQ23*Drpx_}B2`6Mww@ z(~thwhoAcSz1nN$_itTzz`)VvKig+Mz3yN7cH#PWOGmHXeEt{ylc?7k)sIe}zwj@e Cs2^Ye literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/warped_wart_stage1.png b/src/main/resources/assets/emeraldcraft/textures/block/warped_wart_stage1.png new file mode 100644 index 0000000000000000000000000000000000000000..66293e10ed4f1923c3330506a2bbd3e14e3e5ad7 GIT binary patch literal 1746 zcmbVNO>Epm6gHw1D5_eiq%ELEmct>1`ggtF^-woT?4?<$PFI^%6Hav2p53*w_88mA zZuUZzTLD!F2~+|H4h10&s2qAgAklmIJs^&i5C@O~Tq<#>5WLwxr6ny7m!(I{xkl z;^)_kKi=H4=b7&T@MuW<`TkLkdt@u9EoaN_ z8RXGW!al7NsT;N11ZyUi1-=i-RxDwbIpmk!3UAYd@OjA)JyqBE zf+?wnVru#cUQ^V9tQ2H5Cn_pZ43snZ;U$2##BZRg^WxAKd|5&(%VH$UolZyUrsZgVw6seEI1_fk|53k8u82`uG7`b5+Kq+3Sm4p8>K^ zV_B6HmQo++dt+R@nzZ}QeNQHB5|SuO0jrL&af@a&ZP9y}9&g{_0H}4{v5y^N3B$3A zG%Kw^8bd;MM5nd&n8;O<($&Nxr8Nk1ie(ccJ0UouNsZF>s8E$r$h>W{!W8-Gr6BTY zCq2GRhd4MRmY^v>w~`Yzy{76&Q&GO~yi!DpGJv|&4;t%tLGui%kUIORFL{3eTRChtP4i^ zKIqpK1si6uA^JwXAexGien_s@!cmjJaFqp?kIcr!J!CmWZq!f;wBNQa3sDk zGd=U=FUQXHuG-(;xOD5CD}Nljc(`}%+!gV;=&$$Q{P@Ug?g4UQ>uX1S;q2|FE={;J h-MqCq`Q2|now~dsP5k`p?}ynRq+D8XKAk(i@h_xeD%k)4 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/warped_wart_stage2.png b/src/main/resources/assets/emeraldcraft/textures/block/warped_wart_stage2.png new file mode 100644 index 0000000000000000000000000000000000000000..19c4e3eed63b7959acce94c592ded69737e96e28 GIT binary patch literal 1756 zcmbVNU5Fc16dv6zb+@e+t8T5Z46{CLv6K1DBy-ugrZce#Y+}p?x}soi?%X89X6BAF zvzugJ{6mULDJ?8i@j(O&zWC&WBJ>BrC&9jmk3RUi;Ddq>Mb>-sGi>YDE*+T6%)Q?^ z=R4my_vFKB<=nB^Q?ne$9V->>8hsvT_hVD^cTs#|l|G)XuG9=Y{5C!P+-(Xt9M>wV-0txD^6hJP=+aD3d@bU*BPZDX2>0n{CpqrWj$2=g z*UBpZ5ibQD(!{C07f>|EEiLy0h}Ln;H*wqbbHX3r-w=4$$qDDvWw{(!xZ@VLLcF?F zsiUoRWIDp~i~Ld_PzN54A>a49egyhCVdxjoceX4E{16ha=Y%{9$gh>FyhTFHr&ETA z6kX*rW=b(+Q`OJ#s;p!rIU^~WC@VlVfM)XJOQ6w0rv+;E%i~z|D<^c~H~^B=>-ADS zEk(k%q?o2D$*QEPB1MSNz>i^H^rMA|2OCEybc5I>KF>VDCfSH{0%bZ%!3z?%el(Ve z3MTboASo%Cr8EROD8U6AVRsnZK@#p_5BqUMu}XpsIwU4hhup_?vVB(oDs8!(#MqaM z=OrPcxUfmn7z?s5I;sx>EY)yCHbR68o0R4P%O(I;h+#~^Iw9Rjp{f(gyk)V%WckJO zuJ4dubb5~swqcBOf+|zFWldD|x}pPB0qM*Oau&$)2wEnN+Zx;hO*5#h0Zq9JO1s8^ zF?=A{L7+uK57L}n54N!s_-%ntlmr&(l8^>w?DnpgEUOxlmfNKpQSIDWzErRb#WW02 zO({dVAOLk76`lMXf0g7X$k%`ly?qm(ImDaIn8W|+2IGb*2GF3=-CiXT# z8>|Z^_71a$8iFmoC7QCXiP^Mnil&*B#SAh~)^Jn}V>q#YC3NX2gx!bs!_FpaA5e57 zTG+w(^sM5y#&2DhA9f6Yh@FI-fLIG)n!#w<-A{o7WiYbubue}MKYcNRMWhw?V2JZ= zs@6eTPr4uf2yQ-r{ekMYFZ=(t>O-<0i;FtYZ(}-KC4uE5u`x6%jdX9-hI@NP)&x%H zAbU*)F#SkIIQFUQkPhgbcfN4xaBr6EeEsD12bavpr}9UCSRCx`{(klK6}dRKJssa# zKJ-!l*6qrlQ{Y|e+U3K-5&5f~;~akS(f94`qc@+Kd!sQ^d#Ukb;nxeZl`EIdd^6Mh s%lZ4KSO3|%n7?@H=gW8OZ^gOmm8(n7H!eK8!v0H2g^K<4*~WYS0@!*dE&u=k literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/nether_lambman/nether_lambman.png b/src/main/resources/assets/emeraldcraft/textures/entity/nether_lambman/nether_lambman.png new file mode 100644 index 0000000000000000000000000000000000000000..4c77ea0a395a541914d9f35a2664be5a6ab2ea3a GIT binary patch literal 4637 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 M=;H1ycJz(^AJ;_A%K!iX literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/nether_pigman/nether_pigman.png b/src/main/resources/assets/emeraldcraft/textures/entity/nether_pigman/nether_pigman.png new file mode 100644 index 0000000000000000000000000000000000000000..839e7a407affebaa62eb1814d81b9c20abd7946f GIT binary patch literal 4888 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/piglin_cutey/piglin_cutey.png b/src/main/resources/assets/emeraldcraft/textures/entity/piglin_cutey/piglin_cutey.png new file mode 100644 index 0000000000000000000000000000000000000000..2387810910e66f2f4bce132f29c4e9d8cf63871e GIT binary patch literal 4875 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 sc?|mccw~=n(~MNWh)=3F=@~ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/astrologist.png b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/astrologist.png new file mode 100644 index 0000000000000000000000000000000000000000..b891fe616491ba28395cf89da186ad8371a776ed GIT binary patch literal 2314 zcmbVO3s4kw7+)VCfn?$%($aM?pX}}Ky?66axI2WA6M{?67$3{--rd68?YX-0EAp)tv1nS zNg*iCtsrSGi%|sJUI`5VW5x!&B$dO6U>4(GJqD=0yaEDQ+5k<~SWt`C$T-=ge4fe3 zpJ=7>b10mK#>RnT0)%A1&4?rzaJxJL5imflb_r=MixCKHg@`!@C|-65+AL|Hk>eRq zqtL<>rdEPFT!Cp(T&a!)l_;h|P#uD)U=$-zEuq4}_6w4{@wA;tHzl_FlD-U(Qxv@f zg82P@gKAl=mWS1xtlTyW)Z&W9&n`8?^9Ij1ZGy6oX=Z=|KHo4fB~ z+2+fId5a3cA5On|HS9aRsr!e8F`D(EnSbwq zx5Hdg>-wHssY?m>MpP$eSHe{*a~I|u9XP>UsU7s`+5Piw^erh*IPc8yHzv6X zmuT~%hsG^iI=4qw_|T2|=g)^0PTJw=|J{PrFT*#6ntm&*Qyk4dX98z#?@9O5F z*XLTe>dUoTuTGCLSC;9zpFF4>=`Ei2YuxA|+s8qpxUG$bEoX1vyD+%?4j#EoYqvqrThd~DQ#t+Vt|Maw>lnJ_kDO^wxd zd|1`l1tY|T`aiqY&;NKzdBw2qE$h;AhHcD`<}-&MSXU6i*hbXuo^?@MH!E=Jt9|5Y z->oiYUys_A`1q;eCTwa#lL^hYZBJ5C2i8E s@;B#}b=#JGoy{1RUAd?97FXN?WPtS>Pv+aM%YQ4$=82~52{VfR1+eZuH~;_u literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/beekeeper.png b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/beekeeper.png new file mode 100644 index 0000000000000000000000000000000000000000..f67a9289634029b9d9318f97de2808471b83a8a4 GIT binary patch literal 3780 zcmb_f2~-p379JE8a0}K-Sc*f`R?s9fAqz=CNFX8#2my{LDo!Q?M94xCAP7`8mnw)T zA}$3tXp4#>rCJt4MNt%yT9qn@w5VyNtvo4G1myi;d);4O&&xTJ`Ir0O``z!}``AZWVRG7k}WyBQvn$>6_O8r=q7rpjfj)etoG4Z~vu9Xw2ipef$cz+g?V zk2eoj$Y_{EAtq>AnG#4tkh7~+iQ$oi1{M?HQn?G|d8Lj5OC>IpRV*LGN9j&PNSAF= z5doWg1My9fI9Eb(T>?96c|d`T&|t7u7A05nv@Voky*w~BEYm6Qu!ttog~B%&goAzj zV0VRzfLSy)6-Sv2n8T%^Y=p~TE`}Kh%Aq41I_gM8P#(hOIdb9A9|c%bNy2y{kENrw zz|4gbq0uOLbb4G|94*d~rci~`Q7)HDM;LSlg9;?5>Ug;Z(^BQ?d1D$p2sN&fDm7At z95!gg#EKY=3k4t@aY3dWS1VVK(gX;jYcVAqr6C5Fh6N?~xSTRZ6*X*Jg42m8LPp3n zY9Nb_%PJ!j8ihJS@h7Usw|`{-Q0wC}ZsQNJ$YkRt)EZ$daATB^Ka^Gn#w!WBh)^qH zR5&4w1u*9syixMpRRpF{r~(y=sIfr#jX{Rp-3@_pf)}om$|Z_8wf!&75FVI@aG@{| zKsUmqGB|-Ki^pQ}7@S3j6AwW~M12$zX;}R4McF)*!EU~-)B@^GO5erQsugom(LY$k`zq7qybql!_cnCc`(!l+CxhafPN%|aZ3 zq2ZwMJQR40Aq&RNOTc-FlZ45}#2A&3un?-4!NjN-%5kLPTte)K;}QwN!pF|9R7pV< zVp0EC52%*^P%);34?I$XFsnyvNq~iqj-sSX3~m}=G6@9bG9AOH5)4JC5`xL3a&fMh z%4M@Sh!X}pU}4U5L*al!@W^OH5&f?%jxe)KYCsS_YBzw09!CHVXD|=L4VCFa!3`-% zNGPMr(m#mE-(z${ZCnHal>SAYj)ts9c65jLl?<#TdaF^Zxhf**t{9V~tnYKSV!DE*^o&!wGQN(<%Sl zpTAche-@43Tm}DEe}=PlB-QA@&BEcmU$lg=lm>mqFdT1iU^3n!2|1uj1sdRtlS%^g zRa-9)exUa74^w3Rd=N95t3eno7w+}^|vPT%eGxfvv^+`hP25ENuxuX|xUTWEBvyN2veGA3tT?Mj-v^U8#a&ue=JGar9R z{jTrw?)j#WoBfvJVv^82N3{KzNwke(@zC`*YPj2;_xmlkyQTL2FaS!{$CCt6V0|Sp zoPlodAb0oKJgO+4LQ2)Wxnfq1=urKmJ^3rA@kw{;!dGwAc^hw-cKuxIj)6rhAv*x4 z^+NPSXhX*5p?Wi~J@BpW%qMZa$)f8E3p4ILfDk?@?}`{(SXfl-P|MwhPX6+{*`npk z?2ne$B`%qQPfI5S1noPTV98vk_IU)e}yhBmWv4v)rqce(&kptdvVLE970BI>X zJ;i3|X?ZU+K!#>KdZj#mu)kOg)-LvZ-2x#l-wlRZ%{+0&%W4lts-InmAQ}g`!^2t@7IOs zt~pt~)$#H*)^SmLK>;WJ>>JIr#&ykSHV-upK4SfJ@x{9y56Cy`7U?RNKBaila_PRV zPYUkJ_9EN`&mZ`t46fh&zPZ%3C)cYlRf8mnJW_GFwe@+^d5brS53nC zP-#__&54Q74Q~FqPuPtWuB)n|UA}tvqmGn);T>BS-st2^O7=9OneN>bxNcqxi7@rg zWl1mH-*BbvLSL#8RM5943AF>$9{)ZF$>ht^T3cX@%gZTo@hLt6cc zGnSE;>mT#yJ-oobI{BkcW3wZ%^AgJESxq(y+i9uF?ugK|n%I7t8F+4&b+h@MT_;#I zzNV$(MH^f8$wFG1Z?CCL2xLj6F$?p1MVOIui( z<(~OQg|h`FWE@-p&bLnX&UoF`KUX39a!&d6O8c9;9`opDn{x`Ygomd#a?dSJ6PZa5 zrj`;(VVM>Jx5#zR?ONZ?W3|qCGdDdb`{9-qjm6Aw!&25h&P;4wda$TzO^2uJ&yv$I zy2PQ9`pMYhR!P}a`8#dA^6n%x&Wn1h^>k_H*-S@)%+Gq_sg}yEhgtiDtJ${5 zgPu6+@IkqM(A_O7H%nH>9*wn_RBqn-LBBq;sPh3WMeY!FH9O`&`?0z=1fQzB>n2U| z(?{=5@1}fq=tb0{tHOgtJw@Mk`^~U+p~19EBZW32OL9YM>lrXn%CuJX4RMbPvOTcxVuX`>ur#%xTwKz z*6rZ=(bW_S?$$(Yv1?aEiuhrzXmzf(E~|@h-IAk<-;+ja(5toi+h7y8@YKmmveedh z2a1fEf~Tu)d~-CfBQjK*Jus;2HL96*>HCIHXc0WQ`PV%F literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/carpenter.png b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/carpenter.png new file mode 100644 index 0000000000000000000000000000000000000000..1010dada39dda83363dc53126077b7f55c2e580d GIT binary patch literal 3580 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/geologist.png b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/geologist.png new file mode 100644 index 0000000000000000000000000000000000000000..5ac6a409a3fb3d9fd1942c088dd9ae59230dd983 GIT binary patch literal 1273 zcmVhyJvcK*NdYNJVW}EEceXxjJvA8`nswN85tQF85tQF85tQF z85tQF85tQF84nNSv=?x{sP=B?bUMWtLs1lb;-0`c2Y@k#-Pc}PYoqy3R`~!?RTbw) zBZk8vRaK#?6vm*cCwjm44iFIz?%qXJ84ic2Dozz+PG(x~9bk+>L=X|GszO8{?EXnu z&^ryd_SN?q4F+(|)no9CQ0Gt*<3unbI91+${bI}J-ZDV&#zzLIbKXejFhzk8@nH}h zbqpJN=KvE7Qq>j=r#O1k&X0W3HmvOvSp=ch;=|2DagEW4n5u&e#| zab@@$lgR{tjo}9K`5X~pdNgHoa}yE4TFY!U}ib1jTz1}%Ml9&b`!^Rk_wf=lEK8pOhIvI%_&GrmdU{3LC8 zg{<&6!~&_l20vew@{9ek3Q~W-KUCh>Uf)gqa(^85pgrx<{3p(yJID0k0BbG7;gG|_ zLyR$$Wy#rB-@5OUCoaA=XiXC|HcJ+6)=o3l!Cb+r633MaH*SrOb?Rq(W35!E99XB} zxBmf{&t?oaH#vXd0>&5~8I9Q3*f?>cavdU_Q)m#tRmF}AY)LgkRci;z$KQ-q02KvY z=$eFkgy*8t?zPqP;+Nq~`K4}CO(qjYqfuS60}OU9cPjTND{YJRJO)mt>tr`TpOpSg|e~`&Gc}sZYl~|-;=-;jb=CMAsT}d zfRE&HA7@8`sIF#C2T&flRZ`0;{_83Wb6THDOIErmf^*+QZ&AOM82uCV_2ks=U<7y#5CBO! zD`DrpeP?^+l3%{IuOcKxh9o+oKa?i%6xN~(!DyOtdWTjI7 j6R)l7rV}zU9%B3rW8Rt%eQ%zb00000NkvXXu0mjf)B03Q literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/glazier.png b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/glazier.png new file mode 100644 index 0000000000000000000000000000000000000000..eb6572abfa993e57a181d4b18a2717d088da76b5 GIT binary patch literal 4705 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 Mj4h2S3{OV<9~H9tLI3~& literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/grower.png b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/grower.png new file mode 100644 index 0000000000000000000000000000000000000000..dcb0e152a9622cecf91090ac58eab06da3b695c1 GIT binary patch literal 2910 zcmb_e3se;66&?ygK~SU65+$-sNa}-OXZAf)Rt0u}H7+912tLr+nb}9!-C1V_SY835 z37`ULpr%DnRRrRLa8gBLK`Mq2daCtt)B{mKv^6y`0+tZen9x~ZH(HJLc)I7z&Oh^i z|GnS+?!Es%r3vw|em--3008jQ#HkYb`!dJ%b5H*NplMS-fAhA*rLq7p<5S1w_PfP1 z<^h1$3R7|lm!e&P5ws;7CutoOZnxNYGyp^_wcBtao#F&K%3!i8!J*a@puj{b!PQbN zthGf`MpIl4LnYth!j%_1%Zl4SSoj}SJ6a< zqY9ksNq)T?mg-TxoPhKQDu*b!1c!7Yg&0zxIyr$;3Ybzzo$FUJCcX=C^K;wbyX8kI zoK_{KsB;fAS^*|fwF=Cjg_5IP!%UnH0uO&StD-Qz?#V{s-2gX}54Nz^76 z1HnWEV>sdHOeIJ-N|GYMsn@0_WaQZtoiv+eqTI3o zWIrV?VZ^Nlir?&o;Pc1xZ2j?gHlDZ@{9oglsMg6+6aIGU&ejf7C$;z!>>QJ|Rv;9|ZzJ7As{QS@_1Ze5q&y)@Se7A2}X<*7}O<-K! ziuqVYZSInpmDSv?FF!S3q(etH*B2jbtS%To*iyf7&8!!GA)1>7SgU|Rpm%{=uiLRz zKRf1bBWzy#hk6jAEpQIkJT58kZo;c#@ak8aYRlN*<~>Ine%ZWo&d9wVYIeGX^wo~s z`H;MfmHlOY9sB(UALWcqTbI{gZi9U<4DVI`IY4?MZq|2V~eQ9$_@UHvC36>Z|T>gp>lzhCv8?8H_!Y3l^VWiv2iJDhe|u>I$lX07Zrb6w>ie1(^3yS!&hEQ;sQ={9 zSjVQIs;a7XiB?hW-T}i1;+E;g_}#oeim6)*c6X12eR&`ERu^BtaDRDSVsctq`QE)D zp|ibzU%wC-o<8tSzTZHM_rQ$yvf1q~70!F5@YjHRIqIaP_W~0!1kjXw`?UfIvxqk!pu`j+I6B~bZbl#zBVr^}u=D`Skwdp{Z zT4VlOd-KStqU&#ZNYZ|tt_?YR#~#!=cW37xPW6F@nYDvhc3JC(X5q|KeaV4+ zJ+sP2Z!tUl(SOUR0kI^=a^m&jU)_p&ZBE_oucd>X@ypq<8!_EQ<=>s%`jsJ}ZPBU6 c)0*cIlDGQYZwi`v9ACg1b-b!EYU5k~0bJoOQvd(} literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/icer.png b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/icer.png new file mode 100644 index 0000000000000000000000000000000000000000..d4afbec6aa25481a46804248764d41957eb806fb GIT binary patch literal 2387 zcmbVO3se(V8XiQ{VyTaUx(GN8i?wKyNg#oYWCt)?z_vfr=IPsMsPeL8L1#t|+e+*$I!-?s0e9=A6mBbMJS* z|Np=H|Nof-;bCt(*gM+;0N@Z3EQz2;k>y#mfc`JTcXralE4ttqJpe3z-SXG~#U-l% zz|IAajHaTcp)g8lScsfR!dOO)jz$B3pTALupvf2oCSgikD`X5^_<{lAav>v%CxxUs zF{Z+U%_R1YIV=)2C!+#6!~Zv+pAn`BG#G_|MvYplhmAtUG%rlgEz4{MI1Qnag^U1; zK`>ex4vGm919>by6XkewK_3B&!-oW1?+qXq;`p#3A2!E}32|VE4|@r~*&ld% zgd}Lz7X2nMrWnf>Stx51!Ef#9h<{~EFnz;<){^>OCiJGTAQUEKa3NZ5 zh{xnYksL3W;|+76^^h+NK{HS(A;%S_mqGGVnR)jv|-viuNT)t#Nu$0P~d8MLm%<>CNLyW%;yOBd?uI0nRZtyg+sJ@ z3eloih(ySs^gjUn>>F*uf zvPJm3y*YQxP0XVF8pkEV?B_Or+oEb(Q_)wkZ)tErZC?aA@E4EPx|;bl#^`r%|A|*^ zFS~Kmd2m%s$@lesJE%Dup zlJob`^r{tx=KvVDYtS6WyZAM|k=bUjm%MMPvz_<3X|n7l^A8$6)9vyactPg29Z5r{ zw)}17`Cg|Bn8 z-@ECDAudEwb?foOcTLO(_nz{ueE-`K1RIp~Ox_uZthwB>?A-3yyN+fR(cl(*^3OMm z6wWvNKI~kXpLYuAxpXL};ZWt}oHCm&ZTtX;BMpq6!EtjQg~f?JU`zz*~L!fv7&XL zy68x(6S*BIjwRx98&&5+*ENu?7fhcRrwlH+pA4MbSY5RDYWaPZQP;yogu&5E9(P~5 zm-UsvE6%VxVA+C%EL6KcyR=X#S$|E<|7(xYKKm)iE8Xi)y?VB@B2T*6t^3a8#?v*S z+PDeF%=N3!H7~3+UFB6SdM!$aWb_U${7A9t_UAgMZgBs-bgY*z%J3+;kfB_WU;tg( zuoH2cavLFstZ(|=Tg>fcE+>SiF1*d4FLcHAu_anI}hd8otE!p}Nn^{0I%?pMVS;af}IjA;3wy#L`p z?0KcwdnS(Q(4z{9TTos0&+YN+rxuBZORpIp>>FCE#hOEJO+0wkm_0RamzinN5j%{te#e Bqdx!u literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/miner.png b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/miner.png new file mode 100644 index 0000000000000000000000000000000000000000..3cf0c0e5eb868be6dc38134c445b616f141eeb5c GIT binary patch literal 3982 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 Y(m~IR%rUz{)fY3()zjsI^LH`-2HS6A_5c6? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/astrologist.png b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/astrologist.png new file mode 100644 index 0000000000000000000000000000000000000000..b891fe616491ba28395cf89da186ad8371a776ed GIT binary patch literal 2314 zcmbVO3s4kw7+)VCfn?$%($aM?pX}}Ky?66axI2WA6M{?67$3{--rd68?YX-0EAp)tv1nS zNg*iCtsrSGi%|sJUI`5VW5x!&B$dO6U>4(GJqD=0yaEDQ+5k<~SWt`C$T-=ge4fe3 zpJ=7>b10mK#>RnT0)%A1&4?rzaJxJL5imflb_r=MixCKHg@`!@C|-65+AL|Hk>eRq zqtL<>rdEPFT!Cp(T&a!)l_;h|P#uD)U=$-zEuq4}_6w4{@wA;tHzl_FlD-U(Qxv@f zg82P@gKAl=mWS1xtlTyW)Z&W9&n`8?^9Ij1ZGy6oX=Z=|KHo4fB~ z+2+fId5a3cA5On|HS9aRsr!e8F`D(EnSbwq zx5Hdg>-wHssY?m>MpP$eSHe{*a~I|u9XP>UsU7s`+5Piw^erh*IPc8yHzv6X zmuT~%hsG^iI=4qw_|T2|=g)^0PTJw=|J{PrFT*#6ntm&*Qyk4dX98z#?@9O5F z*XLTe>dUoTuTGCLSC;9zpFF4>=`Ei2YuxA|+s8qpxUG$bEoX1vyD+%?4j#EoYqvqrThd~DQ#t+Vt|Maw>lnJ_kDO^wxd zd|1`l1tY|T`aiqY&;NKzdBw2qE$h;AhHcD`<}-&MSXU6i*hbXuo^?@MH!E=Jt9|5Y z->oiYUys_A`1q;eCTwa#lL^hYZBJ5C2i8E s@;B#}b=#JGoy{1RUAd?97FXN?WPtS>Pv+aM%YQ4$=82~52{VfR1+eZuH~;_u literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/beekeeper.png b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/beekeeper.png new file mode 100644 index 0000000000000000000000000000000000000000..f67a9289634029b9d9318f97de2808471b83a8a4 GIT binary patch literal 3780 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/carpenter.png b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/carpenter.png new file mode 100644 index 0000000000000000000000000000000000000000..1010dada39dda83363dc53126077b7f55c2e580d GIT binary patch literal 3580 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/geologist.png b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/geologist.png new file mode 100644 index 0000000000000000000000000000000000000000..5ac6a409a3fb3d9fd1942c088dd9ae59230dd983 GIT binary patch literal 1273 zcmVhyJvcK*NdYNJVW}EEceXxjJvA8`nswN85tQF85tQF85tQF z85tQF85tQF84nNSv=?x{sP=B?bUMWtLs1lb;-0`c2Y@k#-Pc}PYoqy3R`~!?RTbw) zBZk8vRaK#?6vm*cCwjm44iFIz?%qXJ84ic2Dozz+PG(x~9bk+>L=X|GszO8{?EXnu z&^ryd_SN?q4F+(|)no9CQ0Gt*<3unbI91+${bI}J-ZDV&#zzLIbKXejFhzk8@nH}h zbqpJN=KvE7Qq>j=r#O1k&X0W3HmvOvSp=ch;=|2DagEW4n5u&e#| zab@@$lgR{tjo}9K`5X~pdNgHoa}yE4TFY!U}ib1jTz1}%Ml9&b`!^Rk_wf=lEK8pOhIvI%_&GrmdU{3LC8 zg{<&6!~&_l20vew@{9ek3Q~W-KUCh>Uf)gqa(^85pgrx<{3p(yJID0k0BbG7;gG|_ zLyR$$Wy#rB-@5OUCoaA=XiXC|HcJ+6)=o3l!Cb+r633MaH*SrOb?Rq(W35!E99XB} zxBmf{&t?oaH#vXd0>&5~8I9Q3*f?>cavdU_Q)m#tRmF}AY)LgkRci;z$KQ-q02KvY z=$eFkgy*8t?zPqP;+Nq~`K4}CO(qjYqfuS60}OU9cPjTND{YJRJO)mt>tr`TpOpSg|e~`&Gc}sZYl~|-;=-;jb=CMAsT}d zfRE&HA7@8`sIF#C2T&flRZ`0;{_83Wb6THDOIErmf^*+QZ&AOM82uCV_2ks=U<7y#5CBO! zD`DrpeP?^+l3%{IuOcKxh9o+oKa?i%6xN~(!DyOtdWTjI7 j6R)l7rV}zU9%B3rW8Rt%eQ%zb00000NkvXXu0mjf)B03Q literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/glazier.png b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/glazier.png new file mode 100644 index 0000000000000000000000000000000000000000..eb6572abfa993e57a181d4b18a2717d088da76b5 GIT binary patch literal 4705 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 Mj4h2S3{OV<9~H9tLI3~& literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/grower.png b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/grower.png new file mode 100644 index 0000000000000000000000000000000000000000..dcb0e152a9622cecf91090ac58eab06da3b695c1 GIT binary patch literal 2910 zcmb_e3se;66&?ygK~SU65+$-sNa}-OXZAf)Rt0u}H7+912tLr+nb}9!-C1V_SY835 z37`ULpr%DnRRrRLa8gBLK`Mq2daCtt)B{mKv^6y`0+tZen9x~ZH(HJLc)I7z&Oh^i z|GnS+?!Es%r3vw|em--3008jQ#HkYb`!dJ%b5H*NplMS-fAhA*rLq7p<5S1w_PfP1 z<^h1$3R7|lm!e&P5ws;7CutoOZnxNYGyp^_wcBtao#F&K%3!i8!J*a@puj{b!PQbN zthGf`MpIl4LnYth!j%_1%Zl4SSoj}SJ6a< zqY9ksNq)T?mg-TxoPhKQDu*b!1c!7Yg&0zxIyr$;3Ybzzo$FUJCcX=C^K;wbyX8kI zoK_{KsB;fAS^*|fwF=Cjg_5IP!%UnH0uO&StD-Qz?#V{s-2gX}54Nz^76 z1HnWEV>sdHOeIJ-N|GYMsn@0_WaQZtoiv+eqTI3o zWIrV?VZ^Nlir?&o;Pc1xZ2j?gHlDZ@{9oglsMg6+6aIGU&ejf7C$;z!>>QJ|Rv;9|ZzJ7As{QS@_1Ze5q&y)@Se7A2}X<*7}O<-K! ziuqVYZSInpmDSv?FF!S3q(etH*B2jbtS%To*iyf7&8!!GA)1>7SgU|Rpm%{=uiLRz zKRf1bBWzy#hk6jAEpQIkJT58kZo;c#@ak8aYRlN*<~>Ine%ZWo&d9wVYIeGX^wo~s z`H;MfmHlOY9sB(UALWcqTbI{gZi9U<4DVI`IY4?MZq|2V~eQ9$_@UHvC36>Z|T>gp>lzhCv8?8H_!Y3l^VWiv2iJDhe|u>I$lX07Zrb6w>ie1(^3yS!&hEQ;sQ={9 zSjVQIs;a7XiB?hW-T}i1;+E;g_}#oeim6)*c6X12eR&`ERu^BtaDRDSVsctq`QE)D zp|ibzU%wC-o<8tSzTZHM_rQ$yvf1q~70!F5@YjHRIqIaP_W~0!1kjXw`?UfIvxqk!pu`j+I6B~bZbl#zBVr^}u=D`Skwdp{Z zT4VlOd-KStqU&#ZNYZ|tt_?YR#~#!=cW37xPW6F@nYDvhc3JC(X5q|KeaV4+ zJ+sP2Z!tUl(SOUR0kI^=a^m&jU)_p&ZBE_oucd>X@ypq<8!_EQ<=>s%`jsJ}ZPBU6 c)0*cIlDGQYZwi`v9ACg1b-b!EYU5k~0bJoOQvd(} literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/icer.png b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/icer.png new file mode 100644 index 0000000000000000000000000000000000000000..d4afbec6aa25481a46804248764d41957eb806fb GIT binary patch literal 2387 zcmbVO3se(V8XiQ{VyTaUx(GN8i?wKyNg#oYWCt)?z_vfr=IPsMsPeL8L1#t|+e+*$I!-?s0e9=A6mBbMJS* z|Np=H|Nof-;bCt(*gM+;0N@Z3EQz2;k>y#mfc`JTcXralE4ttqJpe3z-SXG~#U-l% zz|IAajHaTcp)g8lScsfR!dOO)jz$B3pTALupvf2oCSgikD`X5^_<{lAav>v%CxxUs zF{Z+U%_R1YIV=)2C!+#6!~Zv+pAn`BG#G_|MvYplhmAtUG%rlgEz4{MI1Qnag^U1; zK`>ex4vGm919>by6XkewK_3B&!-oW1?+qXq;`p#3A2!E}32|VE4|@r~*&ld% zgd}Lz7X2nMrWnf>Stx51!Ef#9h<{~EFnz;<){^>OCiJGTAQUEKa3NZ5 zh{xnYksL3W;|+76^^h+NK{HS(A;%S_mqGGVnR)jv|-viuNT)t#Nu$0P~d8MLm%<>CNLyW%;yOBd?uI0nRZtyg+sJ@ z3eloih(ySs^gjUn>>F*uf zvPJm3y*YQxP0XVF8pkEV?B_Or+oEb(Q_)wkZ)tErZC?aA@E4EPx|;bl#^`r%|A|*^ zFS~Kmd2m%s$@lesJE%Dup zlJob`^r{tx=KvVDYtS6WyZAM|k=bUjm%MMPvz_<3X|n7l^A8$6)9vyactPg29Z5r{ zw)}17`Cg|Bn8 z-@ECDAudEwb?foOcTLO(_nz{ueE-`K1RIp~Ox_uZthwB>?A-3yyN+fR(cl(*^3OMm z6wWvNKI~kXpLYuAxpXL};ZWt}oHCm&ZTtX;BMpq6!EtjQg~f?JU`zz*~L!fv7&XL zy68x(6S*BIjwRx98&&5+*ENu?7fhcRrwlH+pA4MbSY5RDYWaPZQP;yogu&5E9(P~5 zm-UsvE6%VxVA+C%EL6KcyR=X#S$|E<|7(xYKKm)iE8Xi)y?VB@B2T*6t^3a8#?v*S z+PDeF%=N3!H7~3+UFB6SdM!$aWb_U${7A9t_UAgMZgBs-bgY*z%J3+;kfB_WU;tg( zuoH2cavLFstZ(|=Tg>fcE+>SiF1*d4FLcHAu_anI}hd8otE!p}Nn^{0I%?pMVS;af}IjA;3wy#L`p z?0KcwdnS(Q(4z{9TTos0&+YN+rxuBZORpIp>>FCE#hOEJO+0wkm_0RamzinN5j%{te#e Bqdx!u literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/miner.png b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/miner.png new file mode 100644 index 0000000000000000000000000000000000000000..3cf0c0e5eb868be6dc38134c445b616f141eeb5c GIT binary patch literal 3982 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 Y(m~IR%rUz{)fY3()zjsI^LH`-2HS6A_5c6? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/gui/container/carpentry.png b/src/main/resources/assets/emeraldcraft/textures/gui/container/carpentry.png new file mode 100644 index 0000000000000000000000000000000000000000..a0dcf566854d3357cdaa0f3e0c542557ad812552 GIT binary patch literal 1432 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 Z!CDwcS|~!tUiXC%VOs=2>Ojd4e*jLB3u*uW literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/gui/container/ice_maker.png b/src/main/resources/assets/emeraldcraft/textures/gui/container/ice_maker.png new file mode 100644 index 0000000000000000000000000000000000000000..5233f421079b7fe371f55ec2bd6f1e61b62ccab3 GIT binary patch literal 7034 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 KZF08-?E7!pU$2q? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/gui/container/melter.png b/src/main/resources/assets/emeraldcraft/textures/gui/container/melter.png new file mode 100644 index 0000000000000000000000000000000000000000..69653fc7ef63b379002263ba0295235c9b981d8b GIT binary patch literal 6542 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 AO8@`> literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/gui/container/mineral_table.png b/src/main/resources/assets/emeraldcraft/textures/gui/container/mineral_table.png new file mode 100644 index 0000000000000000000000000000000000000000..4f3e2a9f586b9b1b013aa4a797361c3315f68855 GIT binary patch literal 3799 zcmd^Cdr*^C7XK0ifl4(NL>_7yTnlc<3j`9tpu|&^&iX~Ag4?#(&D7F@1mLe!9)CeL-fbtRuWWRt=b?xr9|86Fkd(S<;dmg`g z&Y4M;zwdT4Q)^QI0L*-L&;kGe0dEn2u@St42`)v$iwS?nULgQ{^ojn50CMwJ1Aw6| zJ19gHLf=JULR=h!1x10lBrYFD1AqrLiO*mj07d91Fow z!C3Z=g90${pl=ZK-~lF?g`sXndn8d{16)wVKqqlIJRv2?6EkO*0`K+5cno?DB0AuS z*`jxd4x#&_y&(aJ-h^{;WD=c8Xjd|h=t3ZqoUv#Uf#`}SxZ;UUjszlw;6iaCqu+cm zur~oKni4?!#~WX;X%5I@F5>uN z0cXxRi-`w0AQ$9`gfN!4h~>vZB1jku{ekI4^*at=YU%VvA0Lc`%UyIK6m3g@(|AM3 z2hqZyWIl)w0ELiPzy!A?z+u|yv*A;`1t3EN34$Pqv+z*<3n8Puz4Z^{hPDr8^H@-# z(BZ8+AdMjcJuxH#OgF(9{szGh=R~Aza{fEPjY1&IL+KEU9i99^=q3vBT_{{NEQW~j zU%@OUB^nZN8F0>QE+YoS^La5C^dgfKZ-@g4V8?KDPH&(4czgQ`plCJ+RtN*OZ$VNmxcQ@h$+@r!NPskpSoCwO9*`Vs(Hm^a7lzs$hA*~C~7Hu@jxVjd=hqD6@e0k|awX6t_` zJvwwa!&VFi!Z?8xuM@K4lGz$9C;uQo^t|tpzU2bjDcq-!-uvdC@Fv7 z2@$eoTd9U){BE4m#CiqU_Xg0mIy(oIS3EQDx2?GR+6ZmBbKlUX*l`=Q^@@|nsOqN|vmo-WCe$z-m|)ayMvmk!omk)6I@IP7P&;na_$IMk(Imhyxr z9x8i!d+m#wUp`h34h)o~>Mr`p%2RVrdKhQOe#kEcYk970wRg+viaSv#zjGd0YPGuL+>Hl~jjj}fOW)bF zxf)(rAB>C~a!P1lHY*N19A|p9q9QnDnY;j@I#Xh;Z7BUBZb)I>(XzLeMat?HkZT+O z*7dmkkq|UER+D(k8fj-<*rP>gf-iNI<2TYq&?n3g9 zI3z>+nX^g^@a^><%YY()5Re!4QKTtgSN>z6N-y@~Q1T!22W5R1WS^Je2(m^x;yT&G z16$McefwyGR}rw!&BLQ(ayc=t!KG?*HU8+)qwqE=EiFww;eG7a!GeZjLsg#;1r-4; z%p$-hw;|enW_B_qRRPgLv8(o(&3?WvZEz#@SyRsLM(v9iFM^+LeziM2J1i`$PFJ@cO7 z68Y>#uaWI_-R9>hJMCw%B_mGhab3X~%48$|pZ3;r9~#;R3geru02M)L4;7fE@z*Dw zB&YP=+oI5$_?ammAtQ z7Y7barmRJ^+ST+S(a=(jsM-3^7goqM^`D_$UW@l!Qn2*==B|EJ$XHtwCUWRBx1FnOeH3l#UlslU=rc%t z!u;DMxq#2$<=2pJ1cZz+3b>JCi$(o)8K>Zox!yVs@l&)k<$k7p)^ z&)A}dCqF~UQmuwZlyc?$p|%0r^uCfSlE>rW-1c1vUg)cRiQ>ri>IX-m!X#u6@Pu zH=W&URMn5kK=aG*Cjz_k!oND(5PhrTN(ndq>cF5xAP|71D*{c96lZ!O+T}kNQ$Oj9 zHf<_zd(r20SDp!QrhATYBMf70x{RpIJv6}OEK*dK9;{qjdjZW1rU6s=$X{A4m)M0N z?!C4^rPo{py!|`P+@8g~%Fk*#jY0BH2c}P755dYgLF|}F%~lkm@`{7kjK$&1>Ifj; z_oBisa!6?TrLk(iFG6#uiGDHg!19i>7-ZAfDtfhMqH{uYyX%GA9F>l%h>eqvb{=W) zwvxi?Zdm>CY~O0%W~&Sg^6J1UI=9LgIJOOi=oLtd;+pU65BWL<`=zm0;g#dm1c_8$ z+ZbYQkuG1Y;$N<4&oH?C8F1nZ;1z`gvP^*W8|DQEg+cERMT7R7YL8@>Jc}ELQ0h+s z_qOK}LvDonWRxb)VG;Vyy+0Pl4Jr#Camq*59O1Dx z@{>g&RAJCIs&VB;m+sBa&v(mKcTBly&ix{@!7q9I96s+ENnSk1Rrcll>1ax(5hC$~ zO?|xW5%x;d{ceF3DxRx0bVrgOtjKQeK*e4Qq0#DwhvVzIb-y0keO$Kk5$ayNQJSqg za;)C^&*q-6M37&*?&xgW?>4f%vYlS5+fbLN4?mFqJ7l~sl-iw8FPn86y(r#}UX5`_ zitEi6xV!dnn^!f`eJ%%!GnzJwHhs*}<{6^ldknvC^mp#(H9yN$`T(2ORU-p!tC5L| zKI}giPx-m7rPZ-WXR(bB9%$8DNi9~Y=UrW0;X3ry<6mQeujG@$K~>WsAy^tWBg8uhKbT@< zyAlxL;p~F2=Y}y57G`)P9fLDR5J+YiJep*V+lnwpV+bfT0foUL(HJrsPsWlEA6`aa zw6K6c@@|JOKg0sRQH+>;K97t-2?PQ&0oIHg7KFl(NF)^69A$2f1QE#aXbztih2(@A zfArwM2&ad!czhO@gIMuM^XEqJDMldE_bIS>pWJf7Kga|MhKi!`P#81xN=om50rXEe zUPM^PyWjzI6eEPeW^nl7AQtlp%VTo++;ArMFI<1R{SN^^X`P)v#rRV$Z1$%R;rwlp zU>Y9;`BQYbTQrY>+RX^(MugEB+af`l#w*$I$o63j8lM~H#^r{5ER@Sf$_RV=mBJ7a zru$f&0IneXi$B;f9B6z7#mF2D%8j-_nwz^}z^W0+7MLw)A{mW-4|V1SumYq135s*W zfH)%Aob(S+uxkQneA@pC4xp0*xnXP?m@|t_3u2&noFF5_Cnd@D+z@UU7#L)S{o{2f zdwZ8KZXhcJyb->8yB)%5n>`*w!sC(VW|(($ot?=}oNzvkLuWWSP>eu*%vh`dGLB(^ z!P2mSNFvU{0*RyJERZCO1r3Q0AffSeY#;AyoV9`DSO1b*(1~F zD|-sXh`usRi~yq#msx+(OMkBy-n$hr8KBdDF=6jv;oLyJfELEE4Fdb_?+h{OulR@4 zBL6jeut*pz5lceSXhb{`0~QrY!qf3c3z`LvjwTQT11&5*X8&jGE%0RYr=kBh*?$n1 z&ZKdI7~nC5GWz%P`FoT7r`7nMo7n$rKJR+;eXF7VxeMRj`@>-dmh;^u@Pu4hema`L zFP{!~1_zWX3_QAHPSvymfELEd!PYJ6@{pvCyMB9&!boOJ%(3o<>l<6oG2n%aYWVg` zgLaP;Qgm|?a9Yf>-YU40Sr@}&iK;etWfTwJ^mT|Jzhj_I84zxnp&XAxah zu*0i(W4(`&8T80V?d_=sbxYQ9b9`|Rx4rn6SJP)+8!pez144xSsg$B0ACak7UMw1> zWw>}Pa?fmRAJ)iQb@%RFub9Q3_hj-$yKCB|WtXj@!>VQd<;UH+F4(@5xiyMU%mnH%dZ?=&O!hdaFaG6-5W4$JS~Q#A@A#UWD!` z(}tc_-ZK~9s#^#!MZ*U>SjV@s1J3KJA!4rc`oh02$-o~&0_(OO-RZl3L-|)G%Wmi+ zi}@QuAPtpYzz~iGkRzqtwk7-*<%5g)@lSWG%X)ak) z1u)tZGT+Xf&p24z-&Ftf=|tI4G8S8%vIOL0!_jZ%We$>CCh|-ko}vJ5WPOtOg_%+3 zgbPD2xO)+58uors`1Js*%g{1X72u6@K4@PONaJ)W-@p>Ndpi*&Hu)sg#I9x+;Avf5 zSMx9QsO7P(OFh|`!Pr2liqZU(?yBadz^cvh!u*mTH!a&`eAI%kFKZCw%#IY7J?ZKX-OWr4lD>@=egsy+5YX5i2W8jCc9&^ahs{X92oj?LrJa6V*)m44`>lxEBeM*d5h!!tCKK^>(ZuL7J-z>ap z9q|-uSkH)L7=f%q^5XcF;n#hAMf1k0`pFds^$tMR+r+OA4-bzTuOpP=m!Cr_T`$R@ zRj`olIiKgP-MZA({6bgQrj}K;Ho+|r`jrwydwC?J7|vUm3BA8K)zUlHAgZChXIQjj3;*6kC4X3qUP|!!)1e>Zo_fT!_iFbjf->8PK6nGP{EHNPV zQ09hyd2T24ZN_-cDNu9gWqtK&zty46$7IA?4qflgd{&Ku>0hnW4lcSamz+_Ual=RQWdWHwL8<6rh~wMTp`*vYT9z|mftMkn1j$$O4>F*Btp4sJQVl3c#@kc;Xfz1G>wUCJ77B;M*I&5Kt_B=cV>WdzELdr4Ym2@=gt-xX zC3C|AP0>&#VA^sNuEU#~U|qHpm<6jfgNPN|%cSr?J!^fZTEO(A1m-wjQ_iWZs)B;) zsmX~pvUCt?iF-14Mh9)U1E;o~gt*+n2G!@msg`?*S)b=hzP#6TEh&7W1txOUgnDJr zD_(}Xg{D}S0yvdsnCWMwK>k?_@Ku!=a2omy(!iaP?tLx33#VT53xJAF)odLgN%z9X zpZlmwYEVg%zewjCGrT z<<}}yfs`re%E?<)GCQRy2Q^OME*@9+o4oXS`|@N&zIKye{)3t4bY^*p#_6DGzy9+X z#+S2t>N4;>XZ6ITdcfu)S!;r#Zy5kQT;uC^>hZaz8@1aXX!tf)>g~^7p8pm8_;F)| z)zXv>Dn@7d#7J|{ibB1r<7^Z{em~}WT~ws@YEM;N)`neT~+*yLQT(U z$oFNbj>r5auN+DN^fzRm&ksCI799{`R0I_+Gq0a(7CiROk{MLL%~70r9aQmPEVtsz zhO8?X@7mt!DPzxV;(B(kfoD5p=Yo&H_lL%t{U zo*$;(*wx}Fb^nM<=r2v{gsfW2!xs}(!0kV&6nLE6c+LxCJaO@1^Vw2#VZ!RkOrv(v za_oytyCY}SZu!j1-_VapvWyEYf9#v(tknzeV2$ZO?HJq!=e`1!y$^ExvV$j$v#`~&pr@wCy)INhuBTU>1KQ?eA9wkL49WF#YPH<=X{JOhHIVz4o4Q{oxFj#1mSJ?I z!7jnSLR>NoYHw%OK08QLsk2wi8=JQ*#wO^;rpD>S`otQf=Gq8Z+oKk0hIW44&K{fh z>{n>;tkykCX%!E#XSJydS$^LoP^6;qth3qoheNGgj~<;2Jv>J|lLC7o_{<@D^MH|D zAjNvtYM&gdDPoM$3$cP-TxtvaGYz1FOj zmr>dyC?LuUBc#fCC6Iw=xs5QHK}K1k1;WvdO)FErWi5ZG!7s#IUkBUpt)1qtlEb1v z&4O;tEE(G_xA0lXBrqKx3-9Vsz9oqU)&jp7N@|+<`aSak+ajYQTJ*H!%`UeH;^xbZ zY1Uh_?nc)SWBDyWM!5oVRx(KW7GE-!Bn1{wiV#8(d$wZ+SZZ!5~wnTN{~Mvb&l3+h{n z_POe5k;%__mEsT2Gds{tP zqDGEq5}A_afQ}8rGn9Qo0g*t4SZ&` zQ@I7`@&wh>nHOhAakBRHXXo1pEwzLVri+&BoZz$_KEKy*^C4~Mx->}FIe2?n42TZE z)8?5#_tkw6^yKA}iVC%fHK?B3Rpo|@n$z_Or+9P9TNfA14fe+#L8$sQ;`ZJ~Uj0R& z6In53G`uLY!1+ov-u$#vf7VlvrDLspJpOFL@0Jjjrh{vy&$Yscx%?XiUQG&1TMput zzFnp|tkrI`6Sa8?6^qMQ09Q1qIfH;S&HfT&3m+b6zoQGp=erssuU5%5So z)NVsl@9~O}aItd{Fp?(RKz*rw+d6-Ewyo|pB3)G;@eLdRHXKN}2cMK|Y4HT^-h9?< zc`gT5yxfKKyLVJ4evF=9KBv@RsH0*ta4y!XQ=$l2Y`c{mTbMh3Pcj~>2q`$}WxF+g z^^JuBpx?+ix#)+Xekea>x=4vk2kNO`=9(pjUR0%;d>dn7cw%!Fh_cD+s4J7}j2^_V z%9_^|-bv|qt!_DZ#7rx(-L2aWu^ORT``!HFn_Dm!r{GG5(WzgY4!7#&-MMwA0O;~O z;&(sg^%c3|>FjKexjMGhvPMG64=64@bVs7T6p5KIl03^Xb#Ubfw3SBVcO`eE zE6J}>TvZaG_+FdH#K>%m0nDAvCB6j2@J)}*X*H#i)G2sOj`GNm$vZ|4U#DpaO0_yw zp@ElT+m#)Qw%4zf#t(+1E*m?OmEM#CH)f2aCr@l%DM;;QDQrZovd^=(tU~RP+Tm_@ z=|vq;ocAK<+TlF)z^=2ZuX150E~5tDU^U+;P%9Ft`k(I;h+j%`ChK*DaiUDI*bGp1 zUGfCzIWXS9Opg1U=TBuzau2X5L#Joco%ZIj)XXl4HxH(mO!_R2nU#vmY z*Wi<`+Ffa@Q0Xm%UX9ExPYCkDPi2lLYmN2oYmrp&lQ43^o3}uc^WSMjB~gkf%CJ&+ z!+a?~k4!Fi8El-IfZLvO5@%?~k~NI_znb}S+sVy0L3nO-BNSL--WM~?1?2_A-NL>%44UKfXE=sogJ*}^mpnhWG#<|5_ge&a(3T=@Tffy4@eiRNP zL}mJpV>Ms!f9i%%rr&A+Lys<+oLLhy#ja|Z-)sg$tOBQRq^Vv8I4O?)NiH@0cpg;2EH!g0)>_-sWn}uM15resB+QTN|w-FblihedF;t02`{GZ0K z@7%w;ISU3ww#NnwpMti~a7teMMUC-r%%&8VV}9GsQVW<%eVxO^>Zn z(|bi_(tRVd7)T8USbYtwOFu${l5czldsDg&J-cvJb3|SaVCH=HY-vFvjPjks5Y?&X zpqiaP$@Fql3(V0lj;0ws3~f$rnd+VL^|JH^vfqpg;8eG0uqT_jbvI;AE-jiiM5E}GAJSRgS#q;fL!r_6i z9>{$-buHn(6b2;K#RHu4A}@GlN1#oKRM{hBu5UUx8|J5>)LILqqu`rvin^A}gp17# zuiT$2TYek-QOGjv*ppYjml`nUE$@3}{K>A}E96tt!E?$>v$#SI;2Q$ChloLQjY`7W z<_p~yY!?cbAk-8&mzQdN0!TZnB5x^jij@O@9-p{Vsd&DX9lS1A3%W@eIgh`B-+XD) z{uv*@)Ku3@aT8``&ptn9GA&WgOP`Nd&g#=S#OymDt5@c!kiwSCv@QF9GwVTBW}d$; zXt#_EUNR9EG|u+8uAeQ+7*J{&t1ZbbNDoH*{vtkr0?m%@)PPXa(R~KUKi!f$oQg5;~x%{18C=2k;*q-aVxL-}+(ECV9>2<0cB5N>~0g ObK17k;kKRMq5lH#m~jXI literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/gui/gui_melter.png b/src/main/resources/assets/emeraldcraft/textures/gui/gui_melter.png new file mode 100644 index 0000000000000000000000000000000000000000..528c2900eaf07d9e80cf11ac0652378943c8a972 GIT binary patch literal 6576 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/gui/gui_mineral_table.png b/src/main/resources/assets/emeraldcraft/textures/gui/gui_mineral_table.png new file mode 100644 index 0000000000000000000000000000000000000000..2ff58d9a764d978b0a97aa2dd845061116d1f003 GIT binary patch literal 2713 zcmb_e4NwzT9$!EUI_Jl5oomaf-3y4`wVT~!H(x7}j}Rb~&|FL_oTs?iY?75EyY4O| zKr3AB*j6iZf?^TcaxLgFhv+GKh}P21l^g3+I>q*^wAFqbbG@EuWze$%xwio_+M(8Q zx|6*3_PyW#_y2tF?F+WT+<9}8=0XrO&ytsIhoBfRjDZs3Kv&vPhr`>pZ3C@Nr|awM3x^-}dcEfg%;BR@cmz3I`cU|Po8J5#^k@GsJJX=>ThOuk zMZ0hy3jKA>!lozV&vmBmxLH*V-jgJI;VPMK<|p1h4g=I2KCf7WAZ4=rj|sJ9C^+Qz1w=ArR77}5FqWrL1ss7$rA9@jtPn1; z+F%nWFtA3cMQ9bFhIIy|N{boP#G|kpQ|VAlhpKP{Q<0dK#0~J&qX60jmz%U_=S=AW zZ$^bzl6VqDgTbIOh$}h4gQ^S$1B$6pwHg5kM63u%R0s)($GQk&7?xIn~$M~6mBm%4|isikW z#ED++2dJaVw0;f?YJ}<^(?ld}jTWhe7#(M*&A8Nt!qx zCjiB=b+^u2OeUMaxmh1r5be2Hu*GcBstj5!qE@OR=31?!B_K*vfMzV&Mg@qEl4V__ zQ-|r)ltG6W2#i8B8UjNo3ezBNgF)|fs@zV-jZe#Gb99+p1=I2_Adfo+)VruuSVm3~Vd@LNP z7?PsponTbZatSal#nd!ALj>;5gGt(;mjR@AsEbLM$hoB;B`}#D5Usl@J@kj{7pd|) zTd#L9E{dWxh@K*F1g8ldqE{0Xg5fw0vf)-U8c?oxu%00CXjR{%^;7h;mkM|oaJZt1 zd-vz=>TxE2X4rZ^sXwTEtWK61`u!@5tle@1gLFowz_~6DqZbNziC#%e0E9{a7fy9z z+aLtR#aXg59iiq+gKNYlY~hyAA78h$%yYgl94`5&NmA zZg2eX?fk5iz=3tb`8;oRmF2np^S^s=qN{O_RJp5fh4yIZ#rGGdc9$>vCjHxyl8Pmp zp|wdlgD;jB-1tY&;Z0OkCVou4<-+9yHJu5sOpNtE+r2mW z!LD>}cH@fAs!#M|g}u+!UVJk3U$yW{^{p*Anq4)-aKiAyov#(|Olf?o`(V|^`k_u_ z&BM*7j(nNX(J@Qgn4lkMpY`ZRj@ZBar^Mb_U4M3W?_ph-jy>95ZTYaFH+2+!Vohva zYuC`BOZ(m~Yse7n8@dF=!mm2cB%a&5;Ai%&?e8Y?ryf&&dg15Ifi1s5V$wH#`4K(a zb2amf!!xI2WyzV88{V?o*tOSp@7sLo=>tv0NyYbHJyavJe%JYa&+30ZV73j%WwpJY zF*xp5FYXZUzfvCzq&bEsp5hxeAb)7p{OabloR%*JKhODFf86Gjwm+_@wT)i7vedHO zr!E>YzdGi&4JVW?nSF-;?Vd*EP3-sc->Vu*R$B9y!`cL&n_71 zKe6W!c0BjO#IRGptLE!dyUm05ZQob**pU_faAsX?-L<-}UN5K{X*a$*5R5%$X2)P( z@ac=`Cnq%KQ?1^u*N#%stGyNMa9Z0+{DHoAF28s4o8#+7PnNd6e6~A%LBhz!6PAHx zf6_f)(tL99=+(-zr@uAl-snlZc&%=4KYx5+(~Y_Mv9pEt-G6_1{Jgd|_w@dzw6}Vw z$}3fei?$Y3#XH_u`!$rG9McxJeEY1O^IM2S8(H%~Ln^dy&~&=VGhsWlVH@7!?%Fs$ zvZH70`qGTp{CHc^oaKu%*pwCtYTHrsLCnsa?@c26(Z RPUgyV7IR^CXV&^>{tt^C%98*9 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/gui/gui_vanilla.png b/src/main/resources/assets/emeraldcraft/textures/gui/gui_vanilla.png new file mode 100644 index 0000000000000000000000000000000000000000..c2541136b22e32e5b6081b13ae8b1f90e873d7e1 GIT binary patch literal 9709 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 HYv}kBT76XE literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/banner_pattern.png b/src/main/resources/assets/emeraldcraft/textures/item/banner_pattern.png new file mode 100644 index 0000000000000000000000000000000000000000..1702e29e44828d1260792f09198800acc7d127dc GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDU1=7)`%BglbEoFhzx^p%y zYq@o4&+FH(E6#4`1IjU$1o;IsI6S+N2IPc#x;Tb#$g&exaM#wh#~qjr z0h8$;AQ^KgS(G_-$r6!?QHep+iOCXFW^|5e0){PQ#(;Ct#bn8Rd)!@^&aX9T`}Tc* z@9%k@-}^jIpKEHU&&w^$MGz#<>v1>3cfN7owh2B*G=_?T6We9=kv_!* z!lI{31ub0-e!i=nX9TRO60JzEkRS?l4oyTOlEx;SSdy28V`G}Y&?H1}cVab$LA2G^ zgt}xEpjML&=P3(~+8GmNBN^KAAWD;zognQ5WyVR0C2g#kK~on7t*JtgZFWDLvIW1K zSXkE;mLTHsxG8Qn$!dt87=|H8nxJVMB5R$T8iC zK~L90h$;&Oqp&U&aJsDe zWjT^QsHU{bsLN#>j04@iOOymTu9dCZ1KgYroES|)xk)QdQ+~?AS{RnHm6HyZB-fxm zSrCJre}!6E(!x^Ibx@c!0;hBT3Kn=aD63Hp#wt``t1hGqNDPU-+N<8&wfjAs4x69-}sm^kF@s1`oC~ zRXr`>$0ePEX7IHTdc9Q+@d9SLV7G(Kqq=LHFQSqd$+14BfkN zkFW5TxrUQVm3ya_&(HN_UwK)ZUfs8>4BUs!29CTmSKV3?IPqf9>|3FkmF` zrt0^;i*3MqpB+6|TQ>9Y7w_J&-*wl;{;3^zcTQ~){Xi}+f23^d*4EygWpv@^J>RGm zm7CAlKV2>x9ys;-khJv1Zyy~mxCalSuNFVCyZ1`y{i?i`p0TNd$*kO^w%-RECRVcM z`}|~9b$DWNGCmSJmqQ*MKezwFaMkLu7xEXJ%Uab>*(I^&uV?Ki>&Zi_);!zM@$o~K zF6_<;FW5p30|> t42$YP?c!@^`-p|5QwzUtFS_<&|Mab~;XRX&7Y`V}8E;*Kd#tvt_YXa}QosNJ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/diamond_nugget.png b/src/main/resources/assets/emeraldcraft/textures/item/diamond_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..87d2b492e22480e2870e9e08a20eb1e62b7c5811 GIT binary patch literal 1800 zcmbVNU1%Id9A6t+Y)c@}m*Pv-En>y)&g|~p-rcrmNbh2Ev>QWm&}eOYb2GDdYi@Ve z-A(Q;pvL-CwSx6UY+j{^Qd7hii}XWL5T#GrCqandi=s3Ld9XQW?~7E@7&@>!vopW{ z@BcafJwG{dY;ezGdjvrkER5%;_&gLpkM82{;nf!6({6wK`A`t{?u(yCgb$YX3&PId zo#IS1W1TQDa}`8bnJNv}=V(DVGScu7o~4mkrWMD_N`GFvE{P7wN+**RwEP^cI^zog zonDwI;)Pk9A=1b*;*o~Q30xW>vEkOd&}?L-Hm}Lo@ivgeHYA$ON~5ttamJbyb1a}@ zQZZz#CNwdXQB(tFw8SA%gK7%E6i{^;swOl{JtKC9#I*&)HmCB>c6ITutW=F6-vppu zuPb$3VL=6`nM?*i4QQIo5pvk{BGiz*@Ia3tPeU9ye&jGuj2Tgx%|%&>TiS8K_4~A5 z*bNg87-%3Ls0xf-Y6A)Gck1pf&1JFA6zU?PL8ai&$7?51{TJ-=~0w*0TCK zHnqid`zpd{Y@WN(4albGu-Nn|n4%$@3osp<=Vl&=z46UlKvBekB4f2)q9%JLi@98! zn6!BCq~j4*51-l~L-Q!2SxJLD+%PFaqp0d;Qa54dX_z)4>_9C>9J{$GG-c}WJ}9pm zf+F<4V1iAX1uo(~J1(kF;CmHG>_^hfu^J1wVs4$jalequO$N+%YWyIaI(AenjO7e9 zV;HigsBLpC%Pe?dggi_O`K-j_qc{#RZ6g5_&`8K>8xmRLYq@MEY#FD@21;Sowl%FM zpJ#Y3u7aLC;qo|<)^v?x*}!QcL(JvVDox1=T~8+sn;OZo-IISVaQH1mwTI@3?`B*+ z=C~8`#5TLPXPUm;UDX`1T`?xY@lD7|I4%K7r0%w}Nd&g%L5H?prJQt&y6C_{W=C}t z(9sHy)^`u=z{ z?tZquY7|=)LP&{_uU``OD(^M<<|UHUt8e`U50y)6tq-pbe!P3;H2mS>h1dDG`Oc~L zN7oJ?J_8^p9UcgOqwDoA@2$V~$4bk;F@5&$;Y%+pomu{6s8qd(N<-Jy-+a9I_VDEa z|C=2rR!4ri-FRj3$DL=Nv?{-%(%S8JPkn!bkLA1f_ATv#<>TKiA6)t9({smPb!uN- dnNI*H2+bX*zg@U|=kxeqRT!JdUpZPj_b+|TPlNyf literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/emerald_chest.png b/src/main/resources/assets/emeraldcraft/textures/item/emerald_chest.png new file mode 100644 index 0000000000000000000000000000000000000000..4b0cbc570567232d873b70440f2710baf591a67b GIT binary patch literal 1553 zcmbVMO^Do798Ybu}(nAywz$AyC}HqAAb+Z8rzzii%Tfqjq8KKKRQ{O#(@ zd(UofZ-4O0TR*Y8nY6jm;{F(a-+bCu+1dS3?Oeif56tFc5BJ8_9LL>z)N8M%tIjgS zG!T(XJ474?5kqs_snf#<;Wd(i4(WNJ$=~|$IuAV8AKvJ+XP@6|S9(%M*Q4j{aA4@zKLDDsoU(5}HRi^H=0Y6_gE8 z(Pcx`P6Aa{%931`l#(DTP}X6|0F#er)?&8{n|5_#i|tIlpQaI%q%6zCtR&L7Cn<(u zNU|!as=yFJvL2>rD1^zesRo-QIQF8{qanyOq7EITCeJ(_hY&=C+Ax{W#0ZmyD3TOW z&O;gjU0mRzLF|u=yI3MV2}qbG4678_s83Ux^y%NIF0St|z^HYc!p5$?1VLdUNh=pv z7!yKvMJMg`h)7M6&_RqzU!Pv-Jt3`)XH~2S=P8HMgIzRG3?Sf zKrCi2Ks_QwVUGs|lhC3*jhW%xyPfBC%WA~5>-p>=X)c`s^@^n{hOP^$sEpio99R#N z6or`7ZIfsGh@R&{gAh#0x*_Nq1M6K)7L3jU5e!t;x`eo8MRlk0HpPQH3#Rh!|CE0+ z_E;4n|E~4qwV9_6ta%B0*!4;Ew8;6%%J;x1V<5tLC73+UQ-H7t#>d`WGccCV`h+R{ zhrAfW6535O6qCgsW9z@9p2Yl@^0FO=BK|MI`0>W3LuYA~gs&?tukFFoSN6%(IyII=$Zr^j4 zK}UM}WcAP|=eAB%yRW`>S6fKN>4Okn68~_mSBA3_|ZolWZb!Q_-A(M z&+n(cJ-@xZ{qd{iD(p@1dbJ_k9X&U%H+5KhEH0l-1>w-q?0rc1&lbC!$5>JN{l45U$Smn7 znq^svsw=uK0YXYQB2ETUl+H{TiZu0-Am#y!P{v4FY@OR8csdFpjC0y39m@oQDFYHK znyh9a4S~Lwbxe-&PPE)p?c(il@+?>gxiLsMV!dcQ}tT(x++Qen#IN8N4pxHA)M}oQZ|n!vO{^8}fkM{!gp>aS`yOty zBqR`X5Rwj6;;18{TuJP(9!tP*=H1@)isRH0)((2Gk=9q1QKjUVnq``jE^9+~T^CoP zl#|G#m7*sb~|&inUy z{&W&R6_VZq^JKM|r4KF#DO~KvxOy7&wehSMpkc;f;$@X!i(Zxj)ECFg!2>HWqV0Dn zkp4?vj9@8i^FB%FQU}!fKdGmH|4LT2qfnH;M>*WvQ{odi^o?wqH!S$cTON&|&n3{% zwr-`jp&6d86qlOQmoNWhJ%07Y!^=0`S-Em|Yv#Si>e*kv`+NtT*m+~C^}*M*71R2~ zd;i+)NcI0X{@a1Z?pxP)BLQDBkd)RJ!7`YO(0{x9NAUZNyYw;X_pJxPX*J+3`z zl0^c9)C20J0#*D7Rop9a;RGBiA;f`0TMq4^s>A^aj&NBa=wTV>$J(L=N-fzlp84i` z?|t*$d#}EBYX9D)y@DX@cdF$EAD>L$+yeg|lb&euVXst6E7>ONy44R1K;I%$s2Lh}>H2cVMIZ;>;HRv&0@_5mc1na3~M+GL5^6 zW}2p=>WZ#Q93ds+kfD(jCP(KCWt@01i5Q_FNEuO^4wxl!Pp2USQAQgkGnu$x$_Pb@ zCaY;k6QJ*9xM&dfC&qnG!F?RykR=?eW!R`k8BKchAE>kKdkk=CT{p9_t1m&2nMhdW z91mkA$gb$5HIA^-zzH4190#Aw{2v_HS7`rKt;+v&wDgJY*j=+j|x ze8(AFMhsh`u5!86yrdUestL6M)U{{TWvHrCs7rm)8Se(wi%>1x1LaxcBZmGH?0c|7 z;{frPNr1XoiNdZ3G9{r+`!wc;Q}1@JJGNbqX@~UrM$$NS5;zsx&`iUSbXl9Y>$=bh z6NW+$J7r7c`pAU%P|y3zdDSRNZC~q1CB0CP+8xuE+Njtzuz}hJD$dWBsW(WoV1C~J zpXXnW39mxbe_)=pHq-QhRg&>gbD`SOJ;X^V9#Yvs>R HzW(lCdm7}F literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/emerald_legs.png b/src/main/resources/assets/emeraldcraft/textures/item/emerald_legs.png new file mode 100644 index 0000000000000000000000000000000000000000..8ce060e04746dd8f73fb19113165d2ab40072d91 GIT binary patch literal 1537 zcmbVM-;3Nt98dk#^K7kH?470HkP}+bB$I5KZHDf(*JQn0XwG#v(Cb@gGqbztZ89;L z>+ar@2qHcR_o5GC`ydp2sUW_!)IKOwiim>#1>&=ao+3hZvOmIA&R-2AGnx6!=llJB z=KKA=Szle=KYMsqlBE5$6}KVAC-QgZLGeAN9B7JRzJAuPit(YN2hCr%_BvqSS8V3v zi(9{6-`?JSV{r4L*qh;v)u!~v`1$sZZ-})=la=$CBt3R8fA>i5zBeyP4<8BrHNNJZ zMFERcOjwJmgD4SbNjiCIkluKK~| zdSDaz)FL=JK!PBm9D_mBi!(H+$Rl1P=J~QFgAs(USLCJKAXxM2z+ou`$5l%SbkhK3 zTh%RS8|DkZfO=VjWlb+BP)E>0B^yj0Sy)R+8#UY)C$_|2MecH*AWiG{`)a?Wvb3Y= zwry+B&B^zmPWSj&V?a_$FJQG;Gz$RVBS=MELLtSj&V?apjd4-K#eTkyNM8>O^ zL>Lo6c136YFriw5W^5x3X!VkCb0Lo=K~73BXQ|IvZ+cPnsms7|@{2hEj-3l*!ur{B zJI+uSb6SxNDCCAE#V~znBi%%X{yaQ^ARI$IM#A=RH>hDDcrR3B4Z$4$E0_eR&C&>q zn8OHnsFuVX85Bw)hxJ%04CmhMT(3D!J!S2%CpNOi@)=O8I+ku*mSU*-$X(AvwK(HA z4rtA-$U+}A3<xE#HF$f2FB~;`fPXS8g$#Qt#3XEy{T`EZb zAuqEpm6gG;Apln4D;;#Zaasg3M|E|~B9b%SrH#95Q5N%iLMjX0hdv@2#+T+?z z*4Yct9-tyz00~4RIPoVWB2}t5K#9^KE*v-%goK1pIl+abssuz#*`1p88RnMTlp zX4kz|wHDOMPeFs&JTi%n`OtPLnqkKCp^J<;8~`0REk|S5KUrmgWoqovOj#_u1>CZx zx*k5#ovs?)IU{GX`NzO`2q}S$0|Y|5?f5X%*d8yW^LSZcK@SqlY3xL75Y);upg=qf zGQ7$ek|Kk#951P2PF4;AS(L^EaZHfXoG3w2h3Om^JS?^5nGIMeJ~6OG|1`E01TGYW zPN&0n(me5+f|SeU1W^`bnWG5KUvvT#a*n@$$WX+-;aP5A5eLMKNGJ1w#!^rFA=qw0 z>-Ynis9-{fTtVW+IHVrXG!mRU@3nizO+&zKY-15$#tOT`W|vPv$)XPcBe5_s7w=u;5`75U)x|dw5YZLzh9J z5MN9dJbcu0Ow#cWY&(OCD8L#ki&Sng!-;BDQlONDvhs+Sg`(JpmWgRK7I%Wm3e4oL zfzqroQGosxY#OjZJR8xNEgLnl;5tnfBuc^pX%mkcrrxEuua^pi8ILrqHr?g3s>;c{)N{97h9$=jkYnIdQDdn-yk(itRI?eB&gdN0Gnh-uiq0WJ);V3*Gm3~z zV@y(p=ZnOckF#KS-u$2EpY|+Tg{XbqJaKKt=>w-MpI+?Zpn8trO8O6Z(TDk@5pWjH3L=gU_8}zdw1NxwCy@X=y1H zKWFYqZ7|*Olh5Ba7j8w-zL5*cO8DvJ=)GrGuD<@+8=J?ze(6$PJzF~mPOokJka_2= zwI{!O<_JLiY@J$|}n*6a1rE6w`mtoKV4t)@~dA4}qol@~Op#EiWC+5wee Yj-6Sk-TzQ@F>dFj$?4)phw3N(1RI_V>i_@% literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/gold_concentrate.png b/src/main/resources/assets/emeraldcraft/textures/item/gold_concentrate.png new file mode 100644 index 0000000000000000000000000000000000000000..2b2ceca6e9c8ad0909c9dbf8f481dd9ea729b013 GIT binary patch literal 1699 zcmbVNYitx%6rO6(+6sk;TBPDQ#YhYD+}F&61ZX&Z<{6D5@p5~|f`Ya;|ne^ewP(ZR_&Y121H}@&USZG6kkj-Gk5O& z?sv}l?m1_kZEe}IxZ<7)48s1;MjWj&N(C1_R<1e)P!jw2C*w0m?1J!=YUDG6yt`J2P$$2XQr)G-nb&uFaxUMgnRx)8bjTsb1L6GaB?P!k)={9H^X-kHU8RTZI8;vPS76guAMGYfW zJgC;9%eW-D2gBoQI#pdUvUc5qJun0u7$i6b$<6pkj*YTj(d!pkel5d`3^Nan7>XM2 z`76|i5Tcj428yyq0S@?Aup*0b!_okXS=B%S(x#pu@RE|EWTXrW8AjfD7S4wysns&# zY6>mbZCf_s;YP{N3VuJyQEcAbNJI?lwgYq-hC@LD=|iciBC-L2k8%Du359@6GBGbC z1v#LQG2Y|neJt|)sZ8ixJ=|AMfJj^!YP8L|OA%WETFR4c(|7o{u z=R=|Y9A$oOL5UaPsBgH#Qo}+YrIrVE)aNYJ(B6Fa%L^D*MutNTQNI89;0F)i+^~G_ z#Ii+w4>bW$``Bw$OV^D}uWcUA?3kRII(3@s@89{>E0r6bEU#;ZU_7>Zd-?9?2b2d_ z{;+M-voGB_ynGeUc%}t=Zr_Rri0M6h$Inb2ym!qTvj>+P`{}dS+h)e!YsU^-%RVxs zr?ab^a$9_3-?xowUL9%)58-677^U2GHJV(Ag zP}4a1)T6^kC9!^}>NGf3Hu>EN73_ZzZ^6$uXe%#wAOCG)?8t|`Cx6Y2uU;}G(x2|B zUom}(o_cO@)#&KURrMV+eZkDveBDrVs_$0u%%$qu6V+;VVEBuX?m^aKXCUO8aRq@L;PxNBFg<;vW|#Y*azqr_LA-|7B>uyA8b=TfIA%k literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/iron_concentrate.png b/src/main/resources/assets/emeraldcraft/textures/item/iron_concentrate.png new file mode 100644 index 0000000000000000000000000000000000000000..8282be6f922e62875eb18b16f3c1cc4529babe35 GIT binary patch literal 1738 zcmbVNYfKzf6dr6!k(NfJP;3#0sl^iAdF^}bw1wRj7P`2htI(t>!^~Y6*_k`e4BdsM zrZsJqkdi3IM=RFGKN>5hrX;5PpeO~?n5Z!(KEMZHtud9R7+arsXW89QgRf39Gk5O& z?sv}l?m1_=!}Zm9x$AN<49g4F_#4psChN}0M$g;k<^}Y+QLEW$VA#q6>(0WCyikl` z%S+@)li3v7&WTVV1qrqQGNEV)jbWR&CNx282PWPET4j|dW`~9eT$XsE(HWvcnh&(e zHC;N`(N!N2yV^ysL~PxHZ%%NCKmn$JCzP0Ka0#AB@^WZwO;ZG(gqZC-QE3^(n?hmS z2X%luNtaDz94zkkl8lS?vW~lOmS)@(?WP#Jjb=F7#o4`h>LQReU5auI{(Dlk&=*g% znWn~3R6HIh<8~72trX++dMTQvSk{IRHltHDg@jEtHl!K+zz}s=Gi9ja7NgJtJ4~KH zo-Tx-Xc=17NXdi*qY{EfF(hq;lmtp*2B&rCv7~WHq(BTPKs617WinW;4VutsgMUMv zS-!>qk~S2|*jUmRMah^j%)o9GMoN$+(MF_G15^VrV23V(z;5K`1}hqk^XWh^p&o%S zmOiL(+GX75vku0CZ)%iP3C4|zMSFl>Fab}nG?JTk+E^ySI5-E*IXrjL9*(9Lpdl#9 z(axoyP8a8NUjs#1BMGMPuV6{!qEJ@^6tk=dt$@c}wi&c1j)=<|hj z7?opa!Dy(i!h->yi}AW#HkM?P?uJ5KP&G_J6+zI?6G$IYmL<;PL8-;kUYpnHirO4@ zN7UBBvb2p6fymk=!R=s$^nO1SJFF~7@0b4P{(E&9RiO~OZXT;Pt@Pn)WCI;+XR3O3 zfJaiJn2aYgh7&}q5_m$iQUFLqYFfT-1r})IZ2*z}LtZSv3>Y=zf(|NMky`&H^(f>& zWtHthDAZr0Os*{|@iZLu4QrTbSm-0u@_>r^oQ@jW-5t<}VOf!&zcS)Ee75go-8)$*a^v4L%GlBbprK6vok&NJJVWv{#WyW6*%E=SLS z)#tt{KSSBW-`|&*?z`~0@5hT}L;+)#7EU}=dg%Rq)A05BUtJR~-v2>taPQ#2&lQ)k zk%`})f|Id9!BaGFOeyXy#D70|@V(32PjOeXrzp~2W)IW^ra$5LjMu$9c0;ys6+6)M z@hwGbqx0p7uD9~N)#uBFvQ-a{SD(dPR;@K<;|JyR7i= w<5SD9={LfUp8Isy{+ZXN%8rrd{2%Lwu@CtZjkQhHz1H6*7^wFTR5d^LCs+VWGynhq literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/jade_apple.png b/src/main/resources/assets/emeraldcraft/textures/item/jade_apple.png new file mode 100644 index 0000000000000000000000000000000000000000..e8b750232545c692008492c193df0c2056ce5d15 GIT binary patch literal 1749 zcmbVNeQXnD81JTTZey|mnz>9pj?9e6^*-8l?QIpecF+>K)lzLiVO;Otu9x-hz1`i` zZZj|)1O}NOg9SuJj1CAHAqWwP`(tV}_yPVk7BD7i7Eogr27X|I3BK30%`o$eOYZKy z_x-)U=Xrkb^E}t@Z(3bkSYBu{nTow0cL2RhjQjpP^nC2++Z=ioD4zA2$yBu1xN}Sg z4wjir_f?3&upaiUWqBx>IRQq1IVmX!Z8FuZOe!4T26QX}T1DB3UmF|8F;Q^hp=uxH zQ(Pb>db(AxuDdD7cen8l0bltfR+nTEfdq68OG5ZKzjI<#0qP1X`0>}W+V28?s#!lqsG9wy=b*X^U zp&EoRo;fIg#%0XqG7iR$RfR-ZfC+8+oISwJ>A;CI6q1{=5{xa#Ff2Md#{L9lXDMnH z>Vtw9?V1;AWohdjP?R+Sr*r=b7I-!aRf$6}ixSrgNJVbNv8}3?uI>bLYJ- zmtTcZF^(3r!0HCf+vu{<4x5c&%yi0KpO5v*n$F2Q@VcEi(#I@{0&8KaDVu|e64kuJ zLU2*5gNQ^UG{IBW2xo}^yTx9U+3$vYhmi%D{lfp;->izL3c2`Q^BA>hqz~&6HFU6D z>FQYr+S8-Bh@~=y<#?kKoH%c!01)u>w0PGF%+e-e0FnMfUd+NY7}XP;3hG;tTK^^W zNaR0hl@_hW0-AN=p)r1we54`nZZ(iEbNX%fw%g%nYqvLWFz~Bm@6)wM&tHnXWBT?7|BmjK z&-B4>Zfz;SD$K9{;-2mab>|(~*4@%?KGbyM;3gu6026`|;farXHuQb)^3qjI)9_dMCwJK%o(e7MRnC?Nsl=XKI9a)W%=^N=>AjmD zf3C4->e2HXS4@r{pvvCWKA(s_I9*JQ#-=X3AAY6q+@;-1`c93`NSCW7o&up#c;)Cr z$0q%Q;)}2dBrbYxweJ`i+cYx#M!2o2f9rb-JxAm~bIu^GkmMwhK@k literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/lapis_chest.png b/src/main/resources/assets/emeraldcraft/textures/item/lapis_chest.png new file mode 100644 index 0000000000000000000000000000000000000000..a4cd2fefda64e22d85f7e6c3824a40fd82187dd6 GIT binary patch literal 1761 zcmbVNU5MO798axaa{UwrUIIJkRJ5Gp#^FRps6M+1|Y%>4ep z|L6R3t-iD{edNRuK@g^^m12X>$FebXkiSn$N1J?_sV}xld^SJWo|=8}&=b#2hhM#Y z=l8?S8#_BY&!m7K2~$a9sVV$De17=4rSZMPVdY{h2#+1l#sT5|%^5*BwB@yyljYhX zBFvYu!&a!=_rr`rID4)iVzNpTutM8jP!P92yCnk8DTo(xHCPL6+VLtI5p8ZPwaCUQ zu^jQ-3*c-YaRQ$v81(&a5TkxU9PlE(&bAd13?RvBL7dMNg5_Er*es$TCz}#c4Gqj$ zvT8z0GtK}Fs&fjQQ&e4oDuO1`EiigSt}Sw0)F_rmy7*T?>?BEu6eUelIn`wrwH4K} zECp(crb!$j#p^+W`%(~}8Z#7WOd>B#JQjeA5wEabQV_YNLl^vTLL0=RF!6vXeH<#P z3^SJoK!;3lVK3?qlsiPBUFy>yi8)rCV8aeeSlnUvp`IMyqkxCDR-5S9(-z;KsECu& z8h2w9kUi0HYdxe&gT|~E5n5W~W}eEt36UL9oUo|HSa+PL`q*S(+gW1r;PeGAa9A48 z?vkNJoX~=(K^|_XOPbMw7Sed)^ygq6K{$lgnB%$YyP-J=nl05pIRhESJy2dX4o>j@ zf*pcf7WtU_?D@D&l`v?FU=m4Wvo4Fc;>^0;`&HYnN6huQ{2*>DoCnpCZK{@ON}8+= z%&pZ>HHZ@&5Lzu3L>?d6^BiQVDl|-!NEX&D$;=t5l!v-55z8_)s_L%hlCgY|kzQ5> zV|j-U$x|60FisXnCjqu`Pb4%(DAS4GVHQL;8POpWsItPRd~wX89m_rYvA zX~6tr(!y!LsUzN?Kfdhz#+y5-7Ux?t@4fl${NrE1Df>?Q>h|lHd>Ve&Ma`EhSO5I{ z)`>^V^!PVh`sPoMzIF|)D6gC;AN%s+=4{!0=iS@apZxjC^{0C$7n+xsKUq9__tMSs r%>zH4eEyf>?eg~||55ta-9HYJH=dGzee1)m>}OIfEfsH^fAz{gYTGTW literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/lapis_feet.png b/src/main/resources/assets/emeraldcraft/textures/item/lapis_feet.png new file mode 100644 index 0000000000000000000000000000000000000000..af0f83afadc58a6b4714097d0effe04b8b87491f GIT binary patch literal 1741 zcmbVNO>7%Q6kb4;(w6WedI&wOHUd)7_0Ily?H$#miER?2Zfa~xO>c~6$M!1Ton?0t zI}r#P2_X(pfz%5>5(gws6vP36H~`{AFDOV{I3RJa)Lf8qiOO65DWz!}b*1&p&V2K| z_rCY$`Mv7O()5YbCnQOlt}K^oFg}&OQ;)&#ocd%PhMDSxMj6Iq&ptnO=Dhvct?B5u zt2_T5uV3HY-A%;yqp&w6YAbc=_VD@hM#F%$_`Wd|eb2@N^hL5KU;qWF!*^ru9jr z=^2!UGyr;Zf{WJU?!dT5HP&ST3q=B0eS(cTT=1mB??FA;zQX`W>$(#ghx!r(6BCIj zZ$KC$K@LSHjm?N@HJ0%8n6mN)xH+3f6X9aah~RO9^X@oN)v?QRv6v<%FV9`_Lyz~8 zGY8JF5)rJR7zpG>rfOIX<6UHv?y#V@>y=`$8uOOlg^i@Pv?y1~MO$}lTQxHJ zz+KnHl`s(`q^wdZD4qqeU>J?R6NC-lr~xu!OfnkHl=D4Qd^w z^t5~VpOB6Fdw;b2-R=FMrTUQGkHn=N61EvMS4~Od(b6_FOpW&ctPS=Kw5%~4`d~Vp zG+_9cv~U&zbqo#qm+!v%0-F29N@<}nbM4yi&J#bMe|&N0-K8IHUzvTszIyqu??2y@ z&+ff>rFr$6>XPmJK|lEQ?+|&rFZ^??zW?@({pg+Ahug1wJ@*mb`SR4O?!3GI)+Z-V Y&p!R!x2-q!(m#$$d8KrH@wM&$01bgD8~^|S literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/lapis_head.png b/src/main/resources/assets/emeraldcraft/textures/item/lapis_head.png new file mode 100644 index 0000000000000000000000000000000000000000..3538713d622b83c638be8ca71d2314da984b7d99 GIT binary patch literal 1735 zcmbVNO^Do798Xzo8-+**hyYY zGCMOXSP?u(4}wzsz!r}}q4(lJ5E1M_+e1Bw;6c!f(7p6fJ*@xCN7(ANE)7ZE%X`27 z@BjJ!dB47XcHzj<5r$zFtXic3<5Sr)KL_uV{F6->7VB$H6~@PootR%ftzN#f5Pg5R zdF_K+cXxJnEM?<5?9Hc*^(M1Bxo+QZWLP^K)y^jj^Y}B_bBOuu^F`qJ(|0z~4SP*@ zX&_*awumqcB0w|D%Bf+5-A$6REz@etsi9R&AF|Q8uY+2;kF(lnIxYbM{yJ6Q^lg5NC3M%hPip-WY zK~j+>D=)G#l1d^fiBf?_l8#ipps~}718uR_)*F?Vr@G+F;JRrV>7qCo41_^Jpm9f( zG))tcEXpzu2tFBwDIW4+a(u>6A&DFNQR>r>%@}cu_EUocOD8S_QBE5s(=b86#37DE zNkExPW1#2exTqiZ#>zccBs~(4Fiij}<=Ci8Q<`+?1E}-u`xHQEZ9CVouPs54t4Px7 z7Pv7D$iC>r8AU{Fkc9SQmsGdF%;T9ik#5EWr!;mb?adNZpP9^>W|o*Td-9wgdUTL1 z?~x%DoDzeR5ri8Rcv*3frpu7H!V9RZBQ$~9)brb;z0e|$R7XGwb%QTc%l$Y1{9?M$$NYhPA4uDru_9%YrmE z*S2*lOi~=W#Htt^#7FRbPuB`6CZ6i?a-oHJQc}u1_KJx2S`t=Nf)x#wXYv*5_OmLO z$$KD=Nl_`gg%VFBMdIbQqVc%wsXUfcRgp9qxmcOWzY_a!3UTj|d9t&am5*NY6G-f6 zdU~4V&FQS?v*U`4^`rKfzlMxBg)H`>*x;mg*x~KMk(i#bJj)a}~MFA2Dk~lhla+&f0iyPs^IYp$}%$ zyaB^U-oi-;)G;*Z3twJ-9-6ylRaTwFOP7AMp7`eU(YafH{QAr8w>N({@x?s(=+%!` zc0PIM(6g_h=Gw*gK0UvD_4Vt2J>6fjN^jje_VZ7Fe|W)vuD1K#8asOXw<~jkeRS#f TD;KY3zYMFoUb%MWjd%Y6G!!Ko literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/lapis_legs.png b/src/main/resources/assets/emeraldcraft/textures/item/lapis_legs.png new file mode 100644 index 0000000000000000000000000000000000000000..7e6e2961d1bb2140afc976ef6bc03d96fe18024b GIT binary patch literal 1745 zcmbVN--{bn6pl!BTU{#^yW1)_%!;^Cou|6nNOA!kC7l>~{SFD0B)ie1qY;{|g4w<<#_kQ;~ z=X~eflXq(?OVbCA9>`=e)0O2?9mc1Vd+Jem9+M6>V3@6)amz67JMxmbb$jag!gTok z{>GK}Z~d{oy{$brpM$k2USDZs{vKUF-EcLS+aE5Ui!+%go=NUUG9Q033mm_C?kZoc zp0P3Wvxu-J&G!8e(3#B1Q~eO(HOhr1ZF@mcynXd+QSeAnJe#X3)zG0GZ+SDKjm;Go zZ?0jBh^OX-lYJWqe9Do~_q#!C_lx3?*M|3GS{8*Ngs&CF#l)bnTCE8Vi>Q#xni5tG zO~_kW)l@9aI3Z|?nwOQltm=}Y+KOrGmN33VuojV)T`#>lwgq2BvBP<2%W|*R%l7mv zi`uekS(dD5vZhIZkm5nWQC|w;xd}sw#yIjq?y*2f7*Uh0^P&izjzaLmls1URGJ#-n zABD1-Rg#c~K!Q_TxE^(f#tD{bm-;l|F<{jc8+I6HafjW9I$gfU07zS{rZ#r<#rIPa zF)wdG7-KrF$Lk+SuY^0 z7a!lThn5hhMNv~gZbg?g!&NL>gT(2tCWId1A1Y^s{BPyu{(~vaXppr#fNNN^{fpd9PY2wyoe~IDs zqzWec3G7!1)^tlTKqu6aw5Fj-$jUdRf{ApJ&uc`_r}kfqJUE4@`_Mee*-XmEUiM;0 z>|lI)8uX3vTh|kY6=NfuoP?r?lMs9*znW^W{t)X;_5IWy<` z|Nr~H|3Ck{J~_U3Yk#btVVJG?oIXYG_eWP>Fa009`46PGd%fIq0mEz_h^|e{dkYUU zOwSFgI1|nko>fia@DLFL^L59gXolH6Qum-ai$h@GvgKyk-_L)>0t;o?{i%Xj@HAYp za`QgkH$Pr9=Vwg?u_I4{-F1~ZaBv7g-Lc(3t!LS$UzM(-*8&TgkZ?B3jz$5&Okome z#K$1T%bY1C;~=f@k}N9mW1c?`;l$t=G-u0!Wh{7ZnFU=XRgKuhr-3QE#LD-1O`G&d$+GE2Ftv9N z$d75Vq{uQC=cOjyLP5>DK?q$F=k+X0_2DfGsmPEeNE@F+FiJL^OmR@eDGtk6PMc87 zq)JN1UMFTX>Vl3vqV|en$O#dpxCBB5moSnUE`tn_GYllkN+OlcNT_2!;al_+Li?`$ zL}xQDh-5wO6(UnjND;Gdc-b){I&JQwFWq)*1?IEQ6MPt%9l3JM={h z7LZa{gFYTDQ?)kIdcu1A12}hQ_8Y6;`s`P=>RqyLi)&V(TgG&_3T%{*5RIW$X@vh) zt+}^iWOd+l4o1uF0HzP!5sqEz+NT3r{N`9R-Y?|!(PHMr&u=aEA3eDJ`1?Zag3z~< zJmm%9bv_oGu7uS;dS5vI%JH)we!_hWUj3-|!1d&7M@D*n0ZW&T+`PRbv*S^A%T;t` z=_Tg$Z!b%|mnUNHEZ#_;xpn!|@5&4GEZ@V}>_)IZ35q+ofW8?bSJqM5e3(cHGUjP6A literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/melted_copper_bucket.png b/src/main/resources/assets/emeraldcraft/textures/item/melted_copper_bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..5c271cd3e08a6a5e496967bf872bcb47a7ccad88 GIT binary patch literal 2098 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 Ues@#WSNh+_U0LfIt!U}_6F#j?vj6}9 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/melted_gold_bucket.png b/src/main/resources/assets/emeraldcraft/textures/item/melted_gold_bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..b9279c9b226b071ea58c0bea1d8e4ef34d3b743d GIT binary patch literal 1963 zcmbVNeN5bB81D@R$~MI?4Uid|VvLOS`f;CaIQh6kKH?#RQy6iRUi;o%$6Z_6!X3m3 zGh~6q!3@eDWJ`#XIcJ7q;xwY!G6BP~ILu7Ym}$1f@CRly+su+_hHsC%3m7)ZnzViU zzQ6Z*e$VfD-lzR_wUt}4^0N>G*-~BQsfX`u<9;LqKA*X@#KG62O4Tk6K{n+Ww+R_J zl8Yc4{}6pmdXx7hmX{-DPLTb;9E&IrjUdG(F@@t>fsXn?P?TKQjma|@Dhe*F(dH$+ ziW`K)sxB2Ybk+L!u2!BAu#y+h;us4JM1anru}E0b*q958+hyU{m?khZ4$)g(SefAv zZSvNkZdnDW&1}bc%1WaS#!T5shPLiNX_9gfq=TR=I7zXjowYD%;=-UeRS2;4o);6o z;Fk*v>AJ!aL^K*TM=fSq4H6W?Fa${xG>t<9u60T}7sDm3AZft^G+q@IU6du%u*mu4 zcHMpFcN~SiPn6b3Lxr%Cbz3RsOW$+3yf$K)~y0g zmsOuEhm(n_OHxMNZX+>H^!Y|n66B~>xMC0Ra5`{dGzsM10WA z8S0ee_{#!@iNtD&%J1WxDv7cB5>Kvp9hj9H9uK|m-{5JOW+vTivntI#oI zXIVL4?RM9xazG5j1+Bia9IdW!+bPCw$7wSar|b2y)sm)j5)Z09E)42p7Da)zlLD|< ztO49lJ8U>_vog4oCQ01FkaoYrN!hG6XL7$s=G%=bNbVQle!t-0oFvcS4vx3re$onX zCveztj<+#Rj&@jSM{57est8XZ7k+3v#@RH=hpiGdnApz5>1hCMiBVWY;}yelym1m- z7;lsS5U|9wxP}7ji(uJoGz6g02h_zfOp^n8lv6=j5URDF(j)H2U*kF+%zl0OTZ{b~ zrTUQU6XNnAP6`6pTnWsGhcMdEa%zbGW-Y$9qGcuFun!u;R0D<|sTK|-Xj+90dXC)} zKoAow<1(M~(Adz$nhiU*&UDY`ZFEx=+k4UachSDX`_E;!<=jsH>O{p{QPtqw%%0I{ zPx)zSzBzPdY_8+nT*2nD?j1+D=Bd7cf}L+FS5)W1owkzePYhfm2Yq+2-rOf`-dkfe zg_Yj%3HH~+zx~{S)clSO-<-a?H?W~4GxM>t*Y-uz^G#N-2IoINSxf%-Z2s#XEOl+_ z0lN@iM+q~@l;<7TR*Iz0JiYgoqf`n!&Y{`S#k*63N6w%9d-Es98gr1su@m!)4cXt4Z(KI@PHtV={Ty|J b?M~A(yFYq${`F&%h zGwp6mgOwPunkohfUP_=6QjM`G&|m}%3i6;xMN!d*f z=X~e;zyEg5KvQVl;sxakFbrE9Xz(|qcd7NvFGl~%Z~YC>>wc|alYwCimsn2`_WIB= z3@h%F!)<0;uu%}zqytE51Uk}54WTitdQDmbVkb252#m>!m$-TC1cA$vmuTgJbWrob zxZKdI!i z!hNa^an9i)MaIeEZr;JTXr6Ue;w;U$DcVgjRV2*_v`eVs@!XF<)^sT4708qxseOVjA$d=qd}?}8fup=!n$rG({6dA2|gVHQ`N(& zn#d=rDK8oK`K-iv@JCx^MN(77swsP*ADGZfurvxc&5?{d%(w)uN?^DO+9S|(78+C~ zIodNF$}(Yw6KG!GoYSDFY9wHS{{>5;5LNXgKt9V!5QCJa#0b0)Nx`QkR2>;c>Z+#B z2YkLJU5&~Kv|u!^tHlF#J{QBgTqNsYGIE1KA)pv0P(&E;dkGXDhb&71E3!0nMmQ3B z7>)!{r;GGBBTka%IS7F};$otFe!pK8yR0h6@0Za2h~x$yTI5ML5Ua=t?S!NUx?Lm? zIo<JE&qlh&r*XtGEkb0TrbsvSZW0ZVTL8P=IGDSOB8cnO;J)N)k#$Zd#rpBXf&rmNpfKh;)`Z z&B6>dYNmh=YhoySb7=+YZu$+-J-hn3)zeJsXK0;!RG$m37zauWqQjmdEPpcD&8CL> zZ`LwvQ;yI)9G%P7uy7%ukHVD#6-2G03uE|7%XJJZ+8FTHggt`?cD6ruvZHMK-uHrU zFM4xw#p5`)10NV8KPvt8mib-X??uFlI|~**a~rQc_vE4v%DOL2+CIT2+m;?Wc((49 z>px!ovuEo~e#pKJ?|8W7)b>(BFMsysz^>-{!0=f4hPS>6+4`gJJU!BP@WjX?*jA++ zJHEQa-ZYP1WRD*yAMX^~_ME)tXuNo>=H`zO=1_UWR>t)bZk#{@oLyv-r6F z{?OIpwdcq877br+uPho%-nn4A&~><|dHokZ{edkTtbgtF(NS^J6A}B;=nlpH?yE=U utzExL*fU}Kc=J$W*K_2TPrVeV+%j>=#%%U literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/warped_wart.png b/src/main/resources/assets/emeraldcraft/textures/item/warped_wart.png new file mode 100644 index 0000000000000000000000000000000000000000..ce333ca60db922c87f4361d7d23ef696043c3de4 GIT binary patch literal 1825 zcmbVNU1%It6rQ#=wUI)hD%x5yOoOy(XXnn(&hA`x-6Xqfvfw0ZvY04s>D`&TyOZqv zI5Wv^g0$KPA*iVJ=b^1)qYtI1Efxw!suc94NLx`KL~RL4LHt3nNT4tE&SrN>Yg$7G zX6DYl-~G-x-#PcpRJN~YL+j>NilR1TdQ$`By)n4&Z6VLLYc~*it#^8#_9*JUO~Jj2 zI(+mYidy@-ksJ1h)hD24n<1pzc^s;m4nb2?EKzlkHi~^ZkBf#CXa4-`3x+oII5QMh zf$Ai2$>^PQ@!(`%PMaLn6rD*tM#rj<5SZ9Ubk!_d9<0Wh8ZRW{V47p-8pI!sGhKl} zdRWcUN!!JAI3%+gF9~!+3Gp&e1Zfv706xNj2*-;o;31HqsL=I`A=X^I00&Z!*KLun zI8*X{2Xb7cQVCVWknI*ZUQrYd2%I3W1i^X}mXE5eFq;?rP~#6$C5obg?t=m1VH2lA}dHapg>-PAhHugApna|)z*!| z#4XTpj+Y>ipl~ykRE>^&^uJ(Tg9Y0)5sBF_Q4w>FRb=R7(-ib@+Gs$Gu zwF^d>EO-Mw-E=0MlzBy#Ss}#N+*MVWu{ zjs5+uK~5nm-!)HgHiPnky@p2;J5fJ9gZSC{sBF-+ih)QAPC}f~f)c)UGOW&#a%_B)=El`yPf|Y8o#smE6d-q-v75$@6!9axLOHWMNFD2 z#{}_kK^t034R>qSYHLecRs&A@U@&YpVDiyy;n*V7E@{x`y|zQ7x&N3+b>*V3eE-I| z)`QuN>5Hi?;+NA`{_44Bfj#l+$TzU#m`cY^?MciQ+aK+oIVx{{^1<|x!&kw=*JrO) zr%yaL_|D1i603f>9En{_F04~eZ+e~@`KqP!`s|_h%-%KB2v0p#evLVB<=jWdAL)Of zbL&t?;*uLPcklUawq+(!y1MT8+}^H%`Ilc@^XvALTi<+1d3$d4zW%}oKdj#=PhS4; znfGJSQ)>HLZFKs=#OaxzJI+ka@BjRthqt_b|EIbAm*l@=t2-0B&+|X+c<<~V*S*fU l=?lBgOuf5${zl^4wVzamUuZd&JrMlFGU>k5$KCr5{tIQzQ?~#B literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/models/armor_emerald.png b/src/main/resources/assets/emeraldcraft/textures/models/armor_emerald.png new file mode 100644 index 0000000000000000000000000000000000000000..1e3486621bbfb5818f1c0a87846676e2a7b3ad16 GIT binary patch literal 2629 zcmbVO2~-o;8Xh28M17(NE`Y@8LlI0e*}#m1EkVFG$`V0TEJdEDk5kVtpy$yABwHfAi)ELP7pcv9p8Ix=bStD&b{CLm+xQB znrJiA1^|GGA;H3Ma`qz!)p{)XF4~{AnViO{f}=G6Fy78QEP%ZQ(*ab(;y}cdBSWSb>sm_ZE7SA4i_#O z(M5joK{-LFUn#)U-Hs92?DgeHC{`uM30xz`|BL9+#Kch*8Y1vh(v1;9-iy|VQ&cD;9M#}S zY8e{%DQV`1W^YumK#fWWTrI|N#oIuIzBQRD5SRnAfa(^7DG^+&nfJ~eR45@(KFESd zx*;}=#St?(FvNw~Y!7Gw3_)+8A{@cuQr-*of+5cDpk&q{5<>ES!H5iw!_|or(q}AD z5|1)e%6O1E$|Nkn6}XyIOj^f&cRxfR2vy^8n1Vdega-vsLjnb!OrEDFjYVe;n=2B* zAxaG)QOeK|As;09p<@^V%cPt*4uqgIHo|1lq#TZvCS`JYG$|@!vQdZ?2eC;-!$E_E zxGc$>1#j;ofAaoPHAYsUMDds9m}}FVK5#ImAp@H-Qausq+L4t4qYh^bERmTjfe*^e zDS#s2$Ts$u8F(XBD@RG8|06Hnz%+Oqp_Qmn|9FzEKazS3(td`yY~Q%T_)jl~&)zBV zw{Ws=n3tmsi~JaEd8m@?b851o>9+8?0D#gMBJ>x_H+~=8kl+|Jb?E1yiq^&Ju*%qF z;u;59U6BtbZ)^2}_Dbeu`@QMadS2}dS6+{;yE;sN{6cSRS2gAKQK*ixDk@arCO)o+ zTokkM^XeFneQ@PM{;@cYN4IQ~kFl}^|M$<&E}0&0SnM~ccI(R8(+VKtNZB*qhPc-C zV9x_t0d+GGlYdolD!-KiI4wqjsuSxhffj~~NmG&I=QakYYVP#hIXS0kp1(`|#zlEL z8^e6Z?C=@aw@`|I@tg*pmFN->>kU?Jkwv$k4Sk*j-@2M>C7nL!snOfPm2W$>Ewbm5 zg;>A4@N~izw&ws~i}6tvy%FA1LLsJ``}?H?`{-$oT|TtnTLYsbpSFx00^e9Zg8 zP*hs<^19X%Sl?eB@UkWDo@b=q7SPZ7l@b%KE$8`9 zI#azXLpoq_ik)EfBrw%IcG=#*#kc0p!Po7{bMCa(GFDGOuIT8hp&nkp;SiB-+Ey{! z$}sk1RNLUgvi!oj2oIOKeFkke_u?x^hdz4VsEI)*a3^(Tk^F!6WK8eBp50jCm$7`d zV9%5TNuAs6S$|*s5PZ?$kYmp}G(Ej)bAR{kApOl_On;Zg^gPmz;+6NXTjzSgx;X?g!k?n93j3Xo9x;DuFHRFtu5y~c3Ly`iJRn0x%WTacdj!HtWgsf9(n z+;3<;R!$W8qnfNKHE4e%nYYL8bbi%#VqIouk7Z;@v^Qb0?DqB@)0WfRD#YfMVA%eF z;2Kjsp4pQ&)nNTJ;(5Ex-*#{J-Q3?erl3r_qxK`I&g7HcW&`ZClb#Oy!RT<4J6KBL zFNo>r)9x;=%7dQL$uw^9H63WGC@_cYi=DIeUhS9HXQdB8ekWF6?SIatg!wfL+MS=B zwWeZhhox({k#@IG`{S-{GGk;KaIY_-X->LJ*0!Np*OSnln90Gjyg5PdTWky%tbcLU zj@q}-vT><>Ky}pqVtIaGSj5-)trLVIodehYb#3YoN#)jS!gQsX;nmnsTYaOkshmAy zhb5i;u^t#$8+G-AKoQE}LnUReQf31C=7v5vQW?DHP{N*Nup#1`wF3r_4D>*WZ&CU3 z!xrP4+*X0yLloyZ1BHRFMdGjQp^O8jJS6j#Es@r;wx#*V4CLmo?$_ii;-c?}j|mTd z?cN~$#F)L?@nwEXp6;Yu!4x9h`P=r_=@n^MWm$?b$JPT0&Pt>FxG8#}>o%K!?m|oX opGmgsSJEjQY`vv<%^G6X># za|DM|GlNJ54&xMOHvC((j%9P3&M~Knn_-eEDiK$l8YY`$U-@ZtaerQNci(;A^F8nT zKHvMkSDUk9ssEJFDG&ttXJzVg!8--q@T7_0`QDz28t|ITXRa0?XljuA_JVddhCq;S zIAbUf3-rrzlC#JNiYugLb_);C5R{l~=Lxcy7U4qL#IPEP>l3F0W+;s$KUR~o~lo8L>WsKPZ zUm8h~DDpUh*laeLO(El~CPc1Qs}U4KFiZ*%QlX3$3A>aP=8rSzXo0jcyvT4Y>}Dhi zxe`$$0iKSAVBtNqtS}}M5Dc*sJR+B&?vO@+6zRe7C06r@af(D}Gi{++Q2+#sqmLS}>IHG?GgTT#1#W(@TMy^WD+# zxYkM&B4;&loO%49a>iYTwOaSV#KVj78J6N~!r~|P&^kh-H4+R3a-#|dB+mkB!U>Jd!auLAonJBO%=>KvR;jY38{V7^Srp(SY>9s>MF++{l&3i8(|N7kMw@o_ll8}6Z}VSx`%%cEJ)=d7TiWrlBy zfgtZ!vvjG3qN=+E&f=>nGl#`M?}*~bA=F#ZY0cV%V7zo-Z^MS>;$8i7zIR4e_0LV) z>2or&wK_s>La~r(89RMHZMy?s`=~X3``hj7AL<=8*Nwr`gV&qr%*FSTtNTF#N_K+S5|MJu>*RL<%~zrBqDftrN;af-(=P*Cd@7aMXA=Fk z*C(&-yHtC?ncsiDk{FzJEonn~Xw;73-<*~CKCP=Z=G_mh?lo-DbbR(>hyAhrSow8` z*uUE^W%0L(TWuWD8P}|x+?A0$WY5*_w3HP;quL&C;C+tUrY;)vNtFk#wIOx zKRo+!P)l8a%eiU|G-bxitIv>L3A2b^zG<5lTGrxI-TQIR%zEFULkIo#zp?9Z`rNHU z2M-1;-vQP8?z204$qyTY*{X_j3o(04!10@@)3U{GzxGGFv;k4kFJdh;e-#%a@y zrKXab($%MsYs(7S&wpJWW^jD720|YxmV~_4QgA(ZUf$W2Ej14=zYDZ!yBWoPF+Fm^ znN6?PN8elSIx#!Bvh0PvwaGud_~4xB((eaqI$V4ATyVK^>n^CUjk5mo#=~6I!=w58 z8;B-t%h6M{s=f(5TMt#txl;b~OHo0`7c58=2C@@p?QXSZ>^pXG`mG;^9}ShZRm{;C zT`sS}Bi`H6*SsHCc%*ZCV+60ia)0*u8GiM?_82%g`b$H@X?*Iswxkb;uA!;ek%Z0y TzwU7NUpFg#g|0nq-Nruw4nN2% literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/models/armor_lapis.png b/src/main/resources/assets/emeraldcraft/textures/models/armor_lapis.png new file mode 100644 index 0000000000000000000000000000000000000000..89a89e581d005c92e461984af319e8a6836d0695 GIT binary patch literal 2850 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/minecraft/textures/entity/banner/emeraldcraft_snow.png b/src/main/resources/assets/minecraft/textures/entity/banner/emeraldcraft_snow.png new file mode 100644 index 0000000000000000000000000000000000000000..0e40acd2d7aa219e0c334a4aa340d56fc29bde67 GIT binary patch literal 2255 zcmb_eYitx%6rRdML`wn$K`=0xCSZfJ^WNPVSt;z6b`9GuWeXJ)na7>ok=?n&%(T0$ z#(*SRLjxgNTq!XaLjyJPL(v%U5tIZhSP>&HEhGfRV2FuCtPzcOw%fHxK|e z?svX(?sx9YOYypz^6}HhV;EK*t&KFGdzE*M8;kyXjJ0Rc?H;T4aRJn<(8dcPY`H$lBauNc_09VFynY8Ihxe!snmC)ETQv_acao2>11zteB zDHg}W&<42R^OGvWvv@%CF@9QP`G;|qW&#u)pcsy%8Hx5woQM~H1d3*By3`O^RE&k5 zLPW}SEs3JC*{m{EmYPxccG@Xhega~j{+pt^%nz)B3E3nxO z5s2wv3K^>eYdXa;p@LC4*`gR9?WI(3)YOun)oiB=!8MfvX^;V?>mXmI>F^{z-Yn(WH|>8z=e4(*JLayBw@5>S?zB=Axtr7%oG8wEz} zxZ(C_I2^a3ZluwK(@?Vzk5-5MjOh21tdA+sjm4y>>A13~f@mZ}p!)a>LzDap%ki|J zl0k*mNR{VxQW0pKX9>hR~pjF#e$@Xbi*oRh1M4RwQ+u zMs}bUW6X{>%2H*i6t)7JK7C!u z^wGx3o!c9Fzt0JW#GQN3{PgR!DHEAcz71|@+}@rh*p2PGF7f-GySNBhr^VL4{p^=l zzZ=)pwKm({{(G`+O8hZs-hH|w-%)<3iBQ_ke>1w`ovT!*H7)+`j-I7|=FctrqkqQ9 zBT8g3+*G-`YfF#sa`^Dev%##r*?z7&P&3Bewq$2!)tqfFiW4V(-DRBnZS%l#zGu?R zUk;QX-O%#Dhe!9HW&KT`)?Jy$cF%dWv1-rh{pt9bzW$EMTwka=&@wBY)!$#aa>>Sy zu9LeiR4Dt-zc=~8txrc5*AGbP`b2Z(Yhve9@Z_>ny?vSd?)Loa*Df`G5c=48vpqla ziSBiuA3nkF?)~e!u`u8f+|x8lO- TgW!bs$q}uti|kpr`uV>BPL%PX literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/minecraft/textures/entity/shield/emeraldcraft_bee.png b/src/main/resources/assets/minecraft/textures/entity/shield/emeraldcraft_bee.png new file mode 100644 index 0000000000000000000000000000000000000000..465c7f7dd264d2b4bbff1c2a1813f45a05c63958 GIT binary patch literal 2211 zcmb_eZ*0_L81FC++1z4K=aea>iv)tb{=aJr2RrWO?xF{CobE8wtk=GGS9aHSZMVBk z5`htoA_^ZQh;yF^n$utu5@%Q#Zc_{~F=8hBpn@@3BoQ{Ez!wzX-oJn{B!o+Pefz$@ z=Xrk5^ZeeoeXVs}OHI`yRS1IAgo1%KcyDs9dn)07PVN2~-WC|ajTVB`PB>S^+be1p zAxPzj8j0G`@YABKr(Kew$ABxFHXs^7R;|ezlH3JsGzJo?=EY`?jAE#&c(HaaOok0V zNUFhp6Kv>T7m@qBWI@5!tVUO5Md%<6YzfV#Q<^1ay;$C_2*=JefuVVb-Q~r6PCzso zZbkjN2~f`E#$}47QIFuF+@wIWPoOkOc?i-&Pz+8|BIyrJD(Y5(I%DX@aJ4h`_Br&6cvbW;K>P1b`)*s$r|ThB_XlnBHT1 zG03!#LfR<1)vRKfV8Mv2WDt~#bW+L#6}gNvddyTlxFQoE1=2vXEr_McSR<+1x|P)D za9v)$E&wcTI9!f#LoVrbIfP|5_rf%a1-T*Giu4(PXaknsW6Gep7t(BWvN1%z2_#!L zBf6d{HLA5l8TI>}#_;H}c2!gKjJ5n48xW9e;KgVXmYZa8+7qEEkz+-cUqSLBNfw}C zT~XtG|Ao>bON;dNP^cP3vZen8E3z2Z&9nq_R?|`f5Qdh(&~hb3zn;=f7#Ol+uALA0 z{jH`RS5t7oYHL}GhMN6uN^rYz+C}B*hQne=vusI|K`7wGV0~Pws)%u(;W(D#aT)Le zE-);E$0%CBc{kvh7|kkdoG#f1bh*b-LCIc$_KM=+cqnr`78iJ&lUNFu7=gk$ndChz z=iynmQnFufs&E%dsoVDB>`g~LVoWToSKI(60TXxnM>+kI za1du>F;WsZl7&KwE)W*A0Zo<$Lf&4-9l(tey%l{UUY$nr+F28_D_yJE9a^-naSQ zL%vrorf2>-^t;trfBu{8d{&IgP)M;ii5ulo&7F5^4aOJmcj9rBa4?0+qq3gU-&q8>gpS# zk;#Ev|AuE1mp}izN&ka8GjHh3>*~_M%>&n5P<-(KE&xM^SQuDam&6({GZVw00huzLSlMBU0hisHKt+_nGi ellGQ73L5QTFFo}TU=}!^5uxUFfrD#1xBUYL3gepq literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/minecraft/textures/entity/shield/emeraldcraft_bottle.png b/src/main/resources/assets/minecraft/textures/entity/shield/emeraldcraft_bottle.png new file mode 100644 index 0000000000000000000000000000000000000000..89f73a97b509b44847745efe0ff8aa4a0bb33b7f GIT binary patch literal 1810 zcmbVNPiP!f7@s6YG%=@^Dy4^Eiq;Zm=gsW=eP+|7v$0v~#E>i`76jkEdAmDgXWnFH zlHEkmL=WOwM5)#EARau3h!#ObLGa|E3N1pZ)I+`0qL3auRp0ENAJ9B1a=;#o~aU-Sa;vBnAq}M|avfq!qbzmv#Q@jFXLjr~*=S3hxpu@bycRvF27P(b8SA3@Hi@gA`vBxYDS!-jR5(6~ya=@f@ zoXp3bvG{)GB2K1OSsGnI_C&|!wU9`2B&I77CR3{{%;RY`A+#fc5*n2$ZS)E?+Y6bu z?X)l^|Kx%fxU?Cc++jnCC?N$w0ZeYdzFJws8lwLN!rQ%d!eJ z0D-j&%DToy3Ho2Ki(!>UK4Lk0KB^HZ3~BM-qRa1GFWL5NM5|tdZNzhD zPV=QHTbC_e7nPjc4%cyDDToskU{Wd;1g1~U^IVumI#E;?i$IqRkpR^aE4W$}v1J;r zqG-Bls6G24#VctS^z2<`k6aC5V7Vf&h$3o=YKq7-Em6imGmvhWu9?|C7kTUyqQ-%F z(zBVi51jU5R@k-f>6s_X-KU1fw>t(RoSuY&fYTNruFzff_E2Dd8FXlyb;3yR(-$3B zOsh!~MP#zZ)Y?z$N%x9BMyvOaet-4*Z}fY%>H(wgii_(gs1Y_?B_Yj6O2<&AG}6DT z*52DOvU+ef2h+!F0JE2Dgp+_#M{Gc&;Y(N8aQ~rHoGiC4+`c+F^c{bg`|*Q2cNZ?b zyZYw$KV2VqZ*${|qpwT99mB_--oD&_zQ5k*^nJGRA$M+Kd-U7ZD`)e=;E7u|-x)Md z+`9Sm%l+>gFKrEMz5Vs$Cw|=;{Y3qH?6qqzY;ONGe&^Fe%a7hLkBtBM*4+m_Z`;pv w;>D92M=l?p7_JXp98?E)(;r~__P|%%BiBbZD>u$ArT{Xgb6 z^S`{faPG*|@hL@7j#SE}CHbArp2LUa`vd>NUHN$|DxXgjW%`NinNY4?ds0yjeeTy* z)79$Bn2I1rn5gqyH;5!!QBKcvBSP1Bs@8ea4-48apM9yRJ}YP|RuxvGB5(QSt(Y%w zE!61N8ugeq^MZQ1izPw8Q=)c*c9`I9LF@5i+0MFkP3=L_wSqR68B|xRi)vBCT(xpG zpvW{-$IBrbdWLyQH6U_y=;$a9Ai~hbc~2c&nzRIICN2xDDHDe@ov7Qz*>1jWNAR5tz$skQK zVS1NDI?BN;q#lsb5iVMf+dboq>b%VZ9;S)Jq7gP~iBu#l@d)bC@IwYx z+=?GE(Me8@&EX}I@`7eSnQka=tA=cBIM_0thc1S&53LI3H#Wzi7BI{jGO>klKK~F@ zs)mu2{41DI+z@dO<{j#b83SolwwdCIQa0LASp{2KE*~pSIKDl5`hc^kIo;q#Y9T zxu(q4UZkf#%KwCH?C!m5JIt<=I&dx11a)dc;6i2t+c0gIrzWFFuKz#1ACoHbhEm<9 z_XB#`B4Lxu!&TSzAJ5+OxNAIrZN2|B9z8o&`%=^YuEO5f*byw3v)3ih^{hE6DDr1i zl6WXn70ZHi|M=4vWwE+ZDb3Zo*B;zPk8i6-zgjf!{&Dk@Pg}2l`_j8_oPY7Bw?F#M z`{w5T*JhU$aQ)==v0F!Hr(09kC(X%Q2d@519{gIl^Tn}OfB12mzf~4z@7;KR=Ih@N z|F-r0%9V=;rw6bDt%>Ty$J_5IJG1=v;Zx7tJ9zn>$xF|ct~`|$+{*ky>BBQ`UiuSn CRC0{~ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/minecraft/textures/entity/shield/emeraldcraft_snow.png b/src/main/resources/assets/minecraft/textures/entity/shield/emeraldcraft_snow.png new file mode 100644 index 0000000000000000000000000000000000000000..ebb30bc212d46ff9b803bd1d0f4fe838035b7669 GIT binary patch literal 2213 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 G#pNHbwwq`G literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/center/nether_warfield3.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/center/nether_warfield3.nbt new file mode 100644 index 0000000000000000000000000000000000000000..f52ee7d1d97ce9b68a9ab9e9dc88053ef887946d GIT binary patch literal 3142 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 aMrC$0H}~znnZQ2sOW_4yHxYVv?D!wyrEwzw literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/decor/candles.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/decor/candles.nbt new file mode 100644 index 0000000000000000000000000000000000000000..ef05f80918955c1f699fed1644b003fe8515d41a GIT binary patch literal 258 zcmV+d0sa0TiwFP!00000|7DOtPs1<_g&%YqX?B1gvJ=Niy>UjIxFA%ytyePAxJryF z_(}XqQk5|TmaH6}9l!5cpu{S<4=w=AeR1j%hJ!kFoG@33P2;6~O?Fl-iqNRR`Y0|a zOcd{_@ocaPG%#)k7r2dd(0wDSGGt*C@wh$Oem6v%#h7ejh%%KG9^bQHnk5e@~gI7$u$1f2zQGakFq= zjpSLCzrpQ8l#$~cOg1mk<(NpF1lUfdPzQG0FbwP7ytkO literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/decor/lamp.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/decor/lamp.nbt new file mode 100644 index 0000000000000000000000000000000000000000..40263e9b0c6b718ad4348d86d28479a76eb4f612 GIT binary patch literal 480 zcmV<60U!P!iwFP!00000|D9FMj+-zL9t>oGsA>-@Z69EtV$VHSJ?#}a#1LsW;YA!6Uxq#}vf<^z_%b8`8LnqFc3^xNuDucmW~q~I^yRCWY}CASV0`(+0r|uM zGZqKr;KQ2|@cw=av!49cz7~UE> zuC`^XnZ-PGR4_y~+~9cu#V@ToriUBeR!skL1JT(6lb=IZ-*2lsox2ld6XMH^pj^XR zkWqt>)>IhV(Z083XrY>h9jA|}QGf6>Z>7?UZPK$zVDfZjwszmuwBoY4ij3^XncY(% zN>sW!xv1B2KF7Uu_9^Zqxck(NQ_YTLMRjNAV9H*&*8h Wph#btHUkHWclZycDp_eN2mk=hYUE1* literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/farm1.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/farm1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..294d1042fd33dc6cc934a3d36cbeccadf01ccd4b GIT binary patch literal 840 zcmb2|=3oGW|5I-s%)9I$aO~s9GZrc<9XvXiADv)6Fw;2wNN4sI&uu5gj`zLE<+c$@ zmlKFCnXGZcT7Kf9Z7=W7{#$u_XNu<*g|~<{?~q=ds6b{rQLq~3paJ^{aUVlY!*|7LsfB_Fa2F{@q|k-121zgLobu>%uKEWQ)hWk_cP%!VKU(|u@q<4V~eqQG%HHIJdS6F zL;>dmp#!SQ>wvoBn0BxfXg;_kcs*pYwZ3ejuj$VJ`m8ZuO4ePwlW=&dRCeBmhhDv= z<~IsN8?;R=!?TLkU3n6-^5jmg14kRW8Nmj_O>FRHn9iWb7{j$g1ZZZ^fu#-JjN(hz zJ0zdwHH=xg@mZV1x+@XIhl`dTn+w|I<4Kb__l8_BzfjA9f5G#^F-Se!n^HzYJ za-{&IKWhijk3i=|K#UYcc8np&doaf^AvtC`)4GR&QXn0RO+XHE%iIwJblhpu4eHx9 zP35cAxs`jeon$lbnT0;RHg*2wYwsSse5-h+?((kNKMHH*SLLoK*N#7a?dt4>mS(=L z@BbX!zV6n)vu3##CBA#R)~+}I{XO>o)#G`7=GzyRU48XFdcUQ9be$IV&4>Q1xu-hY4o z?Bag=)#_2%zoMzvpYQrs`2P0Q#o3R)hMN0I|C;?IDI;sv_t`zaum1hG<%IqA-TQ0J b=f{-9*WTuxe&Lh&U&hwIcjYEXGcW)Elc|t- literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/medium1.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/medium1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..f15e840570ba893fdbefd2a0f507f0c9694ff910 GIT binary patch literal 5179 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/plant.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/plant.nbt new file mode 100644 index 0000000000000000000000000000000000000000..2a3a7aca6c65b20ead3169ebdef8584b489785fb GIT binary patch literal 766 zcmVczDq z+o6I-;wf>`Zko1nI-tTvsv_5)zu$Ofl6VF%h1iOpoB}}eo9yp&3K>^UIKeG6*A&u) z)XQ&n<_909Kr3w@7e%nUA_|Fh%<=t-zJ?5Fq7w~8_{0dG1mV+NJq-zH`aTqf_ulu3 z0~*rPB!T>l`4EH;MfgyJPmJ)15k3jRCqek613qa$)34VgpdlCP9-Xj4nh2p8V?_v7 zG{DLNnlTnZu*d*w8qkcfD1t>1`=SU|j9|qBtXV)a#!3cQ^MIz$dKS=(vC;w7P|siL z!xX`SeO)j0JVEq4LG=73R)k4t9s1?L)(h&Ts}0Y;Yf)rCL;-h) z=?76-w#^`Q%#_@X1{64n^mqJxzhi$=`@)>#Mzv?NB!kI*48%FV;G>q>v#YFXs%!L?J|9286#pTyZ0qbqKjqpsJinOym^u69mue5toSA|rKK@&b|-lh*gj zq|#e%dVi!Vw)EA5c+0Ktz}VX|Fxhn|HK^o%8hN9F#83+0c{$c*|!h?0C7Wn9smFU literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/small1.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/small1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..b37c26a699f1d50d2d0980faf8b284ee66bb0a71 GIT binary patch literal 1800 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/streets/straight1.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/streets/straight1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..b9c45b22de1c81fc0ab261a35eb5f5ac1d714c21 GIT binary patch literal 1880 zcmZ`%e=wVO7`Jtu4x61_D_vC9n`*C2W7azJBkOv$YPE(F)YXs6Fr#7%DMM3J-IcU% zi;`UZT2E`~EG;2!l7*Z~hm!g+#p|tWqcuN5m7s|?_WdTpi|+mFd7k(4d7jVndA_8) zZ6^9}867(8M+_$9JdP(4kvIMppj7NN^eme4Pf&fI3Fj_-+MXT^EXv%7#z$-Kc77y@Lr$t_EBwyKPz4qs;%kCSgIz91tD*BD zm$d%-glopX83E2N@)-F_N#U>>(h{C|x8Q-N@W2D>fI)bmM1UWy*pKfRj2AMShNort ze93X@5kiHSA*H%)Cf&Kf+ey+ovgdI`z31ZKG+>?&slxSDnBp zecC^4^(@BP+O3ut^4;dXgIj$+-@&al=U#9m&zcE;gAe)^InLGjEwrfuy=#}eg~NQ0 z^Wd_Nw=1ar+>qrXzSR3RJ7o(EZ7QY`CM@NeY#(hwFUfbXvO*Wx?X^c8d#VeUnbI&> z2#efDVyj_TvFodGOMBJ%02VpUv_Nx2QANo=U8Rq+eca1?S73UE?_k&sU1Sx7TZ!Z~zYGFE*zM({Hs#EJ#|P;A;}|b^&X56sy=oG0i~>OCI0YAoPM1T` zE;n_K`|%mRDI85a0Y`rWM}HB>I_Utg;x5R%d~=-uh*dyrW+KEg0$GLI@flt~AD|zu z1ft*h)L@Ed3gqwufi}OAO{*n(g4LK4aJ4W$EEKM`n&G_#tBrYm20EdpN5N>V37--R zHNb$IO!`1S3x5lD3;08^8?>KttI$bq{R_AZ$Q8fKU-MRPvpqVjZ%Tv|)`#j*$#p{j zxO8xN+%13=$)k3#X)$~fC7j-}yj(*-@@-)JvS~q29x$|FF9&$L@O1#o37QN8@>r?w zIDBF7)t-!F>RNs+00HIrgg@aJG%`}Z~UMC65r zDW>1nKI>Ri2Dx5ARgbNw8WMx0@pMEwfO;$qrZoPws{xCdL@>3OlsGsch$s}gBAG(O zBcqP)l`fmv%SyNy!xB37s5&YmMzML-gN%^Emi{?9GV^kqpY7ygXsOMUxji2JOUmp_ zO=ax7l`WgqnKaXFr7WErIG#>+viEBg07deijsX3m$|dExMc?gz;<(lL$B zvpkVzIyN$JEKOIG%dviuP!y3WdMPV@bWqH+L6k)Myyg)Ki8MCb`V%4`4xiC|)J0}$ zMduaESX+mPV)IZ_Bo)VNmCJR^REc0%q;0kyVrpw7jfe$`El$m}C`$K9&kd_1Finr8 oikvt#EuDXQh7<1P5KB2on~g^-?*$jABc9Sfu1K;fJZWO`ANHTop8x;= literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/streets/straight2.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/streets/straight2.nbt new file mode 100644 index 0000000000000000000000000000000000000000..bc7c28344abb1e776dd9d6825a4359212e69a58e GIT binary patch literal 1837 zcmaKpeNftU9LH_Dw0vOK%4vIm+aL4V)Qx3>Gv|J*&dOA%sU^qhFb+IV#oByUWM<53 zdU*>+C_1t;J*U%rWFm@YvXweJWg#d!Z%qo68)H78f_=Xb_VXh7>vLaTug}B#hbw)- z#rE6M%#hPxPI`rFRJQS^Fh>LYGnIu`47~=4?iMxW8&ABV@++oa*wTBthGsAJp84_1 z39<2K_P@;){c=Wo<=#vaD?(NAKw(jxj5vNb{S;=7^z~f&uaYG#%b;#Nj1V3#<{>ki zgtT&6G=FvI=Ta=ff1FVz?6GLQFTP&te)&Qo-MMMe9wdqxEo-Yh zO|UDx>8Z@JG3hM<0Bj{d$o|_7J$0eu+P32>G)q4PxT8(NC+LnsG?+_8kG{BL z^!N#M{}Hri&KQu(Hp+j zBPJd4Q%06N|DDeNX1V9ccWw)?R zNxPohL`8j>9T$PmRgsOX7?AHNF#-mc5-aE=Q@&);CeATlk`#q+RD}KM>bDeqp!U%A zAICEH(lrCsF~0hJ^7Z2Ikna?@NcD3+SZNcO*OuLQS?3!OLFe8NEQ57NKGZ>^%}Q%V z0PVMQ`vM1_oPGmX`AyKGLTmN}uvR{9M9Slv@xSBBmfh&Uji>5>poW5y4}{)sD0D%g zCD4Y%aqKj2r5H}cMFPu0gO*z~un+;THU<^{G_=u?>g0ORfD{Dxtb*1gv}%~pdIMOF z@qkX=Cxm-W!LdWo!V=(~KSHY{$};%x_@5dL;#aag{Fd6`YTwqtgBD?DMg!=4G6e3UYJ?#<@)C4%$nc$F6(q2Z9_LDp%BX1yXII{;ay zC1hRYAV6X;$Tow=b5b^FruYm_XzR#d!dkty9b01Q@0k_r+jYX;Zs{HU`U*2O;XXn# zO?A6TB)F?=bAMmTT_$J4s%6Oytb^;CqG!ZbP7b*tvnNNjJXW}BHL*>9DD&=A;^bMY z8^38pS6E(T8t}vpf6!@rk7i@(vb2f z&g4^qtV3+h%Mqxz4Dsr-B55L4!QOOBF(WUUbRLNNXR*FsR?y>fCD2XL8KAG;aFb*50jcZ#?Z%X?T7cnx;*o+rDm@`c> z8Ro6VE>Yi6wmI)07E`>bSBk_@>(53m8KZ-UvhGJ21z{>{tkw0L*mJHb!o}rp@XDe) literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/streets/straight3.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/streets/straight3.nbt new file mode 100644 index 0000000000000000000000000000000000000000..14f0ccc7b9becb7cf051071f20fee4671d70519d GIT binary patch literal 1215 zcmb2|=3oGW|4(ln%)9L-()w_ri>Jt4hFCU@39g?QZkFFIy%@TkN!K?=O+<6TVz#%+ zUp2iC{*+x_c21Jzu8G+L-#;gJ7565Bo8LtGo!f$V|;T6{3^*^HR>Xca`_In>`2B*w$ZHr8s5i~<7Ijv`w zC$8ezeAb|}ZRaTidyd2VPix8doMK=6>EMbQ z0|c{zE#PNDh@He#ez&L1fpF&G^D{Bk0=3P{#Z(K__CaPTnz>*r+SAR@%!OECBfkpS z4KU|Cj0{0`1Kc_1_afX2Qw#J(#j!BBd*N!`o(dmY{`>?FFm_VgG>v<9zZY4ik3p_i zTCCsmihJ`3gH^#juS6cd%UBoOvwQJQKf`x@&#aE_u%7k0Wa33lx6-b_xk(|*C9Y~7 zyQ>|$T%vq^$=swndoPuC6@K@+u6cL0-}`zyBcKV3ftsq}>&B@J$G4%5Co*`wa5*AO5f!B?Kn!rijhHIKb5i&-wQ{dOVHFL}pHcb$C!a{mfHLr7qJ3j_wn zZFgW`n-OXO2Ce}-M zYu(OwNusCrSswfFc;nm0bvgHz&R=eF%;NGV6Q0-#;r_y$U5D>p|CU@mr>)L>a$WuJ zZ+(8DJF2dK^WDC?djItJn)RRU<{sbiJ2`_tG-6A8d;ZsbduPt-4~Yzy7*Y*1m23&7*d`zWe)SK5w;p_O@W&qxy0$)AQkamHhQLrr-bE zc=~zSgR8~XAAaqWt@!NA{;&Rz)4KUTT4T!%*^es;3$ig(}X z)qi`Qm-XxLlr}rI58dbA-`Vo`kK5P$#|2%FpZ;$JBYw-?&a9=BL}_h-rf xTkhM?E3phj_v(x6!Z7el4sv7{HBMu{CfX^pZ~y=FgAS#1^~}UeNg}a literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/streets/straight4.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/streets/straight4.nbt new file mode 100644 index 0000000000000000000000000000000000000000..a5db96add0e28033a7f7c3f86be106f8dde567b5 GIT binary patch literal 950 zcmb2|=3oGW|95X5%)9I$()zIQjf$U^$~2ER4;XK3PV0@>*sFH(!Y+$>C*}nlRQ{-7 zBhL4B{<5sFZ|(HTKw)uRL}a8KXygzuqs*U=_@hk z_vhA|yLxA@KV0e7U&fvf@vXck3!niAbhRN<76A%o&_=rYF!i`N|my zQ)9QYHYaCDE>1hPVy0nMTFD)D1J}vrRHkH_V`CR>-_G zyJhLiDvq5oI%9MAie%cv#A$~<{NHn`HE^eamblx~Ln~q=rgm31q6x%>>h&NC-3bms z6DUU)n2j#5A6?)vn!vfcclnKcCW3+`RpRxW0Ey~j5zku=-7r38r7m)8UU!de@|Agp zlX({JI!Het=@8BpehnXevQ z$!kmEub6;Ni#X30CNA;%=0TwAY^@_=&lsagTZ5!4kAtM& zN5o!%*t|8p2WVZ@zfIqIHqP6>#x{A)^YzE8<92O|UVh7Weez}1@b4RQ|L)@5y4q?# z_q(U-ULIQZJ^s>f#jlDzTW%e{v1@yxc-8&9{QcWr&b}+K`>MyTvsZUVTU~kg$oulo zveMsm>*Z?JA6Aq7wc(f8?A*6%XTSYfyKeUBgZHoGO{=Mwy!2ReUga~(|FW}Z+>Efvk7CaFD{{GGEx|r*qg5|$2wErht)g%5p zEoQsF@0&Y+)Oa#WZ_Hm;E8-Cs$N$lQ@6+|`=bN|R+gBnkU-N0cv%Spvg46TgnJ1{u KyHO<1zyJVh)#{l5 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/striders/strider1.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/striders/strider1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..2578eab35599f4c1de1630c1840a7a79bad41011 GIT binary patch literal 703 zcmV;w0zmyAiwFQ`hi+m3|7}z~ZxcZf9sAD5-Q~kUP^3ZP2LK%nB1$f?Oe}@O3YgZc zePd^nyWL}NoG8#hLCFuGqeK)`^w0!}f0333K|?_Uvv+o!#GJHR?at1dc{6V=1PH** z<#TiZz^=+<55Px7k|gG#J%`|^9)(a_H$tiq{1j7d*lOR`H%Ernj~~kva}sIB4h$Sd zL`L>TG=}iNT^Bj7ejN;+^4SM>Tcij#Q>n0T#DMM%QK6CjJE=azl*4!P3^C@U=3DA; zl(13s66AB(6iL!dj-?uM_@JpxALD3-1LBV{jZuoU%jZ8DNtMX4Ss zf`YF1NW?K?)?nUZHY5{J{V|Z&Qd^u#`7+oLs*}Znuu_Gffr9odVav3>DOB7rI@{Q@ z&UuX;sw*F_zp$$U*V<@u21d5+;9iV*;NCd-{`c*# zos(Cu{on6@-2di)Gv*k8_fT6Z-nd^EzR#cj+tU z4>-z1$}pBQ+nj71eD$=vU;R1WPtUk{g?|yyDLrO@9H_B62w{qP{!Mk}O*u3^)b_Px z!TClfiB&L5Us>rdO}pRIL^@?d#;S$-)PQM5$3Dyrq!LND#9qFjno*xd2D^t^#-*sv z!S2gpE{=TgNSGngY{dWYfJ;1B`fw!^2@+w^_sQfgOu>XS%rQuWKwcmfHE#fWk{yRQnz_;3?d`Yw?S6X^KnQLj-=hNn zb~Wbz5CT*rNn#P%eFTmgQ3T$O5mH4EWSD8gR(pSauQarC_C{t{kjQd&VBn}lWaOx% z8H5k+jwo>J*LeJn_W`*3B13qXNrkZyV|qG4g+|7YGd;zO!w-ubG2x_EyJ}jdY!ssu zc^`E|ns(ANsU{pg>}V5X(wZPt>EG>ZLn7VPI!*McvWFgQv_^$CIZ3TrnJyJUMc02V zk|f232dfsdEt!CdXFz^e^*ELKX1FWVAWsBgqX}Uf1sz(#mg)MQP)Xb9eD}~g7alt_ zpMQJs!LA0}@1rRg7}<7!C#5t@DuAX;;NF6K!Np3@tbjWhblZ&JUKH`C-#>cKzMoGo z{+@rCI^fJWhTy-{mWn^?*R7ui{vL{y4qKlsfvAULvYB%9CPPWnc+`O4m3m>g9=6Qx zzHW6HJUGxKEPO>|4i`dby}N{2)zGFr+GrWp!42;2ocnx*;PiD-CHwQq#|mwGvqs%s zt^ZAMJ6xDrI2Q9Nj$7A%jqBf+@$n$L7##>h(L#r91V|1mGQM$$|@vPE)I3mcFvm-&k~i zq=|IKhMZLk>k9*BIh_TtGL}lD!y0?@Kh=~ml?I1XEt6VQ*Ij Wg2Y=pE$jo)SNI1fv-Gc`1ONbsm`;`e literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/villager.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/villager.nbt new file mode 100644 index 0000000000000000000000000000000000000000..041dbec4e56f11e877147a5ef913ec4c7fc6cdd7 GIT binary patch literal 699 zcmV;s0z~~EiwFQ1VRd2v|7}#kZWA#OolQ1jciYlRAb~g`&IoZvLNsZVCQ@lbMG&{h z*_|YAz4q2S+bZx09JuijAn^@7a^l!CcP@MamGO(zoMX!2M|p;ra8jFneO@TO6k~N^XsV7k9a2Yf z+Bz=XJqY)N9%hLk^lA`xP|(aVbCkAwLMI(-vb~wJ&l|2>uYW%L?4}0~2557}LcTl3 zvqDKB_}~ z!77C2TjP>%E?(-+(ST+Tg`!#Omtztg;DlVtoJNhIr1hSA5FF`!%N0l*4u4sWd^*eyj3IuOz$tF|Dj}{8dTB2v#5*(`;)9M^lUb?IMbP_I1Jfohe^8Y~*ZHPm$*@0Lx~K>;*QjAZo%)+puV z9KgmzYN1Az>El&9&j7X h3YuO20=LrSpc@@Q;)81`c7o_T{0E7)&V;Z8002u7Pp$v} literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/center/spring.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/center/spring.nbt new file mode 100644 index 0000000000000000000000000000000000000000..11692aa906a9e939a552318a9c193e59b30aec91 GIT binary patch literal 4404 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 T&9~Iey8mrY&|eeUHf;DmAc`0% literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/decor/candles.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/decor/candles.nbt new file mode 100644 index 0000000000000000000000000000000000000000..911e151bde32670908d361dbecab178cfe027043 GIT binary patch literal 260 zcmV+f0sHRekoj5-)(5d( zVS+eEwPS;or-5-ZSkFzMPH$^bl_3eEh{N?+;9=CG!M3xWTosj+ad(!RBl)T!-#UI? zo>=a8&T6UQop)0j4^H}?+p;4U`NiPUw!beQY#(Vd*eHdb^}neEm5mZl>_3%Zz1Ug6 zuSRmL%HQP0V~~-<&WJzf5Tt zUkXS%WyXTYzVYx)ATxx-ZWT*rdKOINV4?sfeu0SsyrKY|I6!A)Ug|jx@Pe_Y0LGV3 z6p)Y4E86gi9gHtSpI5x$O92QU|lt$u{Ql^&D^XymK(Ve3F2C zl7KUo1mxrMiZ;9+9E|Ub`Mlx{FBkLNtAs=zD2MDxaY>MCB?KM>%ORC`X7J(6C95?y z^!1>K)Y)!yN(p#BZ?JPmmmKyDmnf>M_Q!d@U~(6!wp0i3#Q+Pp+4O;ce->ZWE1di29Rr5 z>oGJ0S%bpZf%d)aLJQTl>^S|H8TFe^^HM6kSf)Lj1SU^MVr%nVgEg1!O=B$nJQrJM zQS~T9MM~EvSN*M}Hwauue7(Rm#(??}d7P2@g0iZIm}o7(SDM>DcOY35q b;j`yz{|yO$GHr$$DF4BKG={FeJO}^)OfTj8 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/farm1.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/farm1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..a1df7111a93daba3b1c03a2cf7f87fd626c5ffb7 GIT binary patch literal 856 zcmb2|=3oGW|5I-s%)9I$!1mzd84Hz_4jwTMGL;M##m{;y3VY2?n%#YLW8&W2M)yZ& zn3GoDRbi=qetgnXv%lpw_w!7r>vW1OiT&}iwWDqKoA);h^fTVQmPq;_%X_^k?e(gg zHLs`r)!#3!(!R{QyKj2HO;_>1m%BFlFs4YH;Fu7o5S(Vj`ar9}is#D2|0kZ@Tk0@( z%E`H|r=FZsN-avCXtZ;)hvXBTbJcokM$c_OySO!2&02X_`L9o^#b-Uam+7ne(q5hL zun(Sj=O2hFE&A=8DSzI`Xrg8V53?kr5m(A7pJfa&n#J!fb^4r}YQ%KqiMEWXJ1Iu||((t(t7DFInh&_2f>Gf|niHT9b<*q~?P~%Zs-@ zW0PJtWg~)QDp(3K_S&5dF`CI|c~1jPW)x@EV~gS0AyL5jK+6kn=7VdJwl36N1x@~M|(c3uQn;Hee^+z7)5NeCmDcCf&Wn9iif8uMk! z=4WkEU`;R*=%5}`bDi*05ygj#M3G%%i0m3BB-c!5TK7_o z4#+J~|1rjZ+yeC{;z~``S0pN=jw3 z!q>{h|9uwn?Lx@H-5+mXy;ZvIRrJFROQ$d2f4?pEx!g08?sa#6&Ul;gBz}tCiPZU( zWd&3FFY@0PJ3DR5pG#)!_xbLteO38xTN3hT!N23@5A*qKuj<)j<+|(HI`dss-r}XF zPu>6B)y022RNrs4R{8tB`S$j;@0_Y5-S3>6A71(Q`ZN0--!6Q=ZvW`%q1DTH|Jv=8 tm^JHJ?fj2vrR5gaex@J)ExYH}lSRK@-Oh_}IvxLoeZt#Qe3PXa7yt}6qwfF! literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/medium1.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/medium1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..b96eff8e274d1e73c3fd51b20cf59cfaf9d2b696 GIT binary patch literal 4318 zcmaJ@3s}-w(@(24tJN(m$u8`+MVGe}vb4hV?UlC6Qa)x@YAVQnIsOjeBN)QhdkKSfaiLK+zDL;`8S~ExxXU)?dS=lM zFZ|)GmGaxEgVQH-mlm%J-x0(T-!%Jk`@f%BZO!PS#0-w1e)!cU-p}J0O_7=QaAUkq zkwlm!}Yaw)pm4%qy993OQ^9~O0kgT$f&r%B?ZX6?-^iE8(whTF!1*Y{+UL!WF ztHwYuDcHPuZYB-uZgi|`Y1-b>H1Ta$%6cX_)?*#>bS(D(g0-~4-$-8I5lipNT`D^U zYiSz3kPGQZrOt!Y&V|(4x||Bic-+3W#SGJyiObS0hA8}*_ni1>?F#r%Gr~0{jvn|J z)AkiSuWw)0YG%ObWxCYog5Li#gb9D3G!@_pxvTA=$8Qh)Bu0=5}7FV zr7b6Wf>Ahs4?bvbv&a+6O{RzEp;7Kx>APE+M!sdf@sy)cfD+IsgdNRGf04bbM{Uk% zTT5zy%f)j6Ys^P*d_?67@x%Kzk*h_Ku7`Yp;FiH{%Op$8tyu(T1>CMdw(|GEJ@mM+_zc}`uyS3#9o-D>|oYN>c zLQDYBh9NUA46PFBUJNaU2+1k;Y%xX27wF2Rh!!7Xc-Qw;=u$p9wFVtojrOcUhgBSC zTOm-2j{8Hq@m}dTLi6#1z*oz{bvDrMgyX+hV&FDld>Ml!*mxe)r@#%Hu7Ky+Vvd2t zX+pTB*Q0$9Evw8RZ|6fA`w$%1qli4TgZtWy%}ZR;ujCwg;EBI{>^9g%9YtDhRmM8iJ@jNTr1le?+Ta%lqVSP2 z*8e?^V^7tA`0Q$(VN%K4sGTctQqwaxut}!UwbkW^5Siz~D;BGNB1P&m40MEIT4x zsn{%a6gl6e;~7(@T8#x! z_s<&P9XpCHATxtJtC-EJdy}^dn9VzQ*oHx~VTYBtBqKNY_+|+CS9~p48tV_3eCobSKcMH0bym zbZiVd$v~&I7>fkO;=1Nqqgz@wLYjNn4JvQT-ozjWwps`rif7XD>fX^YJ4rCGwzmh? zX$I@Y!!}U4)S1^rCbljTlyg5u6yMvU^aL+EDCOxVS|pe*Qy`)8vGzJ_L!}q&5>g+c zy-v|LR(eqlf>}%*!>8P?1FHYea1*Re@+lvNY)b|?3LNfG0X$qI0UjoXf;-k3?)b{9 z;q+SRwk5=rD_jhyMmn+j8^#oAn1+x_3Sl+3mHdGPKnQH~A;2caU{h)EOJeYA%r3MF z9Vs;ZTnNsaB7yU!%fNZPJ-{~9VEex@$+pDYwQPR<&x;=b^Q!y|#O3mBOFoe;V=83W z2_Y>j)K@XbIPcBy72Om4D-HpHqd_{0)wa6G#ecM!2%<=vK%z;!4*?)a$wxB}W&thS zR@T9_(oF<}s)osmnwFSmFTC%bK_9#=VMjbiI}D^m2%vIC_FMVxBy7W_lfd+j$81Ju z4h5UK{4kq&%zKsK4@)s&tE-r^nT}6P`k>F=QzMYoOiEo(%{Nt*9JJFi&X|E3fkhy&1@sotNoq zD5k9roAu*D$W=FJ_e%3jI#M9&jhO6VAO%VR-#>_fI0y3KkD~eu#kA4xg zSI=55#xcd>!=fzbS9b@Pl(~0h~=nX8_9Sa~seku#OPp zMpjh;Jc)B!4Qm(@v~19TFJ;Z)&!;vo4XCqbP!I3*E9HyG32(u!TR}|HOPHerDOP4q zE*IHjJ)U3UMtTI`i*V5HxHA-0!nQh22Z5H<7hBbcJV5#invQ~83QzLeQ2tTsQp?$uS23yJN7u9Jvvi3ZG9{uM6?XKPzPPhk zJc0C!K&f)2JcUZ^M;72g&l==_0Fp~9*dQN6b`Na{`WSqla{sPPNXvBaP$icz1jyH5o9Lo zvm8sjTGH64?vo9ONBdr^V(DrRnhZ&h{c~JS6u?Lg)6vCeOAFL_+Pf=%t(4J*op_d2 zLh0|^9y^)$qssCw7OQfX#f35RTI=KliHxLbtnjuM-zyv|rQh8&q*W{L*FPxr3huQ~ zoKf9>`<-mMLf@%)scsBx-GHP#Djl87>K#?eylJE_gEMvNsA^cnsdu?w+m{`gr<+c+ zi3yPung=`Gpmu9>_ygKALKlonPvVhOu2)IpK$zqtWprC&r<0a^-B(ypx*MX;CwaT8 z(!?^^!J`VC>P7D|cYBzsa!u4MJAvi@KCB9_u@M{ zDdO{wLby%Sk;S~u?KHpfdZMYLkMzpxc~Orm^{_$<;R{+WwOS3>`o z%MywAyN6=2zA#r@H(`2L7m`agPKR}5n=ik5hf_4&7p=NvEK?3Q-6`l&gmmxgs??14 z{b3D*#=g_aX_|T!y0s+niS|`>X_u;?K1YoGu1}RlT_d55RtEd1NLA(fo9{Q1nWSC;EFreyC#L|=d=}j|T|&l{6Hago&9#KI zkh=V4SAOwv3AEPsAt-|56;Vj6V~%$bLk*eGL?aDF_{0+$GSVanpVKwa(12#>6T@`v zL!Ts|Ap=bsxIc3~1mQywJ`~{-BYa|nPlE7C5I*UI&my21_A3i$$czs>^z4z@h(@fC zhRkRp1S^_gEd!c47D2Gc1Zx%0%&{nfMJHHS0nHpMMzG=u){}r{j+G!-38Jn9!Ad7s z*8vTg(LmR;$L5(J=9wVo`7u_6U_}TPL9hsdMG!2CU{M5%B3Lnk6(d+Nf|Vdx34)a% zSSf;)B3S7pYXwvlE`#Jw3*{g)T1r+(oFrXP`os3?LHKHAuFLaxj*6E?TPv9UjEcj_xus^8XGUvEa?a?gGV9~9Cmc}3Kl22M{)5Z_?w%cN` zw;b+~!iB;}VMkG;Dhs9*H-VSbu&K|yW>GWAy>XNHjqkyircW<>v#tT^UW)zB*Soqk zy5^=ilzKJ$AuL4q@DTXC58Sf*ygjZ?ZAx8n>$Kvh&Fg-X33CS8GP(B0U+tXU`Su@t z0Y>W0hF6fRnY4a<7PUTbGx#B0v(k4I;)7>-4{xU+_7l=mU!N7~n_pL2Up9k8Y2&v4 zHwCNr7f69K>rUR285}|VvMv3zY5w+llfnlAATU#d$rlyf0yFu z79nyxzl%m|ci|L=j}kt`Q3}({EmNCzQiH?cCrjp%srEHE_S8oBS2uG)E6Caz%=h)l wBiXvgdk5(hi(2WUJ#C4J1;e~T~ zLk6<-@>xpO_k0S;X@XwTXTb?h=b>xhRWb~ag-qJ*9EtE=p*7%U%>Osc-%&tg7^K-| za+pR!4ivSX>JS3zTX4v-Sp4$N}qMO}CZrx0!c3*oTh zoxu)ug{V*Ujj7~fQJ6uF5ljL9%>ZyD(gkCQb{YwLmnL)e0UTFmjlPG%Lvr<*JxH{Z z)Y@-{3%m>ewDr&hqzWvn_Xp%90H!j{Uan)qJZVkjp#XWofy1W7lN&|ZD$_?kFpAw~ zZiQwuxma+zIJEJ4|Kysk&OAFy?g@=%-wmSsN6$k=a#KLQ@%BxViQj$HpO+u-8)%vo z37JYlkuPIng*V6~cERF~9_&{pcM@|-O4B&F#rKyiu%aM7RW1KuDGM!2DfQ6E&0T+h z5(f#Ci_l2RuGiX$+m=d^#T7*$!N&AX4yy?TE6(WFR8Q;8FkEpb++RgiH?VG8UcJYbj+xOLhyhknXv3n!;p#iG9Y>wegboA`n&Wlw!## z(U0U)XTSGFRT!zAJpG112WN7^cS`FFe62zgmzQhi=)=xu*qE}l#VFu#GMYQ9TkQh> zFu!s@&GtU0W)C{4AJWSB`VUGg@#S!j_6nt>)7lk2Gw!5iK;_ophn?#x6I0 zPi^c>wBTFEEW!4yh=qWy$(`_VjP#~W(MOwh|L4K-(A&nwI4N(?69p*jc!f$ zOqpL9c%mRGK~+12jpv!;Py0DiWF^OF)jgktQR$oCe&xr^MgX$a0kMA$HLrg-OvJ0s zEOsV!|3=myzT9`VLzYd zWmc{Vlcc?a7$7*8RPwH4UoX3I7&sFqV2AFM{Y~3I{jq&K)#} zxZY!D^S9wQxe{@&u&AdbG4065xa47H?rUb&{%S Q_yK&Au1%%>mSxNS0g7)%N&o-= literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/small2.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/small2.nbt new file mode 100644 index 0000000000000000000000000000000000000000..86f1db553f5ae5d1ab8aa27109d1251fe1dc44d0 GIT binary patch literal 1614 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 KHZ5PCfdK&Z#OjX# literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/striders/strider1.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/striders/strider1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..2578eab35599f4c1de1630c1840a7a79bad41011 GIT binary patch literal 703 zcmV;w0zmyAiwFQ`hi+m3|7}z~ZxcZf9sAD5-Q~kUP^3ZP2LK%nB1$f?Oe}@O3YgZc zePd^nyWL}NoG8#hLCFuGqeK)`^w0!}f0333K|?_Uvv+o!#GJHR?at1dc{6V=1PH** z<#TiZz^=+<55Px7k|gG#J%`|^9)(a_H$tiq{1j7d*lOR`H%Ernj~~kva}sIB4h$Sd zL`L>TG=}iNT^Bj7ejN;+^4SM>Tcij#Q>n0T#DMM%QK6CjJE=azl*4!P3^C@U=3DA; zl(13s66AB(6iL!dj-?uM_@JpxALD3-1LBV{jZuoU%jZ8DNtMX4Ss zf`YF1NW?K?)?nUZHY5{J{V|Z&Qd^u#`7+oLs*}Znuu_Gffr9odVav3>DOB7rI@{Q@ z&UuX;sw*F_zp$$U*V<@u21d5+;9iV*;NCd-{`c*# zos(Cu{on6@-2di)Gv*k8_fT6Z-nd^EzR#cj+tU z4>-z1$}pBQ+nj71eD$=vU;R1WPtUk{g?|yyDLrO@9H_B62w{qP{!Mk}O*u3^)b_Px z!TClfiB&L5Us>rdO}pRIL^@?d#;S$-)PQM5$3Dyrq!LND#9qFjno*xd2D^t^#-*sv z!S2gpE{=TgNSGngY{dWYfJ;1B`fw!^2@+w^_sQfgOu>XS%rQuWKwcmfHE#fWk{yRQnz_;3?d`Yw?S6X^KnQLj-=hNn zb~Wbz5CT*rNn#P%eFTmgQ3T$O5mH4EWSD8gR(pSauQarC_C{t{kjQd&VBn}lWaOx% z8H5k+jwo>J*LeJn_W`*3B13qXNrkZyV|qG4g+|7YGd;zO!w-ubG2x_EyJ}jdY!ssu zc^`E|ns(ANsU{pg>}V5X(wZPt>EG>ZLn7VPI!*McvWFgQv_^$CIZ3TrnJyJUMc02V zk|f232dfsdEt!CdXFz^e^*ELKX1FWVAWsBgqX}Uf1sz(#mg)MQP)Xb9eD}~g7alt_ zpMQJs!LA0}@1rRg7}<7!C#5t@DuAX;;NF6K!Np3@tbjWhblZ&JUKH`C-#>cKzMoGo z{+@rCI^fJWhTy-{mWn^?*R7ui{vL{y4qKlsfvAULvYB%9CPPWnc+`O4m3m>g9=6Qx zzHW6HJUGxKEPO>|4i`dby}N{2)zGFr+GrWp!42;2ocnx*;PiD-CHwQq#|mwGvqs%s zt^ZAMJ6xDrI2Q9Nj$7A%jqBf+@$n$L7##>h(L#r91V|1mGQM$$|@vPE)I3mcFvm-&k~i zq=|IKhMZLk>k9*BIh_TtGL}lD!y0?@Kh=~ml?I1XEt6VQ*Ij Wg2Y=pE$jo)SNI1fv-Gc`1ONbsm`;`e literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/villager.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/villager.nbt new file mode 100644 index 0000000000000000000000000000000000000000..8e6645965c67bd92b4c00a0cc3ccceb5ed1d912c GIT binary patch literal 713 zcmV;)0yh00iwFQ;VRd2v|7}#kZWA#OolQ3B?zW{Ba6sY!A5c|XK|(Zb6dI|tp&|&0 zL*!&9iCeF|_0F~m9DCx1#FY~_IP@3j1&M#)!XNMpjCYeJv{AC+mlx^!Hh(bvI7H0 z4I(T1IZYwz;BSizpZ$hn1mN$B1mR&KH4dy8(vuNtv~sYSm{UwRd@oB8V@_(Ntxt2s zm!hwb_fbnI)lw6wM;tzE89TtZF+wP4-0B!hLhTr%Vsob5VGY(B{mj^uq|uGUBzxxH{COa_+0`gx!JRX zEDx58u@i5aY|vL`aLi$6!iG7KYC6qkro`E}+H9Gh@DRow3)etVAF4}lE zY|0i2pmt;=%P+7-DW~TEmWNUc)hkW!&HEuEn-3_r*gG{c=7!O(VbKRn}4jW@zpnQBTWvv+!Q2UyPjevh`zyJ|B*I1u>=4B>TObl literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/shelter/piglin_cutey_shelter.nbt b/src/main/resources/data/emeraldcraft/structures/shelter/piglin_cutey_shelter.nbt new file mode 100644 index 0000000000000000000000000000000000000000..41c7b5410fd0019fe781227dbc342565e2c34e11 GIT binary patch literal 5429 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 Zsk%)$euI0WYWY@pt0#wZ^76NA`9EfT!{h(} literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/shelter/piglin_cutey_shelter_no_piglin_cutey.nbt b/src/main/resources/data/emeraldcraft/structures/shelter/piglin_cutey_shelter_no_piglin_cutey.nbt new file mode 100644 index 0000000000000000000000000000000000000000..1e98ab0ddf4aa049e74ac205402eabde2233e10f GIT binary patch literal 4773 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